//! NOTE: this file is autogenerated, DO NOT MODIFY
//--------------------------------------------------------------------------------
// Section: Constants (215)
//--------------------------------------------------------------------------------
pub const FS_INITIALIZING = @as(u32, 536870912);
pub const FS_DIALING = @as(u32, 536870913);
pub const FS_TRANSMITTING = @as(u32, 536870914);
pub const FS_RECEIVING = @as(u32, 536870916);
pub const FS_COMPLETED = @as(u32, 536870920);
pub const FS_HANDLED = @as(u32, 536870928);
pub const FS_LINE_UNAVAILABLE = @as(u32, 536870944);
pub const FS_BUSY = @as(u32, 536870976);
pub const FS_NO_ANSWER = @as(u32, 536871040);
pub const FS_BAD_ADDRESS = @as(u32, 536871168);
pub const FS_NO_DIAL_TONE = @as(u32, 536871424);
pub const FS_DISCONNECTED = @as(u32, 536871936);
pub const FS_FATAL_ERROR = @as(u32, 536872960);
pub const FS_NOT_FAX_CALL = @as(u32, 536875008);
pub const FS_CALL_DELAYED = @as(u32, 536879104);
pub const FS_CALL_BLACKLISTED = @as(u32, 536887296);
pub const FS_USER_ABORT = @as(u32, 538968064);
pub const FS_ANSWERED = @as(u32, 545259520);
pub const FAXDEVRECEIVE_SIZE = @as(u32, 4096);
pub const FAXDEVREPORTSTATUS_SIZE = @as(u32, 4096);
pub const FAX_ERR_START = @as(i32, 7001);
pub const FAX_ERR_SRV_OUTOFMEMORY = @as(i32, 7001);
pub const FAX_ERR_GROUP_NOT_FOUND = @as(i32, 7002);
pub const FAX_ERR_BAD_GROUP_CONFIGURATION = @as(i32, 7003);
pub const FAX_ERR_GROUP_IN_USE = @as(i32, 7004);
pub const FAX_ERR_RULE_NOT_FOUND = @as(i32, 7005);
pub const FAX_ERR_NOT_NTFS = @as(i32, 7006);
pub const FAX_ERR_DIRECTORY_IN_USE = @as(i32, 7007);
pub const FAX_ERR_FILE_ACCESS_DENIED = @as(i32, 7008);
pub const FAX_ERR_MESSAGE_NOT_FOUND = @as(i32, 7009);
pub const FAX_ERR_DEVICE_NUM_LIMIT_EXCEEDED = @as(i32, 7010);
pub const FAX_ERR_NOT_SUPPORTED_ON_THIS_SKU = @as(i32, 7011);
pub const FAX_ERR_VERSION_MISMATCH = @as(i32, 7012);
pub const FAX_ERR_RECIPIENTS_LIMIT = @as(i32, 7013);
pub const FAX_ERR_END = @as(i32, 7013);
pub const FAX_E_SRV_OUTOFMEMORY = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2147214503));
pub const FAX_E_GROUP_NOT_FOUND = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2147214502));
pub const FAX_E_BAD_GROUP_CONFIGURATION = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2147214501));
pub const FAX_E_GROUP_IN_USE = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2147214500));
pub const FAX_E_RULE_NOT_FOUND = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2147214499));
pub const FAX_E_NOT_NTFS = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2147214498));
pub const FAX_E_DIRECTORY_IN_USE = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2147214497));
pub const FAX_E_FILE_ACCESS_DENIED = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2147214496));
pub const FAX_E_MESSAGE_NOT_FOUND = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2147214495));
pub const FAX_E_DEVICE_NUM_LIMIT_EXCEEDED = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2147214494));
pub const FAX_E_NOT_SUPPORTED_ON_THIS_SKU = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2147214493));
pub const FAX_E_VERSION_MISMATCH = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2147214492));
pub const FAX_E_RECIPIENTS_LIMIT = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2147214491));
pub const JT_UNKNOWN = @as(u32, 0);
pub const JT_SEND = @as(u32, 1);
pub const JT_RECEIVE = @as(u32, 2);
pub const JT_ROUTING = @as(u32, 3);
pub const JT_FAIL_RECEIVE = @as(u32, 4);
pub const JS_PENDING = @as(u32, 0);
pub const JS_INPROGRESS = @as(u32, 1);
pub const JS_DELETING = @as(u32, 2);
pub const JS_FAILED = @as(u32, 4);
pub const JS_PAUSED = @as(u32, 8);
pub const JS_NOLINE = @as(u32, 16);
pub const JS_RETRYING = @as(u32, 32);
pub const JS_RETRIES_EXCEEDED = @as(u32, 64);
pub const FPS_DIALING = @as(u32, 536870913);
pub const FPS_SENDING = @as(u32, 536870914);
pub const FPS_RECEIVING = @as(u32, 536870916);
pub const FPS_COMPLETED = @as(u32, 536870920);
pub const FPS_HANDLED = @as(u32, 536870928);
pub const FPS_UNAVAILABLE = @as(u32, 536870944);
pub const FPS_BUSY = @as(u32, 536870976);
pub const FPS_NO_ANSWER = @as(u32, 536871040);
pub const FPS_BAD_ADDRESS = @as(u32, 536871168);
pub const FPS_NO_DIAL_TONE = @as(u32, 536871424);
pub const FPS_DISCONNECTED = @as(u32, 536871936);
pub const FPS_FATAL_ERROR = @as(u32, 536872960);
pub const FPS_NOT_FAX_CALL = @as(u32, 536875008);
pub const FPS_CALL_DELAYED = @as(u32, 536879104);
pub const FPS_CALL_BLACKLISTED = @as(u32, 536887296);
pub const FPS_INITIALIZING = @as(u32, 536903680);
pub const FPS_OFFLINE = @as(u32, 536936448);
pub const FPS_RINGING = @as(u32, 537001984);
pub const FPS_AVAILABLE = @as(u32, 537919488);
pub const FPS_ABORTING = @as(u32, 538968064);
pub const FPS_ROUTING = @as(u32, 541065216);
pub const FPS_ANSWERED = @as(u32, 545259520);
pub const FPF_RECEIVE = @as(u32, 1);
pub const FPF_SEND = @as(u32, 2);
pub const FPF_VIRTUAL = @as(u32, 4);
pub const FEI_DIALING = @as(u32, 1);
pub const FEI_SENDING = @as(u32, 2);
pub const FEI_RECEIVING = @as(u32, 3);
pub const FEI_COMPLETED = @as(u32, 4);
pub const FEI_BUSY = @as(u32, 5);
pub const FEI_NO_ANSWER = @as(u32, 6);
pub const FEI_BAD_ADDRESS = @as(u32, 7);
pub const FEI_NO_DIAL_TONE = @as(u32, 8);
pub const FEI_DISCONNECTED = @as(u32, 9);
pub const FEI_FATAL_ERROR = @as(u32, 10);
pub const FEI_NOT_FAX_CALL = @as(u32, 11);
pub const FEI_CALL_DELAYED = @as(u32, 12);
pub const FEI_CALL_BLACKLISTED = @as(u32, 13);
pub const FEI_RINGING = @as(u32, 14);
pub const FEI_ABORTING = @as(u32, 15);
pub const FEI_ROUTING = @as(u32, 16);
pub const FEI_MODEM_POWERED_ON = @as(u32, 17);
pub const FEI_MODEM_POWERED_OFF = @as(u32, 18);
pub const FEI_IDLE = @as(u32, 19);
pub const FEI_FAXSVC_ENDED = @as(u32, 20);
pub const FEI_ANSWERED = @as(u32, 21);
pub const FEI_JOB_QUEUED = @as(u32, 22);
pub const FEI_DELETED = @as(u32, 23);
pub const FEI_INITIALIZING = @as(u32, 24);
pub const FEI_LINE_UNAVAILABLE = @as(u32, 25);
pub const FEI_HANDLED = @as(u32, 26);
pub const FEI_FAXSVC_STARTED = @as(u32, 27);
pub const FEI_NEVENTS = @as(u32, 27);
pub const FAX_JOB_SUBMIT = @as(u32, 1);
pub const FAX_JOB_QUERY = @as(u32, 2);
pub const FAX_CONFIG_QUERY = @as(u32, 4);
pub const FAX_CONFIG_SET = @as(u32, 8);
pub const FAX_PORT_QUERY = @as(u32, 16);
pub const FAX_PORT_SET = @as(u32, 32);
pub const FAX_JOB_MANAGE = @as(u32, 64);
pub const STI_UNICODE = @as(u32, 1);
pub const CLSID_Sti = Guid.initString("b323f8e0-2e68-11d0-90ea-00aa0060f86c");
pub const GUID_DeviceArrivedLaunch = Guid.initString("740d9ee6-70f1-11d1-ad10-00a02438ad48");
pub const GUID_ScanImage = Guid.initString("a6c5a715-8c6e-11d2-977a-0000f87a926f");
pub const GUID_ScanPrintImage = Guid.initString("b441f425-8c6e-11d2-977a-0000f87a926f");
pub const GUID_ScanFaxImage = Guid.initString("c00eb793-8c6e-11d2-977a-0000f87a926f");
pub const GUID_STIUserDefined1 = Guid.initString("c00eb795-8c6e-11d2-977a-0000f87a926f");
pub const GUID_STIUserDefined2 = Guid.initString("c77ae9c5-8c6e-11d2-977a-0000f87a926f");
pub const GUID_STIUserDefined3 = Guid.initString("c77ae9c6-8c6e-11d2-977a-0000f87a926f");
pub const STI_VERSION_FLAG_MASK = @as(u32, 4278190080);
pub const STI_VERSION_FLAG_UNICODE = @as(u32, 16777216);
pub const STI_VERSION_REAL = @as(u32, 2);
pub const STI_VERSION_MIN_ALLOWED = @as(u32, 2);
pub const STI_VERSION = @as(u32, 2);
pub const STI_MAX_INTERNAL_NAME_LENGTH = @as(u32, 128);
pub const STI_GENCAP_NOTIFICATIONS = @as(u32, 1);
pub const STI_GENCAP_POLLING_NEEDED = @as(u32, 2);
pub const STI_GENCAP_GENERATE_ARRIVALEVENT = @as(u32, 4);
pub const STI_GENCAP_AUTO_PORTSELECT = @as(u32, 8);
pub const STI_GENCAP_WIA = @as(u32, 16);
pub const STI_GENCAP_SUBSET = @as(u32, 32);
pub const WIA_INCOMPAT_XP = @as(u32, 1);
pub const STI_HW_CONFIG_UNKNOWN = @as(u32, 1);
pub const STI_HW_CONFIG_SCSI = @as(u32, 2);
pub const STI_HW_CONFIG_USB = @as(u32, 4);
pub const STI_HW_CONFIG_SERIAL = @as(u32, 8);
pub const STI_HW_CONFIG_PARALLEL = @as(u32, 16);
pub const STI_DEVSTATUS_ONLINE_STATE = @as(u32, 1);
pub const STI_DEVSTATUS_EVENTS_STATE = @as(u32, 2);
pub const STI_ONLINESTATE_OPERATIONAL = @as(u32, 1);
pub const STI_ONLINESTATE_PENDING = @as(u32, 2);
pub const STI_ONLINESTATE_ERROR = @as(u32, 4);
pub const STI_ONLINESTATE_PAUSED = @as(u32, 8);
pub const STI_ONLINESTATE_PAPER_JAM = @as(u32, 16);
pub const STI_ONLINESTATE_PAPER_PROBLEM = @as(u32, 32);
pub const STI_ONLINESTATE_OFFLINE = @as(u32, 64);
pub const STI_ONLINESTATE_IO_ACTIVE = @as(u32, 128);
pub const STI_ONLINESTATE_BUSY = @as(u32, 256);
pub const STI_ONLINESTATE_TRANSFERRING = @as(u32, 512);
pub const STI_ONLINESTATE_INITIALIZING = @as(u32, 1024);
pub const STI_ONLINESTATE_WARMING_UP = @as(u32, 2048);
pub const STI_ONLINESTATE_USER_INTERVENTION = @as(u32, 4096);
pub const STI_ONLINESTATE_POWER_SAVE = @as(u32, 8192);
pub const STI_EVENTHANDLING_ENABLED = @as(u32, 1);
pub const STI_EVENTHANDLING_POLLING = @as(u32, 2);
pub const STI_EVENTHANDLING_PENDING = @as(u32, 4);
pub const STI_DIAGCODE_HWPRESENCE = @as(u32, 1);
pub const STI_TRACE_INFORMATION = @as(u32, 1);
pub const STI_TRACE_WARNING = @as(u32, 2);
pub const STI_TRACE_ERROR = @as(u32, 4);
pub const STI_SUBSCRIBE_FLAG_WINDOW = @as(u32, 1);
pub const STI_SUBSCRIBE_FLAG_EVENT = @as(u32, 2);
pub const MAX_NOTIFICATION_DATA = @as(u32, 64);
pub const STI_DEVICE_CREATE_STATUS = @as(u32, 1);
pub const STI_DEVICE_CREATE_DATA = @as(u32, 2);
pub const STI_DEVICE_CREATE_BOTH = @as(u32, 3);
pub const STI_DEVICE_CREATE_MASK = @as(u32, 65535);
pub const STIEDFL_ALLDEVICES = @as(u32, 0);
pub const STIEDFL_ATTACHEDONLY = @as(u32, 1);
pub const STI_RAW_RESERVED = @as(u32, 4096);
pub const STI_OK = @as(i32, 0);
pub const STI_ERROR_NO_ERROR = @as(i32, 0);
pub const STI_NOTCONNECTED = @as(i32, 1);
pub const STI_CHANGENOEFFECT = @as(i32, 1);
pub const STIERR_OLD_VERSION = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2147023746));
pub const STIERR_BETA_VERSION = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2147023743));
pub const STIERR_BADDRIVER = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2147024777));
pub const STIERR_DEVICENOTREG = @as(i32, -2147221164);
pub const STIERR_OBJECTNOTFOUND = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2147024894));
pub const STIERR_INVALID_PARAM = @as(i32, -2147024809);
pub const STIERR_NOINTERFACE = @as(i32, -2147467262);
pub const STIERR_GENERIC = @as(i32, -2147467259);
pub const STIERR_OUTOFMEMORY = @as(i32, -2147024882);
pub const STIERR_UNSUPPORTED = @as(i32, -2147467263);
pub const STIERR_NOT_INITIALIZED = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2147024875));
pub const STIERR_ALREADY_INITIALIZED = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2147023649));
pub const STIERR_DEVICE_LOCKED = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2147024863));
pub const STIERR_READONLY = @as(i32, -2147024891);
pub const STIERR_NOTINITIALIZED = @as(i32, -2147024891);
pub const STIERR_NEEDS_LOCK = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2147024738));
pub const STIERR_SHARING_VIOLATION = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2147024864));
pub const STIERR_HANDLEEXISTS = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2147024713));
pub const STIERR_INVALID_DEVICE_NAME = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2147024773));
pub const STIERR_INVALID_HW_TYPE = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2147024883));
pub const STIERR_NOEVENTS = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2147024637));
pub const STIERR_DEVICE_NOTREADY = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2147024875));
pub const IS_DIGITAL_CAMERA_VAL = @as(u32, 1);
pub const SUPPORTS_MSCPLUS_VAL = @as(u32, 1);
pub const DEVPKEY_WIA_DeviceType = PROPERTYKEY{ .fmtid = Guid.initString("6bdd1fc6-810f-11d0-bec7-08002be2092f"), .pid = 2 };
pub const DEVPKEY_WIA_USDClassId = PROPERTYKEY{ .fmtid = Guid.initString("6bdd1fc6-810f-11d0-bec7-08002be2092f"), .pid = 3 };
pub const STI_USD_GENCAP_NATIVE_PUSHSUPPORT = @as(u32, 1);
pub const STI_DEVICE_CREATE_FOR_MONITOR = @as(u32, 16777216);
pub const lDEFAULT_PREFETCH_SIZE = @as(i32, 100);
pub const wcharREASSIGN_RECIPIENTS_DELIMITER = @as(u16, 59);

//--------------------------------------------------------------------------------
// Section: Types (275)
//--------------------------------------------------------------------------------
pub const FAX_ENUM_LOG_LEVELS = enum(i32) {
    NONE = 0,
    MIN = 1,
    MED = 2,
    MAX = 3,
};
pub const FAXLOG_LEVEL_NONE = FAX_ENUM_LOG_LEVELS.NONE;
pub const FAXLOG_LEVEL_MIN = FAX_ENUM_LOG_LEVELS.MIN;
pub const FAXLOG_LEVEL_MED = FAX_ENUM_LOG_LEVELS.MED;
pub const FAXLOG_LEVEL_MAX = FAX_ENUM_LOG_LEVELS.MAX;

pub const FAX_ENUM_LOG_CATEGORIES = enum(i32) {
    INIT = 1,
    OUTBOUND = 2,
    INBOUND = 3,
    UNKNOWN = 4,
};
pub const FAXLOG_CATEGORY_INIT = FAX_ENUM_LOG_CATEGORIES.INIT;
pub const FAXLOG_CATEGORY_OUTBOUND = FAX_ENUM_LOG_CATEGORIES.OUTBOUND;
pub const FAXLOG_CATEGORY_INBOUND = FAX_ENUM_LOG_CATEGORIES.INBOUND;
pub const FAXLOG_CATEGORY_UNKNOWN = FAX_ENUM_LOG_CATEGORIES.UNKNOWN;

pub const FAX_LOG_CATEGORYA = extern struct {
    Name: ?[*:0]const u8,
    Category: u32,
    Level: u32,
};

pub const FAX_LOG_CATEGORYW = extern struct {
    Name: ?[*:0]const u16,
    Category: u32,
    Level: u32,
};

pub const FAX_TIME = extern struct {
    Hour: u16,
    Minute: u16,
};

pub const FAX_CONFIGURATIONA = extern struct {
    SizeOfStruct: u32,
    Retries: u32,
    RetryDelay: u32,
    DirtyDays: u32,
    Branding: BOOL,
    UseDeviceTsid: BOOL,
    ServerCp: BOOL,
    PauseServerQueue: BOOL,
    StartCheapTime: FAX_TIME,
    StopCheapTime: FAX_TIME,
    ArchiveOutgoingFaxes: BOOL,
    ArchiveDirectory: ?[*:0]const u8,
    Reserved: ?[*:0]const u8,
};

pub const FAX_CONFIGURATIONW = extern struct {
    SizeOfStruct: u32,
    Retries: u32,
    RetryDelay: u32,
    DirtyDays: u32,
    Branding: BOOL,
    UseDeviceTsid: BOOL,
    ServerCp: BOOL,
    PauseServerQueue: BOOL,
    StartCheapTime: FAX_TIME,
    StopCheapTime: FAX_TIME,
    ArchiveOutgoingFaxes: BOOL,
    ArchiveDirectory: ?[*:0]const u16,
    Reserved: ?[*:0]const u16,
};

pub const FAX_ENUM_JOB_COMMANDS = enum(i32) {
    UNKNOWN = 0,
    DELETE = 1,
    PAUSE = 2,
    RESUME = 3,
};
pub const JC_UNKNOWN = FAX_ENUM_JOB_COMMANDS.UNKNOWN;
pub const JC_DELETE = FAX_ENUM_JOB_COMMANDS.DELETE;
pub const JC_PAUSE = FAX_ENUM_JOB_COMMANDS.PAUSE;
pub const JC_RESUME = FAX_ENUM_JOB_COMMANDS.RESUME;

pub const FAX_DEVICE_STATUSA = extern struct {
    SizeOfStruct: u32,
    CallerId: ?[*:0]const u8,
    Csid: ?[*:0]const u8,
    CurrentPage: u32,
    DeviceId: u32,
    DeviceName: ?[*:0]const u8,
    DocumentName: ?[*:0]const u8,
    JobType: u32,
    PhoneNumber: ?[*:0]const u8,
    RoutingString: ?[*:0]const u8,
    SenderName: ?[*:0]const u8,
    RecipientName: ?[*:0]const u8,
    Size: u32,
    StartTime: FILETIME,
    Status: u32,
    StatusString: ?[*:0]const u8,
    SubmittedTime: FILETIME,
    TotalPages: u32,
    Tsid: ?[*:0]const u8,
    UserName: ?[*:0]const u8,
};

pub const FAX_DEVICE_STATUSW = extern struct {
    SizeOfStruct: u32,
    CallerId: ?[*:0]const u16,
    Csid: ?[*:0]const u16,
    CurrentPage: u32,
    DeviceId: u32,
    DeviceName: ?[*:0]const u16,
    DocumentName: ?[*:0]const u16,
    JobType: u32,
    PhoneNumber: ?[*:0]const u16,
    RoutingString: ?[*:0]const u16,
    SenderName: ?[*:0]const u16,
    RecipientName: ?[*:0]const u16,
    Size: u32,
    StartTime: FILETIME,
    Status: u32,
    StatusString: ?[*:0]const u16,
    SubmittedTime: FILETIME,
    TotalPages: u32,
    Tsid: ?[*:0]const u16,
    UserName: ?[*:0]const u16,
};

pub const FAX_JOB_ENTRYA = extern struct {
    SizeOfStruct: u32,
    JobId: u32,
    UserName: ?[*:0]const u8,
    JobType: u32,
    QueueStatus: u32,
    Status: u32,
    Size: u32,
    PageCount: u32,
    RecipientNumber: ?[*:0]const u8,
    RecipientName: ?[*:0]const u8,
    Tsid: ?[*:0]const u8,
    SenderName: ?[*:0]const u8,
    SenderCompany: ?[*:0]const u8,
    SenderDept: ?[*:0]const u8,
    BillingCode: ?[*:0]const u8,
    ScheduleAction: u32,
    ScheduleTime: SYSTEMTIME,
    DeliveryReportType: u32,
    DeliveryReportAddress: ?[*:0]const u8,
    DocumentName: ?[*:0]const u8,
};

pub const FAX_JOB_ENTRYW = extern struct {
    SizeOfStruct: u32,
    JobId: u32,
    UserName: ?[*:0]const u16,
    JobType: u32,
    QueueStatus: u32,
    Status: u32,
    Size: u32,
    PageCount: u32,
    RecipientNumber: ?[*:0]const u16,
    RecipientName: ?[*:0]const u16,
    Tsid: ?[*:0]const u16,
    SenderName: ?[*:0]const u16,
    SenderCompany: ?[*:0]const u16,
    SenderDept: ?[*:0]const u16,
    BillingCode: ?[*:0]const u16,
    ScheduleAction: u32,
    ScheduleTime: SYSTEMTIME,
    DeliveryReportType: u32,
    DeliveryReportAddress: ?[*:0]const u16,
    DocumentName: ?[*:0]const u16,
};

pub const FAX_PORT_INFOA = extern struct {
    SizeOfStruct: u32,
    DeviceId: u32,
    State: u32,
    Flags: u32,
    Rings: u32,
    Priority: u32,
    DeviceName: ?[*:0]const u8,
    Tsid: ?[*:0]const u8,
    Csid: ?[*:0]const u8,
};

pub const FAX_PORT_INFOW = extern struct {
    SizeOfStruct: u32,
    DeviceId: u32,
    State: u32,
    Flags: u32,
    Rings: u32,
    Priority: u32,
    DeviceName: ?[*:0]const u16,
    Tsid: ?[*:0]const u16,
    Csid: ?[*:0]const u16,
};

pub const FAX_ROUTING_METHODA = extern struct {
    SizeOfStruct: u32,
    DeviceId: u32,
    Enabled: BOOL,
    DeviceName: ?[*:0]const u8,
    Guid: ?[*:0]const u8,
    FriendlyName: ?[*:0]const u8,
    FunctionName: ?[*:0]const u8,
    ExtensionImageName: ?[*:0]const u8,
    ExtensionFriendlyName: ?[*:0]const u8,
};

pub const FAX_ROUTING_METHODW = extern struct {
    SizeOfStruct: u32,
    DeviceId: u32,
    Enabled: BOOL,
    DeviceName: ?[*:0]const u16,
    Guid: ?[*:0]const u16,
    FriendlyName: ?[*:0]const u16,
    FunctionName: ?[*:0]const u16,
    ExtensionImageName: ?[*:0]const u16,
    ExtensionFriendlyName: ?[*:0]const u16,
};

pub const FAX_GLOBAL_ROUTING_INFOA = extern struct {
    SizeOfStruct: u32,
    Priority: u32,
    Guid: ?[*:0]const u8,
    FriendlyName: ?[*:0]const u8,
    FunctionName: ?[*:0]const u8,
    ExtensionImageName: ?[*:0]const u8,
    ExtensionFriendlyName: ?[*:0]const u8,
};

pub const FAX_GLOBAL_ROUTING_INFOW = extern struct {
    SizeOfStruct: u32,
    Priority: u32,
    Guid: ?[*:0]const u16,
    FriendlyName: ?[*:0]const u16,
    FunctionName: ?[*:0]const u16,
    ExtensionImageName: ?[*:0]const u16,
    ExtensionFriendlyName: ?[*:0]const u16,
};

pub const FAX_COVERPAGE_INFOA = extern struct {
    SizeOfStruct: u32,
    CoverPageName: ?[*:0]const u8,
    UseServerCoverPage: BOOL,
    RecName: ?[*:0]const u8,
    RecFaxNumber: ?[*:0]const u8,
    RecCompany: ?[*:0]const u8,
    RecStreetAddress: ?[*:0]const u8,
    RecCity: ?[*:0]const u8,
    RecState: ?[*:0]const u8,
    RecZip: ?[*:0]const u8,
    RecCountry: ?[*:0]const u8,
    RecTitle: ?[*:0]const u8,
    RecDepartment: ?[*:0]const u8,
    RecOfficeLocation: ?[*:0]const u8,
    RecHomePhone: ?[*:0]const u8,
    RecOfficePhone: ?[*:0]const u8,
    SdrName: ?[*:0]const u8,
    SdrFaxNumber: ?[*:0]const u8,
    SdrCompany: ?[*:0]const u8,
    SdrAddress: ?[*:0]const u8,
    SdrTitle: ?[*:0]const u8,
    SdrDepartment: ?[*:0]const u8,
    SdrOfficeLocation: ?[*:0]const u8,
    SdrHomePhone: ?[*:0]const u8,
    SdrOfficePhone: ?[*:0]const u8,
    Note: ?[*:0]const u8,
    Subject: ?[*:0]const u8,
    TimeSent: SYSTEMTIME,
    PageCount: u32,
};

pub const FAX_COVERPAGE_INFOW = extern struct {
    SizeOfStruct: u32,
    CoverPageName: ?[*:0]const u16,
    UseServerCoverPage: BOOL,
    RecName: ?[*:0]const u16,
    RecFaxNumber: ?[*:0]const u16,
    RecCompany: ?[*:0]const u16,
    RecStreetAddress: ?[*:0]const u16,
    RecCity: ?[*:0]const u16,
    RecState: ?[*:0]const u16,
    RecZip: ?[*:0]const u16,
    RecCountry: ?[*:0]const u16,
    RecTitle: ?[*:0]const u16,
    RecDepartment: ?[*:0]const u16,
    RecOfficeLocation: ?[*:0]const u16,
    RecHomePhone: ?[*:0]const u16,
    RecOfficePhone: ?[*:0]const u16,
    SdrName: ?[*:0]const u16,
    SdrFaxNumber: ?[*:0]const u16,
    SdrCompany: ?[*:0]const u16,
    SdrAddress: ?[*:0]const u16,
    SdrTitle: ?[*:0]const u16,
    SdrDepartment: ?[*:0]const u16,
    SdrOfficeLocation: ?[*:0]const u16,
    SdrHomePhone: ?[*:0]const u16,
    SdrOfficePhone: ?[*:0]const u16,
    Note: ?[*:0]const u16,
    Subject: ?[*:0]const u16,
    TimeSent: SYSTEMTIME,
    PageCount: u32,
};

pub const FAX_ENUM_JOB_SEND_ATTRIBUTES = enum(i32) {
    NOW = 0,
    SPECIFIC_TIME = 1,
    DISCOUNT_PERIOD = 2,
};
pub const JSA_NOW = FAX_ENUM_JOB_SEND_ATTRIBUTES.NOW;
pub const JSA_SPECIFIC_TIME = FAX_ENUM_JOB_SEND_ATTRIBUTES.SPECIFIC_TIME;
pub const JSA_DISCOUNT_PERIOD = FAX_ENUM_JOB_SEND_ATTRIBUTES.DISCOUNT_PERIOD;

pub const FAX_ENUM_DELIVERY_REPORT_TYPES = enum(i32) {
    NONE = 0,
    EMAIL = 1,
    INBOX = 2,
};
pub const DRT_NONE = FAX_ENUM_DELIVERY_REPORT_TYPES.NONE;
pub const DRT_EMAIL = FAX_ENUM_DELIVERY_REPORT_TYPES.EMAIL;
pub const DRT_INBOX = FAX_ENUM_DELIVERY_REPORT_TYPES.INBOX;

pub const FAX_JOB_PARAMA = extern struct {
    SizeOfStruct: u32,
    RecipientNumber: ?[*:0]const u8,
    RecipientName: ?[*:0]const u8,
    Tsid: ?[*:0]const u8,
    SenderName: ?[*:0]const u8,
    SenderCompany: ?[*:0]const u8,
    SenderDept: ?[*:0]const u8,
    BillingCode: ?[*:0]const u8,
    ScheduleAction: u32,
    ScheduleTime: SYSTEMTIME,
    DeliveryReportType: u32,
    DeliveryReportAddress: ?[*:0]const u8,
    DocumentName: ?[*:0]const u8,
    CallHandle: u32,
    Reserved: [3]usize,
};

pub const FAX_JOB_PARAMW = extern struct {
    SizeOfStruct: u32,
    RecipientNumber: ?[*:0]const u16,
    RecipientName: ?[*:0]const u16,
    Tsid: ?[*:0]const u16,
    SenderName: ?[*:0]const u16,
    SenderCompany: ?[*:0]const u16,
    SenderDept: ?[*:0]const u16,
    BillingCode: ?[*:0]const u16,
    ScheduleAction: u32,
    ScheduleTime: SYSTEMTIME,
    DeliveryReportType: u32,
    DeliveryReportAddress: ?[*:0]const u16,
    DocumentName: ?[*:0]const u16,
    CallHandle: u32,
    Reserved: [3]usize,
};

pub const FAX_EVENTA = extern struct {
    SizeOfStruct: u32,
    TimeStamp: FILETIME,
    DeviceId: u32,
    EventId: u32,
    JobId: u32,
};

pub const FAX_EVENTW = extern struct {
    SizeOfStruct: u32,
    TimeStamp: FILETIME,
    DeviceId: u32,
    EventId: u32,
    JobId: u32,
};

pub const FAX_PRINT_INFOA = extern struct {
    SizeOfStruct: u32,
    DocName: ?[*:0]const u8,
    RecipientName: ?[*:0]const u8,
    RecipientNumber: ?[*:0]const u8,
    SenderName: ?[*:0]const u8,
    SenderCompany: ?[*:0]const u8,
    SenderDept: ?[*:0]const u8,
    SenderBillingCode: ?[*:0]const u8,
    Reserved: ?[*:0]const u8,
    DrEmailAddress: ?[*:0]const u8,
    OutputFileName: ?[*:0]const u8,
};

pub const FAX_PRINT_INFOW = extern struct {
    SizeOfStruct: u32,
    DocName: ?[*:0]const u16,
    RecipientName: ?[*:0]const u16,
    RecipientNumber: ?[*:0]const u16,
    SenderName: ?[*:0]const u16,
    SenderCompany: ?[*:0]const u16,
    SenderDept: ?[*:0]const u16,
    SenderBillingCode: ?[*:0]const u16,
    Reserved: ?[*:0]const u16,
    DrEmailAddress: ?[*:0]const u16,
    OutputFileName: ?[*:0]const u16,
};

pub const FAX_CONTEXT_INFOA = extern struct {
    SizeOfStruct: u32,
    hDC: ?HDC,
    ServerName: [16]CHAR,
};

pub const FAX_CONTEXT_INFOW = extern struct {
    SizeOfStruct: u32,
    hDC: ?HDC,
    ServerName: [16]u16,
};

pub const PFAXCONNECTFAXSERVERA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        MachineName: ?[*:0]const u8,
        FaxHandle: ?*?HANDLE,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        MachineName: ?[*:0]const u8,
        FaxHandle: ?*?HANDLE,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXCONNECTFAXSERVERW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        MachineName: ?[*:0]const u16,
        FaxHandle: ?*?HANDLE,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        MachineName: ?[*:0]const u16,
        FaxHandle: ?*?HANDLE,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXCLOSE = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const FAX_ENUM_PORT_OPEN_TYPE = enum(i32) {
    QUERY = 1,
    MODIFY = 2,
};
pub const PORT_OPEN_QUERY = FAX_ENUM_PORT_OPEN_TYPE.QUERY;
pub const PORT_OPEN_MODIFY = FAX_ENUM_PORT_OPEN_TYPE.MODIFY;

pub const PFAXOPENPORT = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        DeviceId: u32,
        Flags: u32,
        FaxPortHandle: ?*?HANDLE,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        DeviceId: u32,
        Flags: u32,
        FaxPortHandle: ?*?HANDLE,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXCOMPLETEJOBPARAMSA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        JobParams: ?*?*FAX_JOB_PARAMA,
        CoverpageInfo: ?*?*FAX_COVERPAGE_INFOA,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        JobParams: ?*?*FAX_JOB_PARAMA,
        CoverpageInfo: ?*?*FAX_COVERPAGE_INFOA,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXCOMPLETEJOBPARAMSW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        JobParams: ?*?*FAX_JOB_PARAMW,
        CoverpageInfo: ?*?*FAX_COVERPAGE_INFOW,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        JobParams: ?*?*FAX_JOB_PARAMW,
        CoverpageInfo: ?*?*FAX_COVERPAGE_INFOW,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXSENDDOCUMENTA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        FileName: ?[*:0]const u8,
        JobParams: ?*FAX_JOB_PARAMA,
        CoverpageInfo: ?*const FAX_COVERPAGE_INFOA,
        FaxJobId: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        FileName: ?[*:0]const u8,
        JobParams: ?*FAX_JOB_PARAMA,
        CoverpageInfo: ?*const FAX_COVERPAGE_INFOA,
        FaxJobId: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXSENDDOCUMENTW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        FileName: ?[*:0]const u16,
        JobParams: ?*FAX_JOB_PARAMW,
        CoverpageInfo: ?*const FAX_COVERPAGE_INFOW,
        FaxJobId: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        FileName: ?[*:0]const u16,
        JobParams: ?*FAX_JOB_PARAMW,
        CoverpageInfo: ?*const FAX_COVERPAGE_INFOW,
        FaxJobId: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAX_RECIPIENT_CALLBACKA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        RecipientNumber: u32,
        Context: ?*anyopaque,
        JobParams: ?*FAX_JOB_PARAMA,
        CoverpageInfo: ?*FAX_COVERPAGE_INFOA,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        RecipientNumber: u32,
        Context: ?*anyopaque,
        JobParams: ?*FAX_JOB_PARAMA,
        CoverpageInfo: ?*FAX_COVERPAGE_INFOA,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAX_RECIPIENT_CALLBACKW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        RecipientNumber: u32,
        Context: ?*anyopaque,
        JobParams: ?*FAX_JOB_PARAMW,
        CoverpageInfo: ?*FAX_COVERPAGE_INFOW,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        RecipientNumber: u32,
        Context: ?*anyopaque,
        JobParams: ?*FAX_JOB_PARAMW,
        CoverpageInfo: ?*FAX_COVERPAGE_INFOW,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXSENDDOCUMENTFORBROADCASTA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        FileName: ?[*:0]const u8,
        FaxJobId: ?*u32,
        FaxRecipientCallback: ?PFAX_RECIPIENT_CALLBACKA,
        Context: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        FileName: ?[*:0]const u8,
        FaxJobId: ?*u32,
        FaxRecipientCallback: ?PFAX_RECIPIENT_CALLBACKA,
        Context: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXSENDDOCUMENTFORBROADCASTW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        FileName: ?[*:0]const u16,
        FaxJobId: ?*u32,
        FaxRecipientCallback: ?PFAX_RECIPIENT_CALLBACKW,
        Context: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        FileName: ?[*:0]const u16,
        FaxJobId: ?*u32,
        FaxRecipientCallback: ?PFAX_RECIPIENT_CALLBACKW,
        Context: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXENUMJOBSA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        JobEntry: ?*?*FAX_JOB_ENTRYA,
        JobsReturned: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        JobEntry: ?*?*FAX_JOB_ENTRYA,
        JobsReturned: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXENUMJOBSW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        JobEntry: ?*?*FAX_JOB_ENTRYW,
        JobsReturned: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        JobEntry: ?*?*FAX_JOB_ENTRYW,
        JobsReturned: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXGETJOBA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        JobId: u32,
        JobEntry: ?*?*FAX_JOB_ENTRYA,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        JobId: u32,
        JobEntry: ?*?*FAX_JOB_ENTRYA,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXGETJOBW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        JobId: u32,
        JobEntry: ?*?*FAX_JOB_ENTRYW,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        JobId: u32,
        JobEntry: ?*?*FAX_JOB_ENTRYW,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXSETJOBA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        JobId: u32,
        Command: u32,
        JobEntry: ?*const FAX_JOB_ENTRYA,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        JobId: u32,
        Command: u32,
        JobEntry: ?*const FAX_JOB_ENTRYA,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXSETJOBW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        JobId: u32,
        Command: u32,
        JobEntry: ?*const FAX_JOB_ENTRYW,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        JobId: u32,
        Command: u32,
        JobEntry: ?*const FAX_JOB_ENTRYW,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXGETPAGEDATA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        JobId: u32,
        Buffer: ?*?*u8,
        BufferSize: ?*u32,
        ImageWidth: ?*u32,
        ImageHeight: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        JobId: u32,
        Buffer: ?*?*u8,
        BufferSize: ?*u32,
        ImageWidth: ?*u32,
        ImageHeight: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXGETDEVICESTATUSA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxPortHandle: ?HANDLE,
        DeviceStatus: ?*?*FAX_DEVICE_STATUSA,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxPortHandle: ?HANDLE,
        DeviceStatus: ?*?*FAX_DEVICE_STATUSA,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXGETDEVICESTATUSW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxPortHandle: ?HANDLE,
        DeviceStatus: ?*?*FAX_DEVICE_STATUSW,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxPortHandle: ?HANDLE,
        DeviceStatus: ?*?*FAX_DEVICE_STATUSW,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXABORT = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        JobId: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        JobId: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXGETCONFIGURATIONA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        FaxConfig: ?*?*FAX_CONFIGURATIONA,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        FaxConfig: ?*?*FAX_CONFIGURATIONA,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXGETCONFIGURATIONW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        FaxConfig: ?*?*FAX_CONFIGURATIONW,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        FaxConfig: ?*?*FAX_CONFIGURATIONW,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXSETCONFIGURATIONA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        FaxConfig: ?*const FAX_CONFIGURATIONA,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        FaxConfig: ?*const FAX_CONFIGURATIONA,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXSETCONFIGURATIONW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        FaxConfig: ?*const FAX_CONFIGURATIONW,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        FaxConfig: ?*const FAX_CONFIGURATIONW,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXGETLOGGINGCATEGORIESA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        Categories: ?*?*FAX_LOG_CATEGORYA,
        NumberCategories: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        Categories: ?*?*FAX_LOG_CATEGORYA,
        NumberCategories: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXGETLOGGINGCATEGORIESW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        Categories: ?*?*FAX_LOG_CATEGORYW,
        NumberCategories: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        Categories: ?*?*FAX_LOG_CATEGORYW,
        NumberCategories: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXSETLOGGINGCATEGORIESA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        Categories: ?*const FAX_LOG_CATEGORYA,
        NumberCategories: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        Categories: ?*const FAX_LOG_CATEGORYA,
        NumberCategories: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXSETLOGGINGCATEGORIESW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        Categories: ?*const FAX_LOG_CATEGORYW,
        NumberCategories: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        Categories: ?*const FAX_LOG_CATEGORYW,
        NumberCategories: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXENUMPORTSA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        PortInfo: ?*?*FAX_PORT_INFOA,
        PortsReturned: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        PortInfo: ?*?*FAX_PORT_INFOA,
        PortsReturned: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXENUMPORTSW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        PortInfo: ?*?*FAX_PORT_INFOW,
        PortsReturned: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        PortInfo: ?*?*FAX_PORT_INFOW,
        PortsReturned: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXGETPORTA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxPortHandle: ?HANDLE,
        PortInfo: ?*?*FAX_PORT_INFOA,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxPortHandle: ?HANDLE,
        PortInfo: ?*?*FAX_PORT_INFOA,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXGETPORTW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxPortHandle: ?HANDLE,
        PortInfo: ?*?*FAX_PORT_INFOW,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxPortHandle: ?HANDLE,
        PortInfo: ?*?*FAX_PORT_INFOW,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXSETPORTA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxPortHandle: ?HANDLE,
        PortInfo: ?*const FAX_PORT_INFOA,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxPortHandle: ?HANDLE,
        PortInfo: ?*const FAX_PORT_INFOA,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXSETPORTW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxPortHandle: ?HANDLE,
        PortInfo: ?*const FAX_PORT_INFOW,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxPortHandle: ?HANDLE,
        PortInfo: ?*const FAX_PORT_INFOW,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXENUMROUTINGMETHODSA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxPortHandle: ?HANDLE,
        RoutingMethod: ?*?*FAX_ROUTING_METHODA,
        MethodsReturned: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxPortHandle: ?HANDLE,
        RoutingMethod: ?*?*FAX_ROUTING_METHODA,
        MethodsReturned: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXENUMROUTINGMETHODSW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxPortHandle: ?HANDLE,
        RoutingMethod: ?*?*FAX_ROUTING_METHODW,
        MethodsReturned: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxPortHandle: ?HANDLE,
        RoutingMethod: ?*?*FAX_ROUTING_METHODW,
        MethodsReturned: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXENABLEROUTINGMETHODA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxPortHandle: ?HANDLE,
        RoutingGuid: ?[*:0]const u8,
        Enabled: BOOL,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxPortHandle: ?HANDLE,
        RoutingGuid: ?[*:0]const u8,
        Enabled: BOOL,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXENABLEROUTINGMETHODW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxPortHandle: ?HANDLE,
        RoutingGuid: ?[*:0]const u16,
        Enabled: BOOL,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxPortHandle: ?HANDLE,
        RoutingGuid: ?[*:0]const u16,
        Enabled: BOOL,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXENUMGLOBALROUTINGINFOA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        RoutingInfo: ?*?*FAX_GLOBAL_ROUTING_INFOA,
        MethodsReturned: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        RoutingInfo: ?*?*FAX_GLOBAL_ROUTING_INFOA,
        MethodsReturned: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXENUMGLOBALROUTINGINFOW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        RoutingInfo: ?*?*FAX_GLOBAL_ROUTING_INFOW,
        MethodsReturned: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        RoutingInfo: ?*?*FAX_GLOBAL_ROUTING_INFOW,
        MethodsReturned: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXSETGLOBALROUTINGINFOA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxPortHandle: ?HANDLE,
        RoutingInfo: ?*const FAX_GLOBAL_ROUTING_INFOA,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxPortHandle: ?HANDLE,
        RoutingInfo: ?*const FAX_GLOBAL_ROUTING_INFOA,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXSETGLOBALROUTINGINFOW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxPortHandle: ?HANDLE,
        RoutingInfo: ?*const FAX_GLOBAL_ROUTING_INFOW,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxPortHandle: ?HANDLE,
        RoutingInfo: ?*const FAX_GLOBAL_ROUTING_INFOW,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXGETROUTINGINFOA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxPortHandle: ?HANDLE,
        RoutingGuid: ?[*:0]const u8,
        RoutingInfoBuffer: ?*?*u8,
        RoutingInfoBufferSize: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxPortHandle: ?HANDLE,
        RoutingGuid: ?[*:0]const u8,
        RoutingInfoBuffer: ?*?*u8,
        RoutingInfoBufferSize: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXGETROUTINGINFOW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxPortHandle: ?HANDLE,
        RoutingGuid: ?[*:0]const u16,
        RoutingInfoBuffer: ?*?*u8,
        RoutingInfoBufferSize: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxPortHandle: ?HANDLE,
        RoutingGuid: ?[*:0]const u16,
        RoutingInfoBuffer: ?*?*u8,
        RoutingInfoBufferSize: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXSETROUTINGINFOA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxPortHandle: ?HANDLE,
        RoutingGuid: ?[*:0]const u8,
        RoutingInfoBuffer: ?*const u8,
        RoutingInfoBufferSize: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxPortHandle: ?HANDLE,
        RoutingGuid: ?[*:0]const u8,
        RoutingInfoBuffer: ?*const u8,
        RoutingInfoBufferSize: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXSETROUTINGINFOW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxPortHandle: ?HANDLE,
        RoutingGuid: ?[*:0]const u16,
        RoutingInfoBuffer: ?*const u8,
        RoutingInfoBufferSize: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxPortHandle: ?HANDLE,
        RoutingGuid: ?[*:0]const u16,
        RoutingInfoBuffer: ?*const u8,
        RoutingInfoBufferSize: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXINITIALIZEEVENTQUEUE = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        CompletionPort: ?HANDLE,
        CompletionKey: usize,
        hWnd: ?HWND,
        MessageStart: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        CompletionPort: ?HANDLE,
        CompletionKey: usize,
        hWnd: ?HWND,
        MessageStart: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

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

pub const PFAXSTARTPRINTJOBA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        PrinterName: ?[*:0]const u8,
        PrintInfo: ?*const FAX_PRINT_INFOA,
        FaxJobId: ?*u32,
        FaxContextInfo: ?*FAX_CONTEXT_INFOA,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        PrinterName: ?[*:0]const u8,
        PrintInfo: ?*const FAX_PRINT_INFOA,
        FaxJobId: ?*u32,
        FaxContextInfo: ?*FAX_CONTEXT_INFOA,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXSTARTPRINTJOBW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        PrinterName: ?[*:0]const u16,
        PrintInfo: ?*const FAX_PRINT_INFOW,
        FaxJobId: ?*u32,
        FaxContextInfo: ?*FAX_CONTEXT_INFOW,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        PrinterName: ?[*:0]const u16,
        PrintInfo: ?*const FAX_PRINT_INFOW,
        FaxJobId: ?*u32,
        FaxContextInfo: ?*FAX_CONTEXT_INFOW,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXPRINTCOVERPAGEA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxContextInfo: ?*const FAX_CONTEXT_INFOA,
        CoverPageInfo: ?*const FAX_COVERPAGE_INFOA,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxContextInfo: ?*const FAX_CONTEXT_INFOA,
        CoverPageInfo: ?*const FAX_COVERPAGE_INFOA,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXPRINTCOVERPAGEW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxContextInfo: ?*const FAX_CONTEXT_INFOW,
        CoverPageInfo: ?*const FAX_COVERPAGE_INFOW,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxContextInfo: ?*const FAX_CONTEXT_INFOW,
        CoverPageInfo: ?*const FAX_COVERPAGE_INFOW,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXREGISTERSERVICEPROVIDERW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        DeviceProvider: ?[*:0]const u16,
        FriendlyName: ?[*:0]const u16,
        ImageName: ?[*:0]const u16,
        TspName: ?[*:0]const u16,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        DeviceProvider: ?[*:0]const u16,
        FriendlyName: ?[*:0]const u16,
        ImageName: ?[*:0]const u16,
        TspName: ?[*:0]const u16,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

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

pub const PFAX_ROUTING_INSTALLATION_CALLBACKW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        Context: ?*anyopaque,
        MethodName: ?PWSTR,
        FriendlyName: ?PWSTR,
        FunctionName: ?PWSTR,
        Guid: ?PWSTR,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        Context: ?*anyopaque,
        MethodName: ?PWSTR,
        FriendlyName: ?PWSTR,
        FunctionName: ?PWSTR,
        Guid: ?PWSTR,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXREGISTERROUTINGEXTENSIONW = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        ExtensionName: ?[*:0]const u16,
        FriendlyName: ?[*:0]const u16,
        ImageName: ?[*:0]const u16,
        CallBack: ?PFAX_ROUTING_INSTALLATION_CALLBACKW,
        Context: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        ExtensionName: ?[*:0]const u16,
        FriendlyName: ?[*:0]const u16,
        ImageName: ?[*:0]const u16,
        CallBack: ?PFAX_ROUTING_INSTALLATION_CALLBACKW,
        Context: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXACCESSCHECK = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        AccessMask: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        AccessMask: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const FAX_SEND = extern struct {
    SizeOfStruct: u32,
    FileName: ?PWSTR,
    CallerName: ?PWSTR,
    CallerNumber: ?PWSTR,
    ReceiverName: ?PWSTR,
    ReceiverNumber: ?PWSTR,
    Branding: BOOL,
    CallHandle: u32,
    Reserved: [3]u32,
};

pub const FAX_RECEIVE = extern struct {
    SizeOfStruct: u32,
    FileName: ?PWSTR,
    ReceiverName: ?PWSTR,
    ReceiverNumber: ?PWSTR,
    Reserved: [4]u32,
};

pub const FAX_DEV_STATUS = extern struct {
    SizeOfStruct: u32,
    StatusId: u32,
    StringId: u32,
    PageCount: u32,
    CSI: ?PWSTR,
    CallerId: ?PWSTR,
    RoutingInfo: ?PWSTR,
    ErrorCode: u32,
    Reserved: [3]u32,
};

pub const PFAX_SERVICE_CALLBACK = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        DeviceId: u32,
        Param1: usize,
        Param2: usize,
        Param3: usize,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        DeviceId: u32,
        Param1: usize,
        Param2: usize,
        Param3: usize,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAX_LINECALLBACK = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        hDevice: u32,
        dwMessage: u32,
        dwInstance: usize,
        dwParam1: usize,
        dwParam2: usize,
        dwParam3: usize,
    ) callconv(@import("std").os.windows.WINAPI) void,
    else => *const fn (
        FaxHandle: ?HANDLE,
        hDevice: u32,
        dwMessage: u32,
        dwInstance: usize,
        dwParam1: usize,
        dwParam2: usize,
        dwParam3: usize,
    ) callconv(@import("std").os.windows.WINAPI) void,
};

pub const PFAX_SEND_CALLBACK = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        FaxHandle: ?HANDLE,
        CallHandle: u32,
        Reserved1: u32,
        Reserved2: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        FaxHandle: ?HANDLE,
        CallHandle: u32,
        Reserved1: u32,
        Reserved2: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXDEVINITIALIZE = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: u32,
        param1: ?HANDLE,
        param2: ?*?PFAX_LINECALLBACK,
        param3: ?PFAX_SERVICE_CALLBACK,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: u32,
        param1: ?HANDLE,
        param2: ?*?PFAX_LINECALLBACK,
        param3: ?PFAX_SERVICE_CALLBACK,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXDEVVIRTUALDEVICECREATION = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        DeviceCount: ?*u32,
        DeviceNamePrefix: *[128]u16,
        DeviceIdPrefix: ?*u32,
        CompletionPort: ?HANDLE,
        CompletionKey: usize,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        DeviceCount: ?*u32,
        DeviceNamePrefix: *[128]u16,
        DeviceIdPrefix: ?*u32,
        CompletionPort: ?HANDLE,
        CompletionKey: usize,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXDEVSTARTJOB = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: u32,
        param1: u32,
        param2: ?*?HANDLE,
        param3: ?HANDLE,
        param4: usize,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: u32,
        param1: u32,
        param2: ?*?HANDLE,
        param3: ?HANDLE,
        param4: usize,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

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

pub const PFAXDEVSEND = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?HANDLE,
        param1: ?*FAX_SEND,
        param2: ?PFAX_SEND_CALLBACK,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: ?HANDLE,
        param1: ?*FAX_SEND,
        param2: ?PFAX_SEND_CALLBACK,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXDEVRECEIVE = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?HANDLE,
        param1: u32,
        param2: ?*FAX_RECEIVE,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: ?HANDLE,
        param1: u32,
        param2: ?*FAX_RECEIVE,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXDEVREPORTSTATUS = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?HANDLE,
        param1: ?*FAX_DEV_STATUS,
        param2: u32,
        param3: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: ?HANDLE,
        param1: ?*FAX_DEV_STATUS,
        param2: u32,
        param3: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

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

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

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

const CLSID_FaxServer_Value = Guid.initString("cda8acb0-8cf5-4f6c-9ba2-5931d40c8cae");
pub const CLSID_FaxServer = &CLSID_FaxServer_Value;

const CLSID_FaxDeviceProviders_Value = Guid.initString("eb8fe768-875a-4f5f-82c5-03f23aac1bd7");
pub const CLSID_FaxDeviceProviders = &CLSID_FaxDeviceProviders_Value;

const CLSID_FaxDevices_Value = Guid.initString("5589e28e-23cb-4919-8808-e6101846e80d");
pub const CLSID_FaxDevices = &CLSID_FaxDevices_Value;

const CLSID_FaxInboundRouting_Value = Guid.initString("e80248ed-ad65-4218-8108-991924d4e7ed");
pub const CLSID_FaxInboundRouting = &CLSID_FaxInboundRouting_Value;

const CLSID_FaxFolders_Value = Guid.initString("c35211d7-5776-48cb-af44-c31be3b2cfe5");
pub const CLSID_FaxFolders = &CLSID_FaxFolders_Value;

const CLSID_FaxLoggingOptions_Value = Guid.initString("1bf9eea6-ece0-4785-a18b-de56e9eef96a");
pub const CLSID_FaxLoggingOptions = &CLSID_FaxLoggingOptions_Value;

const CLSID_FaxActivity_Value = Guid.initString("cfef5d0e-e84d-462e-aabb-87d31eb04fef");
pub const CLSID_FaxActivity = &CLSID_FaxActivity_Value;

const CLSID_FaxOutboundRouting_Value = Guid.initString("c81b385e-b869-4afd-86c0-616498ed9be2");
pub const CLSID_FaxOutboundRouting = &CLSID_FaxOutboundRouting_Value;

const CLSID_FaxReceiptOptions_Value = Guid.initString("6982487b-227b-4c96-a61c-248348b05ab6");
pub const CLSID_FaxReceiptOptions = &CLSID_FaxReceiptOptions_Value;

const CLSID_FaxSecurity_Value = Guid.initString("10c4ddde-abf0-43df-964f-7f3ac21a4c7b");
pub const CLSID_FaxSecurity = &CLSID_FaxSecurity_Value;

const CLSID_FaxDocument_Value = Guid.initString("0f3f9f91-c838-415e-a4f3-3e828ca445e0");
pub const CLSID_FaxDocument = &CLSID_FaxDocument_Value;

const CLSID_FaxSender_Value = Guid.initString("265d84d0-1850-4360-b7c8-758bbb5f0b96");
pub const CLSID_FaxSender = &CLSID_FaxSender_Value;

const CLSID_FaxRecipients_Value = Guid.initString("ea9bdf53-10a9-4d4f-a067-63c8f84f01b0");
pub const CLSID_FaxRecipients = &CLSID_FaxRecipients_Value;

const CLSID_FaxIncomingArchive_Value = Guid.initString("8426c56a-35a1-4c6f-af93-fc952422e2c2");
pub const CLSID_FaxIncomingArchive = &CLSID_FaxIncomingArchive_Value;

const CLSID_FaxIncomingQueue_Value = Guid.initString("69131717-f3f1-40e3-809d-a6cbf7bd85e5");
pub const CLSID_FaxIncomingQueue = &CLSID_FaxIncomingQueue_Value;

const CLSID_FaxOutgoingArchive_Value = Guid.initString("43c28403-e04f-474d-990c-b94669148f59");
pub const CLSID_FaxOutgoingArchive = &CLSID_FaxOutgoingArchive_Value;

const CLSID_FaxOutgoingQueue_Value = Guid.initString("7421169e-8c43-4b0d-bb16-645c8fa40357");
pub const CLSID_FaxOutgoingQueue = &CLSID_FaxOutgoingQueue_Value;

const CLSID_FaxIncomingMessageIterator_Value = Guid.initString("6088e1d8-3fc8-45c2-87b1-909a29607ea9");
pub const CLSID_FaxIncomingMessageIterator = &CLSID_FaxIncomingMessageIterator_Value;

const CLSID_FaxIncomingMessage_Value = Guid.initString("1932fcf7-9d43-4d5a-89ff-03861b321736");
pub const CLSID_FaxIncomingMessage = &CLSID_FaxIncomingMessage_Value;

const CLSID_FaxOutgoingJobs_Value = Guid.initString("92bf2a6c-37be-43fa-a37d-cb0e5f753b35");
pub const CLSID_FaxOutgoingJobs = &CLSID_FaxOutgoingJobs_Value;

const CLSID_FaxOutgoingJob_Value = Guid.initString("71bb429c-0ef9-4915-bec5-a5d897a3e924");
pub const CLSID_FaxOutgoingJob = &CLSID_FaxOutgoingJob_Value;

const CLSID_FaxOutgoingMessageIterator_Value = Guid.initString("8a3224d0-d30b-49de-9813-cb385790fbbb");
pub const CLSID_FaxOutgoingMessageIterator = &CLSID_FaxOutgoingMessageIterator_Value;

const CLSID_FaxOutgoingMessage_Value = Guid.initString("91b4a378-4ad8-4aef-a4dc-97d96e939a3a");
pub const CLSID_FaxOutgoingMessage = &CLSID_FaxOutgoingMessage_Value;

const CLSID_FaxIncomingJobs_Value = Guid.initString("a1bb8a43-8866-4fb7-a15d-6266c875a5cc");
pub const CLSID_FaxIncomingJobs = &CLSID_FaxIncomingJobs_Value;

const CLSID_FaxIncomingJob_Value = Guid.initString("c47311ec-ae32-41b8-ae4b-3eae0629d0c9");
pub const CLSID_FaxIncomingJob = &CLSID_FaxIncomingJob_Value;

const CLSID_FaxDeviceProvider_Value = Guid.initString("17cf1aa3-f5eb-484a-9c9a-4440a5baabfc");
pub const CLSID_FaxDeviceProvider = &CLSID_FaxDeviceProvider_Value;

const CLSID_FaxDevice_Value = Guid.initString("59e3a5b2-d676-484b-a6de-720bfa89b5af");
pub const CLSID_FaxDevice = &CLSID_FaxDevice_Value;

const CLSID_FaxActivityLogging_Value = Guid.initString("f0a0294e-3bbd-48b8-8f13-8c591a55bdbc");
pub const CLSID_FaxActivityLogging = &CLSID_FaxActivityLogging_Value;

const CLSID_FaxEventLogging_Value = Guid.initString("a6850930-a0f6-4a6f-95b7-db2ebf3d02e3");
pub const CLSID_FaxEventLogging = &CLSID_FaxEventLogging_Value;

const CLSID_FaxOutboundRoutingGroups_Value = Guid.initString("ccbea1a5-e2b4-4b57-9421-b04b6289464b");
pub const CLSID_FaxOutboundRoutingGroups = &CLSID_FaxOutboundRoutingGroups_Value;

const CLSID_FaxOutboundRoutingGroup_Value = Guid.initString("0213f3e0-6791-4d77-a271-04d2357c50d6");
pub const CLSID_FaxOutboundRoutingGroup = &CLSID_FaxOutboundRoutingGroup_Value;

const CLSID_FaxDeviceIds_Value = Guid.initString("cdc539ea-7277-460e-8de0-48a0a5760d1f");
pub const CLSID_FaxDeviceIds = &CLSID_FaxDeviceIds_Value;

const CLSID_FaxOutboundRoutingRules_Value = Guid.initString("d385beca-e624-4473-bfaa-9f4000831f54");
pub const CLSID_FaxOutboundRoutingRules = &CLSID_FaxOutboundRoutingRules_Value;

const CLSID_FaxOutboundRoutingRule_Value = Guid.initString("6549eebf-08d1-475a-828b-3bf105952fa0");
pub const CLSID_FaxOutboundRoutingRule = &CLSID_FaxOutboundRoutingRule_Value;

const CLSID_FaxInboundRoutingExtensions_Value = Guid.initString("189a48ed-623c-4c0d-80f2-d66c7b9efec2");
pub const CLSID_FaxInboundRoutingExtensions = &CLSID_FaxInboundRoutingExtensions_Value;

const CLSID_FaxInboundRoutingExtension_Value = Guid.initString("1d7dfb51-7207-4436-a0d9-24e32ee56988");
pub const CLSID_FaxInboundRoutingExtension = &CLSID_FaxInboundRoutingExtension_Value;

const CLSID_FaxInboundRoutingMethods_Value = Guid.initString("25fcb76a-b750-4b82-9266-fbbbae8922ba");
pub const CLSID_FaxInboundRoutingMethods = &CLSID_FaxInboundRoutingMethods_Value;

const CLSID_FaxInboundRoutingMethod_Value = Guid.initString("4b9fd75c-0194-4b72-9ce5-02a8205ac7d4");
pub const CLSID_FaxInboundRoutingMethod = &CLSID_FaxInboundRoutingMethod_Value;

const CLSID_FaxJobStatus_Value = Guid.initString("7bf222f4-be8d-442f-841d-6132742423bb");
pub const CLSID_FaxJobStatus = &CLSID_FaxJobStatus_Value;

const CLSID_FaxRecipient_Value = Guid.initString("60bf3301-7df8-4bd8-9148-7b5801f9efdf");
pub const CLSID_FaxRecipient = &CLSID_FaxRecipient_Value;

const CLSID_FaxConfiguration_Value = Guid.initString("5857326f-e7b3-41a7-9c19-a91b463e2d56");
pub const CLSID_FaxConfiguration = &CLSID_FaxConfiguration_Value;

const CLSID_FaxAccountSet_Value = Guid.initString("fbc23c4b-79e0-4291-bc56-c12e253bbf3a");
pub const CLSID_FaxAccountSet = &CLSID_FaxAccountSet_Value;

const CLSID_FaxAccounts_Value = Guid.initString("da1f94aa-ee2c-47c0-8f4f-2a217075b76e");
pub const CLSID_FaxAccounts = &CLSID_FaxAccounts_Value;

const CLSID_FaxAccount_Value = Guid.initString("a7e0647f-4524-4464-a56d-b9fe666f715e");
pub const CLSID_FaxAccount = &CLSID_FaxAccount_Value;

const CLSID_FaxAccountFolders_Value = Guid.initString("85398f49-c034-4a3f-821c-db7d685e8129");
pub const CLSID_FaxAccountFolders = &CLSID_FaxAccountFolders_Value;

const CLSID_FaxAccountIncomingQueue_Value = Guid.initString("9bcf6094-b4da-45f4-b8d6-ddeb2186652c");
pub const CLSID_FaxAccountIncomingQueue = &CLSID_FaxAccountIncomingQueue_Value;

const CLSID_FaxAccountOutgoingQueue_Value = Guid.initString("feeceefb-c149-48ba-bab8-b791e101f62f");
pub const CLSID_FaxAccountOutgoingQueue = &CLSID_FaxAccountOutgoingQueue_Value;

const CLSID_FaxAccountIncomingArchive_Value = Guid.initString("14b33db5-4c40-4ecf-9ef8-a360cbe809ed");
pub const CLSID_FaxAccountIncomingArchive = &CLSID_FaxAccountIncomingArchive_Value;

const CLSID_FaxAccountOutgoingArchive_Value = Guid.initString("851e7af5-433a-4739-a2df-ad245c2cb98e");
pub const CLSID_FaxAccountOutgoingArchive = &CLSID_FaxAccountOutgoingArchive_Value;

const CLSID_FaxSecurity2_Value = Guid.initString("735c1248-ec89-4c30-a127-656e92e3c4ea");
pub const CLSID_FaxSecurity2 = &CLSID_FaxSecurity2_Value;

pub const FAX_JOB_STATUS_ENUM = enum(i32) {
    PENDING = 1,
    INPROGRESS = 2,
    FAILED = 8,
    PAUSED = 16,
    NOLINE = 32,
    RETRYING = 64,
    RETRIES_EXCEEDED = 128,
    COMPLETED = 256,
    CANCELED = 512,
    CANCELING = 1024,
    ROUTING = 2048,
};
pub const fjsPENDING = FAX_JOB_STATUS_ENUM.PENDING;
pub const fjsINPROGRESS = FAX_JOB_STATUS_ENUM.INPROGRESS;
pub const fjsFAILED = FAX_JOB_STATUS_ENUM.FAILED;
pub const fjsPAUSED = FAX_JOB_STATUS_ENUM.PAUSED;
pub const fjsNOLINE = FAX_JOB_STATUS_ENUM.NOLINE;
pub const fjsRETRYING = FAX_JOB_STATUS_ENUM.RETRYING;
pub const fjsRETRIES_EXCEEDED = FAX_JOB_STATUS_ENUM.RETRIES_EXCEEDED;
pub const fjsCOMPLETED = FAX_JOB_STATUS_ENUM.COMPLETED;
pub const fjsCANCELED = FAX_JOB_STATUS_ENUM.CANCELED;
pub const fjsCANCELING = FAX_JOB_STATUS_ENUM.CANCELING;
pub const fjsROUTING = FAX_JOB_STATUS_ENUM.ROUTING;

pub const FAX_JOB_EXTENDED_STATUS_ENUM = enum(i32) {
    NONE = 0,
    DISCONNECTED = 1,
    INITIALIZING = 2,
    DIALING = 3,
    TRANSMITTING = 4,
    ANSWERED = 5,
    RECEIVING = 6,
    LINE_UNAVAILABLE = 7,
    BUSY = 8,
    NO_ANSWER = 9,
    BAD_ADDRESS = 10,
    NO_DIAL_TONE = 11,
    FATAL_ERROR = 12,
    CALL_DELAYED = 13,
    CALL_BLACKLISTED = 14,
    NOT_FAX_CALL = 15,
    PARTIALLY_RECEIVED = 16,
    HANDLED = 17,
    CALL_COMPLETED = 18,
    CALL_ABORTED = 19,
    PROPRIETARY = 16777216,
};
pub const fjesNONE = FAX_JOB_EXTENDED_STATUS_ENUM.NONE;
pub const fjesDISCONNECTED = FAX_JOB_EXTENDED_STATUS_ENUM.DISCONNECTED;
pub const fjesINITIALIZING = FAX_JOB_EXTENDED_STATUS_ENUM.INITIALIZING;
pub const fjesDIALING = FAX_JOB_EXTENDED_STATUS_ENUM.DIALING;
pub const fjesTRANSMITTING = FAX_JOB_EXTENDED_STATUS_ENUM.TRANSMITTING;
pub const fjesANSWERED = FAX_JOB_EXTENDED_STATUS_ENUM.ANSWERED;
pub const fjesRECEIVING = FAX_JOB_EXTENDED_STATUS_ENUM.RECEIVING;
pub const fjesLINE_UNAVAILABLE = FAX_JOB_EXTENDED_STATUS_ENUM.LINE_UNAVAILABLE;
pub const fjesBUSY = FAX_JOB_EXTENDED_STATUS_ENUM.BUSY;
pub const fjesNO_ANSWER = FAX_JOB_EXTENDED_STATUS_ENUM.NO_ANSWER;
pub const fjesBAD_ADDRESS = FAX_JOB_EXTENDED_STATUS_ENUM.BAD_ADDRESS;
pub const fjesNO_DIAL_TONE = FAX_JOB_EXTENDED_STATUS_ENUM.NO_DIAL_TONE;
pub const fjesFATAL_ERROR = FAX_JOB_EXTENDED_STATUS_ENUM.FATAL_ERROR;
pub const fjesCALL_DELAYED = FAX_JOB_EXTENDED_STATUS_ENUM.CALL_DELAYED;
pub const fjesCALL_BLACKLISTED = FAX_JOB_EXTENDED_STATUS_ENUM.CALL_BLACKLISTED;
pub const fjesNOT_FAX_CALL = FAX_JOB_EXTENDED_STATUS_ENUM.NOT_FAX_CALL;
pub const fjesPARTIALLY_RECEIVED = FAX_JOB_EXTENDED_STATUS_ENUM.PARTIALLY_RECEIVED;
pub const fjesHANDLED = FAX_JOB_EXTENDED_STATUS_ENUM.HANDLED;
pub const fjesCALL_COMPLETED = FAX_JOB_EXTENDED_STATUS_ENUM.CALL_COMPLETED;
pub const fjesCALL_ABORTED = FAX_JOB_EXTENDED_STATUS_ENUM.CALL_ABORTED;
pub const fjesPROPRIETARY = FAX_JOB_EXTENDED_STATUS_ENUM.PROPRIETARY;

pub const FAX_JOB_OPERATIONS_ENUM = enum(i32) {
    VIEW = 1,
    PAUSE = 2,
    RESUME = 4,
    RESTART = 8,
    DELETE = 16,
    RECIPIENT_INFO = 32,
    SENDER_INFO = 64,
};
pub const fjoVIEW = FAX_JOB_OPERATIONS_ENUM.VIEW;
pub const fjoPAUSE = FAX_JOB_OPERATIONS_ENUM.PAUSE;
pub const fjoRESUME = FAX_JOB_OPERATIONS_ENUM.RESUME;
pub const fjoRESTART = FAX_JOB_OPERATIONS_ENUM.RESTART;
pub const fjoDELETE = FAX_JOB_OPERATIONS_ENUM.DELETE;
pub const fjoRECIPIENT_INFO = FAX_JOB_OPERATIONS_ENUM.RECIPIENT_INFO;
pub const fjoSENDER_INFO = FAX_JOB_OPERATIONS_ENUM.SENDER_INFO;

pub const FAX_JOB_TYPE_ENUM = enum(i32) {
    SEND = 0,
    RECEIVE = 1,
    ROUTING = 2,
};
pub const fjtSEND = FAX_JOB_TYPE_ENUM.SEND;
pub const fjtRECEIVE = FAX_JOB_TYPE_ENUM.RECEIVE;
pub const fjtROUTING = FAX_JOB_TYPE_ENUM.ROUTING;

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxJobStatus_Value = Guid.initString("8b86f485-fd7f-4824-886b-40c5caa617cc");
pub const IID_IFaxJobStatus = &IID_IFaxJobStatus_Value;
pub const IFaxJobStatus = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // 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 IFaxJobStatus,
                pStatus: ?*FAX_JOB_STATUS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxJobStatus,
                pStatus: ?*FAX_JOB_STATUS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Pages: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxJobStatus,
                plPages: ?*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 IFaxJobStatus,
                plPages: ?*i32,
            ) 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 IFaxJobStatus,
                plSize: ?*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 IFaxJobStatus,
                plSize: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CurrentPage: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxJobStatus,
                plCurrentPage: ?*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 IFaxJobStatus,
                plCurrentPage: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DeviceId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxJobStatus,
                plDeviceId: ?*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 IFaxJobStatus,
                plDeviceId: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CSID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxJobStatus,
                pbstrCSID: ?*?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 IFaxJobStatus,
                pbstrCSID: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TSID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxJobStatus,
                pbstrTSID: ?*?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 IFaxJobStatus,
                pbstrTSID: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ExtendedStatusCode: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxJobStatus,
                pExtendedStatusCode: ?*FAX_JOB_EXTENDED_STATUS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxJobStatus,
                pExtendedStatusCode: ?*FAX_JOB_EXTENDED_STATUS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ExtendedStatus: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxJobStatus,
                pbstrExtendedStatus: ?*?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 IFaxJobStatus,
                pbstrExtendedStatus: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AvailableOperations: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxJobStatus,
                pAvailableOperations: ?*FAX_JOB_OPERATIONS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxJobStatus,
                pAvailableOperations: ?*FAX_JOB_OPERATIONS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Retries: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxJobStatus,
                plRetries: ?*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 IFaxJobStatus,
                plRetries: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_JobType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxJobStatus,
                pJobType: ?*FAX_JOB_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxJobStatus,
                pJobType: ?*FAX_JOB_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ScheduledTime: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxJobStatus,
                pdateScheduledTime: ?*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 IFaxJobStatus,
                pdateScheduledTime: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TransmissionStart: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxJobStatus,
                pdateTransmissionStart: ?*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 IFaxJobStatus,
                pdateTransmissionStart: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TransmissionEnd: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxJobStatus,
                pdateTransmissionEnd: ?*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 IFaxJobStatus,
                pdateTransmissionEnd: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CallerId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxJobStatus,
                pbstrCallerId: ?*?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 IFaxJobStatus,
                pbstrCallerId: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RoutingInformation: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxJobStatus,
                pbstrRoutingInformation: ?*?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 IFaxJobStatus,
                pbstrRoutingInformation: ?*?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 IFaxJobStatus_get_Status(self: *const T, pStatus: ?*FAX_JOB_STATUS_ENUM) HRESULT {
                return @as(*const IFaxJobStatus.VTable, @ptrCast(self.vtable)).get_Status(@as(*const IFaxJobStatus, @ptrCast(self)), pStatus);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxJobStatus_get_Pages(self: *const T, plPages: ?*i32) HRESULT {
                return @as(*const IFaxJobStatus.VTable, @ptrCast(self.vtable)).get_Pages(@as(*const IFaxJobStatus, @ptrCast(self)), plPages);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxJobStatus_get_Size(self: *const T, plSize: ?*i32) HRESULT {
                return @as(*const IFaxJobStatus.VTable, @ptrCast(self.vtable)).get_Size(@as(*const IFaxJobStatus, @ptrCast(self)), plSize);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxJobStatus_get_CurrentPage(self: *const T, plCurrentPage: ?*i32) HRESULT {
                return @as(*const IFaxJobStatus.VTable, @ptrCast(self.vtable)).get_CurrentPage(@as(*const IFaxJobStatus, @ptrCast(self)), plCurrentPage);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxJobStatus_get_DeviceId(self: *const T, plDeviceId: ?*i32) HRESULT {
                return @as(*const IFaxJobStatus.VTable, @ptrCast(self.vtable)).get_DeviceId(@as(*const IFaxJobStatus, @ptrCast(self)), plDeviceId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxJobStatus_get_CSID(self: *const T, pbstrCSID: ?*?BSTR) HRESULT {
                return @as(*const IFaxJobStatus.VTable, @ptrCast(self.vtable)).get_CSID(@as(*const IFaxJobStatus, @ptrCast(self)), pbstrCSID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxJobStatus_get_TSID(self: *const T, pbstrTSID: ?*?BSTR) HRESULT {
                return @as(*const IFaxJobStatus.VTable, @ptrCast(self.vtable)).get_TSID(@as(*const IFaxJobStatus, @ptrCast(self)), pbstrTSID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxJobStatus_get_ExtendedStatusCode(self: *const T, pExtendedStatusCode: ?*FAX_JOB_EXTENDED_STATUS_ENUM) HRESULT {
                return @as(*const IFaxJobStatus.VTable, @ptrCast(self.vtable)).get_ExtendedStatusCode(@as(*const IFaxJobStatus, @ptrCast(self)), pExtendedStatusCode);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxJobStatus_get_ExtendedStatus(self: *const T, pbstrExtendedStatus: ?*?BSTR) HRESULT {
                return @as(*const IFaxJobStatus.VTable, @ptrCast(self.vtable)).get_ExtendedStatus(@as(*const IFaxJobStatus, @ptrCast(self)), pbstrExtendedStatus);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxJobStatus_get_AvailableOperations(self: *const T, pAvailableOperations: ?*FAX_JOB_OPERATIONS_ENUM) HRESULT {
                return @as(*const IFaxJobStatus.VTable, @ptrCast(self.vtable)).get_AvailableOperations(@as(*const IFaxJobStatus, @ptrCast(self)), pAvailableOperations);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxJobStatus_get_Retries(self: *const T, plRetries: ?*i32) HRESULT {
                return @as(*const IFaxJobStatus.VTable, @ptrCast(self.vtable)).get_Retries(@as(*const IFaxJobStatus, @ptrCast(self)), plRetries);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxJobStatus_get_JobType(self: *const T, pJobType: ?*FAX_JOB_TYPE_ENUM) HRESULT {
                return @as(*const IFaxJobStatus.VTable, @ptrCast(self.vtable)).get_JobType(@as(*const IFaxJobStatus, @ptrCast(self)), pJobType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxJobStatus_get_ScheduledTime(self: *const T, pdateScheduledTime: ?*f64) HRESULT {
                return @as(*const IFaxJobStatus.VTable, @ptrCast(self.vtable)).get_ScheduledTime(@as(*const IFaxJobStatus, @ptrCast(self)), pdateScheduledTime);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxJobStatus_get_TransmissionStart(self: *const T, pdateTransmissionStart: ?*f64) HRESULT {
                return @as(*const IFaxJobStatus.VTable, @ptrCast(self.vtable)).get_TransmissionStart(@as(*const IFaxJobStatus, @ptrCast(self)), pdateTransmissionStart);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxJobStatus_get_TransmissionEnd(self: *const T, pdateTransmissionEnd: ?*f64) HRESULT {
                return @as(*const IFaxJobStatus.VTable, @ptrCast(self.vtable)).get_TransmissionEnd(@as(*const IFaxJobStatus, @ptrCast(self)), pdateTransmissionEnd);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxJobStatus_get_CallerId(self: *const T, pbstrCallerId: ?*?BSTR) HRESULT {
                return @as(*const IFaxJobStatus.VTable, @ptrCast(self.vtable)).get_CallerId(@as(*const IFaxJobStatus, @ptrCast(self)), pbstrCallerId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxJobStatus_get_RoutingInformation(self: *const T, pbstrRoutingInformation: ?*?BSTR) HRESULT {
                return @as(*const IFaxJobStatus.VTable, @ptrCast(self.vtable)).get_RoutingInformation(@as(*const IFaxJobStatus, @ptrCast(self)), pbstrRoutingInformation);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const FAX_SERVER_EVENTS_TYPE_ENUM = enum(i32) {
    NONE = 0,
    IN_QUEUE = 1,
    OUT_QUEUE = 2,
    CONFIG = 4,
    ACTIVITY = 8,
    QUEUE_STATE = 16,
    IN_ARCHIVE = 32,
    OUT_ARCHIVE = 64,
    FXSSVC_ENDED = 128,
    DEVICE_STATUS = 256,
    INCOMING_CALL = 512,
};
pub const fsetNONE = FAX_SERVER_EVENTS_TYPE_ENUM.NONE;
pub const fsetIN_QUEUE = FAX_SERVER_EVENTS_TYPE_ENUM.IN_QUEUE;
pub const fsetOUT_QUEUE = FAX_SERVER_EVENTS_TYPE_ENUM.OUT_QUEUE;
pub const fsetCONFIG = FAX_SERVER_EVENTS_TYPE_ENUM.CONFIG;
pub const fsetACTIVITY = FAX_SERVER_EVENTS_TYPE_ENUM.ACTIVITY;
pub const fsetQUEUE_STATE = FAX_SERVER_EVENTS_TYPE_ENUM.QUEUE_STATE;
pub const fsetIN_ARCHIVE = FAX_SERVER_EVENTS_TYPE_ENUM.IN_ARCHIVE;
pub const fsetOUT_ARCHIVE = FAX_SERVER_EVENTS_TYPE_ENUM.OUT_ARCHIVE;
pub const fsetFXSSVC_ENDED = FAX_SERVER_EVENTS_TYPE_ENUM.FXSSVC_ENDED;
pub const fsetDEVICE_STATUS = FAX_SERVER_EVENTS_TYPE_ENUM.DEVICE_STATUS;
pub const fsetINCOMING_CALL = FAX_SERVER_EVENTS_TYPE_ENUM.INCOMING_CALL;

pub const FAX_SERVER_APIVERSION_ENUM = enum(i32) {
    @"0" = 0,
    @"1" = 65536,
    @"2" = 131072,
    @"3" = 196608,
};
pub const fsAPI_VERSION_0 = FAX_SERVER_APIVERSION_ENUM.@"0";
pub const fsAPI_VERSION_1 = FAX_SERVER_APIVERSION_ENUM.@"1";
pub const fsAPI_VERSION_2 = FAX_SERVER_APIVERSION_ENUM.@"2";
pub const fsAPI_VERSION_3 = FAX_SERVER_APIVERSION_ENUM.@"3";

// TODO: this type is limited to platform 'windows5.0'
const IID_IFaxServer_Value = Guid.initString("475b6469-90a5-4878-a577-17a86e8e3462");
pub const IID_IFaxServer = &IID_IFaxServer_Value;
pub const IFaxServer = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        Connect: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxServer,
                bstrServerName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxServer,
                bstrServerName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ServerName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxServer,
                pbstrServerName: ?*?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 IFaxServer,
                pbstrServerName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetDeviceProviders: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxServer,
                ppFaxDeviceProviders: ?*?*IFaxDeviceProviders,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxServer,
                ppFaxDeviceProviders: ?*?*IFaxDeviceProviders,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetDevices: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxServer,
                ppFaxDevices: ?*?*IFaxDevices,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxServer,
                ppFaxDevices: ?*?*IFaxDevices,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_InboundRouting: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxServer,
                ppFaxInboundRouting: ?*?*IFaxInboundRouting,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxServer,
                ppFaxInboundRouting: ?*?*IFaxInboundRouting,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Folders: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxServer,
                pFaxFolders: ?*?*IFaxFolders,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxServer,
                pFaxFolders: ?*?*IFaxFolders,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LoggingOptions: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxServer,
                ppFaxLoggingOptions: ?*?*IFaxLoggingOptions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxServer,
                ppFaxLoggingOptions: ?*?*IFaxLoggingOptions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MajorVersion: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxServer,
                plMajorVersion: ?*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 IFaxServer,
                plMajorVersion: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MinorVersion: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxServer,
                plMinorVersion: ?*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 IFaxServer,
                plMinorVersion: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MajorBuild: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxServer,
                plMajorBuild: ?*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 IFaxServer,
                plMajorBuild: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MinorBuild: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxServer,
                plMinorBuild: ?*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 IFaxServer,
                plMinorBuild: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Debug: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxServer,
                pbDebug: ?*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 IFaxServer,
                pbDebug: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Activity: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxServer,
                ppFaxActivity: ?*?*IFaxActivity,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxServer,
                ppFaxActivity: ?*?*IFaxActivity,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_OutboundRouting: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxServer,
                ppFaxOutboundRouting: ?*?*IFaxOutboundRouting,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxServer,
                ppFaxOutboundRouting: ?*?*IFaxOutboundRouting,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ReceiptOptions: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxServer,
                ppFaxReceiptOptions: ?*?*IFaxReceiptOptions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxServer,
                ppFaxReceiptOptions: ?*?*IFaxReceiptOptions,
            ) 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 IFaxServer,
                ppFaxSecurity: ?*?*IFaxSecurity,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxServer,
                ppFaxSecurity: ?*?*IFaxSecurity,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Disconnect: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxServer,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxServer,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetExtensionProperty: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxServer,
                bstrGUID: ?BSTR,
                pvProperty: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxServer,
                bstrGUID: ?BSTR,
                pvProperty: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetExtensionProperty: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxServer,
                bstrGUID: ?BSTR,
                vProperty: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxServer,
                bstrGUID: ?BSTR,
                vProperty: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ListenToServerEvents: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxServer,
                EventTypes: FAX_SERVER_EVENTS_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxServer,
                EventTypes: FAX_SERVER_EVENTS_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RegisterDeviceProvider: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxServer,
                bstrGUID: ?BSTR,
                bstrFriendlyName: ?BSTR,
                bstrImageName: ?BSTR,
                TspName: ?BSTR,
                lFSPIVersion: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxServer,
                bstrGUID: ?BSTR,
                bstrFriendlyName: ?BSTR,
                bstrImageName: ?BSTR,
                TspName: ?BSTR,
                lFSPIVersion: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        UnregisterDeviceProvider: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxServer,
                bstrUniqueName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxServer,
                bstrUniqueName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RegisterInboundRoutingExtension: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxServer,
                bstrExtensionName: ?BSTR,
                bstrFriendlyName: ?BSTR,
                bstrImageName: ?BSTR,
                vMethods: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxServer,
                bstrExtensionName: ?BSTR,
                bstrFriendlyName: ?BSTR,
                bstrImageName: ?BSTR,
                vMethods: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        UnregisterInboundRoutingExtension: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxServer,
                bstrExtensionUniqueName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxServer,
                bstrExtensionUniqueName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RegisteredEvents: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxServer,
                pEventTypes: ?*FAX_SERVER_EVENTS_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxServer,
                pEventTypes: ?*FAX_SERVER_EVENTS_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_APIVersion: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxServer,
                pAPIVersion: ?*FAX_SERVER_APIVERSION_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxServer,
                pAPIVersion: ?*FAX_SERVER_APIVERSION_ENUM,
            ) 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 IFaxServer_Connect(self: *const T, bstrServerName: ?BSTR) HRESULT {
                return @as(*const IFaxServer.VTable, @ptrCast(self.vtable)).Connect(@as(*const IFaxServer, @ptrCast(self)), bstrServerName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer_get_ServerName(self: *const T, pbstrServerName: ?*?BSTR) HRESULT {
                return @as(*const IFaxServer.VTable, @ptrCast(self.vtable)).get_ServerName(@as(*const IFaxServer, @ptrCast(self)), pbstrServerName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer_GetDeviceProviders(self: *const T, ppFaxDeviceProviders: ?*?*IFaxDeviceProviders) HRESULT {
                return @as(*const IFaxServer.VTable, @ptrCast(self.vtable)).GetDeviceProviders(@as(*const IFaxServer, @ptrCast(self)), ppFaxDeviceProviders);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer_GetDevices(self: *const T, ppFaxDevices: ?*?*IFaxDevices) HRESULT {
                return @as(*const IFaxServer.VTable, @ptrCast(self.vtable)).GetDevices(@as(*const IFaxServer, @ptrCast(self)), ppFaxDevices);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer_get_InboundRouting(self: *const T, ppFaxInboundRouting: ?*?*IFaxInboundRouting) HRESULT {
                return @as(*const IFaxServer.VTable, @ptrCast(self.vtable)).get_InboundRouting(@as(*const IFaxServer, @ptrCast(self)), ppFaxInboundRouting);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer_get_Folders(self: *const T, pFaxFolders: ?*?*IFaxFolders) HRESULT {
                return @as(*const IFaxServer.VTable, @ptrCast(self.vtable)).get_Folders(@as(*const IFaxServer, @ptrCast(self)), pFaxFolders);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer_get_LoggingOptions(self: *const T, ppFaxLoggingOptions: ?*?*IFaxLoggingOptions) HRESULT {
                return @as(*const IFaxServer.VTable, @ptrCast(self.vtable)).get_LoggingOptions(@as(*const IFaxServer, @ptrCast(self)), ppFaxLoggingOptions);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer_get_MajorVersion(self: *const T, plMajorVersion: ?*i32) HRESULT {
                return @as(*const IFaxServer.VTable, @ptrCast(self.vtable)).get_MajorVersion(@as(*const IFaxServer, @ptrCast(self)), plMajorVersion);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer_get_MinorVersion(self: *const T, plMinorVersion: ?*i32) HRESULT {
                return @as(*const IFaxServer.VTable, @ptrCast(self.vtable)).get_MinorVersion(@as(*const IFaxServer, @ptrCast(self)), plMinorVersion);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer_get_MajorBuild(self: *const T, plMajorBuild: ?*i32) HRESULT {
                return @as(*const IFaxServer.VTable, @ptrCast(self.vtable)).get_MajorBuild(@as(*const IFaxServer, @ptrCast(self)), plMajorBuild);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer_get_MinorBuild(self: *const T, plMinorBuild: ?*i32) HRESULT {
                return @as(*const IFaxServer.VTable, @ptrCast(self.vtable)).get_MinorBuild(@as(*const IFaxServer, @ptrCast(self)), plMinorBuild);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer_get_Debug(self: *const T, pbDebug: ?*i16) HRESULT {
                return @as(*const IFaxServer.VTable, @ptrCast(self.vtable)).get_Debug(@as(*const IFaxServer, @ptrCast(self)), pbDebug);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer_get_Activity(self: *const T, ppFaxActivity: ?*?*IFaxActivity) HRESULT {
                return @as(*const IFaxServer.VTable, @ptrCast(self.vtable)).get_Activity(@as(*const IFaxServer, @ptrCast(self)), ppFaxActivity);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer_get_OutboundRouting(self: *const T, ppFaxOutboundRouting: ?*?*IFaxOutboundRouting) HRESULT {
                return @as(*const IFaxServer.VTable, @ptrCast(self.vtable)).get_OutboundRouting(@as(*const IFaxServer, @ptrCast(self)), ppFaxOutboundRouting);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer_get_ReceiptOptions(self: *const T, ppFaxReceiptOptions: ?*?*IFaxReceiptOptions) HRESULT {
                return @as(*const IFaxServer.VTable, @ptrCast(self.vtable)).get_ReceiptOptions(@as(*const IFaxServer, @ptrCast(self)), ppFaxReceiptOptions);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer_get_Security(self: *const T, ppFaxSecurity: ?*?*IFaxSecurity) HRESULT {
                return @as(*const IFaxServer.VTable, @ptrCast(self.vtable)).get_Security(@as(*const IFaxServer, @ptrCast(self)), ppFaxSecurity);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer_Disconnect(self: *const T) HRESULT {
                return @as(*const IFaxServer.VTable, @ptrCast(self.vtable)).Disconnect(@as(*const IFaxServer, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer_GetExtensionProperty(self: *const T, bstrGUID: ?BSTR, pvProperty: ?*VARIANT) HRESULT {
                return @as(*const IFaxServer.VTable, @ptrCast(self.vtable)).GetExtensionProperty(@as(*const IFaxServer, @ptrCast(self)), bstrGUID, pvProperty);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer_SetExtensionProperty(self: *const T, bstrGUID: ?BSTR, vProperty: VARIANT) HRESULT {
                return @as(*const IFaxServer.VTable, @ptrCast(self.vtable)).SetExtensionProperty(@as(*const IFaxServer, @ptrCast(self)), bstrGUID, vProperty);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer_ListenToServerEvents(self: *const T, EventTypes: FAX_SERVER_EVENTS_TYPE_ENUM) HRESULT {
                return @as(*const IFaxServer.VTable, @ptrCast(self.vtable)).ListenToServerEvents(@as(*const IFaxServer, @ptrCast(self)), EventTypes);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer_RegisterDeviceProvider(self: *const T, bstrGUID: ?BSTR, bstrFriendlyName: ?BSTR, bstrImageName: ?BSTR, TspName: ?BSTR, lFSPIVersion: i32) HRESULT {
                return @as(*const IFaxServer.VTable, @ptrCast(self.vtable)).RegisterDeviceProvider(@as(*const IFaxServer, @ptrCast(self)), bstrGUID, bstrFriendlyName, bstrImageName, TspName, lFSPIVersion);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer_UnregisterDeviceProvider(self: *const T, bstrUniqueName: ?BSTR) HRESULT {
                return @as(*const IFaxServer.VTable, @ptrCast(self.vtable)).UnregisterDeviceProvider(@as(*const IFaxServer, @ptrCast(self)), bstrUniqueName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer_RegisterInboundRoutingExtension(self: *const T, bstrExtensionName: ?BSTR, bstrFriendlyName: ?BSTR, bstrImageName: ?BSTR, vMethods: VARIANT) HRESULT {
                return @as(*const IFaxServer.VTable, @ptrCast(self.vtable)).RegisterInboundRoutingExtension(@as(*const IFaxServer, @ptrCast(self)), bstrExtensionName, bstrFriendlyName, bstrImageName, vMethods);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer_UnregisterInboundRoutingExtension(self: *const T, bstrExtensionUniqueName: ?BSTR) HRESULT {
                return @as(*const IFaxServer.VTable, @ptrCast(self.vtable)).UnregisterInboundRoutingExtension(@as(*const IFaxServer, @ptrCast(self)), bstrExtensionUniqueName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer_get_RegisteredEvents(self: *const T, pEventTypes: ?*FAX_SERVER_EVENTS_TYPE_ENUM) HRESULT {
                return @as(*const IFaxServer.VTable, @ptrCast(self.vtable)).get_RegisteredEvents(@as(*const IFaxServer, @ptrCast(self)), pEventTypes);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer_get_APIVersion(self: *const T, pAPIVersion: ?*FAX_SERVER_APIVERSION_ENUM) HRESULT {
                return @as(*const IFaxServer.VTable, @ptrCast(self.vtable)).get_APIVersion(@as(*const IFaxServer, @ptrCast(self)), pAPIVersion);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxDeviceProviders_Value = Guid.initString("9fb76f62-4c7e-43a5-b6fd-502893f7e13e");
pub const IID_IFaxDeviceProviders = &IID_IFaxDeviceProviders_Value;
pub const IFaxDeviceProviders = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // 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 IFaxDeviceProviders,
                ppUnk: ?*?*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 IFaxDeviceProviders,
                ppUnk: ?*?*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 IFaxDeviceProviders,
                vIndex: VARIANT,
                pFaxDeviceProvider: ?*?*IFaxDeviceProvider,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxDeviceProviders,
                vIndex: VARIANT,
                pFaxDeviceProvider: ?*?*IFaxDeviceProvider,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // 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 IFaxDeviceProviders,
                plCount: ?*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 IFaxDeviceProviders,
                plCount: ?*i32,
            ) 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 IFaxDeviceProviders_get__NewEnum(self: *const T, ppUnk: ?*?*IUnknown) HRESULT {
                return @as(*const IFaxDeviceProviders.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const IFaxDeviceProviders, @ptrCast(self)), ppUnk);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDeviceProviders_get_Item(self: *const T, vIndex: VARIANT, pFaxDeviceProvider: ?*?*IFaxDeviceProvider) HRESULT {
                return @as(*const IFaxDeviceProviders.VTable, @ptrCast(self.vtable)).get_Item(@as(*const IFaxDeviceProviders, @ptrCast(self)), vIndex, pFaxDeviceProvider);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDeviceProviders_get_Count(self: *const T, plCount: ?*i32) HRESULT {
                return @as(*const IFaxDeviceProviders.VTable, @ptrCast(self.vtable)).get_Count(@as(*const IFaxDeviceProviders, @ptrCast(self)), plCount);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxDevices_Value = Guid.initString("9e46783e-f34f-482e-a360-0416becbbd96");
pub const IID_IFaxDevices = &IID_IFaxDevices_Value;
pub const IFaxDevices = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // 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 IFaxDevices,
                ppUnk: ?*?*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 IFaxDevices,
                ppUnk: ?*?*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 IFaxDevices,
                vIndex: VARIANT,
                pFaxDevice: ?*?*IFaxDevice,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxDevices,
                vIndex: VARIANT,
                pFaxDevice: ?*?*IFaxDevice,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // 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 IFaxDevices,
                plCount: ?*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 IFaxDevices,
                plCount: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ItemById: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDevices,
                lId: i32,
                ppFaxDevice: ?*?*IFaxDevice,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxDevices,
                lId: i32,
                ppFaxDevice: ?*?*IFaxDevice,
            ) 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 IFaxDevices_get__NewEnum(self: *const T, ppUnk: ?*?*IUnknown) HRESULT {
                return @as(*const IFaxDevices.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const IFaxDevices, @ptrCast(self)), ppUnk);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevices_get_Item(self: *const T, vIndex: VARIANT, pFaxDevice: ?*?*IFaxDevice) HRESULT {
                return @as(*const IFaxDevices.VTable, @ptrCast(self.vtable)).get_Item(@as(*const IFaxDevices, @ptrCast(self)), vIndex, pFaxDevice);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevices_get_Count(self: *const T, plCount: ?*i32) HRESULT {
                return @as(*const IFaxDevices.VTable, @ptrCast(self.vtable)).get_Count(@as(*const IFaxDevices, @ptrCast(self)), plCount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevices_get_ItemById(self: *const T, lId: i32, ppFaxDevice: ?*?*IFaxDevice) HRESULT {
                return @as(*const IFaxDevices.VTable, @ptrCast(self.vtable)).get_ItemById(@as(*const IFaxDevices, @ptrCast(self)), lId, ppFaxDevice);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxInboundRouting_Value = Guid.initString("8148c20f-9d52-45b1-bf96-38fc12713527");
pub const IID_IFaxInboundRouting = &IID_IFaxInboundRouting_Value;
pub const IFaxInboundRouting = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        GetExtensions: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxInboundRouting,
                pFaxInboundRoutingExtensions: ?*?*IFaxInboundRoutingExtensions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxInboundRouting,
                pFaxInboundRoutingExtensions: ?*?*IFaxInboundRoutingExtensions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetMethods: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxInboundRouting,
                pFaxInboundRoutingMethods: ?*?*IFaxInboundRoutingMethods,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxInboundRouting,
                pFaxInboundRoutingMethods: ?*?*IFaxInboundRoutingMethods,
            ) 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 IFaxInboundRouting_GetExtensions(self: *const T, pFaxInboundRoutingExtensions: ?*?*IFaxInboundRoutingExtensions) HRESULT {
                return @as(*const IFaxInboundRouting.VTable, @ptrCast(self.vtable)).GetExtensions(@as(*const IFaxInboundRouting, @ptrCast(self)), pFaxInboundRoutingExtensions);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxInboundRouting_GetMethods(self: *const T, pFaxInboundRoutingMethods: ?*?*IFaxInboundRoutingMethods) HRESULT {
                return @as(*const IFaxInboundRouting.VTable, @ptrCast(self.vtable)).GetMethods(@as(*const IFaxInboundRouting, @ptrCast(self)), pFaxInboundRoutingMethods);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxFolders_Value = Guid.initString("dce3b2a8-a7ab-42bc-9d0a-3149457261a0");
pub const IID_IFaxFolders = &IID_IFaxFolders_Value;
pub const IFaxFolders = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_OutgoingQueue: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxFolders,
                pFaxOutgoingQueue: ?*?*IFaxOutgoingQueue,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxFolders,
                pFaxOutgoingQueue: ?*?*IFaxOutgoingQueue,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_IncomingQueue: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxFolders,
                pFaxIncomingQueue: ?*?*IFaxIncomingQueue,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxFolders,
                pFaxIncomingQueue: ?*?*IFaxIncomingQueue,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_IncomingArchive: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxFolders,
                pFaxIncomingArchive: ?*?*IFaxIncomingArchive,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxFolders,
                pFaxIncomingArchive: ?*?*IFaxIncomingArchive,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_OutgoingArchive: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxFolders,
                pFaxOutgoingArchive: ?*?*IFaxOutgoingArchive,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxFolders,
                pFaxOutgoingArchive: ?*?*IFaxOutgoingArchive,
            ) 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 IFaxFolders_get_OutgoingQueue(self: *const T, pFaxOutgoingQueue: ?*?*IFaxOutgoingQueue) HRESULT {
                return @as(*const IFaxFolders.VTable, @ptrCast(self.vtable)).get_OutgoingQueue(@as(*const IFaxFolders, @ptrCast(self)), pFaxOutgoingQueue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxFolders_get_IncomingQueue(self: *const T, pFaxIncomingQueue: ?*?*IFaxIncomingQueue) HRESULT {
                return @as(*const IFaxFolders.VTable, @ptrCast(self.vtable)).get_IncomingQueue(@as(*const IFaxFolders, @ptrCast(self)), pFaxIncomingQueue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxFolders_get_IncomingArchive(self: *const T, pFaxIncomingArchive: ?*?*IFaxIncomingArchive) HRESULT {
                return @as(*const IFaxFolders.VTable, @ptrCast(self.vtable)).get_IncomingArchive(@as(*const IFaxFolders, @ptrCast(self)), pFaxIncomingArchive);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxFolders_get_OutgoingArchive(self: *const T, pFaxOutgoingArchive: ?*?*IFaxOutgoingArchive) HRESULT {
                return @as(*const IFaxFolders.VTable, @ptrCast(self.vtable)).get_OutgoingArchive(@as(*const IFaxFolders, @ptrCast(self)), pFaxOutgoingArchive);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxLoggingOptions_Value = Guid.initString("34e64fb9-6b31-4d32-8b27-d286c0c33606");
pub const IID_IFaxLoggingOptions = &IID_IFaxLoggingOptions_Value;
pub const IFaxLoggingOptions = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_EventLogging: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxLoggingOptions,
                pFaxEventLogging: ?*?*IFaxEventLogging,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxLoggingOptions,
                pFaxEventLogging: ?*?*IFaxEventLogging,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ActivityLogging: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxLoggingOptions,
                pFaxActivityLogging: ?*?*IFaxActivityLogging,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxLoggingOptions,
                pFaxActivityLogging: ?*?*IFaxActivityLogging,
            ) 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 IFaxLoggingOptions_get_EventLogging(self: *const T, pFaxEventLogging: ?*?*IFaxEventLogging) HRESULT {
                return @as(*const IFaxLoggingOptions.VTable, @ptrCast(self.vtable)).get_EventLogging(@as(*const IFaxLoggingOptions, @ptrCast(self)), pFaxEventLogging);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxLoggingOptions_get_ActivityLogging(self: *const T, pFaxActivityLogging: ?*?*IFaxActivityLogging) HRESULT {
                return @as(*const IFaxLoggingOptions.VTable, @ptrCast(self.vtable)).get_ActivityLogging(@as(*const IFaxLoggingOptions, @ptrCast(self)), pFaxActivityLogging);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxActivity_Value = Guid.initString("4b106f97-3df5-40f2-bc3c-44cb8115ebdf");
pub const IID_IFaxActivity = &IID_IFaxActivity_Value;
pub const IFaxActivity = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_IncomingMessages: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxActivity,
                plIncomingMessages: ?*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 IFaxActivity,
                plIncomingMessages: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RoutingMessages: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxActivity,
                plRoutingMessages: ?*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 IFaxActivity,
                plRoutingMessages: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_OutgoingMessages: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxActivity,
                plOutgoingMessages: ?*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 IFaxActivity,
                plOutgoingMessages: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_QueuedMessages: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxActivity,
                plQueuedMessages: ?*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 IFaxActivity,
                plQueuedMessages: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Refresh: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxActivity,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxActivity,
            ) 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 IFaxActivity_get_IncomingMessages(self: *const T, plIncomingMessages: ?*i32) HRESULT {
                return @as(*const IFaxActivity.VTable, @ptrCast(self.vtable)).get_IncomingMessages(@as(*const IFaxActivity, @ptrCast(self)), plIncomingMessages);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxActivity_get_RoutingMessages(self: *const T, plRoutingMessages: ?*i32) HRESULT {
                return @as(*const IFaxActivity.VTable, @ptrCast(self.vtable)).get_RoutingMessages(@as(*const IFaxActivity, @ptrCast(self)), plRoutingMessages);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxActivity_get_OutgoingMessages(self: *const T, plOutgoingMessages: ?*i32) HRESULT {
                return @as(*const IFaxActivity.VTable, @ptrCast(self.vtable)).get_OutgoingMessages(@as(*const IFaxActivity, @ptrCast(self)), plOutgoingMessages);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxActivity_get_QueuedMessages(self: *const T, plQueuedMessages: ?*i32) HRESULT {
                return @as(*const IFaxActivity.VTable, @ptrCast(self.vtable)).get_QueuedMessages(@as(*const IFaxActivity, @ptrCast(self)), plQueuedMessages);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxActivity_Refresh(self: *const T) HRESULT {
                return @as(*const IFaxActivity.VTable, @ptrCast(self.vtable)).Refresh(@as(*const IFaxActivity, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxOutboundRouting_Value = Guid.initString("25dc05a4-9909-41bd-a95b-7e5d1dec1d43");
pub const IID_IFaxOutboundRouting = &IID_IFaxOutboundRouting_Value;
pub const IFaxOutboundRouting = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        GetGroups: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutboundRouting,
                pFaxOutboundRoutingGroups: ?*?*IFaxOutboundRoutingGroups,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutboundRouting,
                pFaxOutboundRoutingGroups: ?*?*IFaxOutboundRoutingGroups,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetRules: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutboundRouting,
                pFaxOutboundRoutingRules: ?*?*IFaxOutboundRoutingRules,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutboundRouting,
                pFaxOutboundRoutingRules: ?*?*IFaxOutboundRoutingRules,
            ) 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 IFaxOutboundRouting_GetGroups(self: *const T, pFaxOutboundRoutingGroups: ?*?*IFaxOutboundRoutingGroups) HRESULT {
                return @as(*const IFaxOutboundRouting.VTable, @ptrCast(self.vtable)).GetGroups(@as(*const IFaxOutboundRouting, @ptrCast(self)), pFaxOutboundRoutingGroups);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutboundRouting_GetRules(self: *const T, pFaxOutboundRoutingRules: ?*?*IFaxOutboundRoutingRules) HRESULT {
                return @as(*const IFaxOutboundRouting.VTable, @ptrCast(self.vtable)).GetRules(@as(*const IFaxOutboundRouting, @ptrCast(self)), pFaxOutboundRoutingRules);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const FAX_SMTP_AUTHENTICATION_TYPE_ENUM = enum(i32) {
    ANONYMOUS = 0,
    BASIC = 1,
    NTLM = 2,
};
pub const fsatANONYMOUS = FAX_SMTP_AUTHENTICATION_TYPE_ENUM.ANONYMOUS;
pub const fsatBASIC = FAX_SMTP_AUTHENTICATION_TYPE_ENUM.BASIC;
pub const fsatNTLM = FAX_SMTP_AUTHENTICATION_TYPE_ENUM.NTLM;

pub const FAX_RECEIPT_TYPE_ENUM = enum(i32) {
    NONE = 0,
    MAIL = 1,
    MSGBOX = 4,
};
pub const frtNONE = FAX_RECEIPT_TYPE_ENUM.NONE;
pub const frtMAIL = FAX_RECEIPT_TYPE_ENUM.MAIL;
pub const frtMSGBOX = FAX_RECEIPT_TYPE_ENUM.MSGBOX;

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxReceiptOptions_Value = Guid.initString("378efaeb-5fcb-4afb-b2ee-e16e80614487");
pub const IID_IFaxReceiptOptions = &IID_IFaxReceiptOptions_Value;
pub const IFaxReceiptOptions = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AuthenticationType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxReceiptOptions,
                pType: ?*FAX_SMTP_AUTHENTICATION_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxReceiptOptions,
                pType: ?*FAX_SMTP_AUTHENTICATION_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_AuthenticationType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxReceiptOptions,
                Type: FAX_SMTP_AUTHENTICATION_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxReceiptOptions,
                Type: FAX_SMTP_AUTHENTICATION_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SMTPServer: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxReceiptOptions,
                pbstrSMTPServer: ?*?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 IFaxReceiptOptions,
                pbstrSMTPServer: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SMTPServer: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxReceiptOptions,
                bstrSMTPServer: ?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 IFaxReceiptOptions,
                bstrSMTPServer: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SMTPPort: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxReceiptOptions,
                plSMTPPort: ?*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 IFaxReceiptOptions,
                plSMTPPort: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SMTPPort: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxReceiptOptions,
                lSMTPPort: 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 IFaxReceiptOptions,
                lSMTPPort: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SMTPSender: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxReceiptOptions,
                pbstrSMTPSender: ?*?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 IFaxReceiptOptions,
                pbstrSMTPSender: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SMTPSender: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxReceiptOptions,
                bstrSMTPSender: ?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 IFaxReceiptOptions,
                bstrSMTPSender: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SMTPUser: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxReceiptOptions,
                pbstrSMTPUser: ?*?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 IFaxReceiptOptions,
                pbstrSMTPUser: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SMTPUser: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxReceiptOptions,
                bstrSMTPUser: ?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 IFaxReceiptOptions,
                bstrSMTPUser: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AllowedReceipts: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxReceiptOptions,
                pAllowedReceipts: ?*FAX_RECEIPT_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxReceiptOptions,
                pAllowedReceipts: ?*FAX_RECEIPT_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_AllowedReceipts: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxReceiptOptions,
                AllowedReceipts: FAX_RECEIPT_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxReceiptOptions,
                AllowedReceipts: FAX_RECEIPT_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SMTPPassword: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxReceiptOptions,
                pbstrSMTPPassword: ?*?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 IFaxReceiptOptions,
                pbstrSMTPPassword: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SMTPPassword: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxReceiptOptions,
                bstrSMTPPassword: ?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 IFaxReceiptOptions,
                bstrSMTPPassword: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Refresh: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxReceiptOptions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxReceiptOptions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Save: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxReceiptOptions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxReceiptOptions,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_UseForInboundRouting: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxReceiptOptions,
                pbUseForInboundRouting: ?*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 IFaxReceiptOptions,
                pbUseForInboundRouting: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_UseForInboundRouting: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxReceiptOptions,
                bUseForInboundRouting: 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 IFaxReceiptOptions,
                bUseForInboundRouting: i16,
            ) 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 IFaxReceiptOptions_get_AuthenticationType(self: *const T, pType: ?*FAX_SMTP_AUTHENTICATION_TYPE_ENUM) HRESULT {
                return @as(*const IFaxReceiptOptions.VTable, @ptrCast(self.vtable)).get_AuthenticationType(@as(*const IFaxReceiptOptions, @ptrCast(self)), pType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxReceiptOptions_put_AuthenticationType(self: *const T, Type: FAX_SMTP_AUTHENTICATION_TYPE_ENUM) HRESULT {
                return @as(*const IFaxReceiptOptions.VTable, @ptrCast(self.vtable)).put_AuthenticationType(@as(*const IFaxReceiptOptions, @ptrCast(self)), Type);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxReceiptOptions_get_SMTPServer(self: *const T, pbstrSMTPServer: ?*?BSTR) HRESULT {
                return @as(*const IFaxReceiptOptions.VTable, @ptrCast(self.vtable)).get_SMTPServer(@as(*const IFaxReceiptOptions, @ptrCast(self)), pbstrSMTPServer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxReceiptOptions_put_SMTPServer(self: *const T, bstrSMTPServer: ?BSTR) HRESULT {
                return @as(*const IFaxReceiptOptions.VTable, @ptrCast(self.vtable)).put_SMTPServer(@as(*const IFaxReceiptOptions, @ptrCast(self)), bstrSMTPServer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxReceiptOptions_get_SMTPPort(self: *const T, plSMTPPort: ?*i32) HRESULT {
                return @as(*const IFaxReceiptOptions.VTable, @ptrCast(self.vtable)).get_SMTPPort(@as(*const IFaxReceiptOptions, @ptrCast(self)), plSMTPPort);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxReceiptOptions_put_SMTPPort(self: *const T, lSMTPPort: i32) HRESULT {
                return @as(*const IFaxReceiptOptions.VTable, @ptrCast(self.vtable)).put_SMTPPort(@as(*const IFaxReceiptOptions, @ptrCast(self)), lSMTPPort);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxReceiptOptions_get_SMTPSender(self: *const T, pbstrSMTPSender: ?*?BSTR) HRESULT {
                return @as(*const IFaxReceiptOptions.VTable, @ptrCast(self.vtable)).get_SMTPSender(@as(*const IFaxReceiptOptions, @ptrCast(self)), pbstrSMTPSender);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxReceiptOptions_put_SMTPSender(self: *const T, bstrSMTPSender: ?BSTR) HRESULT {
                return @as(*const IFaxReceiptOptions.VTable, @ptrCast(self.vtable)).put_SMTPSender(@as(*const IFaxReceiptOptions, @ptrCast(self)), bstrSMTPSender);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxReceiptOptions_get_SMTPUser(self: *const T, pbstrSMTPUser: ?*?BSTR) HRESULT {
                return @as(*const IFaxReceiptOptions.VTable, @ptrCast(self.vtable)).get_SMTPUser(@as(*const IFaxReceiptOptions, @ptrCast(self)), pbstrSMTPUser);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxReceiptOptions_put_SMTPUser(self: *const T, bstrSMTPUser: ?BSTR) HRESULT {
                return @as(*const IFaxReceiptOptions.VTable, @ptrCast(self.vtable)).put_SMTPUser(@as(*const IFaxReceiptOptions, @ptrCast(self)), bstrSMTPUser);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxReceiptOptions_get_AllowedReceipts(self: *const T, pAllowedReceipts: ?*FAX_RECEIPT_TYPE_ENUM) HRESULT {
                return @as(*const IFaxReceiptOptions.VTable, @ptrCast(self.vtable)).get_AllowedReceipts(@as(*const IFaxReceiptOptions, @ptrCast(self)), pAllowedReceipts);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxReceiptOptions_put_AllowedReceipts(self: *const T, AllowedReceipts: FAX_RECEIPT_TYPE_ENUM) HRESULT {
                return @as(*const IFaxReceiptOptions.VTable, @ptrCast(self.vtable)).put_AllowedReceipts(@as(*const IFaxReceiptOptions, @ptrCast(self)), AllowedReceipts);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxReceiptOptions_get_SMTPPassword(self: *const T, pbstrSMTPPassword: ?*?BSTR) HRESULT {
                return @as(*const IFaxReceiptOptions.VTable, @ptrCast(self.vtable)).get_SMTPPassword(@as(*const IFaxReceiptOptions, @ptrCast(self)), pbstrSMTPPassword);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxReceiptOptions_put_SMTPPassword(self: *const T, bstrSMTPPassword: ?BSTR) HRESULT {
                return @as(*const IFaxReceiptOptions.VTable, @ptrCast(self.vtable)).put_SMTPPassword(@as(*const IFaxReceiptOptions, @ptrCast(self)), bstrSMTPPassword);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxReceiptOptions_Refresh(self: *const T) HRESULT {
                return @as(*const IFaxReceiptOptions.VTable, @ptrCast(self.vtable)).Refresh(@as(*const IFaxReceiptOptions, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxReceiptOptions_Save(self: *const T) HRESULT {
                return @as(*const IFaxReceiptOptions.VTable, @ptrCast(self.vtable)).Save(@as(*const IFaxReceiptOptions, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxReceiptOptions_get_UseForInboundRouting(self: *const T, pbUseForInboundRouting: ?*i16) HRESULT {
                return @as(*const IFaxReceiptOptions.VTable, @ptrCast(self.vtable)).get_UseForInboundRouting(@as(*const IFaxReceiptOptions, @ptrCast(self)), pbUseForInboundRouting);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxReceiptOptions_put_UseForInboundRouting(self: *const T, bUseForInboundRouting: i16) HRESULT {
                return @as(*const IFaxReceiptOptions.VTable, @ptrCast(self.vtable)).put_UseForInboundRouting(@as(*const IFaxReceiptOptions, @ptrCast(self)), bUseForInboundRouting);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const FAX_ACCESS_RIGHTS_ENUM = enum(i32) {
    SUBMIT_LOW = 1,
    SUBMIT_NORMAL = 2,
    SUBMIT_HIGH = 4,
    QUERY_JOBS = 8,
    MANAGE_JOBS = 16,
    QUERY_CONFIG = 32,
    MANAGE_CONFIG = 64,
    QUERY_IN_ARCHIVE = 128,
    MANAGE_IN_ARCHIVE = 256,
    QUERY_OUT_ARCHIVE = 512,
    MANAGE_OUT_ARCHIVE = 1024,
};
pub const farSUBMIT_LOW = FAX_ACCESS_RIGHTS_ENUM.SUBMIT_LOW;
pub const farSUBMIT_NORMAL = FAX_ACCESS_RIGHTS_ENUM.SUBMIT_NORMAL;
pub const farSUBMIT_HIGH = FAX_ACCESS_RIGHTS_ENUM.SUBMIT_HIGH;
pub const farQUERY_JOBS = FAX_ACCESS_RIGHTS_ENUM.QUERY_JOBS;
pub const farMANAGE_JOBS = FAX_ACCESS_RIGHTS_ENUM.MANAGE_JOBS;
pub const farQUERY_CONFIG = FAX_ACCESS_RIGHTS_ENUM.QUERY_CONFIG;
pub const farMANAGE_CONFIG = FAX_ACCESS_RIGHTS_ENUM.MANAGE_CONFIG;
pub const farQUERY_IN_ARCHIVE = FAX_ACCESS_RIGHTS_ENUM.QUERY_IN_ARCHIVE;
pub const farMANAGE_IN_ARCHIVE = FAX_ACCESS_RIGHTS_ENUM.MANAGE_IN_ARCHIVE;
pub const farQUERY_OUT_ARCHIVE = FAX_ACCESS_RIGHTS_ENUM.QUERY_OUT_ARCHIVE;
pub const farMANAGE_OUT_ARCHIVE = FAX_ACCESS_RIGHTS_ENUM.MANAGE_OUT_ARCHIVE;

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxSecurity_Value = Guid.initString("77b508c1-09c0-47a2-91eb-fce7fdf2690e");
pub const IID_IFaxSecurity = &IID_IFaxSecurity_Value;
pub const IFaxSecurity = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Descriptor: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSecurity,
                pvDescriptor: ?*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 IFaxSecurity,
                pvDescriptor: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Descriptor: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSecurity,
                vDescriptor: 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 IFaxSecurity,
                vDescriptor: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_GrantedRights: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSecurity,
                pGrantedRights: ?*FAX_ACCESS_RIGHTS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxSecurity,
                pGrantedRights: ?*FAX_ACCESS_RIGHTS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Refresh: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxSecurity,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxSecurity,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Save: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxSecurity,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxSecurity,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_InformationType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSecurity,
                plInformationType: ?*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 IFaxSecurity,
                plInformationType: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_InformationType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSecurity,
                lInformationType: 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 IFaxSecurity,
                lInformationType: i32,
            ) 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 IFaxSecurity_get_Descriptor(self: *const T, pvDescriptor: ?*VARIANT) HRESULT {
                return @as(*const IFaxSecurity.VTable, @ptrCast(self.vtable)).get_Descriptor(@as(*const IFaxSecurity, @ptrCast(self)), pvDescriptor);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSecurity_put_Descriptor(self: *const T, vDescriptor: VARIANT) HRESULT {
                return @as(*const IFaxSecurity.VTable, @ptrCast(self.vtable)).put_Descriptor(@as(*const IFaxSecurity, @ptrCast(self)), vDescriptor);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSecurity_get_GrantedRights(self: *const T, pGrantedRights: ?*FAX_ACCESS_RIGHTS_ENUM) HRESULT {
                return @as(*const IFaxSecurity.VTable, @ptrCast(self.vtable)).get_GrantedRights(@as(*const IFaxSecurity, @ptrCast(self)), pGrantedRights);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSecurity_Refresh(self: *const T) HRESULT {
                return @as(*const IFaxSecurity.VTable, @ptrCast(self.vtable)).Refresh(@as(*const IFaxSecurity, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSecurity_Save(self: *const T) HRESULT {
                return @as(*const IFaxSecurity.VTable, @ptrCast(self.vtable)).Save(@as(*const IFaxSecurity, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSecurity_get_InformationType(self: *const T, plInformationType: ?*i32) HRESULT {
                return @as(*const IFaxSecurity.VTable, @ptrCast(self.vtable)).get_InformationType(@as(*const IFaxSecurity, @ptrCast(self)), plInformationType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSecurity_put_InformationType(self: *const T, lInformationType: i32) HRESULT {
                return @as(*const IFaxSecurity.VTable, @ptrCast(self.vtable)).put_InformationType(@as(*const IFaxSecurity, @ptrCast(self)), lInformationType);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const FAX_PRIORITY_TYPE_ENUM = enum(i32) {
    LOW = 0,
    NORMAL = 1,
    HIGH = 2,
};
pub const fptLOW = FAX_PRIORITY_TYPE_ENUM.LOW;
pub const fptNORMAL = FAX_PRIORITY_TYPE_ENUM.NORMAL;
pub const fptHIGH = FAX_PRIORITY_TYPE_ENUM.HIGH;

pub const FAX_COVERPAGE_TYPE_ENUM = enum(i32) {
    NONE = 0,
    LOCAL = 1,
    SERVER = 2,
};
pub const fcptNONE = FAX_COVERPAGE_TYPE_ENUM.NONE;
pub const fcptLOCAL = FAX_COVERPAGE_TYPE_ENUM.LOCAL;
pub const fcptSERVER = FAX_COVERPAGE_TYPE_ENUM.SERVER;

pub const FAX_SCHEDULE_TYPE_ENUM = enum(i32) {
    NOW = 0,
    SPECIFIC_TIME = 1,
    DISCOUNT_PERIOD = 2,
};
pub const fstNOW = FAX_SCHEDULE_TYPE_ENUM.NOW;
pub const fstSPECIFIC_TIME = FAX_SCHEDULE_TYPE_ENUM.SPECIFIC_TIME;
pub const fstDISCOUNT_PERIOD = FAX_SCHEDULE_TYPE_ENUM.DISCOUNT_PERIOD;

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxDocument_Value = Guid.initString("b207a246-09e3-4a4e-a7dc-fea31d29458f");
pub const IID_IFaxDocument = &IID_IFaxDocument_Value;
pub const IFaxDocument = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Body: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                pbstrBody: ?*?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 IFaxDocument,
                pbstrBody: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Body: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                bstrBody: ?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 IFaxDocument,
                bstrBody: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Sender: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                ppFaxSender: ?*?*IFaxSender,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxDocument,
                ppFaxSender: ?*?*IFaxSender,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Recipients: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                ppFaxRecipients: ?*?*IFaxRecipients,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxDocument,
                ppFaxRecipients: ?*?*IFaxRecipients,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CoverPage: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                pbstrCoverPage: ?*?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 IFaxDocument,
                pbstrCoverPage: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_CoverPage: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                bstrCoverPage: ?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 IFaxDocument,
                bstrCoverPage: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Subject: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                pbstrSubject: ?*?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 IFaxDocument,
                pbstrSubject: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Subject: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                bstrSubject: ?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 IFaxDocument,
                bstrSubject: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Note: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                pbstrNote: ?*?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 IFaxDocument,
                pbstrNote: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Note: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                bstrNote: ?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 IFaxDocument,
                bstrNote: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ScheduleTime: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                pdateScheduleTime: ?*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 IFaxDocument,
                pdateScheduleTime: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ScheduleTime: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                dateScheduleTime: 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 IFaxDocument,
                dateScheduleTime: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ReceiptAddress: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                pbstrReceiptAddress: ?*?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 IFaxDocument,
                pbstrReceiptAddress: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ReceiptAddress: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                bstrReceiptAddress: ?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 IFaxDocument,
                bstrReceiptAddress: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DocumentName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                pbstrDocumentName: ?*?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 IFaxDocument,
                pbstrDocumentName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_DocumentName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                bstrDocumentName: ?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 IFaxDocument,
                bstrDocumentName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CallHandle: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                plCallHandle: ?*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 IFaxDocument,
                plCallHandle: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_CallHandle: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                lCallHandle: 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 IFaxDocument,
                lCallHandle: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CoverPageType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                pCoverPageType: ?*FAX_COVERPAGE_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxDocument,
                pCoverPageType: ?*FAX_COVERPAGE_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_CoverPageType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                CoverPageType: FAX_COVERPAGE_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxDocument,
                CoverPageType: FAX_COVERPAGE_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ScheduleType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                pScheduleType: ?*FAX_SCHEDULE_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxDocument,
                pScheduleType: ?*FAX_SCHEDULE_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ScheduleType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                ScheduleType: FAX_SCHEDULE_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxDocument,
                ScheduleType: FAX_SCHEDULE_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ReceiptType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                pReceiptType: ?*FAX_RECEIPT_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxDocument,
                pReceiptType: ?*FAX_RECEIPT_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ReceiptType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                ReceiptType: FAX_RECEIPT_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxDocument,
                ReceiptType: FAX_RECEIPT_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_GroupBroadcastReceipts: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                pbUseGrouping: ?*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 IFaxDocument,
                pbUseGrouping: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_GroupBroadcastReceipts: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                bUseGrouping: 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 IFaxDocument,
                bUseGrouping: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Priority: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                pPriority: ?*FAX_PRIORITY_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxDocument,
                pPriority: ?*FAX_PRIORITY_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Priority: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                Priority: FAX_PRIORITY_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxDocument,
                Priority: FAX_PRIORITY_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TapiConnection: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                ppTapiConnection: ?*?*IDispatch,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxDocument,
                ppTapiConnection: ?*?*IDispatch,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        putref_TapiConnection: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxDocument,
                pTapiConnection: ?*IDispatch,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxDocument,
                pTapiConnection: ?*IDispatch,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Submit: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxDocument,
                bstrFaxServerName: ?BSTR,
                pvFaxOutgoingJobIDs: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxDocument,
                bstrFaxServerName: ?BSTR,
                pvFaxOutgoingJobIDs: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ConnectedSubmit: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxDocument,
                pFaxServer: ?*IFaxServer,
                pvFaxOutgoingJobIDs: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxDocument,
                pFaxServer: ?*IFaxServer,
                pvFaxOutgoingJobIDs: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AttachFaxToReceipt: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                pbAttachFax: ?*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 IFaxDocument,
                pbAttachFax: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_AttachFaxToReceipt: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument,
                bAttachFax: 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 IFaxDocument,
                bAttachFax: i16,
            ) 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 IFaxDocument_get_Body(self: *const T, pbstrBody: ?*?BSTR) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).get_Body(@as(*const IFaxDocument, @ptrCast(self)), pbstrBody);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_put_Body(self: *const T, bstrBody: ?BSTR) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).put_Body(@as(*const IFaxDocument, @ptrCast(self)), bstrBody);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_get_Sender(self: *const T, ppFaxSender: ?*?*IFaxSender) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).get_Sender(@as(*const IFaxDocument, @ptrCast(self)), ppFaxSender);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_get_Recipients(self: *const T, ppFaxRecipients: ?*?*IFaxRecipients) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).get_Recipients(@as(*const IFaxDocument, @ptrCast(self)), ppFaxRecipients);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_get_CoverPage(self: *const T, pbstrCoverPage: ?*?BSTR) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).get_CoverPage(@as(*const IFaxDocument, @ptrCast(self)), pbstrCoverPage);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_put_CoverPage(self: *const T, bstrCoverPage: ?BSTR) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).put_CoverPage(@as(*const IFaxDocument, @ptrCast(self)), bstrCoverPage);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_get_Subject(self: *const T, pbstrSubject: ?*?BSTR) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).get_Subject(@as(*const IFaxDocument, @ptrCast(self)), pbstrSubject);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_put_Subject(self: *const T, bstrSubject: ?BSTR) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).put_Subject(@as(*const IFaxDocument, @ptrCast(self)), bstrSubject);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_get_Note(self: *const T, pbstrNote: ?*?BSTR) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).get_Note(@as(*const IFaxDocument, @ptrCast(self)), pbstrNote);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_put_Note(self: *const T, bstrNote: ?BSTR) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).put_Note(@as(*const IFaxDocument, @ptrCast(self)), bstrNote);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_get_ScheduleTime(self: *const T, pdateScheduleTime: ?*f64) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).get_ScheduleTime(@as(*const IFaxDocument, @ptrCast(self)), pdateScheduleTime);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_put_ScheduleTime(self: *const T, dateScheduleTime: f64) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).put_ScheduleTime(@as(*const IFaxDocument, @ptrCast(self)), dateScheduleTime);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_get_ReceiptAddress(self: *const T, pbstrReceiptAddress: ?*?BSTR) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).get_ReceiptAddress(@as(*const IFaxDocument, @ptrCast(self)), pbstrReceiptAddress);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_put_ReceiptAddress(self: *const T, bstrReceiptAddress: ?BSTR) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).put_ReceiptAddress(@as(*const IFaxDocument, @ptrCast(self)), bstrReceiptAddress);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_get_DocumentName(self: *const T, pbstrDocumentName: ?*?BSTR) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).get_DocumentName(@as(*const IFaxDocument, @ptrCast(self)), pbstrDocumentName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_put_DocumentName(self: *const T, bstrDocumentName: ?BSTR) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).put_DocumentName(@as(*const IFaxDocument, @ptrCast(self)), bstrDocumentName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_get_CallHandle(self: *const T, plCallHandle: ?*i32) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).get_CallHandle(@as(*const IFaxDocument, @ptrCast(self)), plCallHandle);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_put_CallHandle(self: *const T, lCallHandle: i32) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).put_CallHandle(@as(*const IFaxDocument, @ptrCast(self)), lCallHandle);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_get_CoverPageType(self: *const T, pCoverPageType: ?*FAX_COVERPAGE_TYPE_ENUM) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).get_CoverPageType(@as(*const IFaxDocument, @ptrCast(self)), pCoverPageType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_put_CoverPageType(self: *const T, CoverPageType: FAX_COVERPAGE_TYPE_ENUM) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).put_CoverPageType(@as(*const IFaxDocument, @ptrCast(self)), CoverPageType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_get_ScheduleType(self: *const T, pScheduleType: ?*FAX_SCHEDULE_TYPE_ENUM) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).get_ScheduleType(@as(*const IFaxDocument, @ptrCast(self)), pScheduleType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_put_ScheduleType(self: *const T, ScheduleType: FAX_SCHEDULE_TYPE_ENUM) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).put_ScheduleType(@as(*const IFaxDocument, @ptrCast(self)), ScheduleType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_get_ReceiptType(self: *const T, pReceiptType: ?*FAX_RECEIPT_TYPE_ENUM) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).get_ReceiptType(@as(*const IFaxDocument, @ptrCast(self)), pReceiptType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_put_ReceiptType(self: *const T, ReceiptType: FAX_RECEIPT_TYPE_ENUM) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).put_ReceiptType(@as(*const IFaxDocument, @ptrCast(self)), ReceiptType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_get_GroupBroadcastReceipts(self: *const T, pbUseGrouping: ?*i16) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).get_GroupBroadcastReceipts(@as(*const IFaxDocument, @ptrCast(self)), pbUseGrouping);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_put_GroupBroadcastReceipts(self: *const T, bUseGrouping: i16) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).put_GroupBroadcastReceipts(@as(*const IFaxDocument, @ptrCast(self)), bUseGrouping);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_get_Priority(self: *const T, pPriority: ?*FAX_PRIORITY_TYPE_ENUM) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).get_Priority(@as(*const IFaxDocument, @ptrCast(self)), pPriority);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_put_Priority(self: *const T, Priority: FAX_PRIORITY_TYPE_ENUM) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).put_Priority(@as(*const IFaxDocument, @ptrCast(self)), Priority);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_get_TapiConnection(self: *const T, ppTapiConnection: ?*?*IDispatch) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).get_TapiConnection(@as(*const IFaxDocument, @ptrCast(self)), ppTapiConnection);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_putref_TapiConnection(self: *const T, pTapiConnection: ?*IDispatch) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).putref_TapiConnection(@as(*const IFaxDocument, @ptrCast(self)), pTapiConnection);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_Submit(self: *const T, bstrFaxServerName: ?BSTR, pvFaxOutgoingJobIDs: ?*VARIANT) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).Submit(@as(*const IFaxDocument, @ptrCast(self)), bstrFaxServerName, pvFaxOutgoingJobIDs);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_ConnectedSubmit(self: *const T, pFaxServer: ?*IFaxServer, pvFaxOutgoingJobIDs: ?*VARIANT) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).ConnectedSubmit(@as(*const IFaxDocument, @ptrCast(self)), pFaxServer, pvFaxOutgoingJobIDs);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_get_AttachFaxToReceipt(self: *const T, pbAttachFax: ?*i16) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).get_AttachFaxToReceipt(@as(*const IFaxDocument, @ptrCast(self)), pbAttachFax);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument_put_AttachFaxToReceipt(self: *const T, bAttachFax: i16) HRESULT {
                return @as(*const IFaxDocument.VTable, @ptrCast(self.vtable)).put_AttachFaxToReceipt(@as(*const IFaxDocument, @ptrCast(self)), bAttachFax);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxSender_Value = Guid.initString("0d879d7d-f57a-4cc6-a6f9-3ee5d527b46a");
pub const IID_IFaxSender = &IID_IFaxSender_Value;
pub const IFaxSender = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_BillingCode: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                pbstrBillingCode: ?*?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 IFaxSender,
                pbstrBillingCode: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_BillingCode: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                bstrBillingCode: ?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 IFaxSender,
                bstrBillingCode: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_City: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                pbstrCity: ?*?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 IFaxSender,
                pbstrCity: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_City: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                bstrCity: ?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 IFaxSender,
                bstrCity: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Company: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                pbstrCompany: ?*?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 IFaxSender,
                pbstrCompany: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Company: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                bstrCompany: ?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 IFaxSender,
                bstrCompany: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Country: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                pbstrCountry: ?*?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 IFaxSender,
                pbstrCountry: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Country: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                bstrCountry: ?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 IFaxSender,
                bstrCountry: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Department: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                pbstrDepartment: ?*?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 IFaxSender,
                pbstrDepartment: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Department: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                bstrDepartment: ?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 IFaxSender,
                bstrDepartment: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Email: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                pbstrEmail: ?*?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 IFaxSender,
                pbstrEmail: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Email: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                bstrEmail: ?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 IFaxSender,
                bstrEmail: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_FaxNumber: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                pbstrFaxNumber: ?*?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 IFaxSender,
                pbstrFaxNumber: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_FaxNumber: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                bstrFaxNumber: ?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 IFaxSender,
                bstrFaxNumber: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_HomePhone: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                pbstrHomePhone: ?*?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 IFaxSender,
                pbstrHomePhone: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_HomePhone: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                bstrHomePhone: ?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 IFaxSender,
                bstrHomePhone: ?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 IFaxSender,
                pbstrName: ?*?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 IFaxSender,
                pbstrName: ?*?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 IFaxSender,
                bstrName: ?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 IFaxSender,
                bstrName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TSID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                pbstrTSID: ?*?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 IFaxSender,
                pbstrTSID: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_TSID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                bstrTSID: ?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 IFaxSender,
                bstrTSID: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_OfficePhone: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                pbstrOfficePhone: ?*?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 IFaxSender,
                pbstrOfficePhone: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_OfficePhone: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                bstrOfficePhone: ?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 IFaxSender,
                bstrOfficePhone: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_OfficeLocation: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                pbstrOfficeLocation: ?*?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 IFaxSender,
                pbstrOfficeLocation: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_OfficeLocation: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                bstrOfficeLocation: ?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 IFaxSender,
                bstrOfficeLocation: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_State: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                pbstrState: ?*?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 IFaxSender,
                pbstrState: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_State: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                bstrState: ?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 IFaxSender,
                bstrState: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_StreetAddress: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                pbstrStreetAddress: ?*?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 IFaxSender,
                pbstrStreetAddress: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_StreetAddress: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                bstrStreetAddress: ?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 IFaxSender,
                bstrStreetAddress: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Title: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                pbstrTitle: ?*?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 IFaxSender,
                pbstrTitle: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Title: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                bstrTitle: ?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 IFaxSender,
                bstrTitle: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ZipCode: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                pbstrZipCode: ?*?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 IFaxSender,
                pbstrZipCode: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ZipCode: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSender,
                bstrZipCode: ?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 IFaxSender,
                bstrZipCode: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        LoadDefaultSender: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxSender,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxSender,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SaveDefaultSender: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxSender,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxSender,
            ) 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 IFaxSender_get_BillingCode(self: *const T, pbstrBillingCode: ?*?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).get_BillingCode(@as(*const IFaxSender, @ptrCast(self)), pbstrBillingCode);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_put_BillingCode(self: *const T, bstrBillingCode: ?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).put_BillingCode(@as(*const IFaxSender, @ptrCast(self)), bstrBillingCode);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_get_City(self: *const T, pbstrCity: ?*?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).get_City(@as(*const IFaxSender, @ptrCast(self)), pbstrCity);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_put_City(self: *const T, bstrCity: ?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).put_City(@as(*const IFaxSender, @ptrCast(self)), bstrCity);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_get_Company(self: *const T, pbstrCompany: ?*?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).get_Company(@as(*const IFaxSender, @ptrCast(self)), pbstrCompany);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_put_Company(self: *const T, bstrCompany: ?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).put_Company(@as(*const IFaxSender, @ptrCast(self)), bstrCompany);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_get_Country(self: *const T, pbstrCountry: ?*?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).get_Country(@as(*const IFaxSender, @ptrCast(self)), pbstrCountry);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_put_Country(self: *const T, bstrCountry: ?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).put_Country(@as(*const IFaxSender, @ptrCast(self)), bstrCountry);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_get_Department(self: *const T, pbstrDepartment: ?*?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).get_Department(@as(*const IFaxSender, @ptrCast(self)), pbstrDepartment);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_put_Department(self: *const T, bstrDepartment: ?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).put_Department(@as(*const IFaxSender, @ptrCast(self)), bstrDepartment);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_get_Email(self: *const T, pbstrEmail: ?*?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).get_Email(@as(*const IFaxSender, @ptrCast(self)), pbstrEmail);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_put_Email(self: *const T, bstrEmail: ?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).put_Email(@as(*const IFaxSender, @ptrCast(self)), bstrEmail);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_get_FaxNumber(self: *const T, pbstrFaxNumber: ?*?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).get_FaxNumber(@as(*const IFaxSender, @ptrCast(self)), pbstrFaxNumber);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_put_FaxNumber(self: *const T, bstrFaxNumber: ?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).put_FaxNumber(@as(*const IFaxSender, @ptrCast(self)), bstrFaxNumber);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_get_HomePhone(self: *const T, pbstrHomePhone: ?*?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).get_HomePhone(@as(*const IFaxSender, @ptrCast(self)), pbstrHomePhone);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_put_HomePhone(self: *const T, bstrHomePhone: ?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).put_HomePhone(@as(*const IFaxSender, @ptrCast(self)), bstrHomePhone);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_get_Name(self: *const T, pbstrName: ?*?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).get_Name(@as(*const IFaxSender, @ptrCast(self)), pbstrName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_put_Name(self: *const T, bstrName: ?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).put_Name(@as(*const IFaxSender, @ptrCast(self)), bstrName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_get_TSID(self: *const T, pbstrTSID: ?*?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).get_TSID(@as(*const IFaxSender, @ptrCast(self)), pbstrTSID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_put_TSID(self: *const T, bstrTSID: ?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).put_TSID(@as(*const IFaxSender, @ptrCast(self)), bstrTSID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_get_OfficePhone(self: *const T, pbstrOfficePhone: ?*?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).get_OfficePhone(@as(*const IFaxSender, @ptrCast(self)), pbstrOfficePhone);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_put_OfficePhone(self: *const T, bstrOfficePhone: ?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).put_OfficePhone(@as(*const IFaxSender, @ptrCast(self)), bstrOfficePhone);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_get_OfficeLocation(self: *const T, pbstrOfficeLocation: ?*?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).get_OfficeLocation(@as(*const IFaxSender, @ptrCast(self)), pbstrOfficeLocation);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_put_OfficeLocation(self: *const T, bstrOfficeLocation: ?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).put_OfficeLocation(@as(*const IFaxSender, @ptrCast(self)), bstrOfficeLocation);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_get_State(self: *const T, pbstrState: ?*?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).get_State(@as(*const IFaxSender, @ptrCast(self)), pbstrState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_put_State(self: *const T, bstrState: ?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).put_State(@as(*const IFaxSender, @ptrCast(self)), bstrState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_get_StreetAddress(self: *const T, pbstrStreetAddress: ?*?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).get_StreetAddress(@as(*const IFaxSender, @ptrCast(self)), pbstrStreetAddress);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_put_StreetAddress(self: *const T, bstrStreetAddress: ?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).put_StreetAddress(@as(*const IFaxSender, @ptrCast(self)), bstrStreetAddress);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_get_Title(self: *const T, pbstrTitle: ?*?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).get_Title(@as(*const IFaxSender, @ptrCast(self)), pbstrTitle);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_put_Title(self: *const T, bstrTitle: ?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).put_Title(@as(*const IFaxSender, @ptrCast(self)), bstrTitle);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_get_ZipCode(self: *const T, pbstrZipCode: ?*?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).get_ZipCode(@as(*const IFaxSender, @ptrCast(self)), pbstrZipCode);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_put_ZipCode(self: *const T, bstrZipCode: ?BSTR) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).put_ZipCode(@as(*const IFaxSender, @ptrCast(self)), bstrZipCode);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_LoadDefaultSender(self: *const T) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).LoadDefaultSender(@as(*const IFaxSender, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSender_SaveDefaultSender(self: *const T) HRESULT {
                return @as(*const IFaxSender.VTable, @ptrCast(self.vtable)).SaveDefaultSender(@as(*const IFaxSender, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxRecipient_Value = Guid.initString("9a3da3a0-538d-42b6-9444-aaa57d0ce2bc");
pub const IID_IFaxRecipient = &IID_IFaxRecipient_Value;
pub const IFaxRecipient = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_FaxNumber: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxRecipient,
                pbstrFaxNumber: ?*?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 IFaxRecipient,
                pbstrFaxNumber: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_FaxNumber: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxRecipient,
                bstrFaxNumber: ?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 IFaxRecipient,
                bstrFaxNumber: ?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 IFaxRecipient,
                pbstrName: ?*?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 IFaxRecipient,
                pbstrName: ?*?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 IFaxRecipient,
                bstrName: ?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 IFaxRecipient,
                bstrName: ?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 IFaxRecipient_get_FaxNumber(self: *const T, pbstrFaxNumber: ?*?BSTR) HRESULT {
                return @as(*const IFaxRecipient.VTable, @ptrCast(self.vtable)).get_FaxNumber(@as(*const IFaxRecipient, @ptrCast(self)), pbstrFaxNumber);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxRecipient_put_FaxNumber(self: *const T, bstrFaxNumber: ?BSTR) HRESULT {
                return @as(*const IFaxRecipient.VTable, @ptrCast(self.vtable)).put_FaxNumber(@as(*const IFaxRecipient, @ptrCast(self)), bstrFaxNumber);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxRecipient_get_Name(self: *const T, pbstrName: ?*?BSTR) HRESULT {
                return @as(*const IFaxRecipient.VTable, @ptrCast(self.vtable)).get_Name(@as(*const IFaxRecipient, @ptrCast(self)), pbstrName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxRecipient_put_Name(self: *const T, bstrName: ?BSTR) HRESULT {
                return @as(*const IFaxRecipient.VTable, @ptrCast(self.vtable)).put_Name(@as(*const IFaxRecipient, @ptrCast(self)), bstrName);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxRecipients_Value = Guid.initString("b9c9de5a-894e-4492-9fa3-08c627c11d5d");
pub const IID_IFaxRecipients = &IID_IFaxRecipients_Value;
pub const IFaxRecipients = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // 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 IFaxRecipients,
                ppUnk: ?*?*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 IFaxRecipients,
                ppUnk: ?*?*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 IFaxRecipients,
                lIndex: i32,
                ppFaxRecipient: ?*?*IFaxRecipient,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxRecipients,
                lIndex: i32,
                ppFaxRecipient: ?*?*IFaxRecipient,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // 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 IFaxRecipients,
                plCount: ?*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 IFaxRecipients,
                plCount: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxRecipients,
                bstrFaxNumber: ?BSTR,
                bstrRecipientName: ?BSTR,
                ppFaxRecipient: ?*?*IFaxRecipient,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxRecipients,
                bstrFaxNumber: ?BSTR,
                bstrRecipientName: ?BSTR,
                ppFaxRecipient: ?*?*IFaxRecipient,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxRecipients,
                lIndex: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxRecipients,
                lIndex: i32,
            ) 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 IFaxRecipients_get__NewEnum(self: *const T, ppUnk: ?*?*IUnknown) HRESULT {
                return @as(*const IFaxRecipients.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const IFaxRecipients, @ptrCast(self)), ppUnk);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxRecipients_get_Item(self: *const T, lIndex: i32, ppFaxRecipient: ?*?*IFaxRecipient) HRESULT {
                return @as(*const IFaxRecipients.VTable, @ptrCast(self.vtable)).get_Item(@as(*const IFaxRecipients, @ptrCast(self)), lIndex, ppFaxRecipient);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxRecipients_get_Count(self: *const T, plCount: ?*i32) HRESULT {
                return @as(*const IFaxRecipients.VTable, @ptrCast(self.vtable)).get_Count(@as(*const IFaxRecipients, @ptrCast(self)), plCount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxRecipients_Add(self: *const T, bstrFaxNumber: ?BSTR, bstrRecipientName: ?BSTR, ppFaxRecipient: ?*?*IFaxRecipient) HRESULT {
                return @as(*const IFaxRecipients.VTable, @ptrCast(self.vtable)).Add(@as(*const IFaxRecipients, @ptrCast(self)), bstrFaxNumber, bstrRecipientName, ppFaxRecipient);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxRecipients_Remove(self: *const T, lIndex: i32) HRESULT {
                return @as(*const IFaxRecipients.VTable, @ptrCast(self.vtable)).Remove(@as(*const IFaxRecipients, @ptrCast(self)), lIndex);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxIncomingArchive_Value = Guid.initString("76062cc7-f714-4fbd-aa06-ed6e4a4b70f3");
pub const IID_IFaxIncomingArchive = &IID_IFaxIncomingArchive_Value;
pub const IFaxIncomingArchive = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_UseArchive: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingArchive,
                pbUseArchive: ?*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 IFaxIncomingArchive,
                pbUseArchive: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_UseArchive: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingArchive,
                bUseArchive: 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 IFaxIncomingArchive,
                bUseArchive: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ArchiveFolder: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingArchive,
                pbstrArchiveFolder: ?*?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 IFaxIncomingArchive,
                pbstrArchiveFolder: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ArchiveFolder: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingArchive,
                bstrArchiveFolder: ?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 IFaxIncomingArchive,
                bstrArchiveFolder: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SizeQuotaWarning: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingArchive,
                pbSizeQuotaWarning: ?*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 IFaxIncomingArchive,
                pbSizeQuotaWarning: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SizeQuotaWarning: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingArchive,
                bSizeQuotaWarning: 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 IFaxIncomingArchive,
                bSizeQuotaWarning: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_HighQuotaWaterMark: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingArchive,
                plHighQuotaWaterMark: ?*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 IFaxIncomingArchive,
                plHighQuotaWaterMark: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_HighQuotaWaterMark: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingArchive,
                lHighQuotaWaterMark: 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 IFaxIncomingArchive,
                lHighQuotaWaterMark: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LowQuotaWaterMark: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingArchive,
                plLowQuotaWaterMark: ?*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 IFaxIncomingArchive,
                plLowQuotaWaterMark: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_LowQuotaWaterMark: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingArchive,
                lLowQuotaWaterMark: 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 IFaxIncomingArchive,
                lLowQuotaWaterMark: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AgeLimit: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingArchive,
                plAgeLimit: ?*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 IFaxIncomingArchive,
                plAgeLimit: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_AgeLimit: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingArchive,
                lAgeLimit: 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 IFaxIncomingArchive,
                lAgeLimit: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SizeLow: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingArchive,
                plSizeLow: ?*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 IFaxIncomingArchive,
                plSizeLow: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SizeHigh: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingArchive,
                plSizeHigh: ?*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 IFaxIncomingArchive,
                plSizeHigh: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Refresh: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxIncomingArchive,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxIncomingArchive,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Save: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxIncomingArchive,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxIncomingArchive,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetMessages: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxIncomingArchive,
                lPrefetchSize: i32,
                pFaxIncomingMessageIterator: ?*?*IFaxIncomingMessageIterator,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxIncomingArchive,
                lPrefetchSize: i32,
                pFaxIncomingMessageIterator: ?*?*IFaxIncomingMessageIterator,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetMessage: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxIncomingArchive,
                bstrMessageId: ?BSTR,
                pFaxIncomingMessage: ?*?*IFaxIncomingMessage,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxIncomingArchive,
                bstrMessageId: ?BSTR,
                pFaxIncomingMessage: ?*?*IFaxIncomingMessage,
            ) 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 IFaxIncomingArchive_get_UseArchive(self: *const T, pbUseArchive: ?*i16) HRESULT {
                return @as(*const IFaxIncomingArchive.VTable, @ptrCast(self.vtable)).get_UseArchive(@as(*const IFaxIncomingArchive, @ptrCast(self)), pbUseArchive);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingArchive_put_UseArchive(self: *const T, bUseArchive: i16) HRESULT {
                return @as(*const IFaxIncomingArchive.VTable, @ptrCast(self.vtable)).put_UseArchive(@as(*const IFaxIncomingArchive, @ptrCast(self)), bUseArchive);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingArchive_get_ArchiveFolder(self: *const T, pbstrArchiveFolder: ?*?BSTR) HRESULT {
                return @as(*const IFaxIncomingArchive.VTable, @ptrCast(self.vtable)).get_ArchiveFolder(@as(*const IFaxIncomingArchive, @ptrCast(self)), pbstrArchiveFolder);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingArchive_put_ArchiveFolder(self: *const T, bstrArchiveFolder: ?BSTR) HRESULT {
                return @as(*const IFaxIncomingArchive.VTable, @ptrCast(self.vtable)).put_ArchiveFolder(@as(*const IFaxIncomingArchive, @ptrCast(self)), bstrArchiveFolder);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingArchive_get_SizeQuotaWarning(self: *const T, pbSizeQuotaWarning: ?*i16) HRESULT {
                return @as(*const IFaxIncomingArchive.VTable, @ptrCast(self.vtable)).get_SizeQuotaWarning(@as(*const IFaxIncomingArchive, @ptrCast(self)), pbSizeQuotaWarning);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingArchive_put_SizeQuotaWarning(self: *const T, bSizeQuotaWarning: i16) HRESULT {
                return @as(*const IFaxIncomingArchive.VTable, @ptrCast(self.vtable)).put_SizeQuotaWarning(@as(*const IFaxIncomingArchive, @ptrCast(self)), bSizeQuotaWarning);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingArchive_get_HighQuotaWaterMark(self: *const T, plHighQuotaWaterMark: ?*i32) HRESULT {
                return @as(*const IFaxIncomingArchive.VTable, @ptrCast(self.vtable)).get_HighQuotaWaterMark(@as(*const IFaxIncomingArchive, @ptrCast(self)), plHighQuotaWaterMark);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingArchive_put_HighQuotaWaterMark(self: *const T, lHighQuotaWaterMark: i32) HRESULT {
                return @as(*const IFaxIncomingArchive.VTable, @ptrCast(self.vtable)).put_HighQuotaWaterMark(@as(*const IFaxIncomingArchive, @ptrCast(self)), lHighQuotaWaterMark);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingArchive_get_LowQuotaWaterMark(self: *const T, plLowQuotaWaterMark: ?*i32) HRESULT {
                return @as(*const IFaxIncomingArchive.VTable, @ptrCast(self.vtable)).get_LowQuotaWaterMark(@as(*const IFaxIncomingArchive, @ptrCast(self)), plLowQuotaWaterMark);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingArchive_put_LowQuotaWaterMark(self: *const T, lLowQuotaWaterMark: i32) HRESULT {
                return @as(*const IFaxIncomingArchive.VTable, @ptrCast(self.vtable)).put_LowQuotaWaterMark(@as(*const IFaxIncomingArchive, @ptrCast(self)), lLowQuotaWaterMark);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingArchive_get_AgeLimit(self: *const T, plAgeLimit: ?*i32) HRESULT {
                return @as(*const IFaxIncomingArchive.VTable, @ptrCast(self.vtable)).get_AgeLimit(@as(*const IFaxIncomingArchive, @ptrCast(self)), plAgeLimit);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingArchive_put_AgeLimit(self: *const T, lAgeLimit: i32) HRESULT {
                return @as(*const IFaxIncomingArchive.VTable, @ptrCast(self.vtable)).put_AgeLimit(@as(*const IFaxIncomingArchive, @ptrCast(self)), lAgeLimit);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingArchive_get_SizeLow(self: *const T, plSizeLow: ?*i32) HRESULT {
                return @as(*const IFaxIncomingArchive.VTable, @ptrCast(self.vtable)).get_SizeLow(@as(*const IFaxIncomingArchive, @ptrCast(self)), plSizeLow);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingArchive_get_SizeHigh(self: *const T, plSizeHigh: ?*i32) HRESULT {
                return @as(*const IFaxIncomingArchive.VTable, @ptrCast(self.vtable)).get_SizeHigh(@as(*const IFaxIncomingArchive, @ptrCast(self)), plSizeHigh);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingArchive_Refresh(self: *const T) HRESULT {
                return @as(*const IFaxIncomingArchive.VTable, @ptrCast(self.vtable)).Refresh(@as(*const IFaxIncomingArchive, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingArchive_Save(self: *const T) HRESULT {
                return @as(*const IFaxIncomingArchive.VTable, @ptrCast(self.vtable)).Save(@as(*const IFaxIncomingArchive, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingArchive_GetMessages(self: *const T, lPrefetchSize: i32, pFaxIncomingMessageIterator: ?*?*IFaxIncomingMessageIterator) HRESULT {
                return @as(*const IFaxIncomingArchive.VTable, @ptrCast(self.vtable)).GetMessages(@as(*const IFaxIncomingArchive, @ptrCast(self)), lPrefetchSize, pFaxIncomingMessageIterator);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingArchive_GetMessage(self: *const T, bstrMessageId: ?BSTR, pFaxIncomingMessage: ?*?*IFaxIncomingMessage) HRESULT {
                return @as(*const IFaxIncomingArchive.VTable, @ptrCast(self.vtable)).GetMessage(@as(*const IFaxIncomingArchive, @ptrCast(self)), bstrMessageId, pFaxIncomingMessage);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxIncomingQueue_Value = Guid.initString("902e64ef-8fd8-4b75-9725-6014df161545");
pub const IID_IFaxIncomingQueue = &IID_IFaxIncomingQueue_Value;
pub const IFaxIncomingQueue = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Blocked: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingQueue,
                pbBlocked: ?*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 IFaxIncomingQueue,
                pbBlocked: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Blocked: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingQueue,
                bBlocked: 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 IFaxIncomingQueue,
                bBlocked: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Refresh: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxIncomingQueue,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxIncomingQueue,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Save: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxIncomingQueue,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxIncomingQueue,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetJobs: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxIncomingQueue,
                pFaxIncomingJobs: ?*?*IFaxIncomingJobs,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxIncomingQueue,
                pFaxIncomingJobs: ?*?*IFaxIncomingJobs,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetJob: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxIncomingQueue,
                bstrJobId: ?BSTR,
                pFaxIncomingJob: ?*?*IFaxIncomingJob,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxIncomingQueue,
                bstrJobId: ?BSTR,
                pFaxIncomingJob: ?*?*IFaxIncomingJob,
            ) 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 IFaxIncomingQueue_get_Blocked(self: *const T, pbBlocked: ?*i16) HRESULT {
                return @as(*const IFaxIncomingQueue.VTable, @ptrCast(self.vtable)).get_Blocked(@as(*const IFaxIncomingQueue, @ptrCast(self)), pbBlocked);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingQueue_put_Blocked(self: *const T, bBlocked: i16) HRESULT {
                return @as(*const IFaxIncomingQueue.VTable, @ptrCast(self.vtable)).put_Blocked(@as(*const IFaxIncomingQueue, @ptrCast(self)), bBlocked);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingQueue_Refresh(self: *const T) HRESULT {
                return @as(*const IFaxIncomingQueue.VTable, @ptrCast(self.vtable)).Refresh(@as(*const IFaxIncomingQueue, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingQueue_Save(self: *const T) HRESULT {
                return @as(*const IFaxIncomingQueue.VTable, @ptrCast(self.vtable)).Save(@as(*const IFaxIncomingQueue, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingQueue_GetJobs(self: *const T, pFaxIncomingJobs: ?*?*IFaxIncomingJobs) HRESULT {
                return @as(*const IFaxIncomingQueue.VTable, @ptrCast(self.vtable)).GetJobs(@as(*const IFaxIncomingQueue, @ptrCast(self)), pFaxIncomingJobs);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingQueue_GetJob(self: *const T, bstrJobId: ?BSTR, pFaxIncomingJob: ?*?*IFaxIncomingJob) HRESULT {
                return @as(*const IFaxIncomingQueue.VTable, @ptrCast(self.vtable)).GetJob(@as(*const IFaxIncomingQueue, @ptrCast(self)), bstrJobId, pFaxIncomingJob);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxOutgoingArchive_Value = Guid.initString("c9c28f40-8d80-4e53-810f-9a79919b49fd");
pub const IID_IFaxOutgoingArchive = &IID_IFaxOutgoingArchive_Value;
pub const IFaxOutgoingArchive = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_UseArchive: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingArchive,
                pbUseArchive: ?*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 IFaxOutgoingArchive,
                pbUseArchive: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_UseArchive: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingArchive,
                bUseArchive: 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 IFaxOutgoingArchive,
                bUseArchive: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ArchiveFolder: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingArchive,
                pbstrArchiveFolder: ?*?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 IFaxOutgoingArchive,
                pbstrArchiveFolder: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ArchiveFolder: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingArchive,
                bstrArchiveFolder: ?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 IFaxOutgoingArchive,
                bstrArchiveFolder: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SizeQuotaWarning: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingArchive,
                pbSizeQuotaWarning: ?*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 IFaxOutgoingArchive,
                pbSizeQuotaWarning: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SizeQuotaWarning: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingArchive,
                bSizeQuotaWarning: 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 IFaxOutgoingArchive,
                bSizeQuotaWarning: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_HighQuotaWaterMark: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingArchive,
                plHighQuotaWaterMark: ?*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 IFaxOutgoingArchive,
                plHighQuotaWaterMark: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_HighQuotaWaterMark: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingArchive,
                lHighQuotaWaterMark: 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 IFaxOutgoingArchive,
                lHighQuotaWaterMark: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LowQuotaWaterMark: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingArchive,
                plLowQuotaWaterMark: ?*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 IFaxOutgoingArchive,
                plLowQuotaWaterMark: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_LowQuotaWaterMark: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingArchive,
                lLowQuotaWaterMark: 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 IFaxOutgoingArchive,
                lLowQuotaWaterMark: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AgeLimit: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingArchive,
                plAgeLimit: ?*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 IFaxOutgoingArchive,
                plAgeLimit: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_AgeLimit: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingArchive,
                lAgeLimit: 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 IFaxOutgoingArchive,
                lAgeLimit: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SizeLow: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingArchive,
                plSizeLow: ?*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 IFaxOutgoingArchive,
                plSizeLow: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SizeHigh: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingArchive,
                plSizeHigh: ?*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 IFaxOutgoingArchive,
                plSizeHigh: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Refresh: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutgoingArchive,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutgoingArchive,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Save: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutgoingArchive,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutgoingArchive,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetMessages: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutgoingArchive,
                lPrefetchSize: i32,
                pFaxOutgoingMessageIterator: ?*?*IFaxOutgoingMessageIterator,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutgoingArchive,
                lPrefetchSize: i32,
                pFaxOutgoingMessageIterator: ?*?*IFaxOutgoingMessageIterator,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetMessage: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutgoingArchive,
                bstrMessageId: ?BSTR,
                pFaxOutgoingMessage: ?*?*IFaxOutgoingMessage,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutgoingArchive,
                bstrMessageId: ?BSTR,
                pFaxOutgoingMessage: ?*?*IFaxOutgoingMessage,
            ) 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 IFaxOutgoingArchive_get_UseArchive(self: *const T, pbUseArchive: ?*i16) HRESULT {
                return @as(*const IFaxOutgoingArchive.VTable, @ptrCast(self.vtable)).get_UseArchive(@as(*const IFaxOutgoingArchive, @ptrCast(self)), pbUseArchive);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingArchive_put_UseArchive(self: *const T, bUseArchive: i16) HRESULT {
                return @as(*const IFaxOutgoingArchive.VTable, @ptrCast(self.vtable)).put_UseArchive(@as(*const IFaxOutgoingArchive, @ptrCast(self)), bUseArchive);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingArchive_get_ArchiveFolder(self: *const T, pbstrArchiveFolder: ?*?BSTR) HRESULT {
                return @as(*const IFaxOutgoingArchive.VTable, @ptrCast(self.vtable)).get_ArchiveFolder(@as(*const IFaxOutgoingArchive, @ptrCast(self)), pbstrArchiveFolder);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingArchive_put_ArchiveFolder(self: *const T, bstrArchiveFolder: ?BSTR) HRESULT {
                return @as(*const IFaxOutgoingArchive.VTable, @ptrCast(self.vtable)).put_ArchiveFolder(@as(*const IFaxOutgoingArchive, @ptrCast(self)), bstrArchiveFolder);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingArchive_get_SizeQuotaWarning(self: *const T, pbSizeQuotaWarning: ?*i16) HRESULT {
                return @as(*const IFaxOutgoingArchive.VTable, @ptrCast(self.vtable)).get_SizeQuotaWarning(@as(*const IFaxOutgoingArchive, @ptrCast(self)), pbSizeQuotaWarning);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingArchive_put_SizeQuotaWarning(self: *const T, bSizeQuotaWarning: i16) HRESULT {
                return @as(*const IFaxOutgoingArchive.VTable, @ptrCast(self.vtable)).put_SizeQuotaWarning(@as(*const IFaxOutgoingArchive, @ptrCast(self)), bSizeQuotaWarning);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingArchive_get_HighQuotaWaterMark(self: *const T, plHighQuotaWaterMark: ?*i32) HRESULT {
                return @as(*const IFaxOutgoingArchive.VTable, @ptrCast(self.vtable)).get_HighQuotaWaterMark(@as(*const IFaxOutgoingArchive, @ptrCast(self)), plHighQuotaWaterMark);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingArchive_put_HighQuotaWaterMark(self: *const T, lHighQuotaWaterMark: i32) HRESULT {
                return @as(*const IFaxOutgoingArchive.VTable, @ptrCast(self.vtable)).put_HighQuotaWaterMark(@as(*const IFaxOutgoingArchive, @ptrCast(self)), lHighQuotaWaterMark);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingArchive_get_LowQuotaWaterMark(self: *const T, plLowQuotaWaterMark: ?*i32) HRESULT {
                return @as(*const IFaxOutgoingArchive.VTable, @ptrCast(self.vtable)).get_LowQuotaWaterMark(@as(*const IFaxOutgoingArchive, @ptrCast(self)), plLowQuotaWaterMark);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingArchive_put_LowQuotaWaterMark(self: *const T, lLowQuotaWaterMark: i32) HRESULT {
                return @as(*const IFaxOutgoingArchive.VTable, @ptrCast(self.vtable)).put_LowQuotaWaterMark(@as(*const IFaxOutgoingArchive, @ptrCast(self)), lLowQuotaWaterMark);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingArchive_get_AgeLimit(self: *const T, plAgeLimit: ?*i32) HRESULT {
                return @as(*const IFaxOutgoingArchive.VTable, @ptrCast(self.vtable)).get_AgeLimit(@as(*const IFaxOutgoingArchive, @ptrCast(self)), plAgeLimit);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingArchive_put_AgeLimit(self: *const T, lAgeLimit: i32) HRESULT {
                return @as(*const IFaxOutgoingArchive.VTable, @ptrCast(self.vtable)).put_AgeLimit(@as(*const IFaxOutgoingArchive, @ptrCast(self)), lAgeLimit);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingArchive_get_SizeLow(self: *const T, plSizeLow: ?*i32) HRESULT {
                return @as(*const IFaxOutgoingArchive.VTable, @ptrCast(self.vtable)).get_SizeLow(@as(*const IFaxOutgoingArchive, @ptrCast(self)), plSizeLow);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingArchive_get_SizeHigh(self: *const T, plSizeHigh: ?*i32) HRESULT {
                return @as(*const IFaxOutgoingArchive.VTable, @ptrCast(self.vtable)).get_SizeHigh(@as(*const IFaxOutgoingArchive, @ptrCast(self)), plSizeHigh);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingArchive_Refresh(self: *const T) HRESULT {
                return @as(*const IFaxOutgoingArchive.VTable, @ptrCast(self.vtable)).Refresh(@as(*const IFaxOutgoingArchive, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingArchive_Save(self: *const T) HRESULT {
                return @as(*const IFaxOutgoingArchive.VTable, @ptrCast(self.vtable)).Save(@as(*const IFaxOutgoingArchive, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingArchive_GetMessages(self: *const T, lPrefetchSize: i32, pFaxOutgoingMessageIterator: ?*?*IFaxOutgoingMessageIterator) HRESULT {
                return @as(*const IFaxOutgoingArchive.VTable, @ptrCast(self.vtable)).GetMessages(@as(*const IFaxOutgoingArchive, @ptrCast(self)), lPrefetchSize, pFaxOutgoingMessageIterator);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingArchive_GetMessage(self: *const T, bstrMessageId: ?BSTR, pFaxOutgoingMessage: ?*?*IFaxOutgoingMessage) HRESULT {
                return @as(*const IFaxOutgoingArchive.VTable, @ptrCast(self.vtable)).GetMessage(@as(*const IFaxOutgoingArchive, @ptrCast(self)), bstrMessageId, pFaxOutgoingMessage);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxOutgoingQueue_Value = Guid.initString("80b1df24-d9ac-4333-b373-487cedc80ce5");
pub const IID_IFaxOutgoingQueue = &IID_IFaxOutgoingQueue_Value;
pub const IFaxOutgoingQueue = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Blocked: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingQueue,
                pbBlocked: ?*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 IFaxOutgoingQueue,
                pbBlocked: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Blocked: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingQueue,
                bBlocked: 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 IFaxOutgoingQueue,
                bBlocked: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Paused: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingQueue,
                pbPaused: ?*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 IFaxOutgoingQueue,
                pbPaused: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Paused: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingQueue,
                bPaused: 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 IFaxOutgoingQueue,
                bPaused: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AllowPersonalCoverPages: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingQueue,
                pbAllowPersonalCoverPages: ?*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 IFaxOutgoingQueue,
                pbAllowPersonalCoverPages: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_AllowPersonalCoverPages: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingQueue,
                bAllowPersonalCoverPages: 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 IFaxOutgoingQueue,
                bAllowPersonalCoverPages: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_UseDeviceTSID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingQueue,
                pbUseDeviceTSID: ?*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 IFaxOutgoingQueue,
                pbUseDeviceTSID: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_UseDeviceTSID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingQueue,
                bUseDeviceTSID: 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 IFaxOutgoingQueue,
                bUseDeviceTSID: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Retries: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingQueue,
                plRetries: ?*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 IFaxOutgoingQueue,
                plRetries: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Retries: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingQueue,
                lRetries: 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 IFaxOutgoingQueue,
                lRetries: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RetryDelay: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingQueue,
                plRetryDelay: ?*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 IFaxOutgoingQueue,
                plRetryDelay: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_RetryDelay: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingQueue,
                lRetryDelay: 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 IFaxOutgoingQueue,
                lRetryDelay: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DiscountRateStart: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingQueue,
                pdateDiscountRateStart: ?*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 IFaxOutgoingQueue,
                pdateDiscountRateStart: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_DiscountRateStart: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingQueue,
                dateDiscountRateStart: 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 IFaxOutgoingQueue,
                dateDiscountRateStart: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DiscountRateEnd: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingQueue,
                pdateDiscountRateEnd: ?*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 IFaxOutgoingQueue,
                pdateDiscountRateEnd: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_DiscountRateEnd: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingQueue,
                dateDiscountRateEnd: 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 IFaxOutgoingQueue,
                dateDiscountRateEnd: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AgeLimit: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingQueue,
                plAgeLimit: ?*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 IFaxOutgoingQueue,
                plAgeLimit: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_AgeLimit: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingQueue,
                lAgeLimit: 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 IFaxOutgoingQueue,
                lAgeLimit: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Branding: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingQueue,
                pbBranding: ?*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 IFaxOutgoingQueue,
                pbBranding: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Branding: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingQueue,
                bBranding: 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 IFaxOutgoingQueue,
                bBranding: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Refresh: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutgoingQueue,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutgoingQueue,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Save: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutgoingQueue,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutgoingQueue,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetJobs: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutgoingQueue,
                pFaxOutgoingJobs: ?*?*IFaxOutgoingJobs,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutgoingQueue,
                pFaxOutgoingJobs: ?*?*IFaxOutgoingJobs,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetJob: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutgoingQueue,
                bstrJobId: ?BSTR,
                pFaxOutgoingJob: ?*?*IFaxOutgoingJob,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutgoingQueue,
                bstrJobId: ?BSTR,
                pFaxOutgoingJob: ?*?*IFaxOutgoingJob,
            ) 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 IFaxOutgoingQueue_get_Blocked(self: *const T, pbBlocked: ?*i16) HRESULT {
                return @as(*const IFaxOutgoingQueue.VTable, @ptrCast(self.vtable)).get_Blocked(@as(*const IFaxOutgoingQueue, @ptrCast(self)), pbBlocked);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingQueue_put_Blocked(self: *const T, bBlocked: i16) HRESULT {
                return @as(*const IFaxOutgoingQueue.VTable, @ptrCast(self.vtable)).put_Blocked(@as(*const IFaxOutgoingQueue, @ptrCast(self)), bBlocked);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingQueue_get_Paused(self: *const T, pbPaused: ?*i16) HRESULT {
                return @as(*const IFaxOutgoingQueue.VTable, @ptrCast(self.vtable)).get_Paused(@as(*const IFaxOutgoingQueue, @ptrCast(self)), pbPaused);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingQueue_put_Paused(self: *const T, bPaused: i16) HRESULT {
                return @as(*const IFaxOutgoingQueue.VTable, @ptrCast(self.vtable)).put_Paused(@as(*const IFaxOutgoingQueue, @ptrCast(self)), bPaused);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingQueue_get_AllowPersonalCoverPages(self: *const T, pbAllowPersonalCoverPages: ?*i16) HRESULT {
                return @as(*const IFaxOutgoingQueue.VTable, @ptrCast(self.vtable)).get_AllowPersonalCoverPages(@as(*const IFaxOutgoingQueue, @ptrCast(self)), pbAllowPersonalCoverPages);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingQueue_put_AllowPersonalCoverPages(self: *const T, bAllowPersonalCoverPages: i16) HRESULT {
                return @as(*const IFaxOutgoingQueue.VTable, @ptrCast(self.vtable)).put_AllowPersonalCoverPages(@as(*const IFaxOutgoingQueue, @ptrCast(self)), bAllowPersonalCoverPages);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingQueue_get_UseDeviceTSID(self: *const T, pbUseDeviceTSID: ?*i16) HRESULT {
                return @as(*const IFaxOutgoingQueue.VTable, @ptrCast(self.vtable)).get_UseDeviceTSID(@as(*const IFaxOutgoingQueue, @ptrCast(self)), pbUseDeviceTSID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingQueue_put_UseDeviceTSID(self: *const T, bUseDeviceTSID: i16) HRESULT {
                return @as(*const IFaxOutgoingQueue.VTable, @ptrCast(self.vtable)).put_UseDeviceTSID(@as(*const IFaxOutgoingQueue, @ptrCast(self)), bUseDeviceTSID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingQueue_get_Retries(self: *const T, plRetries: ?*i32) HRESULT {
                return @as(*const IFaxOutgoingQueue.VTable, @ptrCast(self.vtable)).get_Retries(@as(*const IFaxOutgoingQueue, @ptrCast(self)), plRetries);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingQueue_put_Retries(self: *const T, lRetries: i32) HRESULT {
                return @as(*const IFaxOutgoingQueue.VTable, @ptrCast(self.vtable)).put_Retries(@as(*const IFaxOutgoingQueue, @ptrCast(self)), lRetries);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingQueue_get_RetryDelay(self: *const T, plRetryDelay: ?*i32) HRESULT {
                return @as(*const IFaxOutgoingQueue.VTable, @ptrCast(self.vtable)).get_RetryDelay(@as(*const IFaxOutgoingQueue, @ptrCast(self)), plRetryDelay);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingQueue_put_RetryDelay(self: *const T, lRetryDelay: i32) HRESULT {
                return @as(*const IFaxOutgoingQueue.VTable, @ptrCast(self.vtable)).put_RetryDelay(@as(*const IFaxOutgoingQueue, @ptrCast(self)), lRetryDelay);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingQueue_get_DiscountRateStart(self: *const T, pdateDiscountRateStart: ?*f64) HRESULT {
                return @as(*const IFaxOutgoingQueue.VTable, @ptrCast(self.vtable)).get_DiscountRateStart(@as(*const IFaxOutgoingQueue, @ptrCast(self)), pdateDiscountRateStart);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingQueue_put_DiscountRateStart(self: *const T, dateDiscountRateStart: f64) HRESULT {
                return @as(*const IFaxOutgoingQueue.VTable, @ptrCast(self.vtable)).put_DiscountRateStart(@as(*const IFaxOutgoingQueue, @ptrCast(self)), dateDiscountRateStart);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingQueue_get_DiscountRateEnd(self: *const T, pdateDiscountRateEnd: ?*f64) HRESULT {
                return @as(*const IFaxOutgoingQueue.VTable, @ptrCast(self.vtable)).get_DiscountRateEnd(@as(*const IFaxOutgoingQueue, @ptrCast(self)), pdateDiscountRateEnd);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingQueue_put_DiscountRateEnd(self: *const T, dateDiscountRateEnd: f64) HRESULT {
                return @as(*const IFaxOutgoingQueue.VTable, @ptrCast(self.vtable)).put_DiscountRateEnd(@as(*const IFaxOutgoingQueue, @ptrCast(self)), dateDiscountRateEnd);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingQueue_get_AgeLimit(self: *const T, plAgeLimit: ?*i32) HRESULT {
                return @as(*const IFaxOutgoingQueue.VTable, @ptrCast(self.vtable)).get_AgeLimit(@as(*const IFaxOutgoingQueue, @ptrCast(self)), plAgeLimit);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingQueue_put_AgeLimit(self: *const T, lAgeLimit: i32) HRESULT {
                return @as(*const IFaxOutgoingQueue.VTable, @ptrCast(self.vtable)).put_AgeLimit(@as(*const IFaxOutgoingQueue, @ptrCast(self)), lAgeLimit);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingQueue_get_Branding(self: *const T, pbBranding: ?*i16) HRESULT {
                return @as(*const IFaxOutgoingQueue.VTable, @ptrCast(self.vtable)).get_Branding(@as(*const IFaxOutgoingQueue, @ptrCast(self)), pbBranding);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingQueue_put_Branding(self: *const T, bBranding: i16) HRESULT {
                return @as(*const IFaxOutgoingQueue.VTable, @ptrCast(self.vtable)).put_Branding(@as(*const IFaxOutgoingQueue, @ptrCast(self)), bBranding);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingQueue_Refresh(self: *const T) HRESULT {
                return @as(*const IFaxOutgoingQueue.VTable, @ptrCast(self.vtable)).Refresh(@as(*const IFaxOutgoingQueue, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingQueue_Save(self: *const T) HRESULT {
                return @as(*const IFaxOutgoingQueue.VTable, @ptrCast(self.vtable)).Save(@as(*const IFaxOutgoingQueue, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingQueue_GetJobs(self: *const T, pFaxOutgoingJobs: ?*?*IFaxOutgoingJobs) HRESULT {
                return @as(*const IFaxOutgoingQueue.VTable, @ptrCast(self.vtable)).GetJobs(@as(*const IFaxOutgoingQueue, @ptrCast(self)), pFaxOutgoingJobs);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingQueue_GetJob(self: *const T, bstrJobId: ?BSTR, pFaxOutgoingJob: ?*?*IFaxOutgoingJob) HRESULT {
                return @as(*const IFaxOutgoingQueue.VTable, @ptrCast(self.vtable)).GetJob(@as(*const IFaxOutgoingQueue, @ptrCast(self)), bstrJobId, pFaxOutgoingJob);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxIncomingMessageIterator_Value = Guid.initString("fd73ecc4-6f06-4f52-82a8-f7ba06ae3108");
pub const IID_IFaxIncomingMessageIterator = &IID_IFaxIncomingMessageIterator_Value;
pub const IFaxIncomingMessageIterator = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Message: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingMessageIterator,
                pFaxIncomingMessage: ?*?*IFaxIncomingMessage,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxIncomingMessageIterator,
                pFaxIncomingMessage: ?*?*IFaxIncomingMessage,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_PrefetchSize: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingMessageIterator,
                plPrefetchSize: ?*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 IFaxIncomingMessageIterator,
                plPrefetchSize: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_PrefetchSize: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingMessageIterator,
                lPrefetchSize: 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 IFaxIncomingMessageIterator,
                lPrefetchSize: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AtEOF: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingMessageIterator,
                pbEOF: ?*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 IFaxIncomingMessageIterator,
                pbEOF: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        MoveFirst: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxIncomingMessageIterator,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxIncomingMessageIterator,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        MoveNext: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxIncomingMessageIterator,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxIncomingMessageIterator,
            ) 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 IFaxIncomingMessageIterator_get_Message(self: *const T, pFaxIncomingMessage: ?*?*IFaxIncomingMessage) HRESULT {
                return @as(*const IFaxIncomingMessageIterator.VTable, @ptrCast(self.vtable)).get_Message(@as(*const IFaxIncomingMessageIterator, @ptrCast(self)), pFaxIncomingMessage);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessageIterator_get_PrefetchSize(self: *const T, plPrefetchSize: ?*i32) HRESULT {
                return @as(*const IFaxIncomingMessageIterator.VTable, @ptrCast(self.vtable)).get_PrefetchSize(@as(*const IFaxIncomingMessageIterator, @ptrCast(self)), plPrefetchSize);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessageIterator_put_PrefetchSize(self: *const T, lPrefetchSize: i32) HRESULT {
                return @as(*const IFaxIncomingMessageIterator.VTable, @ptrCast(self.vtable)).put_PrefetchSize(@as(*const IFaxIncomingMessageIterator, @ptrCast(self)), lPrefetchSize);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessageIterator_get_AtEOF(self: *const T, pbEOF: ?*i16) HRESULT {
                return @as(*const IFaxIncomingMessageIterator.VTable, @ptrCast(self.vtable)).get_AtEOF(@as(*const IFaxIncomingMessageIterator, @ptrCast(self)), pbEOF);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessageIterator_MoveFirst(self: *const T) HRESULT {
                return @as(*const IFaxIncomingMessageIterator.VTable, @ptrCast(self.vtable)).MoveFirst(@as(*const IFaxIncomingMessageIterator, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessageIterator_MoveNext(self: *const T) HRESULT {
                return @as(*const IFaxIncomingMessageIterator.VTable, @ptrCast(self.vtable)).MoveNext(@as(*const IFaxIncomingMessageIterator, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxIncomingMessage_Value = Guid.initString("7cab88fa-2ef9-4851-b2f3-1d148fed8447");
pub const IID_IFaxIncomingMessage = &IID_IFaxIncomingMessage_Value;
pub const IFaxIncomingMessage = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Id: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingMessage,
                pbstrId: ?*?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 IFaxIncomingMessage,
                pbstrId: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Pages: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingMessage,
                plPages: ?*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 IFaxIncomingMessage,
                plPages: ?*i32,
            ) 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 IFaxIncomingMessage,
                plSize: ?*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 IFaxIncomingMessage,
                plSize: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DeviceName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingMessage,
                pbstrDeviceName: ?*?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 IFaxIncomingMessage,
                pbstrDeviceName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Retries: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingMessage,
                plRetries: ?*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 IFaxIncomingMessage,
                plRetries: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TransmissionStart: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingMessage,
                pdateTransmissionStart: ?*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 IFaxIncomingMessage,
                pdateTransmissionStart: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TransmissionEnd: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingMessage,
                pdateTransmissionEnd: ?*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 IFaxIncomingMessage,
                pdateTransmissionEnd: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CSID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingMessage,
                pbstrCSID: ?*?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 IFaxIncomingMessage,
                pbstrCSID: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TSID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingMessage,
                pbstrTSID: ?*?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 IFaxIncomingMessage,
                pbstrTSID: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CallerId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingMessage,
                pbstrCallerId: ?*?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 IFaxIncomingMessage,
                pbstrCallerId: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RoutingInformation: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingMessage,
                pbstrRoutingInformation: ?*?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 IFaxIncomingMessage,
                pbstrRoutingInformation: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CopyTiff: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxIncomingMessage,
                bstrTiffPath: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxIncomingMessage,
                bstrTiffPath: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Delete: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxIncomingMessage,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxIncomingMessage,
            ) 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 IFaxIncomingMessage_get_Id(self: *const T, pbstrId: ?*?BSTR) HRESULT {
                return @as(*const IFaxIncomingMessage.VTable, @ptrCast(self.vtable)).get_Id(@as(*const IFaxIncomingMessage, @ptrCast(self)), pbstrId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage_get_Pages(self: *const T, plPages: ?*i32) HRESULT {
                return @as(*const IFaxIncomingMessage.VTable, @ptrCast(self.vtable)).get_Pages(@as(*const IFaxIncomingMessage, @ptrCast(self)), plPages);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage_get_Size(self: *const T, plSize: ?*i32) HRESULT {
                return @as(*const IFaxIncomingMessage.VTable, @ptrCast(self.vtable)).get_Size(@as(*const IFaxIncomingMessage, @ptrCast(self)), plSize);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage_get_DeviceName(self: *const T, pbstrDeviceName: ?*?BSTR) HRESULT {
                return @as(*const IFaxIncomingMessage.VTable, @ptrCast(self.vtable)).get_DeviceName(@as(*const IFaxIncomingMessage, @ptrCast(self)), pbstrDeviceName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage_get_Retries(self: *const T, plRetries: ?*i32) HRESULT {
                return @as(*const IFaxIncomingMessage.VTable, @ptrCast(self.vtable)).get_Retries(@as(*const IFaxIncomingMessage, @ptrCast(self)), plRetries);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage_get_TransmissionStart(self: *const T, pdateTransmissionStart: ?*f64) HRESULT {
                return @as(*const IFaxIncomingMessage.VTable, @ptrCast(self.vtable)).get_TransmissionStart(@as(*const IFaxIncomingMessage, @ptrCast(self)), pdateTransmissionStart);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage_get_TransmissionEnd(self: *const T, pdateTransmissionEnd: ?*f64) HRESULT {
                return @as(*const IFaxIncomingMessage.VTable, @ptrCast(self.vtable)).get_TransmissionEnd(@as(*const IFaxIncomingMessage, @ptrCast(self)), pdateTransmissionEnd);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage_get_CSID(self: *const T, pbstrCSID: ?*?BSTR) HRESULT {
                return @as(*const IFaxIncomingMessage.VTable, @ptrCast(self.vtable)).get_CSID(@as(*const IFaxIncomingMessage, @ptrCast(self)), pbstrCSID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage_get_TSID(self: *const T, pbstrTSID: ?*?BSTR) HRESULT {
                return @as(*const IFaxIncomingMessage.VTable, @ptrCast(self.vtable)).get_TSID(@as(*const IFaxIncomingMessage, @ptrCast(self)), pbstrTSID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage_get_CallerId(self: *const T, pbstrCallerId: ?*?BSTR) HRESULT {
                return @as(*const IFaxIncomingMessage.VTable, @ptrCast(self.vtable)).get_CallerId(@as(*const IFaxIncomingMessage, @ptrCast(self)), pbstrCallerId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage_get_RoutingInformation(self: *const T, pbstrRoutingInformation: ?*?BSTR) HRESULT {
                return @as(*const IFaxIncomingMessage.VTable, @ptrCast(self.vtable)).get_RoutingInformation(@as(*const IFaxIncomingMessage, @ptrCast(self)), pbstrRoutingInformation);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage_CopyTiff(self: *const T, bstrTiffPath: ?BSTR) HRESULT {
                return @as(*const IFaxIncomingMessage.VTable, @ptrCast(self.vtable)).CopyTiff(@as(*const IFaxIncomingMessage, @ptrCast(self)), bstrTiffPath);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage_Delete(self: *const T) HRESULT {
                return @as(*const IFaxIncomingMessage.VTable, @ptrCast(self.vtable)).Delete(@as(*const IFaxIncomingMessage, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxOutgoingJobs_Value = Guid.initString("2c56d8e6-8c2f-4573-944c-e505f8f5aeed");
pub const IID_IFaxOutgoingJobs = &IID_IFaxOutgoingJobs_Value;
pub const IFaxOutgoingJobs = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // 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 IFaxOutgoingJobs,
                ppUnk: ?*?*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 IFaxOutgoingJobs,
                ppUnk: ?*?*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 IFaxOutgoingJobs,
                vIndex: VARIANT,
                pFaxOutgoingJob: ?*?*IFaxOutgoingJob,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxOutgoingJobs,
                vIndex: VARIANT,
                pFaxOutgoingJob: ?*?*IFaxOutgoingJob,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // 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 IFaxOutgoingJobs,
                plCount: ?*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 IFaxOutgoingJobs,
                plCount: ?*i32,
            ) 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 IFaxOutgoingJobs_get__NewEnum(self: *const T, ppUnk: ?*?*IUnknown) HRESULT {
                return @as(*const IFaxOutgoingJobs.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const IFaxOutgoingJobs, @ptrCast(self)), ppUnk);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJobs_get_Item(self: *const T, vIndex: VARIANT, pFaxOutgoingJob: ?*?*IFaxOutgoingJob) HRESULT {
                return @as(*const IFaxOutgoingJobs.VTable, @ptrCast(self.vtable)).get_Item(@as(*const IFaxOutgoingJobs, @ptrCast(self)), vIndex, pFaxOutgoingJob);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJobs_get_Count(self: *const T, plCount: ?*i32) HRESULT {
                return @as(*const IFaxOutgoingJobs.VTable, @ptrCast(self.vtable)).get_Count(@as(*const IFaxOutgoingJobs, @ptrCast(self)), plCount);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxOutgoingJob_Value = Guid.initString("6356daad-6614-4583-bf7a-3ad67bbfc71c");
pub const IID_IFaxOutgoingJob = &IID_IFaxOutgoingJob_Value;
pub const IFaxOutgoingJob = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Subject: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
                pbstrSubject: ?*?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 IFaxOutgoingJob,
                pbstrSubject: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DocumentName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
                pbstrDocumentName: ?*?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 IFaxOutgoingJob,
                pbstrDocumentName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Pages: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
                plPages: ?*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 IFaxOutgoingJob,
                plPages: ?*i32,
            ) 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 IFaxOutgoingJob,
                plSize: ?*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 IFaxOutgoingJob,
                plSize: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SubmissionId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
                pbstrSubmissionId: ?*?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 IFaxOutgoingJob,
                pbstrSubmissionId: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Id: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
                pbstrId: ?*?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 IFaxOutgoingJob,
                pbstrId: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_OriginalScheduledTime: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
                pdateOriginalScheduledTime: ?*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 IFaxOutgoingJob,
                pdateOriginalScheduledTime: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SubmissionTime: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
                pdateSubmissionTime: ?*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 IFaxOutgoingJob,
                pdateSubmissionTime: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ReceiptType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
                pReceiptType: ?*FAX_RECEIPT_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxOutgoingJob,
                pReceiptType: ?*FAX_RECEIPT_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Priority: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
                pPriority: ?*FAX_PRIORITY_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxOutgoingJob,
                pPriority: ?*FAX_PRIORITY_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Sender: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
                ppFaxSender: ?*?*IFaxSender,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxOutgoingJob,
                ppFaxSender: ?*?*IFaxSender,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Recipient: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
                ppFaxRecipient: ?*?*IFaxRecipient,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxOutgoingJob,
                ppFaxRecipient: ?*?*IFaxRecipient,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CurrentPage: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
                plCurrentPage: ?*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 IFaxOutgoingJob,
                plCurrentPage: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DeviceId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
                plDeviceId: ?*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 IFaxOutgoingJob,
                plDeviceId: ?*i32,
            ) 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 IFaxOutgoingJob,
                pStatus: ?*FAX_JOB_STATUS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxOutgoingJob,
                pStatus: ?*FAX_JOB_STATUS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ExtendedStatusCode: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
                pExtendedStatusCode: ?*FAX_JOB_EXTENDED_STATUS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxOutgoingJob,
                pExtendedStatusCode: ?*FAX_JOB_EXTENDED_STATUS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ExtendedStatus: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
                pbstrExtendedStatus: ?*?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 IFaxOutgoingJob,
                pbstrExtendedStatus: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AvailableOperations: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
                pAvailableOperations: ?*FAX_JOB_OPERATIONS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxOutgoingJob,
                pAvailableOperations: ?*FAX_JOB_OPERATIONS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Retries: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
                plRetries: ?*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 IFaxOutgoingJob,
                plRetries: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ScheduledTime: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
                pdateScheduledTime: ?*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 IFaxOutgoingJob,
                pdateScheduledTime: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TransmissionStart: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
                pdateTransmissionStart: ?*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 IFaxOutgoingJob,
                pdateTransmissionStart: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TransmissionEnd: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
                pdateTransmissionEnd: ?*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 IFaxOutgoingJob,
                pdateTransmissionEnd: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CSID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
                pbstrCSID: ?*?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 IFaxOutgoingJob,
                pbstrCSID: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TSID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
                pbstrTSID: ?*?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 IFaxOutgoingJob,
                pbstrTSID: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_GroupBroadcastReceipts: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
                pbGroupBroadcastReceipts: ?*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 IFaxOutgoingJob,
                pbGroupBroadcastReceipts: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Pause: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutgoingJob,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Resume: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutgoingJob,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Restart: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutgoingJob,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CopyTiff: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
                bstrTiffPath: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutgoingJob,
                bstrTiffPath: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Refresh: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutgoingJob,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Cancel: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutgoingJob,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutgoingJob,
            ) 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 IFaxOutgoingJob_get_Subject(self: *const T, pbstrSubject: ?*?BSTR) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).get_Subject(@as(*const IFaxOutgoingJob, @ptrCast(self)), pbstrSubject);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_get_DocumentName(self: *const T, pbstrDocumentName: ?*?BSTR) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).get_DocumentName(@as(*const IFaxOutgoingJob, @ptrCast(self)), pbstrDocumentName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_get_Pages(self: *const T, plPages: ?*i32) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).get_Pages(@as(*const IFaxOutgoingJob, @ptrCast(self)), plPages);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_get_Size(self: *const T, plSize: ?*i32) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).get_Size(@as(*const IFaxOutgoingJob, @ptrCast(self)), plSize);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_get_SubmissionId(self: *const T, pbstrSubmissionId: ?*?BSTR) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).get_SubmissionId(@as(*const IFaxOutgoingJob, @ptrCast(self)), pbstrSubmissionId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_get_Id(self: *const T, pbstrId: ?*?BSTR) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).get_Id(@as(*const IFaxOutgoingJob, @ptrCast(self)), pbstrId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_get_OriginalScheduledTime(self: *const T, pdateOriginalScheduledTime: ?*f64) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).get_OriginalScheduledTime(@as(*const IFaxOutgoingJob, @ptrCast(self)), pdateOriginalScheduledTime);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_get_SubmissionTime(self: *const T, pdateSubmissionTime: ?*f64) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).get_SubmissionTime(@as(*const IFaxOutgoingJob, @ptrCast(self)), pdateSubmissionTime);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_get_ReceiptType(self: *const T, pReceiptType: ?*FAX_RECEIPT_TYPE_ENUM) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).get_ReceiptType(@as(*const IFaxOutgoingJob, @ptrCast(self)), pReceiptType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_get_Priority(self: *const T, pPriority: ?*FAX_PRIORITY_TYPE_ENUM) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).get_Priority(@as(*const IFaxOutgoingJob, @ptrCast(self)), pPriority);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_get_Sender(self: *const T, ppFaxSender: ?*?*IFaxSender) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).get_Sender(@as(*const IFaxOutgoingJob, @ptrCast(self)), ppFaxSender);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_get_Recipient(self: *const T, ppFaxRecipient: ?*?*IFaxRecipient) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).get_Recipient(@as(*const IFaxOutgoingJob, @ptrCast(self)), ppFaxRecipient);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_get_CurrentPage(self: *const T, plCurrentPage: ?*i32) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).get_CurrentPage(@as(*const IFaxOutgoingJob, @ptrCast(self)), plCurrentPage);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_get_DeviceId(self: *const T, plDeviceId: ?*i32) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).get_DeviceId(@as(*const IFaxOutgoingJob, @ptrCast(self)), plDeviceId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_get_Status(self: *const T, pStatus: ?*FAX_JOB_STATUS_ENUM) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).get_Status(@as(*const IFaxOutgoingJob, @ptrCast(self)), pStatus);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_get_ExtendedStatusCode(self: *const T, pExtendedStatusCode: ?*FAX_JOB_EXTENDED_STATUS_ENUM) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).get_ExtendedStatusCode(@as(*const IFaxOutgoingJob, @ptrCast(self)), pExtendedStatusCode);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_get_ExtendedStatus(self: *const T, pbstrExtendedStatus: ?*?BSTR) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).get_ExtendedStatus(@as(*const IFaxOutgoingJob, @ptrCast(self)), pbstrExtendedStatus);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_get_AvailableOperations(self: *const T, pAvailableOperations: ?*FAX_JOB_OPERATIONS_ENUM) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).get_AvailableOperations(@as(*const IFaxOutgoingJob, @ptrCast(self)), pAvailableOperations);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_get_Retries(self: *const T, plRetries: ?*i32) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).get_Retries(@as(*const IFaxOutgoingJob, @ptrCast(self)), plRetries);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_get_ScheduledTime(self: *const T, pdateScheduledTime: ?*f64) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).get_ScheduledTime(@as(*const IFaxOutgoingJob, @ptrCast(self)), pdateScheduledTime);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_get_TransmissionStart(self: *const T, pdateTransmissionStart: ?*f64) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).get_TransmissionStart(@as(*const IFaxOutgoingJob, @ptrCast(self)), pdateTransmissionStart);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_get_TransmissionEnd(self: *const T, pdateTransmissionEnd: ?*f64) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).get_TransmissionEnd(@as(*const IFaxOutgoingJob, @ptrCast(self)), pdateTransmissionEnd);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_get_CSID(self: *const T, pbstrCSID: ?*?BSTR) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).get_CSID(@as(*const IFaxOutgoingJob, @ptrCast(self)), pbstrCSID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_get_TSID(self: *const T, pbstrTSID: ?*?BSTR) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).get_TSID(@as(*const IFaxOutgoingJob, @ptrCast(self)), pbstrTSID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_get_GroupBroadcastReceipts(self: *const T, pbGroupBroadcastReceipts: ?*i16) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).get_GroupBroadcastReceipts(@as(*const IFaxOutgoingJob, @ptrCast(self)), pbGroupBroadcastReceipts);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_Pause(self: *const T) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).Pause(@as(*const IFaxOutgoingJob, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_Resume(self: *const T) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).Resume(@as(*const IFaxOutgoingJob, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_Restart(self: *const T) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).Restart(@as(*const IFaxOutgoingJob, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_CopyTiff(self: *const T, bstrTiffPath: ?BSTR) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).CopyTiff(@as(*const IFaxOutgoingJob, @ptrCast(self)), bstrTiffPath);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_Refresh(self: *const T) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).Refresh(@as(*const IFaxOutgoingJob, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob_Cancel(self: *const T) HRESULT {
                return @as(*const IFaxOutgoingJob.VTable, @ptrCast(self.vtable)).Cancel(@as(*const IFaxOutgoingJob, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxOutgoingMessageIterator_Value = Guid.initString("f5ec5d4f-b840-432f-9980-112fe42a9b7a");
pub const IID_IFaxOutgoingMessageIterator = &IID_IFaxOutgoingMessageIterator_Value;
pub const IFaxOutgoingMessageIterator = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Message: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingMessageIterator,
                pFaxOutgoingMessage: ?*?*IFaxOutgoingMessage,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxOutgoingMessageIterator,
                pFaxOutgoingMessage: ?*?*IFaxOutgoingMessage,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AtEOF: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingMessageIterator,
                pbEOF: ?*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 IFaxOutgoingMessageIterator,
                pbEOF: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_PrefetchSize: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingMessageIterator,
                plPrefetchSize: ?*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 IFaxOutgoingMessageIterator,
                plPrefetchSize: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_PrefetchSize: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingMessageIterator,
                lPrefetchSize: 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 IFaxOutgoingMessageIterator,
                lPrefetchSize: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        MoveFirst: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutgoingMessageIterator,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutgoingMessageIterator,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        MoveNext: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutgoingMessageIterator,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutgoingMessageIterator,
            ) 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 IFaxOutgoingMessageIterator_get_Message(self: *const T, pFaxOutgoingMessage: ?*?*IFaxOutgoingMessage) HRESULT {
                return @as(*const IFaxOutgoingMessageIterator.VTable, @ptrCast(self.vtable)).get_Message(@as(*const IFaxOutgoingMessageIterator, @ptrCast(self)), pFaxOutgoingMessage);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessageIterator_get_AtEOF(self: *const T, pbEOF: ?*i16) HRESULT {
                return @as(*const IFaxOutgoingMessageIterator.VTable, @ptrCast(self.vtable)).get_AtEOF(@as(*const IFaxOutgoingMessageIterator, @ptrCast(self)), pbEOF);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessageIterator_get_PrefetchSize(self: *const T, plPrefetchSize: ?*i32) HRESULT {
                return @as(*const IFaxOutgoingMessageIterator.VTable, @ptrCast(self.vtable)).get_PrefetchSize(@as(*const IFaxOutgoingMessageIterator, @ptrCast(self)), plPrefetchSize);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessageIterator_put_PrefetchSize(self: *const T, lPrefetchSize: i32) HRESULT {
                return @as(*const IFaxOutgoingMessageIterator.VTable, @ptrCast(self.vtable)).put_PrefetchSize(@as(*const IFaxOutgoingMessageIterator, @ptrCast(self)), lPrefetchSize);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessageIterator_MoveFirst(self: *const T) HRESULT {
                return @as(*const IFaxOutgoingMessageIterator.VTable, @ptrCast(self.vtable)).MoveFirst(@as(*const IFaxOutgoingMessageIterator, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessageIterator_MoveNext(self: *const T) HRESULT {
                return @as(*const IFaxOutgoingMessageIterator.VTable, @ptrCast(self.vtable)).MoveNext(@as(*const IFaxOutgoingMessageIterator, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxOutgoingMessage_Value = Guid.initString("f0ea35de-caa5-4a7c-82c7-2b60ba5f2be2");
pub const IID_IFaxOutgoingMessage = &IID_IFaxOutgoingMessage_Value;
pub const IFaxOutgoingMessage = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SubmissionId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingMessage,
                pbstrSubmissionId: ?*?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 IFaxOutgoingMessage,
                pbstrSubmissionId: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Id: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingMessage,
                pbstrId: ?*?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 IFaxOutgoingMessage,
                pbstrId: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Subject: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingMessage,
                pbstrSubject: ?*?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 IFaxOutgoingMessage,
                pbstrSubject: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DocumentName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingMessage,
                pbstrDocumentName: ?*?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 IFaxOutgoingMessage,
                pbstrDocumentName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Retries: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingMessage,
                plRetries: ?*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 IFaxOutgoingMessage,
                plRetries: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Pages: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingMessage,
                plPages: ?*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 IFaxOutgoingMessage,
                plPages: ?*i32,
            ) 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 IFaxOutgoingMessage,
                plSize: ?*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 IFaxOutgoingMessage,
                plSize: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_OriginalScheduledTime: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingMessage,
                pdateOriginalScheduledTime: ?*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 IFaxOutgoingMessage,
                pdateOriginalScheduledTime: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SubmissionTime: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingMessage,
                pdateSubmissionTime: ?*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 IFaxOutgoingMessage,
                pdateSubmissionTime: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Priority: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingMessage,
                pPriority: ?*FAX_PRIORITY_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxOutgoingMessage,
                pPriority: ?*FAX_PRIORITY_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Sender: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingMessage,
                ppFaxSender: ?*?*IFaxSender,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxOutgoingMessage,
                ppFaxSender: ?*?*IFaxSender,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Recipient: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingMessage,
                ppFaxRecipient: ?*?*IFaxRecipient,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxOutgoingMessage,
                ppFaxRecipient: ?*?*IFaxRecipient,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DeviceName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingMessage,
                pbstrDeviceName: ?*?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 IFaxOutgoingMessage,
                pbstrDeviceName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TransmissionStart: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingMessage,
                pdateTransmissionStart: ?*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 IFaxOutgoingMessage,
                pdateTransmissionStart: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TransmissionEnd: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingMessage,
                pdateTransmissionEnd: ?*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 IFaxOutgoingMessage,
                pdateTransmissionEnd: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CSID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingMessage,
                pbstrCSID: ?*?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 IFaxOutgoingMessage,
                pbstrCSID: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TSID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingMessage,
                pbstrTSID: ?*?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 IFaxOutgoingMessage,
                pbstrTSID: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CopyTiff: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutgoingMessage,
                bstrTiffPath: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutgoingMessage,
                bstrTiffPath: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Delete: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutgoingMessage,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutgoingMessage,
            ) 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 IFaxOutgoingMessage_get_SubmissionId(self: *const T, pbstrSubmissionId: ?*?BSTR) HRESULT {
                return @as(*const IFaxOutgoingMessage.VTable, @ptrCast(self.vtable)).get_SubmissionId(@as(*const IFaxOutgoingMessage, @ptrCast(self)), pbstrSubmissionId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessage_get_Id(self: *const T, pbstrId: ?*?BSTR) HRESULT {
                return @as(*const IFaxOutgoingMessage.VTable, @ptrCast(self.vtable)).get_Id(@as(*const IFaxOutgoingMessage, @ptrCast(self)), pbstrId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessage_get_Subject(self: *const T, pbstrSubject: ?*?BSTR) HRESULT {
                return @as(*const IFaxOutgoingMessage.VTable, @ptrCast(self.vtable)).get_Subject(@as(*const IFaxOutgoingMessage, @ptrCast(self)), pbstrSubject);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessage_get_DocumentName(self: *const T, pbstrDocumentName: ?*?BSTR) HRESULT {
                return @as(*const IFaxOutgoingMessage.VTable, @ptrCast(self.vtable)).get_DocumentName(@as(*const IFaxOutgoingMessage, @ptrCast(self)), pbstrDocumentName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessage_get_Retries(self: *const T, plRetries: ?*i32) HRESULT {
                return @as(*const IFaxOutgoingMessage.VTable, @ptrCast(self.vtable)).get_Retries(@as(*const IFaxOutgoingMessage, @ptrCast(self)), plRetries);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessage_get_Pages(self: *const T, plPages: ?*i32) HRESULT {
                return @as(*const IFaxOutgoingMessage.VTable, @ptrCast(self.vtable)).get_Pages(@as(*const IFaxOutgoingMessage, @ptrCast(self)), plPages);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessage_get_Size(self: *const T, plSize: ?*i32) HRESULT {
                return @as(*const IFaxOutgoingMessage.VTable, @ptrCast(self.vtable)).get_Size(@as(*const IFaxOutgoingMessage, @ptrCast(self)), plSize);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessage_get_OriginalScheduledTime(self: *const T, pdateOriginalScheduledTime: ?*f64) HRESULT {
                return @as(*const IFaxOutgoingMessage.VTable, @ptrCast(self.vtable)).get_OriginalScheduledTime(@as(*const IFaxOutgoingMessage, @ptrCast(self)), pdateOriginalScheduledTime);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessage_get_SubmissionTime(self: *const T, pdateSubmissionTime: ?*f64) HRESULT {
                return @as(*const IFaxOutgoingMessage.VTable, @ptrCast(self.vtable)).get_SubmissionTime(@as(*const IFaxOutgoingMessage, @ptrCast(self)), pdateSubmissionTime);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessage_get_Priority(self: *const T, pPriority: ?*FAX_PRIORITY_TYPE_ENUM) HRESULT {
                return @as(*const IFaxOutgoingMessage.VTable, @ptrCast(self.vtable)).get_Priority(@as(*const IFaxOutgoingMessage, @ptrCast(self)), pPriority);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessage_get_Sender(self: *const T, ppFaxSender: ?*?*IFaxSender) HRESULT {
                return @as(*const IFaxOutgoingMessage.VTable, @ptrCast(self.vtable)).get_Sender(@as(*const IFaxOutgoingMessage, @ptrCast(self)), ppFaxSender);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessage_get_Recipient(self: *const T, ppFaxRecipient: ?*?*IFaxRecipient) HRESULT {
                return @as(*const IFaxOutgoingMessage.VTable, @ptrCast(self.vtable)).get_Recipient(@as(*const IFaxOutgoingMessage, @ptrCast(self)), ppFaxRecipient);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessage_get_DeviceName(self: *const T, pbstrDeviceName: ?*?BSTR) HRESULT {
                return @as(*const IFaxOutgoingMessage.VTable, @ptrCast(self.vtable)).get_DeviceName(@as(*const IFaxOutgoingMessage, @ptrCast(self)), pbstrDeviceName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessage_get_TransmissionStart(self: *const T, pdateTransmissionStart: ?*f64) HRESULT {
                return @as(*const IFaxOutgoingMessage.VTable, @ptrCast(self.vtable)).get_TransmissionStart(@as(*const IFaxOutgoingMessage, @ptrCast(self)), pdateTransmissionStart);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessage_get_TransmissionEnd(self: *const T, pdateTransmissionEnd: ?*f64) HRESULT {
                return @as(*const IFaxOutgoingMessage.VTable, @ptrCast(self.vtable)).get_TransmissionEnd(@as(*const IFaxOutgoingMessage, @ptrCast(self)), pdateTransmissionEnd);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessage_get_CSID(self: *const T, pbstrCSID: ?*?BSTR) HRESULT {
                return @as(*const IFaxOutgoingMessage.VTable, @ptrCast(self.vtable)).get_CSID(@as(*const IFaxOutgoingMessage, @ptrCast(self)), pbstrCSID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessage_get_TSID(self: *const T, pbstrTSID: ?*?BSTR) HRESULT {
                return @as(*const IFaxOutgoingMessage.VTable, @ptrCast(self.vtable)).get_TSID(@as(*const IFaxOutgoingMessage, @ptrCast(self)), pbstrTSID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessage_CopyTiff(self: *const T, bstrTiffPath: ?BSTR) HRESULT {
                return @as(*const IFaxOutgoingMessage.VTable, @ptrCast(self.vtable)).CopyTiff(@as(*const IFaxOutgoingMessage, @ptrCast(self)), bstrTiffPath);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessage_Delete(self: *const T) HRESULT {
                return @as(*const IFaxOutgoingMessage.VTable, @ptrCast(self.vtable)).Delete(@as(*const IFaxOutgoingMessage, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxIncomingJobs_Value = Guid.initString("011f04e9-4fd6-4c23-9513-b6b66bb26be9");
pub const IID_IFaxIncomingJobs = &IID_IFaxIncomingJobs_Value;
pub const IFaxIncomingJobs = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // 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 IFaxIncomingJobs,
                ppUnk: ?*?*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 IFaxIncomingJobs,
                ppUnk: ?*?*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 IFaxIncomingJobs,
                vIndex: VARIANT,
                pFaxIncomingJob: ?*?*IFaxIncomingJob,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxIncomingJobs,
                vIndex: VARIANT,
                pFaxIncomingJob: ?*?*IFaxIncomingJob,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // 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 IFaxIncomingJobs,
                plCount: ?*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 IFaxIncomingJobs,
                plCount: ?*i32,
            ) 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 IFaxIncomingJobs_get__NewEnum(self: *const T, ppUnk: ?*?*IUnknown) HRESULT {
                return @as(*const IFaxIncomingJobs.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const IFaxIncomingJobs, @ptrCast(self)), ppUnk);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingJobs_get_Item(self: *const T, vIndex: VARIANT, pFaxIncomingJob: ?*?*IFaxIncomingJob) HRESULT {
                return @as(*const IFaxIncomingJobs.VTable, @ptrCast(self.vtable)).get_Item(@as(*const IFaxIncomingJobs, @ptrCast(self)), vIndex, pFaxIncomingJob);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingJobs_get_Count(self: *const T, plCount: ?*i32) HRESULT {
                return @as(*const IFaxIncomingJobs.VTable, @ptrCast(self.vtable)).get_Count(@as(*const IFaxIncomingJobs, @ptrCast(self)), plCount);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxIncomingJob_Value = Guid.initString("207529e6-654a-4916-9f88-4d232ee8a107");
pub const IID_IFaxIncomingJob = &IID_IFaxIncomingJob_Value;
pub const IFaxIncomingJob = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // 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 IFaxIncomingJob,
                plSize: ?*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 IFaxIncomingJob,
                plSize: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Id: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingJob,
                pbstrId: ?*?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 IFaxIncomingJob,
                pbstrId: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CurrentPage: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingJob,
                plCurrentPage: ?*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 IFaxIncomingJob,
                plCurrentPage: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DeviceId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingJob,
                plDeviceId: ?*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 IFaxIncomingJob,
                plDeviceId: ?*i32,
            ) 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 IFaxIncomingJob,
                pStatus: ?*FAX_JOB_STATUS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxIncomingJob,
                pStatus: ?*FAX_JOB_STATUS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ExtendedStatusCode: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingJob,
                pExtendedStatusCode: ?*FAX_JOB_EXTENDED_STATUS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxIncomingJob,
                pExtendedStatusCode: ?*FAX_JOB_EXTENDED_STATUS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ExtendedStatus: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingJob,
                pbstrExtendedStatus: ?*?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 IFaxIncomingJob,
                pbstrExtendedStatus: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AvailableOperations: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingJob,
                pAvailableOperations: ?*FAX_JOB_OPERATIONS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxIncomingJob,
                pAvailableOperations: ?*FAX_JOB_OPERATIONS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Retries: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingJob,
                plRetries: ?*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 IFaxIncomingJob,
                plRetries: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TransmissionStart: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingJob,
                pdateTransmissionStart: ?*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 IFaxIncomingJob,
                pdateTransmissionStart: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TransmissionEnd: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingJob,
                pdateTransmissionEnd: ?*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 IFaxIncomingJob,
                pdateTransmissionEnd: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CSID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingJob,
                pbstrCSID: ?*?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 IFaxIncomingJob,
                pbstrCSID: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TSID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingJob,
                pbstrTSID: ?*?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 IFaxIncomingJob,
                pbstrTSID: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CallerId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingJob,
                pbstrCallerId: ?*?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 IFaxIncomingJob,
                pbstrCallerId: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RoutingInformation: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingJob,
                pbstrRoutingInformation: ?*?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 IFaxIncomingJob,
                pbstrRoutingInformation: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_JobType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingJob,
                pJobType: ?*FAX_JOB_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxIncomingJob,
                pJobType: ?*FAX_JOB_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Cancel: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxIncomingJob,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxIncomingJob,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Refresh: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxIncomingJob,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxIncomingJob,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CopyTiff: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxIncomingJob,
                bstrTiffPath: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxIncomingJob,
                bstrTiffPath: ?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 IFaxIncomingJob_get_Size(self: *const T, plSize: ?*i32) HRESULT {
                return @as(*const IFaxIncomingJob.VTable, @ptrCast(self.vtable)).get_Size(@as(*const IFaxIncomingJob, @ptrCast(self)), plSize);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingJob_get_Id(self: *const T, pbstrId: ?*?BSTR) HRESULT {
                return @as(*const IFaxIncomingJob.VTable, @ptrCast(self.vtable)).get_Id(@as(*const IFaxIncomingJob, @ptrCast(self)), pbstrId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingJob_get_CurrentPage(self: *const T, plCurrentPage: ?*i32) HRESULT {
                return @as(*const IFaxIncomingJob.VTable, @ptrCast(self.vtable)).get_CurrentPage(@as(*const IFaxIncomingJob, @ptrCast(self)), plCurrentPage);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingJob_get_DeviceId(self: *const T, plDeviceId: ?*i32) HRESULT {
                return @as(*const IFaxIncomingJob.VTable, @ptrCast(self.vtable)).get_DeviceId(@as(*const IFaxIncomingJob, @ptrCast(self)), plDeviceId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingJob_get_Status(self: *const T, pStatus: ?*FAX_JOB_STATUS_ENUM) HRESULT {
                return @as(*const IFaxIncomingJob.VTable, @ptrCast(self.vtable)).get_Status(@as(*const IFaxIncomingJob, @ptrCast(self)), pStatus);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingJob_get_ExtendedStatusCode(self: *const T, pExtendedStatusCode: ?*FAX_JOB_EXTENDED_STATUS_ENUM) HRESULT {
                return @as(*const IFaxIncomingJob.VTable, @ptrCast(self.vtable)).get_ExtendedStatusCode(@as(*const IFaxIncomingJob, @ptrCast(self)), pExtendedStatusCode);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingJob_get_ExtendedStatus(self: *const T, pbstrExtendedStatus: ?*?BSTR) HRESULT {
                return @as(*const IFaxIncomingJob.VTable, @ptrCast(self.vtable)).get_ExtendedStatus(@as(*const IFaxIncomingJob, @ptrCast(self)), pbstrExtendedStatus);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingJob_get_AvailableOperations(self: *const T, pAvailableOperations: ?*FAX_JOB_OPERATIONS_ENUM) HRESULT {
                return @as(*const IFaxIncomingJob.VTable, @ptrCast(self.vtable)).get_AvailableOperations(@as(*const IFaxIncomingJob, @ptrCast(self)), pAvailableOperations);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingJob_get_Retries(self: *const T, plRetries: ?*i32) HRESULT {
                return @as(*const IFaxIncomingJob.VTable, @ptrCast(self.vtable)).get_Retries(@as(*const IFaxIncomingJob, @ptrCast(self)), plRetries);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingJob_get_TransmissionStart(self: *const T, pdateTransmissionStart: ?*f64) HRESULT {
                return @as(*const IFaxIncomingJob.VTable, @ptrCast(self.vtable)).get_TransmissionStart(@as(*const IFaxIncomingJob, @ptrCast(self)), pdateTransmissionStart);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingJob_get_TransmissionEnd(self: *const T, pdateTransmissionEnd: ?*f64) HRESULT {
                return @as(*const IFaxIncomingJob.VTable, @ptrCast(self.vtable)).get_TransmissionEnd(@as(*const IFaxIncomingJob, @ptrCast(self)), pdateTransmissionEnd);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingJob_get_CSID(self: *const T, pbstrCSID: ?*?BSTR) HRESULT {
                return @as(*const IFaxIncomingJob.VTable, @ptrCast(self.vtable)).get_CSID(@as(*const IFaxIncomingJob, @ptrCast(self)), pbstrCSID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingJob_get_TSID(self: *const T, pbstrTSID: ?*?BSTR) HRESULT {
                return @as(*const IFaxIncomingJob.VTable, @ptrCast(self.vtable)).get_TSID(@as(*const IFaxIncomingJob, @ptrCast(self)), pbstrTSID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingJob_get_CallerId(self: *const T, pbstrCallerId: ?*?BSTR) HRESULT {
                return @as(*const IFaxIncomingJob.VTable, @ptrCast(self.vtable)).get_CallerId(@as(*const IFaxIncomingJob, @ptrCast(self)), pbstrCallerId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingJob_get_RoutingInformation(self: *const T, pbstrRoutingInformation: ?*?BSTR) HRESULT {
                return @as(*const IFaxIncomingJob.VTable, @ptrCast(self.vtable)).get_RoutingInformation(@as(*const IFaxIncomingJob, @ptrCast(self)), pbstrRoutingInformation);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingJob_get_JobType(self: *const T, pJobType: ?*FAX_JOB_TYPE_ENUM) HRESULT {
                return @as(*const IFaxIncomingJob.VTable, @ptrCast(self.vtable)).get_JobType(@as(*const IFaxIncomingJob, @ptrCast(self)), pJobType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingJob_Cancel(self: *const T) HRESULT {
                return @as(*const IFaxIncomingJob.VTable, @ptrCast(self.vtable)).Cancel(@as(*const IFaxIncomingJob, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingJob_Refresh(self: *const T) HRESULT {
                return @as(*const IFaxIncomingJob.VTable, @ptrCast(self.vtable)).Refresh(@as(*const IFaxIncomingJob, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingJob_CopyTiff(self: *const T, bstrTiffPath: ?BSTR) HRESULT {
                return @as(*const IFaxIncomingJob.VTable, @ptrCast(self.vtable)).CopyTiff(@as(*const IFaxIncomingJob, @ptrCast(self)), bstrTiffPath);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const FAX_PROVIDER_STATUS_ENUM = enum(i32) {
    SUCCESS = 0,
    SERVER_ERROR = 1,
    BAD_GUID = 2,
    BAD_VERSION = 3,
    CANT_LOAD = 4,
    CANT_LINK = 5,
    CANT_INIT = 6,
};
pub const fpsSUCCESS = FAX_PROVIDER_STATUS_ENUM.SUCCESS;
pub const fpsSERVER_ERROR = FAX_PROVIDER_STATUS_ENUM.SERVER_ERROR;
pub const fpsBAD_GUID = FAX_PROVIDER_STATUS_ENUM.BAD_GUID;
pub const fpsBAD_VERSION = FAX_PROVIDER_STATUS_ENUM.BAD_VERSION;
pub const fpsCANT_LOAD = FAX_PROVIDER_STATUS_ENUM.CANT_LOAD;
pub const fpsCANT_LINK = FAX_PROVIDER_STATUS_ENUM.CANT_LINK;
pub const fpsCANT_INIT = FAX_PROVIDER_STATUS_ENUM.CANT_INIT;

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxDeviceProvider_Value = Guid.initString("290eac63-83ec-449c-8417-f148df8c682a");
pub const IID_IFaxDeviceProvider = &IID_IFaxDeviceProvider_Value;
pub const IFaxDeviceProvider = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_FriendlyName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDeviceProvider,
                pbstrFriendlyName: ?*?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 IFaxDeviceProvider,
                pbstrFriendlyName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ImageName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDeviceProvider,
                pbstrImageName: ?*?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 IFaxDeviceProvider,
                pbstrImageName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_UniqueName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDeviceProvider,
                pbstrUniqueName: ?*?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 IFaxDeviceProvider,
                pbstrUniqueName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TapiProviderName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDeviceProvider,
                pbstrTapiProviderName: ?*?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 IFaxDeviceProvider,
                pbstrTapiProviderName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MajorVersion: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDeviceProvider,
                plMajorVersion: ?*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 IFaxDeviceProvider,
                plMajorVersion: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MinorVersion: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDeviceProvider,
                plMinorVersion: ?*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 IFaxDeviceProvider,
                plMinorVersion: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MajorBuild: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDeviceProvider,
                plMajorBuild: ?*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 IFaxDeviceProvider,
                plMajorBuild: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MinorBuild: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDeviceProvider,
                plMinorBuild: ?*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 IFaxDeviceProvider,
                plMinorBuild: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Debug: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDeviceProvider,
                pbDebug: ?*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 IFaxDeviceProvider,
                pbDebug: ?*i16,
            ) 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 IFaxDeviceProvider,
                pStatus: ?*FAX_PROVIDER_STATUS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxDeviceProvider,
                pStatus: ?*FAX_PROVIDER_STATUS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_InitErrorCode: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDeviceProvider,
                plInitErrorCode: ?*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 IFaxDeviceProvider,
                plInitErrorCode: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DeviceIds: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDeviceProvider,
                pvDeviceIds: ?*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 IFaxDeviceProvider,
                pvDeviceIds: ?*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 IFaxDeviceProvider_get_FriendlyName(self: *const T, pbstrFriendlyName: ?*?BSTR) HRESULT {
                return @as(*const IFaxDeviceProvider.VTable, @ptrCast(self.vtable)).get_FriendlyName(@as(*const IFaxDeviceProvider, @ptrCast(self)), pbstrFriendlyName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDeviceProvider_get_ImageName(self: *const T, pbstrImageName: ?*?BSTR) HRESULT {
                return @as(*const IFaxDeviceProvider.VTable, @ptrCast(self.vtable)).get_ImageName(@as(*const IFaxDeviceProvider, @ptrCast(self)), pbstrImageName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDeviceProvider_get_UniqueName(self: *const T, pbstrUniqueName: ?*?BSTR) HRESULT {
                return @as(*const IFaxDeviceProvider.VTable, @ptrCast(self.vtable)).get_UniqueName(@as(*const IFaxDeviceProvider, @ptrCast(self)), pbstrUniqueName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDeviceProvider_get_TapiProviderName(self: *const T, pbstrTapiProviderName: ?*?BSTR) HRESULT {
                return @as(*const IFaxDeviceProvider.VTable, @ptrCast(self.vtable)).get_TapiProviderName(@as(*const IFaxDeviceProvider, @ptrCast(self)), pbstrTapiProviderName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDeviceProvider_get_MajorVersion(self: *const T, plMajorVersion: ?*i32) HRESULT {
                return @as(*const IFaxDeviceProvider.VTable, @ptrCast(self.vtable)).get_MajorVersion(@as(*const IFaxDeviceProvider, @ptrCast(self)), plMajorVersion);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDeviceProvider_get_MinorVersion(self: *const T, plMinorVersion: ?*i32) HRESULT {
                return @as(*const IFaxDeviceProvider.VTable, @ptrCast(self.vtable)).get_MinorVersion(@as(*const IFaxDeviceProvider, @ptrCast(self)), plMinorVersion);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDeviceProvider_get_MajorBuild(self: *const T, plMajorBuild: ?*i32) HRESULT {
                return @as(*const IFaxDeviceProvider.VTable, @ptrCast(self.vtable)).get_MajorBuild(@as(*const IFaxDeviceProvider, @ptrCast(self)), plMajorBuild);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDeviceProvider_get_MinorBuild(self: *const T, plMinorBuild: ?*i32) HRESULT {
                return @as(*const IFaxDeviceProvider.VTable, @ptrCast(self.vtable)).get_MinorBuild(@as(*const IFaxDeviceProvider, @ptrCast(self)), plMinorBuild);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDeviceProvider_get_Debug(self: *const T, pbDebug: ?*i16) HRESULT {
                return @as(*const IFaxDeviceProvider.VTable, @ptrCast(self.vtable)).get_Debug(@as(*const IFaxDeviceProvider, @ptrCast(self)), pbDebug);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDeviceProvider_get_Status(self: *const T, pStatus: ?*FAX_PROVIDER_STATUS_ENUM) HRESULT {
                return @as(*const IFaxDeviceProvider.VTable, @ptrCast(self.vtable)).get_Status(@as(*const IFaxDeviceProvider, @ptrCast(self)), pStatus);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDeviceProvider_get_InitErrorCode(self: *const T, plInitErrorCode: ?*i32) HRESULT {
                return @as(*const IFaxDeviceProvider.VTable, @ptrCast(self.vtable)).get_InitErrorCode(@as(*const IFaxDeviceProvider, @ptrCast(self)), plInitErrorCode);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDeviceProvider_get_DeviceIds(self: *const T, pvDeviceIds: ?*VARIANT) HRESULT {
                return @as(*const IFaxDeviceProvider.VTable, @ptrCast(self.vtable)).get_DeviceIds(@as(*const IFaxDeviceProvider, @ptrCast(self)), pvDeviceIds);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const FAX_DEVICE_RECEIVE_MODE_ENUM = enum(i32) {
    NO_ANSWER = 0,
    AUTO_ANSWER = 1,
    MANUAL_ANSWER = 2,
};
pub const fdrmNO_ANSWER = FAX_DEVICE_RECEIVE_MODE_ENUM.NO_ANSWER;
pub const fdrmAUTO_ANSWER = FAX_DEVICE_RECEIVE_MODE_ENUM.AUTO_ANSWER;
pub const fdrmMANUAL_ANSWER = FAX_DEVICE_RECEIVE_MODE_ENUM.MANUAL_ANSWER;

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxDevice_Value = Guid.initString("49306c59-b52e-4867-9df4-ca5841c956d0");
pub const IID_IFaxDevice = &IID_IFaxDevice_Value;
pub const IFaxDevice = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Id: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDevice,
                plId: ?*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 IFaxDevice,
                plId: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DeviceName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDevice,
                pbstrDeviceName: ?*?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 IFaxDevice,
                pbstrDeviceName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ProviderUniqueName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDevice,
                pbstrProviderUniqueName: ?*?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 IFaxDevice,
                pbstrProviderUniqueName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_PoweredOff: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDevice,
                pbPoweredOff: ?*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 IFaxDevice,
                pbPoweredOff: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ReceivingNow: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDevice,
                pbReceivingNow: ?*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 IFaxDevice,
                pbReceivingNow: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SendingNow: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDevice,
                pbSendingNow: ?*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 IFaxDevice,
                pbSendingNow: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_UsedRoutingMethods: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDevice,
                pvUsedRoutingMethods: ?*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 IFaxDevice,
                pvUsedRoutingMethods: ?*VARIANT,
            ) 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 IFaxDevice,
                pbstrDescription: ?*?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 IFaxDevice,
                pbstrDescription: ?*?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 IFaxDevice,
                bstrDescription: ?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 IFaxDevice,
                bstrDescription: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SendEnabled: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDevice,
                pbSendEnabled: ?*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 IFaxDevice,
                pbSendEnabled: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SendEnabled: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDevice,
                bSendEnabled: 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 IFaxDevice,
                bSendEnabled: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ReceiveMode: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDevice,
                pReceiveMode: ?*FAX_DEVICE_RECEIVE_MODE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxDevice,
                pReceiveMode: ?*FAX_DEVICE_RECEIVE_MODE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ReceiveMode: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDevice,
                ReceiveMode: FAX_DEVICE_RECEIVE_MODE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxDevice,
                ReceiveMode: FAX_DEVICE_RECEIVE_MODE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RingsBeforeAnswer: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDevice,
                plRingsBeforeAnswer: ?*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 IFaxDevice,
                plRingsBeforeAnswer: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_RingsBeforeAnswer: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDevice,
                lRingsBeforeAnswer: 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 IFaxDevice,
                lRingsBeforeAnswer: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CSID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDevice,
                pbstrCSID: ?*?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 IFaxDevice,
                pbstrCSID: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_CSID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDevice,
                bstrCSID: ?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 IFaxDevice,
                bstrCSID: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_TSID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDevice,
                pbstrTSID: ?*?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 IFaxDevice,
                pbstrTSID: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_TSID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDevice,
                bstrTSID: ?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 IFaxDevice,
                bstrTSID: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Refresh: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxDevice,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxDevice,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Save: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxDevice,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxDevice,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetExtensionProperty: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxDevice,
                bstrGUID: ?BSTR,
                pvProperty: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxDevice,
                bstrGUID: ?BSTR,
                pvProperty: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetExtensionProperty: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxDevice,
                bstrGUID: ?BSTR,
                vProperty: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxDevice,
                bstrGUID: ?BSTR,
                vProperty: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        UseRoutingMethod: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxDevice,
                bstrMethodGUID: ?BSTR,
                bUse: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxDevice,
                bstrMethodGUID: ?BSTR,
                bUse: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RingingNow: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDevice,
                pbRingingNow: ?*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 IFaxDevice,
                pbRingingNow: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AnswerCall: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxDevice,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxDevice,
            ) 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 IFaxDevice_get_Id(self: *const T, plId: ?*i32) HRESULT {
                return @as(*const IFaxDevice.VTable, @ptrCast(self.vtable)).get_Id(@as(*const IFaxDevice, @ptrCast(self)), plId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevice_get_DeviceName(self: *const T, pbstrDeviceName: ?*?BSTR) HRESULT {
                return @as(*const IFaxDevice.VTable, @ptrCast(self.vtable)).get_DeviceName(@as(*const IFaxDevice, @ptrCast(self)), pbstrDeviceName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevice_get_ProviderUniqueName(self: *const T, pbstrProviderUniqueName: ?*?BSTR) HRESULT {
                return @as(*const IFaxDevice.VTable, @ptrCast(self.vtable)).get_ProviderUniqueName(@as(*const IFaxDevice, @ptrCast(self)), pbstrProviderUniqueName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevice_get_PoweredOff(self: *const T, pbPoweredOff: ?*i16) HRESULT {
                return @as(*const IFaxDevice.VTable, @ptrCast(self.vtable)).get_PoweredOff(@as(*const IFaxDevice, @ptrCast(self)), pbPoweredOff);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevice_get_ReceivingNow(self: *const T, pbReceivingNow: ?*i16) HRESULT {
                return @as(*const IFaxDevice.VTable, @ptrCast(self.vtable)).get_ReceivingNow(@as(*const IFaxDevice, @ptrCast(self)), pbReceivingNow);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevice_get_SendingNow(self: *const T, pbSendingNow: ?*i16) HRESULT {
                return @as(*const IFaxDevice.VTable, @ptrCast(self.vtable)).get_SendingNow(@as(*const IFaxDevice, @ptrCast(self)), pbSendingNow);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevice_get_UsedRoutingMethods(self: *const T, pvUsedRoutingMethods: ?*VARIANT) HRESULT {
                return @as(*const IFaxDevice.VTable, @ptrCast(self.vtable)).get_UsedRoutingMethods(@as(*const IFaxDevice, @ptrCast(self)), pvUsedRoutingMethods);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevice_get_Description(self: *const T, pbstrDescription: ?*?BSTR) HRESULT {
                return @as(*const IFaxDevice.VTable, @ptrCast(self.vtable)).get_Description(@as(*const IFaxDevice, @ptrCast(self)), pbstrDescription);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevice_put_Description(self: *const T, bstrDescription: ?BSTR) HRESULT {
                return @as(*const IFaxDevice.VTable, @ptrCast(self.vtable)).put_Description(@as(*const IFaxDevice, @ptrCast(self)), bstrDescription);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevice_get_SendEnabled(self: *const T, pbSendEnabled: ?*i16) HRESULT {
                return @as(*const IFaxDevice.VTable, @ptrCast(self.vtable)).get_SendEnabled(@as(*const IFaxDevice, @ptrCast(self)), pbSendEnabled);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevice_put_SendEnabled(self: *const T, bSendEnabled: i16) HRESULT {
                return @as(*const IFaxDevice.VTable, @ptrCast(self.vtable)).put_SendEnabled(@as(*const IFaxDevice, @ptrCast(self)), bSendEnabled);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevice_get_ReceiveMode(self: *const T, pReceiveMode: ?*FAX_DEVICE_RECEIVE_MODE_ENUM) HRESULT {
                return @as(*const IFaxDevice.VTable, @ptrCast(self.vtable)).get_ReceiveMode(@as(*const IFaxDevice, @ptrCast(self)), pReceiveMode);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevice_put_ReceiveMode(self: *const T, ReceiveMode: FAX_DEVICE_RECEIVE_MODE_ENUM) HRESULT {
                return @as(*const IFaxDevice.VTable, @ptrCast(self.vtable)).put_ReceiveMode(@as(*const IFaxDevice, @ptrCast(self)), ReceiveMode);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevice_get_RingsBeforeAnswer(self: *const T, plRingsBeforeAnswer: ?*i32) HRESULT {
                return @as(*const IFaxDevice.VTable, @ptrCast(self.vtable)).get_RingsBeforeAnswer(@as(*const IFaxDevice, @ptrCast(self)), plRingsBeforeAnswer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevice_put_RingsBeforeAnswer(self: *const T, lRingsBeforeAnswer: i32) HRESULT {
                return @as(*const IFaxDevice.VTable, @ptrCast(self.vtable)).put_RingsBeforeAnswer(@as(*const IFaxDevice, @ptrCast(self)), lRingsBeforeAnswer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevice_get_CSID(self: *const T, pbstrCSID: ?*?BSTR) HRESULT {
                return @as(*const IFaxDevice.VTable, @ptrCast(self.vtable)).get_CSID(@as(*const IFaxDevice, @ptrCast(self)), pbstrCSID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevice_put_CSID(self: *const T, bstrCSID: ?BSTR) HRESULT {
                return @as(*const IFaxDevice.VTable, @ptrCast(self.vtable)).put_CSID(@as(*const IFaxDevice, @ptrCast(self)), bstrCSID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevice_get_TSID(self: *const T, pbstrTSID: ?*?BSTR) HRESULT {
                return @as(*const IFaxDevice.VTable, @ptrCast(self.vtable)).get_TSID(@as(*const IFaxDevice, @ptrCast(self)), pbstrTSID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevice_put_TSID(self: *const T, bstrTSID: ?BSTR) HRESULT {
                return @as(*const IFaxDevice.VTable, @ptrCast(self.vtable)).put_TSID(@as(*const IFaxDevice, @ptrCast(self)), bstrTSID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevice_Refresh(self: *const T) HRESULT {
                return @as(*const IFaxDevice.VTable, @ptrCast(self.vtable)).Refresh(@as(*const IFaxDevice, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevice_Save(self: *const T) HRESULT {
                return @as(*const IFaxDevice.VTable, @ptrCast(self.vtable)).Save(@as(*const IFaxDevice, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevice_GetExtensionProperty(self: *const T, bstrGUID: ?BSTR, pvProperty: ?*VARIANT) HRESULT {
                return @as(*const IFaxDevice.VTable, @ptrCast(self.vtable)).GetExtensionProperty(@as(*const IFaxDevice, @ptrCast(self)), bstrGUID, pvProperty);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevice_SetExtensionProperty(self: *const T, bstrGUID: ?BSTR, vProperty: VARIANT) HRESULT {
                return @as(*const IFaxDevice.VTable, @ptrCast(self.vtable)).SetExtensionProperty(@as(*const IFaxDevice, @ptrCast(self)), bstrGUID, vProperty);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevice_UseRoutingMethod(self: *const T, bstrMethodGUID: ?BSTR, bUse: i16) HRESULT {
                return @as(*const IFaxDevice.VTable, @ptrCast(self.vtable)).UseRoutingMethod(@as(*const IFaxDevice, @ptrCast(self)), bstrMethodGUID, bUse);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevice_get_RingingNow(self: *const T, pbRingingNow: ?*i16) HRESULT {
                return @as(*const IFaxDevice.VTable, @ptrCast(self.vtable)).get_RingingNow(@as(*const IFaxDevice, @ptrCast(self)), pbRingingNow);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDevice_AnswerCall(self: *const T) HRESULT {
                return @as(*const IFaxDevice.VTable, @ptrCast(self.vtable)).AnswerCall(@as(*const IFaxDevice, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxActivityLogging_Value = Guid.initString("1e29078b-5a69-497b-9592-49b7e7faddb5");
pub const IID_IFaxActivityLogging = &IID_IFaxActivityLogging_Value;
pub const IFaxActivityLogging = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LogIncoming: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxActivityLogging,
                pbLogIncoming: ?*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 IFaxActivityLogging,
                pbLogIncoming: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_LogIncoming: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxActivityLogging,
                bLogIncoming: 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 IFaxActivityLogging,
                bLogIncoming: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LogOutgoing: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxActivityLogging,
                pbLogOutgoing: ?*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 IFaxActivityLogging,
                pbLogOutgoing: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_LogOutgoing: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxActivityLogging,
                bLogOutgoing: 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 IFaxActivityLogging,
                bLogOutgoing: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DatabasePath: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxActivityLogging,
                pbstrDatabasePath: ?*?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 IFaxActivityLogging,
                pbstrDatabasePath: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_DatabasePath: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxActivityLogging,
                bstrDatabasePath: ?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 IFaxActivityLogging,
                bstrDatabasePath: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Refresh: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxActivityLogging,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxActivityLogging,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Save: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxActivityLogging,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxActivityLogging,
            ) 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 IFaxActivityLogging_get_LogIncoming(self: *const T, pbLogIncoming: ?*i16) HRESULT {
                return @as(*const IFaxActivityLogging.VTable, @ptrCast(self.vtable)).get_LogIncoming(@as(*const IFaxActivityLogging, @ptrCast(self)), pbLogIncoming);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxActivityLogging_put_LogIncoming(self: *const T, bLogIncoming: i16) HRESULT {
                return @as(*const IFaxActivityLogging.VTable, @ptrCast(self.vtable)).put_LogIncoming(@as(*const IFaxActivityLogging, @ptrCast(self)), bLogIncoming);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxActivityLogging_get_LogOutgoing(self: *const T, pbLogOutgoing: ?*i16) HRESULT {
                return @as(*const IFaxActivityLogging.VTable, @ptrCast(self.vtable)).get_LogOutgoing(@as(*const IFaxActivityLogging, @ptrCast(self)), pbLogOutgoing);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxActivityLogging_put_LogOutgoing(self: *const T, bLogOutgoing: i16) HRESULT {
                return @as(*const IFaxActivityLogging.VTable, @ptrCast(self.vtable)).put_LogOutgoing(@as(*const IFaxActivityLogging, @ptrCast(self)), bLogOutgoing);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxActivityLogging_get_DatabasePath(self: *const T, pbstrDatabasePath: ?*?BSTR) HRESULT {
                return @as(*const IFaxActivityLogging.VTable, @ptrCast(self.vtable)).get_DatabasePath(@as(*const IFaxActivityLogging, @ptrCast(self)), pbstrDatabasePath);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxActivityLogging_put_DatabasePath(self: *const T, bstrDatabasePath: ?BSTR) HRESULT {
                return @as(*const IFaxActivityLogging.VTable, @ptrCast(self.vtable)).put_DatabasePath(@as(*const IFaxActivityLogging, @ptrCast(self)), bstrDatabasePath);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxActivityLogging_Refresh(self: *const T) HRESULT {
                return @as(*const IFaxActivityLogging.VTable, @ptrCast(self.vtable)).Refresh(@as(*const IFaxActivityLogging, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxActivityLogging_Save(self: *const T) HRESULT {
                return @as(*const IFaxActivityLogging.VTable, @ptrCast(self.vtable)).Save(@as(*const IFaxActivityLogging, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const FAX_LOG_LEVEL_ENUM = enum(i32) {
    NONE = 0,
    MIN = 1,
    MED = 2,
    MAX = 3,
};
pub const fllNONE = FAX_LOG_LEVEL_ENUM.NONE;
pub const fllMIN = FAX_LOG_LEVEL_ENUM.MIN;
pub const fllMED = FAX_LOG_LEVEL_ENUM.MED;
pub const fllMAX = FAX_LOG_LEVEL_ENUM.MAX;

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxEventLogging_Value = Guid.initString("0880d965-20e8-42e4-8e17-944f192caad4");
pub const IID_IFaxEventLogging = &IID_IFaxEventLogging_Value;
pub const IFaxEventLogging = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_InitEventsLevel: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxEventLogging,
                pInitEventLevel: ?*FAX_LOG_LEVEL_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxEventLogging,
                pInitEventLevel: ?*FAX_LOG_LEVEL_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_InitEventsLevel: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxEventLogging,
                InitEventLevel: FAX_LOG_LEVEL_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxEventLogging,
                InitEventLevel: FAX_LOG_LEVEL_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_InboundEventsLevel: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxEventLogging,
                pInboundEventLevel: ?*FAX_LOG_LEVEL_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxEventLogging,
                pInboundEventLevel: ?*FAX_LOG_LEVEL_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_InboundEventsLevel: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxEventLogging,
                InboundEventLevel: FAX_LOG_LEVEL_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxEventLogging,
                InboundEventLevel: FAX_LOG_LEVEL_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_OutboundEventsLevel: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxEventLogging,
                pOutboundEventLevel: ?*FAX_LOG_LEVEL_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxEventLogging,
                pOutboundEventLevel: ?*FAX_LOG_LEVEL_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_OutboundEventsLevel: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxEventLogging,
                OutboundEventLevel: FAX_LOG_LEVEL_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxEventLogging,
                OutboundEventLevel: FAX_LOG_LEVEL_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_GeneralEventsLevel: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxEventLogging,
                pGeneralEventLevel: ?*FAX_LOG_LEVEL_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxEventLogging,
                pGeneralEventLevel: ?*FAX_LOG_LEVEL_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_GeneralEventsLevel: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxEventLogging,
                GeneralEventLevel: FAX_LOG_LEVEL_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxEventLogging,
                GeneralEventLevel: FAX_LOG_LEVEL_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Refresh: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxEventLogging,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxEventLogging,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Save: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxEventLogging,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxEventLogging,
            ) 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 IFaxEventLogging_get_InitEventsLevel(self: *const T, pInitEventLevel: ?*FAX_LOG_LEVEL_ENUM) HRESULT {
                return @as(*const IFaxEventLogging.VTable, @ptrCast(self.vtable)).get_InitEventsLevel(@as(*const IFaxEventLogging, @ptrCast(self)), pInitEventLevel);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxEventLogging_put_InitEventsLevel(self: *const T, InitEventLevel: FAX_LOG_LEVEL_ENUM) HRESULT {
                return @as(*const IFaxEventLogging.VTable, @ptrCast(self.vtable)).put_InitEventsLevel(@as(*const IFaxEventLogging, @ptrCast(self)), InitEventLevel);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxEventLogging_get_InboundEventsLevel(self: *const T, pInboundEventLevel: ?*FAX_LOG_LEVEL_ENUM) HRESULT {
                return @as(*const IFaxEventLogging.VTable, @ptrCast(self.vtable)).get_InboundEventsLevel(@as(*const IFaxEventLogging, @ptrCast(self)), pInboundEventLevel);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxEventLogging_put_InboundEventsLevel(self: *const T, InboundEventLevel: FAX_LOG_LEVEL_ENUM) HRESULT {
                return @as(*const IFaxEventLogging.VTable, @ptrCast(self.vtable)).put_InboundEventsLevel(@as(*const IFaxEventLogging, @ptrCast(self)), InboundEventLevel);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxEventLogging_get_OutboundEventsLevel(self: *const T, pOutboundEventLevel: ?*FAX_LOG_LEVEL_ENUM) HRESULT {
                return @as(*const IFaxEventLogging.VTable, @ptrCast(self.vtable)).get_OutboundEventsLevel(@as(*const IFaxEventLogging, @ptrCast(self)), pOutboundEventLevel);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxEventLogging_put_OutboundEventsLevel(self: *const T, OutboundEventLevel: FAX_LOG_LEVEL_ENUM) HRESULT {
                return @as(*const IFaxEventLogging.VTable, @ptrCast(self.vtable)).put_OutboundEventsLevel(@as(*const IFaxEventLogging, @ptrCast(self)), OutboundEventLevel);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxEventLogging_get_GeneralEventsLevel(self: *const T, pGeneralEventLevel: ?*FAX_LOG_LEVEL_ENUM) HRESULT {
                return @as(*const IFaxEventLogging.VTable, @ptrCast(self.vtable)).get_GeneralEventsLevel(@as(*const IFaxEventLogging, @ptrCast(self)), pGeneralEventLevel);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxEventLogging_put_GeneralEventsLevel(self: *const T, GeneralEventLevel: FAX_LOG_LEVEL_ENUM) HRESULT {
                return @as(*const IFaxEventLogging.VTable, @ptrCast(self.vtable)).put_GeneralEventsLevel(@as(*const IFaxEventLogging, @ptrCast(self)), GeneralEventLevel);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxEventLogging_Refresh(self: *const T) HRESULT {
                return @as(*const IFaxEventLogging.VTable, @ptrCast(self.vtable)).Refresh(@as(*const IFaxEventLogging, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxEventLogging_Save(self: *const T) HRESULT {
                return @as(*const IFaxEventLogging.VTable, @ptrCast(self.vtable)).Save(@as(*const IFaxEventLogging, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxOutboundRoutingGroups_Value = Guid.initString("235cbef7-c2de-4bfd-b8da-75097c82c87f");
pub const IID_IFaxOutboundRoutingGroups = &IID_IFaxOutboundRoutingGroups_Value;
pub const IFaxOutboundRoutingGroups = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // 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 IFaxOutboundRoutingGroups,
                ppUnk: ?*?*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 IFaxOutboundRoutingGroups,
                ppUnk: ?*?*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 IFaxOutboundRoutingGroups,
                vIndex: VARIANT,
                pFaxOutboundRoutingGroup: ?*?*IFaxOutboundRoutingGroup,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxOutboundRoutingGroups,
                vIndex: VARIANT,
                pFaxOutboundRoutingGroup: ?*?*IFaxOutboundRoutingGroup,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // 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 IFaxOutboundRoutingGroups,
                plCount: ?*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 IFaxOutboundRoutingGroups,
                plCount: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutboundRoutingGroups,
                bstrName: ?BSTR,
                pFaxOutboundRoutingGroup: ?*?*IFaxOutboundRoutingGroup,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutboundRoutingGroups,
                bstrName: ?BSTR,
                pFaxOutboundRoutingGroup: ?*?*IFaxOutboundRoutingGroup,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutboundRoutingGroups,
                vIndex: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutboundRoutingGroups,
                vIndex: 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 IFaxOutboundRoutingGroups_get__NewEnum(self: *const T, ppUnk: ?*?*IUnknown) HRESULT {
                return @as(*const IFaxOutboundRoutingGroups.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const IFaxOutboundRoutingGroups, @ptrCast(self)), ppUnk);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutboundRoutingGroups_get_Item(self: *const T, vIndex: VARIANT, pFaxOutboundRoutingGroup: ?*?*IFaxOutboundRoutingGroup) HRESULT {
                return @as(*const IFaxOutboundRoutingGroups.VTable, @ptrCast(self.vtable)).get_Item(@as(*const IFaxOutboundRoutingGroups, @ptrCast(self)), vIndex, pFaxOutboundRoutingGroup);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutboundRoutingGroups_get_Count(self: *const T, plCount: ?*i32) HRESULT {
                return @as(*const IFaxOutboundRoutingGroups.VTable, @ptrCast(self.vtable)).get_Count(@as(*const IFaxOutboundRoutingGroups, @ptrCast(self)), plCount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutboundRoutingGroups_Add(self: *const T, bstrName: ?BSTR, pFaxOutboundRoutingGroup: ?*?*IFaxOutboundRoutingGroup) HRESULT {
                return @as(*const IFaxOutboundRoutingGroups.VTable, @ptrCast(self.vtable)).Add(@as(*const IFaxOutboundRoutingGroups, @ptrCast(self)), bstrName, pFaxOutboundRoutingGroup);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutboundRoutingGroups_Remove(self: *const T, vIndex: VARIANT) HRESULT {
                return @as(*const IFaxOutboundRoutingGroups.VTable, @ptrCast(self.vtable)).Remove(@as(*const IFaxOutboundRoutingGroups, @ptrCast(self)), vIndex);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const FAX_GROUP_STATUS_ENUM = enum(i32) {
    ALL_DEV_VALID = 0,
    EMPTY = 1,
    ALL_DEV_NOT_VALID = 2,
    SOME_DEV_NOT_VALID = 3,
};
pub const fgsALL_DEV_VALID = FAX_GROUP_STATUS_ENUM.ALL_DEV_VALID;
pub const fgsEMPTY = FAX_GROUP_STATUS_ENUM.EMPTY;
pub const fgsALL_DEV_NOT_VALID = FAX_GROUP_STATUS_ENUM.ALL_DEV_NOT_VALID;
pub const fgsSOME_DEV_NOT_VALID = FAX_GROUP_STATUS_ENUM.SOME_DEV_NOT_VALID;

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxOutboundRoutingGroup_Value = Guid.initString("ca6289a1-7e25-4f87-9a0b-93365734962c");
pub const IID_IFaxOutboundRoutingGroup = &IID_IFaxOutboundRoutingGroup_Value;
pub const IFaxOutboundRoutingGroup = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // 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 IFaxOutboundRoutingGroup,
                pbstrName: ?*?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 IFaxOutboundRoutingGroup,
                pbstrName: ?*?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 IFaxOutboundRoutingGroup,
                pStatus: ?*FAX_GROUP_STATUS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxOutboundRoutingGroup,
                pStatus: ?*FAX_GROUP_STATUS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DeviceIds: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutboundRoutingGroup,
                pFaxDeviceIds: ?*?*IFaxDeviceIds,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxOutboundRoutingGroup,
                pFaxDeviceIds: ?*?*IFaxDeviceIds,
            ) 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 IFaxOutboundRoutingGroup_get_Name(self: *const T, pbstrName: ?*?BSTR) HRESULT {
                return @as(*const IFaxOutboundRoutingGroup.VTable, @ptrCast(self.vtable)).get_Name(@as(*const IFaxOutboundRoutingGroup, @ptrCast(self)), pbstrName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutboundRoutingGroup_get_Status(self: *const T, pStatus: ?*FAX_GROUP_STATUS_ENUM) HRESULT {
                return @as(*const IFaxOutboundRoutingGroup.VTable, @ptrCast(self.vtable)).get_Status(@as(*const IFaxOutboundRoutingGroup, @ptrCast(self)), pStatus);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutboundRoutingGroup_get_DeviceIds(self: *const T, pFaxDeviceIds: ?*?*IFaxDeviceIds) HRESULT {
                return @as(*const IFaxOutboundRoutingGroup.VTable, @ptrCast(self.vtable)).get_DeviceIds(@as(*const IFaxOutboundRoutingGroup, @ptrCast(self)), pFaxDeviceIds);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxDeviceIds_Value = Guid.initString("2f0f813f-4ce9-443e-8ca1-738cfaeee149");
pub const IID_IFaxDeviceIds = &IID_IFaxDeviceIds_Value;
pub const IFaxDeviceIds = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // 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 IFaxDeviceIds,
                ppUnk: ?*?*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 IFaxDeviceIds,
                ppUnk: ?*?*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 IFaxDeviceIds,
                lIndex: i32,
                plDeviceId: ?*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 IFaxDeviceIds,
                lIndex: i32,
                plDeviceId: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // 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 IFaxDeviceIds,
                plCount: ?*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 IFaxDeviceIds,
                plCount: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxDeviceIds,
                lDeviceId: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxDeviceIds,
                lDeviceId: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxDeviceIds,
                lIndex: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxDeviceIds,
                lIndex: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetOrder: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxDeviceIds,
                lDeviceId: i32,
                lNewOrder: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxDeviceIds,
                lDeviceId: i32,
                lNewOrder: i32,
            ) 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 IFaxDeviceIds_get__NewEnum(self: *const T, ppUnk: ?*?*IUnknown) HRESULT {
                return @as(*const IFaxDeviceIds.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const IFaxDeviceIds, @ptrCast(self)), ppUnk);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDeviceIds_get_Item(self: *const T, lIndex: i32, plDeviceId: ?*i32) HRESULT {
                return @as(*const IFaxDeviceIds.VTable, @ptrCast(self.vtable)).get_Item(@as(*const IFaxDeviceIds, @ptrCast(self)), lIndex, plDeviceId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDeviceIds_get_Count(self: *const T, plCount: ?*i32) HRESULT {
                return @as(*const IFaxDeviceIds.VTable, @ptrCast(self.vtable)).get_Count(@as(*const IFaxDeviceIds, @ptrCast(self)), plCount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDeviceIds_Add(self: *const T, lDeviceId: i32) HRESULT {
                return @as(*const IFaxDeviceIds.VTable, @ptrCast(self.vtable)).Add(@as(*const IFaxDeviceIds, @ptrCast(self)), lDeviceId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDeviceIds_Remove(self: *const T, lIndex: i32) HRESULT {
                return @as(*const IFaxDeviceIds.VTable, @ptrCast(self.vtable)).Remove(@as(*const IFaxDeviceIds, @ptrCast(self)), lIndex);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDeviceIds_SetOrder(self: *const T, lDeviceId: i32, lNewOrder: i32) HRESULT {
                return @as(*const IFaxDeviceIds.VTable, @ptrCast(self.vtable)).SetOrder(@as(*const IFaxDeviceIds, @ptrCast(self)), lDeviceId, lNewOrder);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxOutboundRoutingRules_Value = Guid.initString("dcefa1e7-ae7d-4ed6-8521-369edcca5120");
pub const IID_IFaxOutboundRoutingRules = &IID_IFaxOutboundRoutingRules_Value;
pub const IFaxOutboundRoutingRules = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // 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 IFaxOutboundRoutingRules,
                ppUnk: ?*?*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 IFaxOutboundRoutingRules,
                ppUnk: ?*?*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 IFaxOutboundRoutingRules,
                lIndex: i32,
                pFaxOutboundRoutingRule: ?*?*IFaxOutboundRoutingRule,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxOutboundRoutingRules,
                lIndex: i32,
                pFaxOutboundRoutingRule: ?*?*IFaxOutboundRoutingRule,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // 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 IFaxOutboundRoutingRules,
                plCount: ?*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 IFaxOutboundRoutingRules,
                plCount: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ItemByCountryAndArea: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutboundRoutingRules,
                lCountryCode: i32,
                lAreaCode: i32,
                pFaxOutboundRoutingRule: ?*?*IFaxOutboundRoutingRule,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutboundRoutingRules,
                lCountryCode: i32,
                lAreaCode: i32,
                pFaxOutboundRoutingRule: ?*?*IFaxOutboundRoutingRule,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RemoveByCountryAndArea: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutboundRoutingRules,
                lCountryCode: i32,
                lAreaCode: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutboundRoutingRules,
                lCountryCode: i32,
                lAreaCode: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Remove: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutboundRoutingRules,
                lIndex: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutboundRoutingRules,
                lIndex: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Add: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutboundRoutingRules,
                lCountryCode: i32,
                lAreaCode: i32,
                bUseDevice: i16,
                bstrGroupName: ?BSTR,
                lDeviceId: i32,
                pFaxOutboundRoutingRule: ?*?*IFaxOutboundRoutingRule,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutboundRoutingRules,
                lCountryCode: i32,
                lAreaCode: i32,
                bUseDevice: i16,
                bstrGroupName: ?BSTR,
                lDeviceId: i32,
                pFaxOutboundRoutingRule: ?*?*IFaxOutboundRoutingRule,
            ) 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 IFaxOutboundRoutingRules_get__NewEnum(self: *const T, ppUnk: ?*?*IUnknown) HRESULT {
                return @as(*const IFaxOutboundRoutingRules.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const IFaxOutboundRoutingRules, @ptrCast(self)), ppUnk);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutboundRoutingRules_get_Item(self: *const T, lIndex: i32, pFaxOutboundRoutingRule: ?*?*IFaxOutboundRoutingRule) HRESULT {
                return @as(*const IFaxOutboundRoutingRules.VTable, @ptrCast(self.vtable)).get_Item(@as(*const IFaxOutboundRoutingRules, @ptrCast(self)), lIndex, pFaxOutboundRoutingRule);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutboundRoutingRules_get_Count(self: *const T, plCount: ?*i32) HRESULT {
                return @as(*const IFaxOutboundRoutingRules.VTable, @ptrCast(self.vtable)).get_Count(@as(*const IFaxOutboundRoutingRules, @ptrCast(self)), plCount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutboundRoutingRules_ItemByCountryAndArea(self: *const T, lCountryCode: i32, lAreaCode: i32, pFaxOutboundRoutingRule: ?*?*IFaxOutboundRoutingRule) HRESULT {
                return @as(*const IFaxOutboundRoutingRules.VTable, @ptrCast(self.vtable)).ItemByCountryAndArea(@as(*const IFaxOutboundRoutingRules, @ptrCast(self)), lCountryCode, lAreaCode, pFaxOutboundRoutingRule);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutboundRoutingRules_RemoveByCountryAndArea(self: *const T, lCountryCode: i32, lAreaCode: i32) HRESULT {
                return @as(*const IFaxOutboundRoutingRules.VTable, @ptrCast(self.vtable)).RemoveByCountryAndArea(@as(*const IFaxOutboundRoutingRules, @ptrCast(self)), lCountryCode, lAreaCode);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutboundRoutingRules_Remove(self: *const T, lIndex: i32) HRESULT {
                return @as(*const IFaxOutboundRoutingRules.VTable, @ptrCast(self.vtable)).Remove(@as(*const IFaxOutboundRoutingRules, @ptrCast(self)), lIndex);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutboundRoutingRules_Add(self: *const T, lCountryCode: i32, lAreaCode: i32, bUseDevice: i16, bstrGroupName: ?BSTR, lDeviceId: i32, pFaxOutboundRoutingRule: ?*?*IFaxOutboundRoutingRule) HRESULT {
                return @as(*const IFaxOutboundRoutingRules.VTable, @ptrCast(self.vtable)).Add(@as(*const IFaxOutboundRoutingRules, @ptrCast(self)), lCountryCode, lAreaCode, bUseDevice, bstrGroupName, lDeviceId, pFaxOutboundRoutingRule);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const FAX_RULE_STATUS_ENUM = enum(i32) {
    VALID = 0,
    EMPTY_GROUP = 1,
    ALL_GROUP_DEV_NOT_VALID = 2,
    SOME_GROUP_DEV_NOT_VALID = 3,
    BAD_DEVICE = 4,
};
pub const frsVALID = FAX_RULE_STATUS_ENUM.VALID;
pub const frsEMPTY_GROUP = FAX_RULE_STATUS_ENUM.EMPTY_GROUP;
pub const frsALL_GROUP_DEV_NOT_VALID = FAX_RULE_STATUS_ENUM.ALL_GROUP_DEV_NOT_VALID;
pub const frsSOME_GROUP_DEV_NOT_VALID = FAX_RULE_STATUS_ENUM.SOME_GROUP_DEV_NOT_VALID;
pub const frsBAD_DEVICE = FAX_RULE_STATUS_ENUM.BAD_DEVICE;

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxOutboundRoutingRule_Value = Guid.initString("e1f795d5-07c2-469f-b027-acacc23219da");
pub const IID_IFaxOutboundRoutingRule = &IID_IFaxOutboundRoutingRule_Value;
pub const IFaxOutboundRoutingRule = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CountryCode: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutboundRoutingRule,
                plCountryCode: ?*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 IFaxOutboundRoutingRule,
                plCountryCode: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AreaCode: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutboundRoutingRule,
                plAreaCode: ?*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 IFaxOutboundRoutingRule,
                plAreaCode: ?*i32,
            ) 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 IFaxOutboundRoutingRule,
                pStatus: ?*FAX_RULE_STATUS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxOutboundRoutingRule,
                pStatus: ?*FAX_RULE_STATUS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_UseDevice: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutboundRoutingRule,
                pbUseDevice: ?*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 IFaxOutboundRoutingRule,
                pbUseDevice: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_UseDevice: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutboundRoutingRule,
                bUseDevice: 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 IFaxOutboundRoutingRule,
                bUseDevice: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DeviceId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutboundRoutingRule,
                plDeviceId: ?*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 IFaxOutboundRoutingRule,
                plDeviceId: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_DeviceId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutboundRoutingRule,
                DeviceId: 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 IFaxOutboundRoutingRule,
                DeviceId: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_GroupName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutboundRoutingRule,
                pbstrGroupName: ?*?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 IFaxOutboundRoutingRule,
                pbstrGroupName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_GroupName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutboundRoutingRule,
                bstrGroupName: ?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 IFaxOutboundRoutingRule,
                bstrGroupName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Refresh: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutboundRoutingRule,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutboundRoutingRule,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Save: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutboundRoutingRule,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutboundRoutingRule,
            ) 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 IFaxOutboundRoutingRule_get_CountryCode(self: *const T, plCountryCode: ?*i32) HRESULT {
                return @as(*const IFaxOutboundRoutingRule.VTable, @ptrCast(self.vtable)).get_CountryCode(@as(*const IFaxOutboundRoutingRule, @ptrCast(self)), plCountryCode);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutboundRoutingRule_get_AreaCode(self: *const T, plAreaCode: ?*i32) HRESULT {
                return @as(*const IFaxOutboundRoutingRule.VTable, @ptrCast(self.vtable)).get_AreaCode(@as(*const IFaxOutboundRoutingRule, @ptrCast(self)), plAreaCode);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutboundRoutingRule_get_Status(self: *const T, pStatus: ?*FAX_RULE_STATUS_ENUM) HRESULT {
                return @as(*const IFaxOutboundRoutingRule.VTable, @ptrCast(self.vtable)).get_Status(@as(*const IFaxOutboundRoutingRule, @ptrCast(self)), pStatus);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutboundRoutingRule_get_UseDevice(self: *const T, pbUseDevice: ?*i16) HRESULT {
                return @as(*const IFaxOutboundRoutingRule.VTable, @ptrCast(self.vtable)).get_UseDevice(@as(*const IFaxOutboundRoutingRule, @ptrCast(self)), pbUseDevice);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutboundRoutingRule_put_UseDevice(self: *const T, bUseDevice: i16) HRESULT {
                return @as(*const IFaxOutboundRoutingRule.VTable, @ptrCast(self.vtable)).put_UseDevice(@as(*const IFaxOutboundRoutingRule, @ptrCast(self)), bUseDevice);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutboundRoutingRule_get_DeviceId(self: *const T, plDeviceId: ?*i32) HRESULT {
                return @as(*const IFaxOutboundRoutingRule.VTable, @ptrCast(self.vtable)).get_DeviceId(@as(*const IFaxOutboundRoutingRule, @ptrCast(self)), plDeviceId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutboundRoutingRule_put_DeviceId(self: *const T, DeviceId: i32) HRESULT {
                return @as(*const IFaxOutboundRoutingRule.VTable, @ptrCast(self.vtable)).put_DeviceId(@as(*const IFaxOutboundRoutingRule, @ptrCast(self)), DeviceId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutboundRoutingRule_get_GroupName(self: *const T, pbstrGroupName: ?*?BSTR) HRESULT {
                return @as(*const IFaxOutboundRoutingRule.VTable, @ptrCast(self.vtable)).get_GroupName(@as(*const IFaxOutboundRoutingRule, @ptrCast(self)), pbstrGroupName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutboundRoutingRule_put_GroupName(self: *const T, bstrGroupName: ?BSTR) HRESULT {
                return @as(*const IFaxOutboundRoutingRule.VTable, @ptrCast(self.vtable)).put_GroupName(@as(*const IFaxOutboundRoutingRule, @ptrCast(self)), bstrGroupName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutboundRoutingRule_Refresh(self: *const T) HRESULT {
                return @as(*const IFaxOutboundRoutingRule.VTable, @ptrCast(self.vtable)).Refresh(@as(*const IFaxOutboundRoutingRule, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutboundRoutingRule_Save(self: *const T) HRESULT {
                return @as(*const IFaxOutboundRoutingRule.VTable, @ptrCast(self.vtable)).Save(@as(*const IFaxOutboundRoutingRule, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxInboundRoutingExtensions_Value = Guid.initString("2f6c9673-7b26-42de-8eb0-915dcd2a4f4c");
pub const IID_IFaxInboundRoutingExtensions = &IID_IFaxInboundRoutingExtensions_Value;
pub const IFaxInboundRoutingExtensions = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // 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 IFaxInboundRoutingExtensions,
                ppUnk: ?*?*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 IFaxInboundRoutingExtensions,
                ppUnk: ?*?*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 IFaxInboundRoutingExtensions,
                vIndex: VARIANT,
                pFaxInboundRoutingExtension: ?*?*IFaxInboundRoutingExtension,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxInboundRoutingExtensions,
                vIndex: VARIANT,
                pFaxInboundRoutingExtension: ?*?*IFaxInboundRoutingExtension,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // 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 IFaxInboundRoutingExtensions,
                plCount: ?*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 IFaxInboundRoutingExtensions,
                plCount: ?*i32,
            ) 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 IFaxInboundRoutingExtensions_get__NewEnum(self: *const T, ppUnk: ?*?*IUnknown) HRESULT {
                return @as(*const IFaxInboundRoutingExtensions.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const IFaxInboundRoutingExtensions, @ptrCast(self)), ppUnk);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxInboundRoutingExtensions_get_Item(self: *const T, vIndex: VARIANT, pFaxInboundRoutingExtension: ?*?*IFaxInboundRoutingExtension) HRESULT {
                return @as(*const IFaxInboundRoutingExtensions.VTable, @ptrCast(self.vtable)).get_Item(@as(*const IFaxInboundRoutingExtensions, @ptrCast(self)), vIndex, pFaxInboundRoutingExtension);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxInboundRoutingExtensions_get_Count(self: *const T, plCount: ?*i32) HRESULT {
                return @as(*const IFaxInboundRoutingExtensions.VTable, @ptrCast(self.vtable)).get_Count(@as(*const IFaxInboundRoutingExtensions, @ptrCast(self)), plCount);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxInboundRoutingExtension_Value = Guid.initString("885b5e08-c26c-4ef9-af83-51580a750be1");
pub const IID_IFaxInboundRoutingExtension = &IID_IFaxInboundRoutingExtension_Value;
pub const IFaxInboundRoutingExtension = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_FriendlyName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxInboundRoutingExtension,
                pbstrFriendlyName: ?*?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 IFaxInboundRoutingExtension,
                pbstrFriendlyName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ImageName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxInboundRoutingExtension,
                pbstrImageName: ?*?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 IFaxInboundRoutingExtension,
                pbstrImageName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_UniqueName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxInboundRoutingExtension,
                pbstrUniqueName: ?*?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 IFaxInboundRoutingExtension,
                pbstrUniqueName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MajorVersion: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxInboundRoutingExtension,
                plMajorVersion: ?*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 IFaxInboundRoutingExtension,
                plMajorVersion: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MinorVersion: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxInboundRoutingExtension,
                plMinorVersion: ?*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 IFaxInboundRoutingExtension,
                plMinorVersion: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MajorBuild: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxInboundRoutingExtension,
                plMajorBuild: ?*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 IFaxInboundRoutingExtension,
                plMajorBuild: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_MinorBuild: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxInboundRoutingExtension,
                plMinorBuild: ?*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 IFaxInboundRoutingExtension,
                plMinorBuild: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Debug: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxInboundRoutingExtension,
                pbDebug: ?*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 IFaxInboundRoutingExtension,
                pbDebug: ?*i16,
            ) 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 IFaxInboundRoutingExtension,
                pStatus: ?*FAX_PROVIDER_STATUS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxInboundRoutingExtension,
                pStatus: ?*FAX_PROVIDER_STATUS_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_InitErrorCode: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxInboundRoutingExtension,
                plInitErrorCode: ?*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 IFaxInboundRoutingExtension,
                plInitErrorCode: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Methods: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxInboundRoutingExtension,
                pvMethods: ?*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 IFaxInboundRoutingExtension,
                pvMethods: ?*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 IFaxInboundRoutingExtension_get_FriendlyName(self: *const T, pbstrFriendlyName: ?*?BSTR) HRESULT {
                return @as(*const IFaxInboundRoutingExtension.VTable, @ptrCast(self.vtable)).get_FriendlyName(@as(*const IFaxInboundRoutingExtension, @ptrCast(self)), pbstrFriendlyName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxInboundRoutingExtension_get_ImageName(self: *const T, pbstrImageName: ?*?BSTR) HRESULT {
                return @as(*const IFaxInboundRoutingExtension.VTable, @ptrCast(self.vtable)).get_ImageName(@as(*const IFaxInboundRoutingExtension, @ptrCast(self)), pbstrImageName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxInboundRoutingExtension_get_UniqueName(self: *const T, pbstrUniqueName: ?*?BSTR) HRESULT {
                return @as(*const IFaxInboundRoutingExtension.VTable, @ptrCast(self.vtable)).get_UniqueName(@as(*const IFaxInboundRoutingExtension, @ptrCast(self)), pbstrUniqueName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxInboundRoutingExtension_get_MajorVersion(self: *const T, plMajorVersion: ?*i32) HRESULT {
                return @as(*const IFaxInboundRoutingExtension.VTable, @ptrCast(self.vtable)).get_MajorVersion(@as(*const IFaxInboundRoutingExtension, @ptrCast(self)), plMajorVersion);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxInboundRoutingExtension_get_MinorVersion(self: *const T, plMinorVersion: ?*i32) HRESULT {
                return @as(*const IFaxInboundRoutingExtension.VTable, @ptrCast(self.vtable)).get_MinorVersion(@as(*const IFaxInboundRoutingExtension, @ptrCast(self)), plMinorVersion);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxInboundRoutingExtension_get_MajorBuild(self: *const T, plMajorBuild: ?*i32) HRESULT {
                return @as(*const IFaxInboundRoutingExtension.VTable, @ptrCast(self.vtable)).get_MajorBuild(@as(*const IFaxInboundRoutingExtension, @ptrCast(self)), plMajorBuild);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxInboundRoutingExtension_get_MinorBuild(self: *const T, plMinorBuild: ?*i32) HRESULT {
                return @as(*const IFaxInboundRoutingExtension.VTable, @ptrCast(self.vtable)).get_MinorBuild(@as(*const IFaxInboundRoutingExtension, @ptrCast(self)), plMinorBuild);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxInboundRoutingExtension_get_Debug(self: *const T, pbDebug: ?*i16) HRESULT {
                return @as(*const IFaxInboundRoutingExtension.VTable, @ptrCast(self.vtable)).get_Debug(@as(*const IFaxInboundRoutingExtension, @ptrCast(self)), pbDebug);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxInboundRoutingExtension_get_Status(self: *const T, pStatus: ?*FAX_PROVIDER_STATUS_ENUM) HRESULT {
                return @as(*const IFaxInboundRoutingExtension.VTable, @ptrCast(self.vtable)).get_Status(@as(*const IFaxInboundRoutingExtension, @ptrCast(self)), pStatus);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxInboundRoutingExtension_get_InitErrorCode(self: *const T, plInitErrorCode: ?*i32) HRESULT {
                return @as(*const IFaxInboundRoutingExtension.VTable, @ptrCast(self.vtable)).get_InitErrorCode(@as(*const IFaxInboundRoutingExtension, @ptrCast(self)), plInitErrorCode);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxInboundRoutingExtension_get_Methods(self: *const T, pvMethods: ?*VARIANT) HRESULT {
                return @as(*const IFaxInboundRoutingExtension.VTable, @ptrCast(self.vtable)).get_Methods(@as(*const IFaxInboundRoutingExtension, @ptrCast(self)), pvMethods);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxInboundRoutingMethods_Value = Guid.initString("783fca10-8908-4473-9d69-f67fbea0c6b9");
pub const IID_IFaxInboundRoutingMethods = &IID_IFaxInboundRoutingMethods_Value;
pub const IFaxInboundRoutingMethods = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // 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 IFaxInboundRoutingMethods,
                ppUnk: ?*?*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 IFaxInboundRoutingMethods,
                ppUnk: ?*?*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 IFaxInboundRoutingMethods,
                vIndex: VARIANT,
                pFaxInboundRoutingMethod: ?*?*IFaxInboundRoutingMethod,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxInboundRoutingMethods,
                vIndex: VARIANT,
                pFaxInboundRoutingMethod: ?*?*IFaxInboundRoutingMethod,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // 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 IFaxInboundRoutingMethods,
                plCount: ?*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 IFaxInboundRoutingMethods,
                plCount: ?*i32,
            ) 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 IFaxInboundRoutingMethods_get__NewEnum(self: *const T, ppUnk: ?*?*IUnknown) HRESULT {
                return @as(*const IFaxInboundRoutingMethods.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const IFaxInboundRoutingMethods, @ptrCast(self)), ppUnk);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxInboundRoutingMethods_get_Item(self: *const T, vIndex: VARIANT, pFaxInboundRoutingMethod: ?*?*IFaxInboundRoutingMethod) HRESULT {
                return @as(*const IFaxInboundRoutingMethods.VTable, @ptrCast(self.vtable)).get_Item(@as(*const IFaxInboundRoutingMethods, @ptrCast(self)), vIndex, pFaxInboundRoutingMethod);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxInboundRoutingMethods_get_Count(self: *const T, plCount: ?*i32) HRESULT {
                return @as(*const IFaxInboundRoutingMethods.VTable, @ptrCast(self.vtable)).get_Count(@as(*const IFaxInboundRoutingMethods, @ptrCast(self)), plCount);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IFaxInboundRoutingMethod_Value = Guid.initString("45700061-ad9d-4776-a8c4-64065492cf4b");
pub const IID_IFaxInboundRoutingMethod = &IID_IFaxInboundRoutingMethod_Value;
pub const IFaxInboundRoutingMethod = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // 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 IFaxInboundRoutingMethod,
                pbstrName: ?*?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 IFaxInboundRoutingMethod,
                pbstrName: ?*?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 IFaxInboundRoutingMethod,
                pbstrGUID: ?*?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 IFaxInboundRoutingMethod,
                pbstrGUID: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_FunctionName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxInboundRoutingMethod,
                pbstrFunctionName: ?*?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 IFaxInboundRoutingMethod,
                pbstrFunctionName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ExtensionFriendlyName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxInboundRoutingMethod,
                pbstrExtensionFriendlyName: ?*?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 IFaxInboundRoutingMethod,
                pbstrExtensionFriendlyName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ExtensionImageName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxInboundRoutingMethod,
                pbstrExtensionImageName: ?*?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 IFaxInboundRoutingMethod,
                pbstrExtensionImageName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Priority: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxInboundRoutingMethod,
                plPriority: ?*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 IFaxInboundRoutingMethod,
                plPriority: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Priority: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxInboundRoutingMethod,
                lPriority: 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 IFaxInboundRoutingMethod,
                lPriority: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Refresh: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxInboundRoutingMethod,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxInboundRoutingMethod,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Save: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxInboundRoutingMethod,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxInboundRoutingMethod,
            ) 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 IFaxInboundRoutingMethod_get_Name(self: *const T, pbstrName: ?*?BSTR) HRESULT {
                return @as(*const IFaxInboundRoutingMethod.VTable, @ptrCast(self.vtable)).get_Name(@as(*const IFaxInboundRoutingMethod, @ptrCast(self)), pbstrName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxInboundRoutingMethod_get_GUID(self: *const T, pbstrGUID: ?*?BSTR) HRESULT {
                return @as(*const IFaxInboundRoutingMethod.VTable, @ptrCast(self.vtable)).get_GUID(@as(*const IFaxInboundRoutingMethod, @ptrCast(self)), pbstrGUID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxInboundRoutingMethod_get_FunctionName(self: *const T, pbstrFunctionName: ?*?BSTR) HRESULT {
                return @as(*const IFaxInboundRoutingMethod.VTable, @ptrCast(self.vtable)).get_FunctionName(@as(*const IFaxInboundRoutingMethod, @ptrCast(self)), pbstrFunctionName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxInboundRoutingMethod_get_ExtensionFriendlyName(self: *const T, pbstrExtensionFriendlyName: ?*?BSTR) HRESULT {
                return @as(*const IFaxInboundRoutingMethod.VTable, @ptrCast(self.vtable)).get_ExtensionFriendlyName(@as(*const IFaxInboundRoutingMethod, @ptrCast(self)), pbstrExtensionFriendlyName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxInboundRoutingMethod_get_ExtensionImageName(self: *const T, pbstrExtensionImageName: ?*?BSTR) HRESULT {
                return @as(*const IFaxInboundRoutingMethod.VTable, @ptrCast(self.vtable)).get_ExtensionImageName(@as(*const IFaxInboundRoutingMethod, @ptrCast(self)), pbstrExtensionImageName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxInboundRoutingMethod_get_Priority(self: *const T, plPriority: ?*i32) HRESULT {
                return @as(*const IFaxInboundRoutingMethod.VTable, @ptrCast(self.vtable)).get_Priority(@as(*const IFaxInboundRoutingMethod, @ptrCast(self)), plPriority);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxInboundRoutingMethod_put_Priority(self: *const T, lPriority: i32) HRESULT {
                return @as(*const IFaxInboundRoutingMethod.VTable, @ptrCast(self.vtable)).put_Priority(@as(*const IFaxInboundRoutingMethod, @ptrCast(self)), lPriority);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxInboundRoutingMethod_Refresh(self: *const T) HRESULT {
                return @as(*const IFaxInboundRoutingMethod.VTable, @ptrCast(self.vtable)).Refresh(@as(*const IFaxInboundRoutingMethod, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxInboundRoutingMethod_Save(self: *const T) HRESULT {
                return @as(*const IFaxInboundRoutingMethod.VTable, @ptrCast(self.vtable)).Save(@as(*const IFaxInboundRoutingMethod, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IFaxDocument2_Value = Guid.initString("e1347661-f9ef-4d6d-b4a5-c0a068b65cff");
pub const IID_IFaxDocument2 = &IID_IFaxDocument2_Value;
pub const IFaxDocument2 = extern struct {
    pub const VTable = extern struct {
        base: IFaxDocument.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SubmissionId: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument2,
                pbstrSubmissionId: ?*?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 IFaxDocument2,
                pbstrSubmissionId: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Bodies: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument2,
                pvBodies: ?*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 IFaxDocument2,
                pvBodies: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Bodies: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxDocument2,
                vBodies: 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 IFaxDocument2,
                vBodies: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Submit2: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxDocument2,
                bstrFaxServerName: ?BSTR,
                pvFaxOutgoingJobIDs: ?*VARIANT,
                plErrorBodyFile: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxDocument2,
                bstrFaxServerName: ?BSTR,
                pvFaxOutgoingJobIDs: ?*VARIANT,
                plErrorBodyFile: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ConnectedSubmit2: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxDocument2,
                pFaxServer: ?*IFaxServer,
                pvFaxOutgoingJobIDs: ?*VARIANT,
                plErrorBodyFile: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxDocument2,
                pFaxServer: ?*IFaxServer,
                pvFaxOutgoingJobIDs: ?*VARIANT,
                plErrorBodyFile: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IFaxDocument.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument2_get_SubmissionId(self: *const T, pbstrSubmissionId: ?*?BSTR) HRESULT {
                return @as(*const IFaxDocument2.VTable, @ptrCast(self.vtable)).get_SubmissionId(@as(*const IFaxDocument2, @ptrCast(self)), pbstrSubmissionId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument2_get_Bodies(self: *const T, pvBodies: ?*VARIANT) HRESULT {
                return @as(*const IFaxDocument2.VTable, @ptrCast(self.vtable)).get_Bodies(@as(*const IFaxDocument2, @ptrCast(self)), pvBodies);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument2_put_Bodies(self: *const T, vBodies: VARIANT) HRESULT {
                return @as(*const IFaxDocument2.VTable, @ptrCast(self.vtable)).put_Bodies(@as(*const IFaxDocument2, @ptrCast(self)), vBodies);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument2_Submit2(self: *const T, bstrFaxServerName: ?BSTR, pvFaxOutgoingJobIDs: ?*VARIANT, plErrorBodyFile: ?*i32) HRESULT {
                return @as(*const IFaxDocument2.VTable, @ptrCast(self.vtable)).Submit2(@as(*const IFaxDocument2, @ptrCast(self)), bstrFaxServerName, pvFaxOutgoingJobIDs, plErrorBodyFile);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxDocument2_ConnectedSubmit2(self: *const T, pFaxServer: ?*IFaxServer, pvFaxOutgoingJobIDs: ?*VARIANT, plErrorBodyFile: ?*i32) HRESULT {
                return @as(*const IFaxDocument2.VTable, @ptrCast(self.vtable)).ConnectedSubmit2(@as(*const IFaxDocument2, @ptrCast(self)), pFaxServer, pvFaxOutgoingJobIDs, plErrorBodyFile);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IFaxConfiguration_Value = Guid.initString("10f4d0f7-0994-4543-ab6e-506949128c40");
pub const IID_IFaxConfiguration = &IID_IFaxConfiguration_Value;
pub const IFaxConfiguration = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_UseArchive: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                pbUseArchive: ?*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 IFaxConfiguration,
                pbUseArchive: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_UseArchive: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                bUseArchive: 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 IFaxConfiguration,
                bUseArchive: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ArchiveLocation: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                pbstrArchiveLocation: ?*?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 IFaxConfiguration,
                pbstrArchiveLocation: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ArchiveLocation: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                bstrArchiveLocation: ?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 IFaxConfiguration,
                bstrArchiveLocation: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SizeQuotaWarning: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                pbSizeQuotaWarning: ?*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 IFaxConfiguration,
                pbSizeQuotaWarning: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SizeQuotaWarning: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                bSizeQuotaWarning: 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 IFaxConfiguration,
                bSizeQuotaWarning: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_HighQuotaWaterMark: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                plHighQuotaWaterMark: ?*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 IFaxConfiguration,
                plHighQuotaWaterMark: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_HighQuotaWaterMark: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                lHighQuotaWaterMark: 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 IFaxConfiguration,
                lHighQuotaWaterMark: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_LowQuotaWaterMark: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                plLowQuotaWaterMark: ?*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 IFaxConfiguration,
                plLowQuotaWaterMark: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_LowQuotaWaterMark: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                lLowQuotaWaterMark: 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 IFaxConfiguration,
                lLowQuotaWaterMark: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ArchiveAgeLimit: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                plArchiveAgeLimit: ?*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 IFaxConfiguration,
                plArchiveAgeLimit: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ArchiveAgeLimit: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                lArchiveAgeLimit: 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 IFaxConfiguration,
                lArchiveAgeLimit: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ArchiveSizeLow: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                plSizeLow: ?*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 IFaxConfiguration,
                plSizeLow: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ArchiveSizeHigh: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                plSizeHigh: ?*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 IFaxConfiguration,
                plSizeHigh: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_OutgoingQueueBlocked: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                pbOutgoingBlocked: ?*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 IFaxConfiguration,
                pbOutgoingBlocked: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_OutgoingQueueBlocked: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                bOutgoingBlocked: 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 IFaxConfiguration,
                bOutgoingBlocked: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_OutgoingQueuePaused: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                pbOutgoingPaused: ?*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 IFaxConfiguration,
                pbOutgoingPaused: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_OutgoingQueuePaused: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                bOutgoingPaused: 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 IFaxConfiguration,
                bOutgoingPaused: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AllowPersonalCoverPages: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                pbAllowPersonalCoverPages: ?*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 IFaxConfiguration,
                pbAllowPersonalCoverPages: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_AllowPersonalCoverPages: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                bAllowPersonalCoverPages: 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 IFaxConfiguration,
                bAllowPersonalCoverPages: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_UseDeviceTSID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                pbUseDeviceTSID: ?*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 IFaxConfiguration,
                pbUseDeviceTSID: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_UseDeviceTSID: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                bUseDeviceTSID: 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 IFaxConfiguration,
                bUseDeviceTSID: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Retries: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                plRetries: ?*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 IFaxConfiguration,
                plRetries: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Retries: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                lRetries: 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 IFaxConfiguration,
                lRetries: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RetryDelay: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                plRetryDelay: ?*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 IFaxConfiguration,
                plRetryDelay: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_RetryDelay: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                lRetryDelay: 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 IFaxConfiguration,
                lRetryDelay: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DiscountRateStart: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                pdateDiscountRateStart: ?*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 IFaxConfiguration,
                pdateDiscountRateStart: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_DiscountRateStart: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                dateDiscountRateStart: 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 IFaxConfiguration,
                dateDiscountRateStart: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_DiscountRateEnd: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                pdateDiscountRateEnd: ?*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 IFaxConfiguration,
                pdateDiscountRateEnd: ?*f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_DiscountRateEnd: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                dateDiscountRateEnd: 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 IFaxConfiguration,
                dateDiscountRateEnd: f64,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_OutgoingQueueAgeLimit: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                plOutgoingQueueAgeLimit: ?*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 IFaxConfiguration,
                plOutgoingQueueAgeLimit: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_OutgoingQueueAgeLimit: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                lOutgoingQueueAgeLimit: 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 IFaxConfiguration,
                lOutgoingQueueAgeLimit: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Branding: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                pbBranding: ?*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 IFaxConfiguration,
                pbBranding: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Branding: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                bBranding: 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 IFaxConfiguration,
                bBranding: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_IncomingQueueBlocked: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                pbIncomingBlocked: ?*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 IFaxConfiguration,
                pbIncomingBlocked: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_IncomingQueueBlocked: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                bIncomingBlocked: 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 IFaxConfiguration,
                bIncomingBlocked: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AutoCreateAccountOnConnect: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                pbAutoCreateAccountOnConnect: ?*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 IFaxConfiguration,
                pbAutoCreateAccountOnConnect: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_AutoCreateAccountOnConnect: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                bAutoCreateAccountOnConnect: 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 IFaxConfiguration,
                bAutoCreateAccountOnConnect: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_IncomingFaxesArePublic: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                pbIncomingFaxesArePublic: ?*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 IFaxConfiguration,
                pbIncomingFaxesArePublic: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_IncomingFaxesArePublic: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxConfiguration,
                bIncomingFaxesArePublic: 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 IFaxConfiguration,
                bIncomingFaxesArePublic: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Refresh: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxConfiguration,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxConfiguration,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Save: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxConfiguration,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxConfiguration,
            ) 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 IFaxConfiguration_get_UseArchive(self: *const T, pbUseArchive: ?*i16) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).get_UseArchive(@as(*const IFaxConfiguration, @ptrCast(self)), pbUseArchive);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_put_UseArchive(self: *const T, bUseArchive: i16) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).put_UseArchive(@as(*const IFaxConfiguration, @ptrCast(self)), bUseArchive);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_get_ArchiveLocation(self: *const T, pbstrArchiveLocation: ?*?BSTR) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).get_ArchiveLocation(@as(*const IFaxConfiguration, @ptrCast(self)), pbstrArchiveLocation);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_put_ArchiveLocation(self: *const T, bstrArchiveLocation: ?BSTR) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).put_ArchiveLocation(@as(*const IFaxConfiguration, @ptrCast(self)), bstrArchiveLocation);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_get_SizeQuotaWarning(self: *const T, pbSizeQuotaWarning: ?*i16) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).get_SizeQuotaWarning(@as(*const IFaxConfiguration, @ptrCast(self)), pbSizeQuotaWarning);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_put_SizeQuotaWarning(self: *const T, bSizeQuotaWarning: i16) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).put_SizeQuotaWarning(@as(*const IFaxConfiguration, @ptrCast(self)), bSizeQuotaWarning);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_get_HighQuotaWaterMark(self: *const T, plHighQuotaWaterMark: ?*i32) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).get_HighQuotaWaterMark(@as(*const IFaxConfiguration, @ptrCast(self)), plHighQuotaWaterMark);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_put_HighQuotaWaterMark(self: *const T, lHighQuotaWaterMark: i32) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).put_HighQuotaWaterMark(@as(*const IFaxConfiguration, @ptrCast(self)), lHighQuotaWaterMark);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_get_LowQuotaWaterMark(self: *const T, plLowQuotaWaterMark: ?*i32) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).get_LowQuotaWaterMark(@as(*const IFaxConfiguration, @ptrCast(self)), plLowQuotaWaterMark);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_put_LowQuotaWaterMark(self: *const T, lLowQuotaWaterMark: i32) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).put_LowQuotaWaterMark(@as(*const IFaxConfiguration, @ptrCast(self)), lLowQuotaWaterMark);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_get_ArchiveAgeLimit(self: *const T, plArchiveAgeLimit: ?*i32) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).get_ArchiveAgeLimit(@as(*const IFaxConfiguration, @ptrCast(self)), plArchiveAgeLimit);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_put_ArchiveAgeLimit(self: *const T, lArchiveAgeLimit: i32) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).put_ArchiveAgeLimit(@as(*const IFaxConfiguration, @ptrCast(self)), lArchiveAgeLimit);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_get_ArchiveSizeLow(self: *const T, plSizeLow: ?*i32) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).get_ArchiveSizeLow(@as(*const IFaxConfiguration, @ptrCast(self)), plSizeLow);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_get_ArchiveSizeHigh(self: *const T, plSizeHigh: ?*i32) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).get_ArchiveSizeHigh(@as(*const IFaxConfiguration, @ptrCast(self)), plSizeHigh);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_get_OutgoingQueueBlocked(self: *const T, pbOutgoingBlocked: ?*i16) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).get_OutgoingQueueBlocked(@as(*const IFaxConfiguration, @ptrCast(self)), pbOutgoingBlocked);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_put_OutgoingQueueBlocked(self: *const T, bOutgoingBlocked: i16) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).put_OutgoingQueueBlocked(@as(*const IFaxConfiguration, @ptrCast(self)), bOutgoingBlocked);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_get_OutgoingQueuePaused(self: *const T, pbOutgoingPaused: ?*i16) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).get_OutgoingQueuePaused(@as(*const IFaxConfiguration, @ptrCast(self)), pbOutgoingPaused);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_put_OutgoingQueuePaused(self: *const T, bOutgoingPaused: i16) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).put_OutgoingQueuePaused(@as(*const IFaxConfiguration, @ptrCast(self)), bOutgoingPaused);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_get_AllowPersonalCoverPages(self: *const T, pbAllowPersonalCoverPages: ?*i16) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).get_AllowPersonalCoverPages(@as(*const IFaxConfiguration, @ptrCast(self)), pbAllowPersonalCoverPages);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_put_AllowPersonalCoverPages(self: *const T, bAllowPersonalCoverPages: i16) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).put_AllowPersonalCoverPages(@as(*const IFaxConfiguration, @ptrCast(self)), bAllowPersonalCoverPages);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_get_UseDeviceTSID(self: *const T, pbUseDeviceTSID: ?*i16) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).get_UseDeviceTSID(@as(*const IFaxConfiguration, @ptrCast(self)), pbUseDeviceTSID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_put_UseDeviceTSID(self: *const T, bUseDeviceTSID: i16) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).put_UseDeviceTSID(@as(*const IFaxConfiguration, @ptrCast(self)), bUseDeviceTSID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_get_Retries(self: *const T, plRetries: ?*i32) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).get_Retries(@as(*const IFaxConfiguration, @ptrCast(self)), plRetries);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_put_Retries(self: *const T, lRetries: i32) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).put_Retries(@as(*const IFaxConfiguration, @ptrCast(self)), lRetries);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_get_RetryDelay(self: *const T, plRetryDelay: ?*i32) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).get_RetryDelay(@as(*const IFaxConfiguration, @ptrCast(self)), plRetryDelay);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_put_RetryDelay(self: *const T, lRetryDelay: i32) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).put_RetryDelay(@as(*const IFaxConfiguration, @ptrCast(self)), lRetryDelay);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_get_DiscountRateStart(self: *const T, pdateDiscountRateStart: ?*f64) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).get_DiscountRateStart(@as(*const IFaxConfiguration, @ptrCast(self)), pdateDiscountRateStart);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_put_DiscountRateStart(self: *const T, dateDiscountRateStart: f64) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).put_DiscountRateStart(@as(*const IFaxConfiguration, @ptrCast(self)), dateDiscountRateStart);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_get_DiscountRateEnd(self: *const T, pdateDiscountRateEnd: ?*f64) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).get_DiscountRateEnd(@as(*const IFaxConfiguration, @ptrCast(self)), pdateDiscountRateEnd);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_put_DiscountRateEnd(self: *const T, dateDiscountRateEnd: f64) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).put_DiscountRateEnd(@as(*const IFaxConfiguration, @ptrCast(self)), dateDiscountRateEnd);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_get_OutgoingQueueAgeLimit(self: *const T, plOutgoingQueueAgeLimit: ?*i32) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).get_OutgoingQueueAgeLimit(@as(*const IFaxConfiguration, @ptrCast(self)), plOutgoingQueueAgeLimit);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_put_OutgoingQueueAgeLimit(self: *const T, lOutgoingQueueAgeLimit: i32) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).put_OutgoingQueueAgeLimit(@as(*const IFaxConfiguration, @ptrCast(self)), lOutgoingQueueAgeLimit);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_get_Branding(self: *const T, pbBranding: ?*i16) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).get_Branding(@as(*const IFaxConfiguration, @ptrCast(self)), pbBranding);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_put_Branding(self: *const T, bBranding: i16) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).put_Branding(@as(*const IFaxConfiguration, @ptrCast(self)), bBranding);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_get_IncomingQueueBlocked(self: *const T, pbIncomingBlocked: ?*i16) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).get_IncomingQueueBlocked(@as(*const IFaxConfiguration, @ptrCast(self)), pbIncomingBlocked);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_put_IncomingQueueBlocked(self: *const T, bIncomingBlocked: i16) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).put_IncomingQueueBlocked(@as(*const IFaxConfiguration, @ptrCast(self)), bIncomingBlocked);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_get_AutoCreateAccountOnConnect(self: *const T, pbAutoCreateAccountOnConnect: ?*i16) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).get_AutoCreateAccountOnConnect(@as(*const IFaxConfiguration, @ptrCast(self)), pbAutoCreateAccountOnConnect);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_put_AutoCreateAccountOnConnect(self: *const T, bAutoCreateAccountOnConnect: i16) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).put_AutoCreateAccountOnConnect(@as(*const IFaxConfiguration, @ptrCast(self)), bAutoCreateAccountOnConnect);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_get_IncomingFaxesArePublic(self: *const T, pbIncomingFaxesArePublic: ?*i16) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).get_IncomingFaxesArePublic(@as(*const IFaxConfiguration, @ptrCast(self)), pbIncomingFaxesArePublic);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_put_IncomingFaxesArePublic(self: *const T, bIncomingFaxesArePublic: i16) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).put_IncomingFaxesArePublic(@as(*const IFaxConfiguration, @ptrCast(self)), bIncomingFaxesArePublic);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_Refresh(self: *const T) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).Refresh(@as(*const IFaxConfiguration, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxConfiguration_Save(self: *const T) HRESULT {
                return @as(*const IFaxConfiguration.VTable, @ptrCast(self.vtable)).Save(@as(*const IFaxConfiguration, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IFaxServer2_Value = Guid.initString("571ced0f-5609-4f40-9176-547e3a72ca7c");
pub const IID_IFaxServer2 = &IID_IFaxServer2_Value;
pub const IFaxServer2 = extern struct {
    pub const VTable = extern struct {
        base: IFaxServer.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Configuration: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxServer2,
                ppFaxConfiguration: ?*?*IFaxConfiguration,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxServer2,
                ppFaxConfiguration: ?*?*IFaxConfiguration,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_CurrentAccount: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxServer2,
                ppCurrentAccount: ?*?*IFaxAccount,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxServer2,
                ppCurrentAccount: ?*?*IFaxAccount,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_FaxAccountSet: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxServer2,
                ppFaxAccountSet: ?*?*IFaxAccountSet,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxServer2,
                ppFaxAccountSet: ?*?*IFaxAccountSet,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Security2: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxServer2,
                ppFaxSecurity2: ?*?*IFaxSecurity2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxServer2,
                ppFaxSecurity2: ?*?*IFaxSecurity2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IFaxServer.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer2_get_Configuration(self: *const T, ppFaxConfiguration: ?*?*IFaxConfiguration) HRESULT {
                return @as(*const IFaxServer2.VTable, @ptrCast(self.vtable)).get_Configuration(@as(*const IFaxServer2, @ptrCast(self)), ppFaxConfiguration);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer2_get_CurrentAccount(self: *const T, ppCurrentAccount: ?*?*IFaxAccount) HRESULT {
                return @as(*const IFaxServer2.VTable, @ptrCast(self.vtable)).get_CurrentAccount(@as(*const IFaxServer2, @ptrCast(self)), ppCurrentAccount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer2_get_FaxAccountSet(self: *const T, ppFaxAccountSet: ?*?*IFaxAccountSet) HRESULT {
                return @as(*const IFaxServer2.VTable, @ptrCast(self.vtable)).get_FaxAccountSet(@as(*const IFaxServer2, @ptrCast(self)), ppFaxAccountSet);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxServer2_get_Security2(self: *const T, ppFaxSecurity2: ?*?*IFaxSecurity2) HRESULT {
                return @as(*const IFaxServer2.VTable, @ptrCast(self.vtable)).get_Security2(@as(*const IFaxServer2, @ptrCast(self)), ppFaxSecurity2);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IFaxAccountSet_Value = Guid.initString("7428fbae-841e-47b8-86f4-2288946dca1b");
pub const IID_IFaxAccountSet = &IID_IFaxAccountSet_Value;
pub const IFaxAccountSet = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        GetAccounts: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxAccountSet,
                ppFaxAccounts: ?*?*IFaxAccounts,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxAccountSet,
                ppFaxAccounts: ?*?*IFaxAccounts,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetAccount: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxAccountSet,
                bstrAccountName: ?BSTR,
                pFaxAccount: ?*?*IFaxAccount,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxAccountSet,
                bstrAccountName: ?BSTR,
                pFaxAccount: ?*?*IFaxAccount,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AddAccount: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxAccountSet,
                bstrAccountName: ?BSTR,
                pFaxAccount: ?*?*IFaxAccount,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxAccountSet,
                bstrAccountName: ?BSTR,
                pFaxAccount: ?*?*IFaxAccount,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RemoveAccount: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxAccountSet,
                bstrAccountName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxAccountSet,
                bstrAccountName: ?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 IFaxAccountSet_GetAccounts(self: *const T, ppFaxAccounts: ?*?*IFaxAccounts) HRESULT {
                return @as(*const IFaxAccountSet.VTable, @ptrCast(self.vtable)).GetAccounts(@as(*const IFaxAccountSet, @ptrCast(self)), ppFaxAccounts);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxAccountSet_GetAccount(self: *const T, bstrAccountName: ?BSTR, pFaxAccount: ?*?*IFaxAccount) HRESULT {
                return @as(*const IFaxAccountSet.VTable, @ptrCast(self.vtable)).GetAccount(@as(*const IFaxAccountSet, @ptrCast(self)), bstrAccountName, pFaxAccount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxAccountSet_AddAccount(self: *const T, bstrAccountName: ?BSTR, pFaxAccount: ?*?*IFaxAccount) HRESULT {
                return @as(*const IFaxAccountSet.VTable, @ptrCast(self.vtable)).AddAccount(@as(*const IFaxAccountSet, @ptrCast(self)), bstrAccountName, pFaxAccount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxAccountSet_RemoveAccount(self: *const T, bstrAccountName: ?BSTR) HRESULT {
                return @as(*const IFaxAccountSet.VTable, @ptrCast(self.vtable)).RemoveAccount(@as(*const IFaxAccountSet, @ptrCast(self)), bstrAccountName);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IFaxAccounts_Value = Guid.initString("93ea8162-8be7-42d1-ae7b-ec74e2d989da");
pub const IID_IFaxAccounts = &IID_IFaxAccounts_Value;
pub const IFaxAccounts = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // 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 IFaxAccounts,
                ppUnk: ?*?*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 IFaxAccounts,
                ppUnk: ?*?*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 IFaxAccounts,
                vIndex: VARIANT,
                pFaxAccount: ?*?*IFaxAccount,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxAccounts,
                vIndex: VARIANT,
                pFaxAccount: ?*?*IFaxAccount,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // 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 IFaxAccounts,
                plCount: ?*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 IFaxAccounts,
                plCount: ?*i32,
            ) 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 IFaxAccounts_get__NewEnum(self: *const T, ppUnk: ?*?*IUnknown) HRESULT {
                return @as(*const IFaxAccounts.VTable, @ptrCast(self.vtable)).get__NewEnum(@as(*const IFaxAccounts, @ptrCast(self)), ppUnk);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxAccounts_get_Item(self: *const T, vIndex: VARIANT, pFaxAccount: ?*?*IFaxAccount) HRESULT {
                return @as(*const IFaxAccounts.VTable, @ptrCast(self.vtable)).get_Item(@as(*const IFaxAccounts, @ptrCast(self)), vIndex, pFaxAccount);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxAccounts_get_Count(self: *const T, plCount: ?*i32) HRESULT {
                return @as(*const IFaxAccounts.VTable, @ptrCast(self.vtable)).get_Count(@as(*const IFaxAccounts, @ptrCast(self)), plCount);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const FAX_ACCOUNT_EVENTS_TYPE_ENUM = enum(i32) {
    NONE = 0,
    IN_QUEUE = 1,
    OUT_QUEUE = 2,
    IN_ARCHIVE = 4,
    OUT_ARCHIVE = 8,
    FXSSVC_ENDED = 16,
};
pub const faetNONE = FAX_ACCOUNT_EVENTS_TYPE_ENUM.NONE;
pub const faetIN_QUEUE = FAX_ACCOUNT_EVENTS_TYPE_ENUM.IN_QUEUE;
pub const faetOUT_QUEUE = FAX_ACCOUNT_EVENTS_TYPE_ENUM.OUT_QUEUE;
pub const faetIN_ARCHIVE = FAX_ACCOUNT_EVENTS_TYPE_ENUM.IN_ARCHIVE;
pub const faetOUT_ARCHIVE = FAX_ACCOUNT_EVENTS_TYPE_ENUM.OUT_ARCHIVE;
pub const faetFXSSVC_ENDED = FAX_ACCOUNT_EVENTS_TYPE_ENUM.FXSSVC_ENDED;

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IFaxAccount_Value = Guid.initString("68535b33-5dc4-4086-be26-b76f9b711006");
pub const IID_IFaxAccount = &IID_IFaxAccount_Value;
pub const IFaxAccount = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_AccountName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxAccount,
                pbstrAccountName: ?*?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 IFaxAccount,
                pbstrAccountName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Folders: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxAccount,
                ppFolders: ?*?*IFaxAccountFolders,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxAccount,
                ppFolders: ?*?*IFaxAccountFolders,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ListenToAccountEvents: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxAccount,
                EventTypes: FAX_ACCOUNT_EVENTS_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxAccount,
                EventTypes: FAX_ACCOUNT_EVENTS_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_RegisteredEvents: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxAccount,
                pRegisteredEvents: ?*FAX_ACCOUNT_EVENTS_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxAccount,
                pRegisteredEvents: ?*FAX_ACCOUNT_EVENTS_TYPE_ENUM,
            ) 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 IFaxAccount_get_AccountName(self: *const T, pbstrAccountName: ?*?BSTR) HRESULT {
                return @as(*const IFaxAccount.VTable, @ptrCast(self.vtable)).get_AccountName(@as(*const IFaxAccount, @ptrCast(self)), pbstrAccountName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxAccount_get_Folders(self: *const T, ppFolders: ?*?*IFaxAccountFolders) HRESULT {
                return @as(*const IFaxAccount.VTable, @ptrCast(self.vtable)).get_Folders(@as(*const IFaxAccount, @ptrCast(self)), ppFolders);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxAccount_ListenToAccountEvents(self: *const T, EventTypes: FAX_ACCOUNT_EVENTS_TYPE_ENUM) HRESULT {
                return @as(*const IFaxAccount.VTable, @ptrCast(self.vtable)).ListenToAccountEvents(@as(*const IFaxAccount, @ptrCast(self)), EventTypes);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxAccount_get_RegisteredEvents(self: *const T, pRegisteredEvents: ?*FAX_ACCOUNT_EVENTS_TYPE_ENUM) HRESULT {
                return @as(*const IFaxAccount.VTable, @ptrCast(self.vtable)).get_RegisteredEvents(@as(*const IFaxAccount, @ptrCast(self)), pRegisteredEvents);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IFaxOutgoingJob2_Value = Guid.initString("418a8d96-59a0-4789-b176-edf3dc8fa8f7");
pub const IID_IFaxOutgoingJob2 = &IID_IFaxOutgoingJob2_Value;
pub const IFaxOutgoingJob2 = extern struct {
    pub const VTable = extern struct {
        base: IFaxOutgoingJob.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_HasCoverPage: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingJob2,
                pbHasCoverPage: ?*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 IFaxOutgoingJob2,
                pbHasCoverPage: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ReceiptAddress: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingJob2,
                pbstrReceiptAddress: ?*?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 IFaxOutgoingJob2,
                pbstrReceiptAddress: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ScheduleType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingJob2,
                pScheduleType: ?*FAX_SCHEDULE_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxOutgoingJob2,
                pScheduleType: ?*FAX_SCHEDULE_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IFaxOutgoingJob.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob2_get_HasCoverPage(self: *const T, pbHasCoverPage: ?*i16) HRESULT {
                return @as(*const IFaxOutgoingJob2.VTable, @ptrCast(self.vtable)).get_HasCoverPage(@as(*const IFaxOutgoingJob2, @ptrCast(self)), pbHasCoverPage);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob2_get_ReceiptAddress(self: *const T, pbstrReceiptAddress: ?*?BSTR) HRESULT {
                return @as(*const IFaxOutgoingJob2.VTable, @ptrCast(self.vtable)).get_ReceiptAddress(@as(*const IFaxOutgoingJob2, @ptrCast(self)), pbstrReceiptAddress);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingJob2_get_ScheduleType(self: *const T, pScheduleType: ?*FAX_SCHEDULE_TYPE_ENUM) HRESULT {
                return @as(*const IFaxOutgoingJob2.VTable, @ptrCast(self.vtable)).get_ScheduleType(@as(*const IFaxOutgoingJob2, @ptrCast(self)), pScheduleType);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IFaxAccountFolders_Value = Guid.initString("6463f89d-23d8-46a9-8f86-c47b77ca7926");
pub const IID_IFaxAccountFolders = &IID_IFaxAccountFolders_Value;
pub const IFaxAccountFolders = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_OutgoingQueue: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxAccountFolders,
                pFaxOutgoingQueue: ?*?*IFaxAccountOutgoingQueue,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxAccountFolders,
                pFaxOutgoingQueue: ?*?*IFaxAccountOutgoingQueue,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_IncomingQueue: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxAccountFolders,
                pFaxIncomingQueue: ?*?*IFaxAccountIncomingQueue,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxAccountFolders,
                pFaxIncomingQueue: ?*?*IFaxAccountIncomingQueue,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_IncomingArchive: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxAccountFolders,
                pFaxIncomingArchive: ?*?*IFaxAccountIncomingArchive,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxAccountFolders,
                pFaxIncomingArchive: ?*?*IFaxAccountIncomingArchive,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_OutgoingArchive: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxAccountFolders,
                pFaxOutgoingArchive: ?*?*IFaxAccountOutgoingArchive,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxAccountFolders,
                pFaxOutgoingArchive: ?*?*IFaxAccountOutgoingArchive,
            ) 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 IFaxAccountFolders_get_OutgoingQueue(self: *const T, pFaxOutgoingQueue: ?*?*IFaxAccountOutgoingQueue) HRESULT {
                return @as(*const IFaxAccountFolders.VTable, @ptrCast(self.vtable)).get_OutgoingQueue(@as(*const IFaxAccountFolders, @ptrCast(self)), pFaxOutgoingQueue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxAccountFolders_get_IncomingQueue(self: *const T, pFaxIncomingQueue: ?*?*IFaxAccountIncomingQueue) HRESULT {
                return @as(*const IFaxAccountFolders.VTable, @ptrCast(self.vtable)).get_IncomingQueue(@as(*const IFaxAccountFolders, @ptrCast(self)), pFaxIncomingQueue);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxAccountFolders_get_IncomingArchive(self: *const T, pFaxIncomingArchive: ?*?*IFaxAccountIncomingArchive) HRESULT {
                return @as(*const IFaxAccountFolders.VTable, @ptrCast(self.vtable)).get_IncomingArchive(@as(*const IFaxAccountFolders, @ptrCast(self)), pFaxIncomingArchive);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxAccountFolders_get_OutgoingArchive(self: *const T, pFaxOutgoingArchive: ?*?*IFaxAccountOutgoingArchive) HRESULT {
                return @as(*const IFaxAccountFolders.VTable, @ptrCast(self.vtable)).get_OutgoingArchive(@as(*const IFaxAccountFolders, @ptrCast(self)), pFaxOutgoingArchive);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IFaxAccountIncomingQueue_Value = Guid.initString("dd142d92-0186-4a95-a090-cbc3eadba6b4");
pub const IID_IFaxAccountIncomingQueue = &IID_IFaxAccountIncomingQueue_Value;
pub const IFaxAccountIncomingQueue = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        GetJobs: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxAccountIncomingQueue,
                pFaxIncomingJobs: ?*?*IFaxIncomingJobs,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxAccountIncomingQueue,
                pFaxIncomingJobs: ?*?*IFaxIncomingJobs,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetJob: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxAccountIncomingQueue,
                bstrJobId: ?BSTR,
                pFaxIncomingJob: ?*?*IFaxIncomingJob,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxAccountIncomingQueue,
                bstrJobId: ?BSTR,
                pFaxIncomingJob: ?*?*IFaxIncomingJob,
            ) 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 IFaxAccountIncomingQueue_GetJobs(self: *const T, pFaxIncomingJobs: ?*?*IFaxIncomingJobs) HRESULT {
                return @as(*const IFaxAccountIncomingQueue.VTable, @ptrCast(self.vtable)).GetJobs(@as(*const IFaxAccountIncomingQueue, @ptrCast(self)), pFaxIncomingJobs);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxAccountIncomingQueue_GetJob(self: *const T, bstrJobId: ?BSTR, pFaxIncomingJob: ?*?*IFaxIncomingJob) HRESULT {
                return @as(*const IFaxAccountIncomingQueue.VTable, @ptrCast(self.vtable)).GetJob(@as(*const IFaxAccountIncomingQueue, @ptrCast(self)), bstrJobId, pFaxIncomingJob);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IFaxAccountOutgoingQueue_Value = Guid.initString("0f1424e9-f22d-4553-b7a5-0d24bd0d7e46");
pub const IID_IFaxAccountOutgoingQueue = &IID_IFaxAccountOutgoingQueue_Value;
pub const IFaxAccountOutgoingQueue = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        GetJobs: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxAccountOutgoingQueue,
                pFaxOutgoingJobs: ?*?*IFaxOutgoingJobs,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxAccountOutgoingQueue,
                pFaxOutgoingJobs: ?*?*IFaxOutgoingJobs,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetJob: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxAccountOutgoingQueue,
                bstrJobId: ?BSTR,
                pFaxOutgoingJob: ?*?*IFaxOutgoingJob,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxAccountOutgoingQueue,
                bstrJobId: ?BSTR,
                pFaxOutgoingJob: ?*?*IFaxOutgoingJob,
            ) 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 IFaxAccountOutgoingQueue_GetJobs(self: *const T, pFaxOutgoingJobs: ?*?*IFaxOutgoingJobs) HRESULT {
                return @as(*const IFaxAccountOutgoingQueue.VTable, @ptrCast(self.vtable)).GetJobs(@as(*const IFaxAccountOutgoingQueue, @ptrCast(self)), pFaxOutgoingJobs);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxAccountOutgoingQueue_GetJob(self: *const T, bstrJobId: ?BSTR, pFaxOutgoingJob: ?*?*IFaxOutgoingJob) HRESULT {
                return @as(*const IFaxAccountOutgoingQueue.VTable, @ptrCast(self.vtable)).GetJob(@as(*const IFaxAccountOutgoingQueue, @ptrCast(self)), bstrJobId, pFaxOutgoingJob);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IFaxOutgoingMessage2_Value = Guid.initString("b37df687-bc88-4b46-b3be-b458b3ea9e7f");
pub const IID_IFaxOutgoingMessage2 = &IID_IFaxOutgoingMessage2_Value;
pub const IFaxOutgoingMessage2 = extern struct {
    pub const VTable = extern struct {
        base: IFaxOutgoingMessage.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_HasCoverPage: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingMessage2,
                pbHasCoverPage: ?*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 IFaxOutgoingMessage2,
                pbHasCoverPage: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ReceiptType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingMessage2,
                pReceiptType: ?*FAX_RECEIPT_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxOutgoingMessage2,
                pReceiptType: ?*FAX_RECEIPT_TYPE_ENUM,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ReceiptAddress: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingMessage2,
                pbstrReceiptAddress: ?*?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 IFaxOutgoingMessage2,
                pbstrReceiptAddress: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Read: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingMessage2,
                pbRead: ?*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 IFaxOutgoingMessage2,
                pbRead: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Read: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxOutgoingMessage2,
                bRead: 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 IFaxOutgoingMessage2,
                bRead: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Save: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutgoingMessage2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutgoingMessage2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Refresh: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxOutgoingMessage2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxOutgoingMessage2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IFaxOutgoingMessage.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessage2_get_HasCoverPage(self: *const T, pbHasCoverPage: ?*i16) HRESULT {
                return @as(*const IFaxOutgoingMessage2.VTable, @ptrCast(self.vtable)).get_HasCoverPage(@as(*const IFaxOutgoingMessage2, @ptrCast(self)), pbHasCoverPage);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessage2_get_ReceiptType(self: *const T, pReceiptType: ?*FAX_RECEIPT_TYPE_ENUM) HRESULT {
                return @as(*const IFaxOutgoingMessage2.VTable, @ptrCast(self.vtable)).get_ReceiptType(@as(*const IFaxOutgoingMessage2, @ptrCast(self)), pReceiptType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessage2_get_ReceiptAddress(self: *const T, pbstrReceiptAddress: ?*?BSTR) HRESULT {
                return @as(*const IFaxOutgoingMessage2.VTable, @ptrCast(self.vtable)).get_ReceiptAddress(@as(*const IFaxOutgoingMessage2, @ptrCast(self)), pbstrReceiptAddress);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessage2_get_Read(self: *const T, pbRead: ?*i16) HRESULT {
                return @as(*const IFaxOutgoingMessage2.VTable, @ptrCast(self.vtable)).get_Read(@as(*const IFaxOutgoingMessage2, @ptrCast(self)), pbRead);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessage2_put_Read(self: *const T, bRead: i16) HRESULT {
                return @as(*const IFaxOutgoingMessage2.VTable, @ptrCast(self.vtable)).put_Read(@as(*const IFaxOutgoingMessage2, @ptrCast(self)), bRead);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessage2_Save(self: *const T) HRESULT {
                return @as(*const IFaxOutgoingMessage2.VTable, @ptrCast(self.vtable)).Save(@as(*const IFaxOutgoingMessage2, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxOutgoingMessage2_Refresh(self: *const T) HRESULT {
                return @as(*const IFaxOutgoingMessage2.VTable, @ptrCast(self.vtable)).Refresh(@as(*const IFaxOutgoingMessage2, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IFaxAccountIncomingArchive_Value = Guid.initString("a8a5b6ef-e0d6-4aee-955c-91625bec9db4");
pub const IID_IFaxAccountIncomingArchive = &IID_IFaxAccountIncomingArchive_Value;
pub const IFaxAccountIncomingArchive = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SizeLow: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxAccountIncomingArchive,
                plSizeLow: ?*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 IFaxAccountIncomingArchive,
                plSizeLow: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SizeHigh: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxAccountIncomingArchive,
                plSizeHigh: ?*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 IFaxAccountIncomingArchive,
                plSizeHigh: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Refresh: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxAccountIncomingArchive,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxAccountIncomingArchive,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetMessages: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxAccountIncomingArchive,
                lPrefetchSize: i32,
                pFaxIncomingMessageIterator: ?*?*IFaxIncomingMessageIterator,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxAccountIncomingArchive,
                lPrefetchSize: i32,
                pFaxIncomingMessageIterator: ?*?*IFaxIncomingMessageIterator,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetMessage: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxAccountIncomingArchive,
                bstrMessageId: ?BSTR,
                pFaxIncomingMessage: ?*?*IFaxIncomingMessage,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxAccountIncomingArchive,
                bstrMessageId: ?BSTR,
                pFaxIncomingMessage: ?*?*IFaxIncomingMessage,
            ) 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 IFaxAccountIncomingArchive_get_SizeLow(self: *const T, plSizeLow: ?*i32) HRESULT {
                return @as(*const IFaxAccountIncomingArchive.VTable, @ptrCast(self.vtable)).get_SizeLow(@as(*const IFaxAccountIncomingArchive, @ptrCast(self)), plSizeLow);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxAccountIncomingArchive_get_SizeHigh(self: *const T, plSizeHigh: ?*i32) HRESULT {
                return @as(*const IFaxAccountIncomingArchive.VTable, @ptrCast(self.vtable)).get_SizeHigh(@as(*const IFaxAccountIncomingArchive, @ptrCast(self)), plSizeHigh);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxAccountIncomingArchive_Refresh(self: *const T) HRESULT {
                return @as(*const IFaxAccountIncomingArchive.VTable, @ptrCast(self.vtable)).Refresh(@as(*const IFaxAccountIncomingArchive, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxAccountIncomingArchive_GetMessages(self: *const T, lPrefetchSize: i32, pFaxIncomingMessageIterator: ?*?*IFaxIncomingMessageIterator) HRESULT {
                return @as(*const IFaxAccountIncomingArchive.VTable, @ptrCast(self.vtable)).GetMessages(@as(*const IFaxAccountIncomingArchive, @ptrCast(self)), lPrefetchSize, pFaxIncomingMessageIterator);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxAccountIncomingArchive_GetMessage(self: *const T, bstrMessageId: ?BSTR, pFaxIncomingMessage: ?*?*IFaxIncomingMessage) HRESULT {
                return @as(*const IFaxAccountIncomingArchive.VTable, @ptrCast(self.vtable)).GetMessage(@as(*const IFaxAccountIncomingArchive, @ptrCast(self)), bstrMessageId, pFaxIncomingMessage);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IFaxAccountOutgoingArchive_Value = Guid.initString("5463076d-ec14-491f-926e-b3ceda5e5662");
pub const IID_IFaxAccountOutgoingArchive = &IID_IFaxAccountOutgoingArchive_Value;
pub const IFaxAccountOutgoingArchive = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SizeLow: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxAccountOutgoingArchive,
                plSizeLow: ?*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 IFaxAccountOutgoingArchive,
                plSizeLow: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SizeHigh: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxAccountOutgoingArchive,
                plSizeHigh: ?*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 IFaxAccountOutgoingArchive,
                plSizeHigh: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Refresh: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxAccountOutgoingArchive,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxAccountOutgoingArchive,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetMessages: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxAccountOutgoingArchive,
                lPrefetchSize: i32,
                pFaxOutgoingMessageIterator: ?*?*IFaxOutgoingMessageIterator,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxAccountOutgoingArchive,
                lPrefetchSize: i32,
                pFaxOutgoingMessageIterator: ?*?*IFaxOutgoingMessageIterator,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetMessage: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxAccountOutgoingArchive,
                bstrMessageId: ?BSTR,
                pFaxOutgoingMessage: ?*?*IFaxOutgoingMessage,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxAccountOutgoingArchive,
                bstrMessageId: ?BSTR,
                pFaxOutgoingMessage: ?*?*IFaxOutgoingMessage,
            ) 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 IFaxAccountOutgoingArchive_get_SizeLow(self: *const T, plSizeLow: ?*i32) HRESULT {
                return @as(*const IFaxAccountOutgoingArchive.VTable, @ptrCast(self.vtable)).get_SizeLow(@as(*const IFaxAccountOutgoingArchive, @ptrCast(self)), plSizeLow);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxAccountOutgoingArchive_get_SizeHigh(self: *const T, plSizeHigh: ?*i32) HRESULT {
                return @as(*const IFaxAccountOutgoingArchive.VTable, @ptrCast(self.vtable)).get_SizeHigh(@as(*const IFaxAccountOutgoingArchive, @ptrCast(self)), plSizeHigh);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxAccountOutgoingArchive_Refresh(self: *const T) HRESULT {
                return @as(*const IFaxAccountOutgoingArchive.VTable, @ptrCast(self.vtable)).Refresh(@as(*const IFaxAccountOutgoingArchive, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxAccountOutgoingArchive_GetMessages(self: *const T, lPrefetchSize: i32, pFaxOutgoingMessageIterator: ?*?*IFaxOutgoingMessageIterator) HRESULT {
                return @as(*const IFaxAccountOutgoingArchive.VTable, @ptrCast(self.vtable)).GetMessages(@as(*const IFaxAccountOutgoingArchive, @ptrCast(self)), lPrefetchSize, pFaxOutgoingMessageIterator);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxAccountOutgoingArchive_GetMessage(self: *const T, bstrMessageId: ?BSTR, pFaxOutgoingMessage: ?*?*IFaxOutgoingMessage) HRESULT {
                return @as(*const IFaxAccountOutgoingArchive.VTable, @ptrCast(self.vtable)).GetMessage(@as(*const IFaxAccountOutgoingArchive, @ptrCast(self)), bstrMessageId, pFaxOutgoingMessage);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const FAX_ACCESS_RIGHTS_ENUM_2 = enum(i32) {
    SUBMIT_LOW = 1,
    SUBMIT_NORMAL = 2,
    SUBMIT_HIGH = 4,
    QUERY_OUT_JOBS = 8,
    MANAGE_OUT_JOBS = 16,
    QUERY_CONFIG = 32,
    MANAGE_CONFIG = 64,
    QUERY_ARCHIVES = 128,
    MANAGE_ARCHIVES = 256,
    MANAGE_RECEIVE_FOLDER = 512,
};
pub const far2SUBMIT_LOW = FAX_ACCESS_RIGHTS_ENUM_2.SUBMIT_LOW;
pub const far2SUBMIT_NORMAL = FAX_ACCESS_RIGHTS_ENUM_2.SUBMIT_NORMAL;
pub const far2SUBMIT_HIGH = FAX_ACCESS_RIGHTS_ENUM_2.SUBMIT_HIGH;
pub const far2QUERY_OUT_JOBS = FAX_ACCESS_RIGHTS_ENUM_2.QUERY_OUT_JOBS;
pub const far2MANAGE_OUT_JOBS = FAX_ACCESS_RIGHTS_ENUM_2.MANAGE_OUT_JOBS;
pub const far2QUERY_CONFIG = FAX_ACCESS_RIGHTS_ENUM_2.QUERY_CONFIG;
pub const far2MANAGE_CONFIG = FAX_ACCESS_RIGHTS_ENUM_2.MANAGE_CONFIG;
pub const far2QUERY_ARCHIVES = FAX_ACCESS_RIGHTS_ENUM_2.QUERY_ARCHIVES;
pub const far2MANAGE_ARCHIVES = FAX_ACCESS_RIGHTS_ENUM_2.MANAGE_ARCHIVES;
pub const far2MANAGE_RECEIVE_FOLDER = FAX_ACCESS_RIGHTS_ENUM_2.MANAGE_RECEIVE_FOLDER;

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IFaxSecurity2_Value = Guid.initString("17d851f4-d09b-48fc-99c9-8f24c4db9ab1");
pub const IID_IFaxSecurity2 = &IID_IFaxSecurity2_Value;
pub const IFaxSecurity2 = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Descriptor: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSecurity2,
                pvDescriptor: ?*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 IFaxSecurity2,
                pvDescriptor: ?*VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Descriptor: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSecurity2,
                vDescriptor: 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 IFaxSecurity2,
                vDescriptor: VARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_GrantedRights: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSecurity2,
                pGrantedRights: ?*FAX_ACCESS_RIGHTS_ENUM_2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IFaxSecurity2,
                pGrantedRights: ?*FAX_ACCESS_RIGHTS_ENUM_2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Refresh: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxSecurity2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxSecurity2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Save: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxSecurity2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxSecurity2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_InformationType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSecurity2,
                plInformationType: ?*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 IFaxSecurity2,
                plInformationType: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_InformationType: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxSecurity2,
                lInformationType: 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 IFaxSecurity2,
                lInformationType: i32,
            ) 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 IFaxSecurity2_get_Descriptor(self: *const T, pvDescriptor: ?*VARIANT) HRESULT {
                return @as(*const IFaxSecurity2.VTable, @ptrCast(self.vtable)).get_Descriptor(@as(*const IFaxSecurity2, @ptrCast(self)), pvDescriptor);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSecurity2_put_Descriptor(self: *const T, vDescriptor: VARIANT) HRESULT {
                return @as(*const IFaxSecurity2.VTable, @ptrCast(self.vtable)).put_Descriptor(@as(*const IFaxSecurity2, @ptrCast(self)), vDescriptor);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSecurity2_get_GrantedRights(self: *const T, pGrantedRights: ?*FAX_ACCESS_RIGHTS_ENUM_2) HRESULT {
                return @as(*const IFaxSecurity2.VTable, @ptrCast(self.vtable)).get_GrantedRights(@as(*const IFaxSecurity2, @ptrCast(self)), pGrantedRights);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSecurity2_Refresh(self: *const T) HRESULT {
                return @as(*const IFaxSecurity2.VTable, @ptrCast(self.vtable)).Refresh(@as(*const IFaxSecurity2, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSecurity2_Save(self: *const T) HRESULT {
                return @as(*const IFaxSecurity2.VTable, @ptrCast(self.vtable)).Save(@as(*const IFaxSecurity2, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSecurity2_get_InformationType(self: *const T, plInformationType: ?*i32) HRESULT {
                return @as(*const IFaxSecurity2.VTable, @ptrCast(self.vtable)).get_InformationType(@as(*const IFaxSecurity2, @ptrCast(self)), plInformationType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxSecurity2_put_InformationType(self: *const T, lInformationType: i32) HRESULT {
                return @as(*const IFaxSecurity2.VTable, @ptrCast(self.vtable)).put_InformationType(@as(*const IFaxSecurity2, @ptrCast(self)), lInformationType);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IFaxIncomingMessage2_Value = Guid.initString("f9208503-e2bc-48f3-9ec0-e6236f9b509a");
pub const IID_IFaxIncomingMessage2 = &IID_IFaxIncomingMessage2_Value;
pub const IFaxIncomingMessage2 = extern struct {
    pub const VTable = extern struct {
        base: IFaxIncomingMessage.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Subject: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingMessage2,
                pbstrSubject: ?*?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 IFaxIncomingMessage2,
                pbstrSubject: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Subject: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingMessage2,
                bstrSubject: ?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 IFaxIncomingMessage2,
                bstrSubject: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SenderName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingMessage2,
                pbstrSenderName: ?*?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 IFaxIncomingMessage2,
                pbstrSenderName: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SenderName: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingMessage2,
                bstrSenderName: ?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 IFaxIncomingMessage2,
                bstrSenderName: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_SenderFaxNumber: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingMessage2,
                pbstrSenderFaxNumber: ?*?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 IFaxIncomingMessage2,
                pbstrSenderFaxNumber: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_SenderFaxNumber: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingMessage2,
                bstrSenderFaxNumber: ?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 IFaxIncomingMessage2,
                bstrSenderFaxNumber: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_HasCoverPage: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingMessage2,
                pbHasCoverPage: ?*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 IFaxIncomingMessage2,
                pbHasCoverPage: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_HasCoverPage: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingMessage2,
                bHasCoverPage: 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 IFaxIncomingMessage2,
                bHasCoverPage: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Recipients: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingMessage2,
                pbstrRecipients: ?*?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 IFaxIncomingMessage2,
                pbstrRecipients: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Recipients: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingMessage2,
                bstrRecipients: ?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 IFaxIncomingMessage2,
                bstrRecipients: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_WasReAssigned: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingMessage2,
                pbWasReAssigned: ?*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 IFaxIncomingMessage2,
                pbWasReAssigned: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_Read: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingMessage2,
                pbRead: ?*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 IFaxIncomingMessage2,
                pbRead: ?*i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_Read: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IFaxIncomingMessage2,
                bRead: 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 IFaxIncomingMessage2,
                bRead: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ReAssign: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxIncomingMessage2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxIncomingMessage2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Save: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxIncomingMessage2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxIncomingMessage2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Refresh: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IFaxIncomingMessage2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IFaxIncomingMessage2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IFaxIncomingMessage.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage2_get_Subject(self: *const T, pbstrSubject: ?*?BSTR) HRESULT {
                return @as(*const IFaxIncomingMessage2.VTable, @ptrCast(self.vtable)).get_Subject(@as(*const IFaxIncomingMessage2, @ptrCast(self)), pbstrSubject);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage2_put_Subject(self: *const T, bstrSubject: ?BSTR) HRESULT {
                return @as(*const IFaxIncomingMessage2.VTable, @ptrCast(self.vtable)).put_Subject(@as(*const IFaxIncomingMessage2, @ptrCast(self)), bstrSubject);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage2_get_SenderName(self: *const T, pbstrSenderName: ?*?BSTR) HRESULT {
                return @as(*const IFaxIncomingMessage2.VTable, @ptrCast(self.vtable)).get_SenderName(@as(*const IFaxIncomingMessage2, @ptrCast(self)), pbstrSenderName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage2_put_SenderName(self: *const T, bstrSenderName: ?BSTR) HRESULT {
                return @as(*const IFaxIncomingMessage2.VTable, @ptrCast(self.vtable)).put_SenderName(@as(*const IFaxIncomingMessage2, @ptrCast(self)), bstrSenderName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage2_get_SenderFaxNumber(self: *const T, pbstrSenderFaxNumber: ?*?BSTR) HRESULT {
                return @as(*const IFaxIncomingMessage2.VTable, @ptrCast(self.vtable)).get_SenderFaxNumber(@as(*const IFaxIncomingMessage2, @ptrCast(self)), pbstrSenderFaxNumber);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage2_put_SenderFaxNumber(self: *const T, bstrSenderFaxNumber: ?BSTR) HRESULT {
                return @as(*const IFaxIncomingMessage2.VTable, @ptrCast(self.vtable)).put_SenderFaxNumber(@as(*const IFaxIncomingMessage2, @ptrCast(self)), bstrSenderFaxNumber);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage2_get_HasCoverPage(self: *const T, pbHasCoverPage: ?*i16) HRESULT {
                return @as(*const IFaxIncomingMessage2.VTable, @ptrCast(self.vtable)).get_HasCoverPage(@as(*const IFaxIncomingMessage2, @ptrCast(self)), pbHasCoverPage);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage2_put_HasCoverPage(self: *const T, bHasCoverPage: i16) HRESULT {
                return @as(*const IFaxIncomingMessage2.VTable, @ptrCast(self.vtable)).put_HasCoverPage(@as(*const IFaxIncomingMessage2, @ptrCast(self)), bHasCoverPage);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage2_get_Recipients(self: *const T, pbstrRecipients: ?*?BSTR) HRESULT {
                return @as(*const IFaxIncomingMessage2.VTable, @ptrCast(self.vtable)).get_Recipients(@as(*const IFaxIncomingMessage2, @ptrCast(self)), pbstrRecipients);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage2_put_Recipients(self: *const T, bstrRecipients: ?BSTR) HRESULT {
                return @as(*const IFaxIncomingMessage2.VTable, @ptrCast(self.vtable)).put_Recipients(@as(*const IFaxIncomingMessage2, @ptrCast(self)), bstrRecipients);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage2_get_WasReAssigned(self: *const T, pbWasReAssigned: ?*i16) HRESULT {
                return @as(*const IFaxIncomingMessage2.VTable, @ptrCast(self.vtable)).get_WasReAssigned(@as(*const IFaxIncomingMessage2, @ptrCast(self)), pbWasReAssigned);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage2_get_Read(self: *const T, pbRead: ?*i16) HRESULT {
                return @as(*const IFaxIncomingMessage2.VTable, @ptrCast(self.vtable)).get_Read(@as(*const IFaxIncomingMessage2, @ptrCast(self)), pbRead);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage2_put_Read(self: *const T, bRead: i16) HRESULT {
                return @as(*const IFaxIncomingMessage2.VTable, @ptrCast(self.vtable)).put_Read(@as(*const IFaxIncomingMessage2, @ptrCast(self)), bRead);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage2_ReAssign(self: *const T) HRESULT {
                return @as(*const IFaxIncomingMessage2.VTable, @ptrCast(self.vtable)).ReAssign(@as(*const IFaxIncomingMessage2, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage2_Save(self: *const T) HRESULT {
                return @as(*const IFaxIncomingMessage2.VTable, @ptrCast(self.vtable)).Save(@as(*const IFaxIncomingMessage2, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IFaxIncomingMessage2_Refresh(self: *const T) HRESULT {
                return @as(*const IFaxIncomingMessage2.VTable, @ptrCast(self.vtable)).Refresh(@as(*const IFaxIncomingMessage2, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const FAX_ROUTING_RULE_CODE_ENUM = enum(i32) {
    E = 0,
};
pub const frrcANY_CODE = FAX_ROUTING_RULE_CODE_ENUM.E;

const IID_IFaxServerNotify_Value = Guid.initString("2e037b27-cf8a-4abd-b1e0-5704943bea6f");
pub const IID_IFaxServerNotify = &IID_IFaxServerNotify_Value;
pub const IFaxServerNotify = 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());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID__IFaxServerNotify2_Value = Guid.initString("ec9c69b9-5fe7-4805-9467-82fcd96af903");
pub const IID__IFaxServerNotify2 = &IID__IFaxServerNotify2_Value;
pub const _IFaxServerNotify2 = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        OnIncomingJobAdded: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                bstrJobId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                bstrJobId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnIncomingJobRemoved: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                bstrJobId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                bstrJobId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnIncomingJobChanged: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                bstrJobId: ?BSTR,
                pJobStatus: ?*IFaxJobStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                bstrJobId: ?BSTR,
                pJobStatus: ?*IFaxJobStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnOutgoingJobAdded: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                bstrJobId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                bstrJobId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnOutgoingJobRemoved: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                bstrJobId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                bstrJobId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnOutgoingJobChanged: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                bstrJobId: ?BSTR,
                pJobStatus: ?*IFaxJobStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                bstrJobId: ?BSTR,
                pJobStatus: ?*IFaxJobStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnIncomingMessageAdded: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                bstrMessageId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                bstrMessageId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnIncomingMessageRemoved: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                bstrMessageId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                bstrMessageId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnOutgoingMessageAdded: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                bstrMessageId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                bstrMessageId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnOutgoingMessageRemoved: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                bstrMessageId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                bstrMessageId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnReceiptOptionsChange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnActivityLoggingConfigChange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnSecurityConfigChange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnEventLoggingConfigChange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnOutgoingQueueConfigChange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnOutgoingArchiveConfigChange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnIncomingArchiveConfigChange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnDevicesConfigChange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnOutboundRoutingGroupsConfigChange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnOutboundRoutingRulesConfigChange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnServerActivityChange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                lIncomingMessages: i32,
                lRoutingMessages: i32,
                lOutgoingMessages: i32,
                lQueuedMessages: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                lIncomingMessages: i32,
                lRoutingMessages: i32,
                lOutgoingMessages: i32,
                lQueuedMessages: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnQueuesStatusChange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                bOutgoingQueueBlocked: i16,
                bOutgoingQueuePaused: i16,
                bIncomingQueueBlocked: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                bOutgoingQueueBlocked: i16,
                bOutgoingQueuePaused: i16,
                bIncomingQueueBlocked: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnNewCall: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                lCallId: i32,
                lDeviceId: i32,
                bstrCallerId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                lCallId: i32,
                lDeviceId: i32,
                bstrCallerId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnServerShutDown: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnDeviceStatusChange: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                lDeviceId: i32,
                bPoweredOff: i16,
                bSending: i16,
                bReceiving: i16,
                bRinging: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
                lDeviceId: i32,
                bPoweredOff: i16,
                bSending: i16,
                bReceiving: i16,
                bRinging: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnGeneralServerConfigChanged: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxServerNotify2,
                pFaxServer: ?*IFaxServer2,
            ) 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 _IFaxServerNotify2_OnIncomingJobAdded(self: *const T, pFaxServer: ?*IFaxServer2, bstrJobId: ?BSTR) HRESULT {
                return @as(*const _IFaxServerNotify2.VTable, @ptrCast(self.vtable)).OnIncomingJobAdded(@as(*const _IFaxServerNotify2, @ptrCast(self)), pFaxServer, bstrJobId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxServerNotify2_OnIncomingJobRemoved(self: *const T, pFaxServer: ?*IFaxServer2, bstrJobId: ?BSTR) HRESULT {
                return @as(*const _IFaxServerNotify2.VTable, @ptrCast(self.vtable)).OnIncomingJobRemoved(@as(*const _IFaxServerNotify2, @ptrCast(self)), pFaxServer, bstrJobId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxServerNotify2_OnIncomingJobChanged(self: *const T, pFaxServer: ?*IFaxServer2, bstrJobId: ?BSTR, pJobStatus: ?*IFaxJobStatus) HRESULT {
                return @as(*const _IFaxServerNotify2.VTable, @ptrCast(self.vtable)).OnIncomingJobChanged(@as(*const _IFaxServerNotify2, @ptrCast(self)), pFaxServer, bstrJobId, pJobStatus);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxServerNotify2_OnOutgoingJobAdded(self: *const T, pFaxServer: ?*IFaxServer2, bstrJobId: ?BSTR) HRESULT {
                return @as(*const _IFaxServerNotify2.VTable, @ptrCast(self.vtable)).OnOutgoingJobAdded(@as(*const _IFaxServerNotify2, @ptrCast(self)), pFaxServer, bstrJobId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxServerNotify2_OnOutgoingJobRemoved(self: *const T, pFaxServer: ?*IFaxServer2, bstrJobId: ?BSTR) HRESULT {
                return @as(*const _IFaxServerNotify2.VTable, @ptrCast(self.vtable)).OnOutgoingJobRemoved(@as(*const _IFaxServerNotify2, @ptrCast(self)), pFaxServer, bstrJobId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxServerNotify2_OnOutgoingJobChanged(self: *const T, pFaxServer: ?*IFaxServer2, bstrJobId: ?BSTR, pJobStatus: ?*IFaxJobStatus) HRESULT {
                return @as(*const _IFaxServerNotify2.VTable, @ptrCast(self.vtable)).OnOutgoingJobChanged(@as(*const _IFaxServerNotify2, @ptrCast(self)), pFaxServer, bstrJobId, pJobStatus);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxServerNotify2_OnIncomingMessageAdded(self: *const T, pFaxServer: ?*IFaxServer2, bstrMessageId: ?BSTR) HRESULT {
                return @as(*const _IFaxServerNotify2.VTable, @ptrCast(self.vtable)).OnIncomingMessageAdded(@as(*const _IFaxServerNotify2, @ptrCast(self)), pFaxServer, bstrMessageId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxServerNotify2_OnIncomingMessageRemoved(self: *const T, pFaxServer: ?*IFaxServer2, bstrMessageId: ?BSTR) HRESULT {
                return @as(*const _IFaxServerNotify2.VTable, @ptrCast(self.vtable)).OnIncomingMessageRemoved(@as(*const _IFaxServerNotify2, @ptrCast(self)), pFaxServer, bstrMessageId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxServerNotify2_OnOutgoingMessageAdded(self: *const T, pFaxServer: ?*IFaxServer2, bstrMessageId: ?BSTR) HRESULT {
                return @as(*const _IFaxServerNotify2.VTable, @ptrCast(self.vtable)).OnOutgoingMessageAdded(@as(*const _IFaxServerNotify2, @ptrCast(self)), pFaxServer, bstrMessageId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxServerNotify2_OnOutgoingMessageRemoved(self: *const T, pFaxServer: ?*IFaxServer2, bstrMessageId: ?BSTR) HRESULT {
                return @as(*const _IFaxServerNotify2.VTable, @ptrCast(self.vtable)).OnOutgoingMessageRemoved(@as(*const _IFaxServerNotify2, @ptrCast(self)), pFaxServer, bstrMessageId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxServerNotify2_OnReceiptOptionsChange(self: *const T, pFaxServer: ?*IFaxServer2) HRESULT {
                return @as(*const _IFaxServerNotify2.VTable, @ptrCast(self.vtable)).OnReceiptOptionsChange(@as(*const _IFaxServerNotify2, @ptrCast(self)), pFaxServer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxServerNotify2_OnActivityLoggingConfigChange(self: *const T, pFaxServer: ?*IFaxServer2) HRESULT {
                return @as(*const _IFaxServerNotify2.VTable, @ptrCast(self.vtable)).OnActivityLoggingConfigChange(@as(*const _IFaxServerNotify2, @ptrCast(self)), pFaxServer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxServerNotify2_OnSecurityConfigChange(self: *const T, pFaxServer: ?*IFaxServer2) HRESULT {
                return @as(*const _IFaxServerNotify2.VTable, @ptrCast(self.vtable)).OnSecurityConfigChange(@as(*const _IFaxServerNotify2, @ptrCast(self)), pFaxServer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxServerNotify2_OnEventLoggingConfigChange(self: *const T, pFaxServer: ?*IFaxServer2) HRESULT {
                return @as(*const _IFaxServerNotify2.VTable, @ptrCast(self.vtable)).OnEventLoggingConfigChange(@as(*const _IFaxServerNotify2, @ptrCast(self)), pFaxServer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxServerNotify2_OnOutgoingQueueConfigChange(self: *const T, pFaxServer: ?*IFaxServer2) HRESULT {
                return @as(*const _IFaxServerNotify2.VTable, @ptrCast(self.vtable)).OnOutgoingQueueConfigChange(@as(*const _IFaxServerNotify2, @ptrCast(self)), pFaxServer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxServerNotify2_OnOutgoingArchiveConfigChange(self: *const T, pFaxServer: ?*IFaxServer2) HRESULT {
                return @as(*const _IFaxServerNotify2.VTable, @ptrCast(self.vtable)).OnOutgoingArchiveConfigChange(@as(*const _IFaxServerNotify2, @ptrCast(self)), pFaxServer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxServerNotify2_OnIncomingArchiveConfigChange(self: *const T, pFaxServer: ?*IFaxServer2) HRESULT {
                return @as(*const _IFaxServerNotify2.VTable, @ptrCast(self.vtable)).OnIncomingArchiveConfigChange(@as(*const _IFaxServerNotify2, @ptrCast(self)), pFaxServer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxServerNotify2_OnDevicesConfigChange(self: *const T, pFaxServer: ?*IFaxServer2) HRESULT {
                return @as(*const _IFaxServerNotify2.VTable, @ptrCast(self.vtable)).OnDevicesConfigChange(@as(*const _IFaxServerNotify2, @ptrCast(self)), pFaxServer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxServerNotify2_OnOutboundRoutingGroupsConfigChange(self: *const T, pFaxServer: ?*IFaxServer2) HRESULT {
                return @as(*const _IFaxServerNotify2.VTable, @ptrCast(self.vtable)).OnOutboundRoutingGroupsConfigChange(@as(*const _IFaxServerNotify2, @ptrCast(self)), pFaxServer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxServerNotify2_OnOutboundRoutingRulesConfigChange(self: *const T, pFaxServer: ?*IFaxServer2) HRESULT {
                return @as(*const _IFaxServerNotify2.VTable, @ptrCast(self.vtable)).OnOutboundRoutingRulesConfigChange(@as(*const _IFaxServerNotify2, @ptrCast(self)), pFaxServer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxServerNotify2_OnServerActivityChange(self: *const T, pFaxServer: ?*IFaxServer2, lIncomingMessages: i32, lRoutingMessages: i32, lOutgoingMessages: i32, lQueuedMessages: i32) HRESULT {
                return @as(*const _IFaxServerNotify2.VTable, @ptrCast(self.vtable)).OnServerActivityChange(@as(*const _IFaxServerNotify2, @ptrCast(self)), pFaxServer, lIncomingMessages, lRoutingMessages, lOutgoingMessages, lQueuedMessages);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxServerNotify2_OnQueuesStatusChange(self: *const T, pFaxServer: ?*IFaxServer2, bOutgoingQueueBlocked: i16, bOutgoingQueuePaused: i16, bIncomingQueueBlocked: i16) HRESULT {
                return @as(*const _IFaxServerNotify2.VTable, @ptrCast(self.vtable)).OnQueuesStatusChange(@as(*const _IFaxServerNotify2, @ptrCast(self)), pFaxServer, bOutgoingQueueBlocked, bOutgoingQueuePaused, bIncomingQueueBlocked);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxServerNotify2_OnNewCall(self: *const T, pFaxServer: ?*IFaxServer2, lCallId: i32, lDeviceId: i32, bstrCallerId: ?BSTR) HRESULT {
                return @as(*const _IFaxServerNotify2.VTable, @ptrCast(self.vtable)).OnNewCall(@as(*const _IFaxServerNotify2, @ptrCast(self)), pFaxServer, lCallId, lDeviceId, bstrCallerId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxServerNotify2_OnServerShutDown(self: *const T, pFaxServer: ?*IFaxServer2) HRESULT {
                return @as(*const _IFaxServerNotify2.VTable, @ptrCast(self.vtable)).OnServerShutDown(@as(*const _IFaxServerNotify2, @ptrCast(self)), pFaxServer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxServerNotify2_OnDeviceStatusChange(self: *const T, pFaxServer: ?*IFaxServer2, lDeviceId: i32, bPoweredOff: i16, bSending: i16, bReceiving: i16, bRinging: i16) HRESULT {
                return @as(*const _IFaxServerNotify2.VTable, @ptrCast(self.vtable)).OnDeviceStatusChange(@as(*const _IFaxServerNotify2, @ptrCast(self)), pFaxServer, lDeviceId, bPoweredOff, bSending, bReceiving, bRinging);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxServerNotify2_OnGeneralServerConfigChanged(self: *const T, pFaxServer: ?*IFaxServer2) HRESULT {
                return @as(*const _IFaxServerNotify2.VTable, @ptrCast(self.vtable)).OnGeneralServerConfigChanged(@as(*const _IFaxServerNotify2, @ptrCast(self)), pFaxServer);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IFaxServerNotify2_Value = Guid.initString("616ca8d6-a77a-4062-abfd-0e471241c7aa");
pub const IID_IFaxServerNotify2 = &IID_IFaxServerNotify2_Value;
pub const IFaxServerNotify2 = 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());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID__IFaxAccountNotify_Value = Guid.initString("b9b3bc81-ac1b-46f3-b39d-0adc30e1b788");
pub const IID__IFaxAccountNotify = &IID__IFaxAccountNotify_Value;
pub const _IFaxAccountNotify = extern struct {
    pub const VTable = extern struct {
        base: IDispatch.VTable,
        OnIncomingJobAdded: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxAccountNotify,
                pFaxAccount: ?*IFaxAccount,
                bstrJobId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxAccountNotify,
                pFaxAccount: ?*IFaxAccount,
                bstrJobId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnIncomingJobRemoved: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxAccountNotify,
                pFaxAccount: ?*IFaxAccount,
                bstrJobId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxAccountNotify,
                pFaxAccount: ?*IFaxAccount,
                bstrJobId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnIncomingJobChanged: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxAccountNotify,
                pFaxAccount: ?*IFaxAccount,
                bstrJobId: ?BSTR,
                pJobStatus: ?*IFaxJobStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxAccountNotify,
                pFaxAccount: ?*IFaxAccount,
                bstrJobId: ?BSTR,
                pJobStatus: ?*IFaxJobStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnOutgoingJobAdded: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxAccountNotify,
                pFaxAccount: ?*IFaxAccount,
                bstrJobId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxAccountNotify,
                pFaxAccount: ?*IFaxAccount,
                bstrJobId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnOutgoingJobRemoved: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxAccountNotify,
                pFaxAccount: ?*IFaxAccount,
                bstrJobId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxAccountNotify,
                pFaxAccount: ?*IFaxAccount,
                bstrJobId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnOutgoingJobChanged: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxAccountNotify,
                pFaxAccount: ?*IFaxAccount,
                bstrJobId: ?BSTR,
                pJobStatus: ?*IFaxJobStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxAccountNotify,
                pFaxAccount: ?*IFaxAccount,
                bstrJobId: ?BSTR,
                pJobStatus: ?*IFaxJobStatus,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnIncomingMessageAdded: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxAccountNotify,
                pFaxAccount: ?*IFaxAccount,
                bstrMessageId: ?BSTR,
                fAddedToReceiveFolder: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxAccountNotify,
                pFaxAccount: ?*IFaxAccount,
                bstrMessageId: ?BSTR,
                fAddedToReceiveFolder: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnIncomingMessageRemoved: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxAccountNotify,
                pFaxAccount: ?*IFaxAccount,
                bstrMessageId: ?BSTR,
                fRemovedFromReceiveFolder: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxAccountNotify,
                pFaxAccount: ?*IFaxAccount,
                bstrMessageId: ?BSTR,
                fRemovedFromReceiveFolder: i16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnOutgoingMessageAdded: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxAccountNotify,
                pFaxAccount: ?*IFaxAccount,
                bstrMessageId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxAccountNotify,
                pFaxAccount: ?*IFaxAccount,
                bstrMessageId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnOutgoingMessageRemoved: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxAccountNotify,
                pFaxAccount: ?*IFaxAccount,
                bstrMessageId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxAccountNotify,
                pFaxAccount: ?*IFaxAccount,
                bstrMessageId: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        OnServerShutDown: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const _IFaxAccountNotify,
                pFaxServer: ?*IFaxServer2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const _IFaxAccountNotify,
                pFaxServer: ?*IFaxServer2,
            ) 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 _IFaxAccountNotify_OnIncomingJobAdded(self: *const T, pFaxAccount: ?*IFaxAccount, bstrJobId: ?BSTR) HRESULT {
                return @as(*const _IFaxAccountNotify.VTable, @ptrCast(self.vtable)).OnIncomingJobAdded(@as(*const _IFaxAccountNotify, @ptrCast(self)), pFaxAccount, bstrJobId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxAccountNotify_OnIncomingJobRemoved(self: *const T, pFaxAccount: ?*IFaxAccount, bstrJobId: ?BSTR) HRESULT {
                return @as(*const _IFaxAccountNotify.VTable, @ptrCast(self.vtable)).OnIncomingJobRemoved(@as(*const _IFaxAccountNotify, @ptrCast(self)), pFaxAccount, bstrJobId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxAccountNotify_OnIncomingJobChanged(self: *const T, pFaxAccount: ?*IFaxAccount, bstrJobId: ?BSTR, pJobStatus: ?*IFaxJobStatus) HRESULT {
                return @as(*const _IFaxAccountNotify.VTable, @ptrCast(self.vtable)).OnIncomingJobChanged(@as(*const _IFaxAccountNotify, @ptrCast(self)), pFaxAccount, bstrJobId, pJobStatus);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxAccountNotify_OnOutgoingJobAdded(self: *const T, pFaxAccount: ?*IFaxAccount, bstrJobId: ?BSTR) HRESULT {
                return @as(*const _IFaxAccountNotify.VTable, @ptrCast(self.vtable)).OnOutgoingJobAdded(@as(*const _IFaxAccountNotify, @ptrCast(self)), pFaxAccount, bstrJobId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxAccountNotify_OnOutgoingJobRemoved(self: *const T, pFaxAccount: ?*IFaxAccount, bstrJobId: ?BSTR) HRESULT {
                return @as(*const _IFaxAccountNotify.VTable, @ptrCast(self.vtable)).OnOutgoingJobRemoved(@as(*const _IFaxAccountNotify, @ptrCast(self)), pFaxAccount, bstrJobId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxAccountNotify_OnOutgoingJobChanged(self: *const T, pFaxAccount: ?*IFaxAccount, bstrJobId: ?BSTR, pJobStatus: ?*IFaxJobStatus) HRESULT {
                return @as(*const _IFaxAccountNotify.VTable, @ptrCast(self.vtable)).OnOutgoingJobChanged(@as(*const _IFaxAccountNotify, @ptrCast(self)), pFaxAccount, bstrJobId, pJobStatus);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxAccountNotify_OnIncomingMessageAdded(self: *const T, pFaxAccount: ?*IFaxAccount, bstrMessageId: ?BSTR, fAddedToReceiveFolder: i16) HRESULT {
                return @as(*const _IFaxAccountNotify.VTable, @ptrCast(self.vtable)).OnIncomingMessageAdded(@as(*const _IFaxAccountNotify, @ptrCast(self)), pFaxAccount, bstrMessageId, fAddedToReceiveFolder);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxAccountNotify_OnIncomingMessageRemoved(self: *const T, pFaxAccount: ?*IFaxAccount, bstrMessageId: ?BSTR, fRemovedFromReceiveFolder: i16) HRESULT {
                return @as(*const _IFaxAccountNotify.VTable, @ptrCast(self.vtable)).OnIncomingMessageRemoved(@as(*const _IFaxAccountNotify, @ptrCast(self)), pFaxAccount, bstrMessageId, fRemovedFromReceiveFolder);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxAccountNotify_OnOutgoingMessageAdded(self: *const T, pFaxAccount: ?*IFaxAccount, bstrMessageId: ?BSTR) HRESULT {
                return @as(*const _IFaxAccountNotify.VTable, @ptrCast(self.vtable)).OnOutgoingMessageAdded(@as(*const _IFaxAccountNotify, @ptrCast(self)), pFaxAccount, bstrMessageId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxAccountNotify_OnOutgoingMessageRemoved(self: *const T, pFaxAccount: ?*IFaxAccount, bstrMessageId: ?BSTR) HRESULT {
                return @as(*const _IFaxAccountNotify.VTable, @ptrCast(self.vtable)).OnOutgoingMessageRemoved(@as(*const _IFaxAccountNotify, @ptrCast(self)), pFaxAccount, bstrMessageId);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn _IFaxAccountNotify_OnServerShutDown(self: *const T, pFaxServer: ?*IFaxServer2) HRESULT {
                return @as(*const _IFaxAccountNotify.VTable, @ptrCast(self.vtable)).OnServerShutDown(@as(*const _IFaxAccountNotify, @ptrCast(self)), pFaxServer);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows6.0.6000'
const IID_IFaxAccountNotify_Value = Guid.initString("0b5e5bd1-b8a9-47a0-a323-ef4a293ba06a");
pub const IID_IFaxAccountNotify = &IID_IFaxAccountNotify_Value;
pub const IFaxAccountNotify = 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 PFAXROUTEADDFILE = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        JobId: u32,
        FileName: ?[*:0]const u16,
        Guid: ?*Guid,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        JobId: u32,
        FileName: ?[*:0]const u16,
        Guid: ?*Guid,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

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

pub const PFAXROUTEGETFILE = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        JobId: u32,
        Index: u32,
        // TODO: what to do with BytesParamIndex 3?
        FileNameBuffer: ?PWSTR,
        RequiredSize: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        JobId: u32,
        Index: u32,
        // TODO: what to do with BytesParamIndex 3?
        FileNameBuffer: ?PWSTR,
        RequiredSize: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXROUTEENUMFILE = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        JobId: u32,
        GuidOwner: ?*Guid,
        GuidCaller: ?*Guid,
        FileName: ?[*:0]const u16,
        Context: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        JobId: u32,
        GuidOwner: ?*Guid,
        GuidCaller: ?*Guid,
        FileName: ?[*:0]const u16,
        Context: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXROUTEENUMFILES = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        JobId: u32,
        Guid: ?*Guid,
        FileEnumerator: ?PFAXROUTEENUMFILE,
        Context: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        JobId: u32,
        Guid: ?*Guid,
        FileEnumerator: ?PFAXROUTEENUMFILE,
        Context: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXROUTEMODIFYROUTINGDATA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        JobId: u32,
        RoutingGuid: ?[*:0]const u16,
        RoutingData: ?*u8,
        RoutingDataSize: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        JobId: u32,
        RoutingGuid: ?[*:0]const u16,
        RoutingData: ?*u8,
        RoutingDataSize: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const FAX_ROUTE_CALLBACKROUTINES = extern struct {
    SizeOfStruct: u32,
    FaxRouteAddFile: ?PFAXROUTEADDFILE,
    FaxRouteDeleteFile: ?PFAXROUTEDELETEFILE,
    FaxRouteGetFile: ?PFAXROUTEGETFILE,
    FaxRouteEnumFiles: ?PFAXROUTEENUMFILES,
    FaxRouteModifyRoutingData: ?PFAXROUTEMODIFYROUTINGDATA,
};

pub const FAX_ROUTE = extern struct {
    SizeOfStruct: u32,
    JobId: u32,
    ElapsedTime: u64,
    ReceiveTime: u64,
    PageCount: u32,
    Csid: ?[*:0]const u16,
    Tsid: ?[*:0]const u16,
    CallerId: ?[*:0]const u16,
    RoutingInfo: ?[*:0]const u16,
    ReceiverName: ?[*:0]const u16,
    ReceiverNumber: ?[*:0]const u16,
    DeviceName: ?[*:0]const u16,
    DeviceId: u32,
    RoutingInfoData: ?*u8,
    RoutingInfoDataSize: u32,
};

pub const FAXROUTE_ENABLE = enum(i32) {
    QUERY_STATUS = -1,
    STATUS_DISABLE = 0,
    STATUS_ENABLE = 1,
};
pub const QUERY_STATUS = FAXROUTE_ENABLE.QUERY_STATUS;
pub const STATUS_DISABLE = FAXROUTE_ENABLE.STATUS_DISABLE;
pub const STATUS_ENABLE = FAXROUTE_ENABLE.STATUS_ENABLE;

pub const PFAXROUTEINITIALIZE = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?HANDLE,
        param1: ?*FAX_ROUTE_CALLBACKROUTINES,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: ?HANDLE,
        param1: ?*FAX_ROUTE_CALLBACKROUTINES,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXROUTEMETHOD = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*const FAX_ROUTE,
        param1: ?*?*anyopaque,
        param2: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: ?*const FAX_ROUTE,
        param1: ?*?*anyopaque,
        param2: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXROUTEDEVICEENABLE = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?[*:0]const u16,
        param1: u32,
        param2: i32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: ?[*:0]const u16,
        param1: u32,
        param2: i32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

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

pub const PFAXROUTEGETROUTINGINFO = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?[*:0]const u16,
        param1: u32,
        param2: ?*u8,
        param3: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: ?[*:0]const u16,
        param1: u32,
        param2: ?*u8,
        param3: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFAXROUTESETROUTINGINFO = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?[*:0]const u16,
        param1: u32,
        param2: ?*const u8,
        param3: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: ?[*:0]const u16,
        param1: u32,
        param2: ?*const u8,
        param3: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const FAX_ENUM_DEVICE_ID_SOURCE = enum(i32) {
    FAX = 0,
    TAPI = 1,
};
pub const DEV_ID_SRC_FAX = FAX_ENUM_DEVICE_ID_SOURCE.FAX;
pub const DEV_ID_SRC_TAPI = FAX_ENUM_DEVICE_ID_SOURCE.TAPI;

pub const PFAX_EXT_GET_DATA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: u32,
        param1: FAX_ENUM_DEVICE_ID_SOURCE,
        param2: ?[*:0]const u16,
        param3: ?*?*u8,
        param4: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        param0: u32,
        param1: FAX_ENUM_DEVICE_ID_SOURCE,
        param2: ?[*:0]const u16,
        param3: ?*?*u8,
        param4: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

pub const PFAX_EXT_SET_DATA = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?HINSTANCE,
        param1: u32,
        param2: FAX_ENUM_DEVICE_ID_SOURCE,
        param3: ?[*:0]const u16,
        param4: ?*u8,
        param5: u32,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        param0: ?HINSTANCE,
        param1: u32,
        param2: FAX_ENUM_DEVICE_ID_SOURCE,
        param3: ?[*:0]const u16,
        param4: ?*u8,
        param5: u32,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

pub const PFAX_EXT_CONFIG_CHANGE = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: u32,
        param1: ?[*:0]const u16,
        param2: ?*u8,
        param3: u32,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
    else => *const fn (
        param0: u32,
        param1: ?[*:0]const u16,
        param2: ?*u8,
        param3: u32,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
};

pub const PFAX_EXT_REGISTER_FOR_EVENTS = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?HINSTANCE,
        param1: u32,
        param2: FAX_ENUM_DEVICE_ID_SOURCE,
        param3: ?[*:0]const u16,
        param4: ?PFAX_EXT_CONFIG_CHANGE,
    ) callconv(@import("std").os.windows.WINAPI) ?HANDLE,
    else => *const fn (
        param0: ?HINSTANCE,
        param1: u32,
        param2: FAX_ENUM_DEVICE_ID_SOURCE,
        param3: ?[*:0]const u16,
        param4: ?PFAX_EXT_CONFIG_CHANGE,
    ) callconv(@import("std").os.windows.WINAPI) ?HANDLE,
};

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

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

pub const PFAX_EXT_INITIALIZE_CONFIG = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?PFAX_EXT_GET_DATA,
        param1: ?PFAX_EXT_SET_DATA,
        param2: ?PFAX_EXT_REGISTER_FOR_EVENTS,
        param3: ?PFAX_EXT_UNREGISTER_FOR_EVENTS,
        param4: ?PFAX_EXT_FREE_BUFFER,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
    else => *const fn (
        param0: ?PFAX_EXT_GET_DATA,
        param1: ?PFAX_EXT_SET_DATA,
        param2: ?PFAX_EXT_REGISTER_FOR_EVENTS,
        param3: ?PFAX_EXT_UNREGISTER_FOR_EVENTS,
        param4: ?PFAX_EXT_FREE_BUFFER,
    ) callconv(@import("std").os.windows.WINAPI) HRESULT,
};

pub const SendToMode = enum(i32) {
    T = 0,
};
pub const SEND_TO_FAX_RECIPIENT_ATTACHMENT = SendToMode.T;

pub const STI_DEVICE_MJ_TYPE = enum(i32) {
    Default = 0,
    Scanner = 1,
    DigitalCamera = 2,
    StreamingVideo = 3,
};
pub const StiDeviceTypeDefault = STI_DEVICE_MJ_TYPE.Default;
pub const StiDeviceTypeScanner = STI_DEVICE_MJ_TYPE.Scanner;
pub const StiDeviceTypeDigitalCamera = STI_DEVICE_MJ_TYPE.DigitalCamera;
pub const StiDeviceTypeStreamingVideo = STI_DEVICE_MJ_TYPE.StreamingVideo;

pub const STI_DEV_CAPS = extern struct {
    dwGeneric: u32,
};

pub const STI_DEVICE_INFORMATIONW = extern struct {
    dwSize: u32,
    DeviceType: u32,
    szDeviceInternalName: [128]u16,
    DeviceCapabilitiesA: STI_DEV_CAPS,
    dwHardwareConfiguration: u32,
    pszVendorDescription: ?PWSTR,
    pszDeviceDescription: ?PWSTR,
    pszPortName: ?PWSTR,
    pszPropProvider: ?PWSTR,
    pszLocalName: ?PWSTR,
};

pub const STI_WIA_DEVICE_INFORMATIONW = extern struct {
    dwSize: u32,
    DeviceType: u32,
    szDeviceInternalName: [128]u16,
    DeviceCapabilitiesA: STI_DEV_CAPS,
    dwHardwareConfiguration: u32,
    pszVendorDescription: ?PWSTR,
    pszDeviceDescription: ?PWSTR,
    pszPortName: ?PWSTR,
    pszPropProvider: ?PWSTR,
    pszLocalName: ?PWSTR,
    pszUiDll: ?PWSTR,
    pszServer: ?PWSTR,
};

pub const STI_DEVICE_STATUS = extern struct {
    dwSize: u32,
    StatusMask: u32,
    dwOnlineState: u32,
    dwHardwareStatusCode: u32,
    dwEventHandlingState: u32,
    dwPollingInterval: u32,
};

pub const _ERROR_INFOW = extern struct {
    dwSize: u32,
    dwGenericError: u32,
    dwVendorError: u32,
    szExtendedErrorText: [255]u16,
};

pub const STI_DIAG = extern struct {
    dwSize: u32,
    dwBasicDiagCode: u32,
    dwVendorDiagCode: u32,
    dwStatusMask: u32,
    sErrorInfo: _ERROR_INFOW,
};

pub const STISUBSCRIBE = extern struct {
    dwSize: u32,
    dwFlags: u32,
    dwFilter: u32,
    hWndNotify: ?HWND,
    hEvent: ?HANDLE,
    uiNotificationMessage: u32,
};

pub const STINOTIFY = extern struct {
    dwSize: u32,
    guidNotificationCode: Guid,
    abNotificationData: [64]u8,
};

pub const IStiDeviceW = extern struct {
    placeholder: usize, // TODO: why is this type empty?
};

const IID_IStillImageW_Value = Guid.initString("641bd880-2dc8-11d0-90ea-00aa0060f86c");
pub const IID_IStillImageW = &IID_IStillImageW_Value;
pub const IStillImageW = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStillImageW,
                hinst: ?HINSTANCE,
                dwVersion: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStillImageW,
                hinst: ?HINSTANCE,
                dwVersion: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetDeviceList: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStillImageW,
                dwType: u32,
                dwFlags: u32,
                pdwItemsReturned: ?*u32,
                ppBuffer: ?*?*anyopaque,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStillImageW,
                dwType: u32,
                dwFlags: u32,
                pdwItemsReturned: ?*u32,
                ppBuffer: ?*?*anyopaque,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetDeviceInfo: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStillImageW,
                pwszDeviceName: ?PWSTR,
                ppBuffer: ?*?*anyopaque,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStillImageW,
                pwszDeviceName: ?PWSTR,
                ppBuffer: ?*?*anyopaque,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CreateDevice: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStillImageW,
                pwszDeviceName: ?PWSTR,
                dwMode: u32,
                pDevice: ?*?*IStiDevice,
                punkOuter: ?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStillImageW,
                pwszDeviceName: ?PWSTR,
                dwMode: u32,
                pDevice: ?*?*IStiDevice,
                punkOuter: ?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetDeviceValue: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStillImageW,
                pwszDeviceName: ?PWSTR,
                pValueName: ?PWSTR,
                pType: ?*u32,
                // TODO: what to do with BytesParamIndex 4?
                pData: ?*u8,
                cbData: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStillImageW,
                pwszDeviceName: ?PWSTR,
                pValueName: ?PWSTR,
                pType: ?*u32,
                // TODO: what to do with BytesParamIndex 4?
                pData: ?*u8,
                cbData: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetDeviceValue: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStillImageW,
                pwszDeviceName: ?PWSTR,
                pValueName: ?PWSTR,
                Type: u32,
                // TODO: what to do with BytesParamIndex 4?
                pData: ?*u8,
                cbData: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStillImageW,
                pwszDeviceName: ?PWSTR,
                pValueName: ?PWSTR,
                Type: u32,
                // TODO: what to do with BytesParamIndex 4?
                pData: ?*u8,
                cbData: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetSTILaunchInformation: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStillImageW,
                pwszDeviceName: *[128]u16,
                pdwEventCode: ?*u32,
                pwszEventName: *[128]u16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStillImageW,
                pwszDeviceName: *[128]u16,
                pdwEventCode: ?*u32,
                pwszEventName: *[128]u16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RegisterLaunchApplication: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStillImageW,
                pwszAppName: ?PWSTR,
                pwszCommandLine: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStillImageW,
                pwszAppName: ?PWSTR,
                pwszCommandLine: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        UnregisterLaunchApplication: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStillImageW,
                pwszAppName: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStillImageW,
                pwszAppName: ?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EnableHwNotifications: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStillImageW,
                pwszDeviceName: ?[*:0]const u16,
                bNewState: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStillImageW,
                pwszDeviceName: ?[*:0]const u16,
                bNewState: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetHwNotificationState: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStillImageW,
                pwszDeviceName: ?[*:0]const u16,
                pbCurrentState: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStillImageW,
                pwszDeviceName: ?[*:0]const u16,
                pbCurrentState: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RefreshDeviceBus: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStillImageW,
                pwszDeviceName: ?[*:0]const u16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStillImageW,
                pwszDeviceName: ?[*:0]const u16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        LaunchApplicationForDevice: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStillImageW,
                pwszDeviceName: ?PWSTR,
                pwszAppName: ?PWSTR,
                pStiNotify: ?*STINOTIFY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStillImageW,
                pwszDeviceName: ?PWSTR,
                pwszAppName: ?PWSTR,
                pStiNotify: ?*STINOTIFY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetupDeviceParameters: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStillImageW,
                param0: ?*STI_DEVICE_INFORMATIONW,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStillImageW,
                param0: ?*STI_DEVICE_INFORMATIONW,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        WriteToErrorLog: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStillImageW,
                dwMessageType: u32,
                pszMessage: ?[*:0]const u16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStillImageW,
                dwMessageType: u32,
                pszMessage: ?[*:0]const u16,
            ) 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 IStillImageW_Initialize(self: *const T, hinst: ?HINSTANCE, dwVersion: u32) HRESULT {
                return @as(*const IStillImageW.VTable, @ptrCast(self.vtable)).Initialize(@as(*const IStillImageW, @ptrCast(self)), hinst, dwVersion);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStillImageW_GetDeviceList(self: *const T, dwType: u32, dwFlags: u32, pdwItemsReturned: ?*u32, ppBuffer: ?*?*anyopaque) HRESULT {
                return @as(*const IStillImageW.VTable, @ptrCast(self.vtable)).GetDeviceList(@as(*const IStillImageW, @ptrCast(self)), dwType, dwFlags, pdwItemsReturned, ppBuffer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStillImageW_GetDeviceInfo(self: *const T, pwszDeviceName: ?PWSTR, ppBuffer: ?*?*anyopaque) HRESULT {
                return @as(*const IStillImageW.VTable, @ptrCast(self.vtable)).GetDeviceInfo(@as(*const IStillImageW, @ptrCast(self)), pwszDeviceName, ppBuffer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStillImageW_CreateDevice(self: *const T, pwszDeviceName: ?PWSTR, dwMode: u32, pDevice: ?*?*IStiDevice, punkOuter: ?*IUnknown) HRESULT {
                return @as(*const IStillImageW.VTable, @ptrCast(self.vtable)).CreateDevice(@as(*const IStillImageW, @ptrCast(self)), pwszDeviceName, dwMode, pDevice, punkOuter);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStillImageW_GetDeviceValue(self: *const T, pwszDeviceName: ?PWSTR, pValueName: ?PWSTR, pType: ?*u32, pData: ?*u8, cbData: ?*u32) HRESULT {
                return @as(*const IStillImageW.VTable, @ptrCast(self.vtable)).GetDeviceValue(@as(*const IStillImageW, @ptrCast(self)), pwszDeviceName, pValueName, pType, pData, cbData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStillImageW_SetDeviceValue(self: *const T, pwszDeviceName: ?PWSTR, pValueName: ?PWSTR, Type: u32, pData: ?*u8, cbData: u32) HRESULT {
                return @as(*const IStillImageW.VTable, @ptrCast(self.vtable)).SetDeviceValue(@as(*const IStillImageW, @ptrCast(self)), pwszDeviceName, pValueName, Type, pData, cbData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStillImageW_GetSTILaunchInformation(self: *const T, pwszDeviceName: *[128]u16, pdwEventCode: ?*u32, pwszEventName: *[128]u16) HRESULT {
                return @as(*const IStillImageW.VTable, @ptrCast(self.vtable)).GetSTILaunchInformation(@as(*const IStillImageW, @ptrCast(self)), pwszDeviceName, pdwEventCode, pwszEventName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStillImageW_RegisterLaunchApplication(self: *const T, pwszAppName: ?PWSTR, pwszCommandLine: ?PWSTR) HRESULT {
                return @as(*const IStillImageW.VTable, @ptrCast(self.vtable)).RegisterLaunchApplication(@as(*const IStillImageW, @ptrCast(self)), pwszAppName, pwszCommandLine);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStillImageW_UnregisterLaunchApplication(self: *const T, pwszAppName: ?PWSTR) HRESULT {
                return @as(*const IStillImageW.VTable, @ptrCast(self.vtable)).UnregisterLaunchApplication(@as(*const IStillImageW, @ptrCast(self)), pwszAppName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStillImageW_EnableHwNotifications(self: *const T, pwszDeviceName: ?[*:0]const u16, bNewState: BOOL) HRESULT {
                return @as(*const IStillImageW.VTable, @ptrCast(self.vtable)).EnableHwNotifications(@as(*const IStillImageW, @ptrCast(self)), pwszDeviceName, bNewState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStillImageW_GetHwNotificationState(self: *const T, pwszDeviceName: ?[*:0]const u16, pbCurrentState: ?*BOOL) HRESULT {
                return @as(*const IStillImageW.VTable, @ptrCast(self.vtable)).GetHwNotificationState(@as(*const IStillImageW, @ptrCast(self)), pwszDeviceName, pbCurrentState);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStillImageW_RefreshDeviceBus(self: *const T, pwszDeviceName: ?[*:0]const u16) HRESULT {
                return @as(*const IStillImageW.VTable, @ptrCast(self.vtable)).RefreshDeviceBus(@as(*const IStillImageW, @ptrCast(self)), pwszDeviceName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStillImageW_LaunchApplicationForDevice(self: *const T, pwszDeviceName: ?PWSTR, pwszAppName: ?PWSTR, pStiNotify: ?*STINOTIFY) HRESULT {
                return @as(*const IStillImageW.VTable, @ptrCast(self.vtable)).LaunchApplicationForDevice(@as(*const IStillImageW, @ptrCast(self)), pwszDeviceName, pwszAppName, pStiNotify);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStillImageW_SetupDeviceParameters(self: *const T, param0: ?*STI_DEVICE_INFORMATIONW) HRESULT {
                return @as(*const IStillImageW.VTable, @ptrCast(self.vtable)).SetupDeviceParameters(@as(*const IStillImageW, @ptrCast(self)), param0);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStillImageW_WriteToErrorLog(self: *const T, dwMessageType: u32, pszMessage: ?[*:0]const u16) HRESULT {
                return @as(*const IStillImageW.VTable, @ptrCast(self.vtable)).WriteToErrorLog(@as(*const IStillImageW, @ptrCast(self)), dwMessageType, pszMessage);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_IStiDevice_Value = Guid.initString("6cfa5a80-2dc8-11d0-90ea-00aa0060f86c");
pub const IID_IStiDevice = &IID_IStiDevice_Value;
pub const IStiDevice = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDevice,
                hinst: ?HINSTANCE,
                pwszDeviceName: ?[*:0]const u16,
                dwVersion: u32,
                dwMode: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDevice,
                hinst: ?HINSTANCE,
                pwszDeviceName: ?[*:0]const u16,
                dwVersion: u32,
                dwMode: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCapabilities: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDevice,
                pDevCaps: ?*STI_DEV_CAPS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDevice,
                pDevCaps: ?*STI_DEV_CAPS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetStatus: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDevice,
                pDevStatus: ?*STI_DEVICE_STATUS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDevice,
                pDevStatus: ?*STI_DEVICE_STATUS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DeviceReset: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDevice,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDevice,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Diagnostic: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDevice,
                pBuffer: ?*STI_DIAG,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDevice,
                pBuffer: ?*STI_DIAG,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Escape: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDevice,
                EscapeFunction: u32,
                // TODO: what to do with BytesParamIndex 2?
                lpInData: ?*anyopaque,
                cbInDataSize: u32,
                // TODO: what to do with BytesParamIndex 4?
                pOutData: ?*anyopaque,
                dwOutDataSize: u32,
                pdwActualData: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDevice,
                EscapeFunction: u32,
                // TODO: what to do with BytesParamIndex 2?
                lpInData: ?*anyopaque,
                cbInDataSize: u32,
                // TODO: what to do with BytesParamIndex 4?
                pOutData: ?*anyopaque,
                dwOutDataSize: u32,
                pdwActualData: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetLastError: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDevice,
                pdwLastDeviceError: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDevice,
                pdwLastDeviceError: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        LockDevice: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDevice,
                dwTimeOut: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDevice,
                dwTimeOut: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        UnLockDevice: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDevice,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDevice,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RawReadData: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDevice,
                // TODO: what to do with BytesParamIndex 1?
                lpBuffer: ?*anyopaque,
                lpdwNumberOfBytes: ?*u32,
                lpOverlapped: ?*OVERLAPPED,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDevice,
                // TODO: what to do with BytesParamIndex 1?
                lpBuffer: ?*anyopaque,
                lpdwNumberOfBytes: ?*u32,
                lpOverlapped: ?*OVERLAPPED,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RawWriteData: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDevice,
                // TODO: what to do with BytesParamIndex 1?
                lpBuffer: ?*anyopaque,
                nNumberOfBytes: u32,
                lpOverlapped: ?*OVERLAPPED,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDevice,
                // TODO: what to do with BytesParamIndex 1?
                lpBuffer: ?*anyopaque,
                nNumberOfBytes: u32,
                lpOverlapped: ?*OVERLAPPED,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RawReadCommand: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDevice,
                // TODO: what to do with BytesParamIndex 1?
                lpBuffer: ?*anyopaque,
                lpdwNumberOfBytes: ?*u32,
                lpOverlapped: ?*OVERLAPPED,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDevice,
                // TODO: what to do with BytesParamIndex 1?
                lpBuffer: ?*anyopaque,
                lpdwNumberOfBytes: ?*u32,
                lpOverlapped: ?*OVERLAPPED,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RawWriteCommand: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDevice,
                // TODO: what to do with BytesParamIndex 1?
                lpBuffer: ?*anyopaque,
                nNumberOfBytes: u32,
                lpOverlapped: ?*OVERLAPPED,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDevice,
                // TODO: what to do with BytesParamIndex 1?
                lpBuffer: ?*anyopaque,
                nNumberOfBytes: u32,
                lpOverlapped: ?*OVERLAPPED,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Subscribe: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDevice,
                lpSubsribe: ?*STISUBSCRIBE,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDevice,
                lpSubsribe: ?*STISUBSCRIBE,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetLastNotificationData: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDevice,
                lpNotify: ?*STINOTIFY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDevice,
                lpNotify: ?*STINOTIFY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        UnSubscribe: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDevice,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDevice,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetLastErrorInfo: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDevice,
                pLastErrorInfo: ?*_ERROR_INFOW,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDevice,
                pLastErrorInfo: ?*_ERROR_INFOW,
            ) 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 IStiDevice_Initialize(self: *const T, hinst: ?HINSTANCE, pwszDeviceName: ?[*:0]const u16, dwVersion: u32, dwMode: u32) HRESULT {
                return @as(*const IStiDevice.VTable, @ptrCast(self.vtable)).Initialize(@as(*const IStiDevice, @ptrCast(self)), hinst, pwszDeviceName, dwVersion, dwMode);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiDevice_GetCapabilities(self: *const T, pDevCaps: ?*STI_DEV_CAPS) HRESULT {
                return @as(*const IStiDevice.VTable, @ptrCast(self.vtable)).GetCapabilities(@as(*const IStiDevice, @ptrCast(self)), pDevCaps);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiDevice_GetStatus(self: *const T, pDevStatus: ?*STI_DEVICE_STATUS) HRESULT {
                return @as(*const IStiDevice.VTable, @ptrCast(self.vtable)).GetStatus(@as(*const IStiDevice, @ptrCast(self)), pDevStatus);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiDevice_DeviceReset(self: *const T) HRESULT {
                return @as(*const IStiDevice.VTable, @ptrCast(self.vtable)).DeviceReset(@as(*const IStiDevice, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiDevice_Diagnostic(self: *const T, pBuffer: ?*STI_DIAG) HRESULT {
                return @as(*const IStiDevice.VTable, @ptrCast(self.vtable)).Diagnostic(@as(*const IStiDevice, @ptrCast(self)), pBuffer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiDevice_Escape(self: *const T, EscapeFunction: u32, lpInData: ?*anyopaque, cbInDataSize: u32, pOutData: ?*anyopaque, dwOutDataSize: u32, pdwActualData: ?*u32) HRESULT {
                return @as(*const IStiDevice.VTable, @ptrCast(self.vtable)).Escape(@as(*const IStiDevice, @ptrCast(self)), EscapeFunction, lpInData, cbInDataSize, pOutData, dwOutDataSize, pdwActualData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiDevice_GetLastError(self: *const T, pdwLastDeviceError: ?*u32) HRESULT {
                return @as(*const IStiDevice.VTable, @ptrCast(self.vtable)).GetLastError(@as(*const IStiDevice, @ptrCast(self)), pdwLastDeviceError);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiDevice_LockDevice(self: *const T, dwTimeOut: u32) HRESULT {
                return @as(*const IStiDevice.VTable, @ptrCast(self.vtable)).LockDevice(@as(*const IStiDevice, @ptrCast(self)), dwTimeOut);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiDevice_UnLockDevice(self: *const T) HRESULT {
                return @as(*const IStiDevice.VTable, @ptrCast(self.vtable)).UnLockDevice(@as(*const IStiDevice, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiDevice_RawReadData(self: *const T, lpBuffer: ?*anyopaque, lpdwNumberOfBytes: ?*u32, lpOverlapped: ?*OVERLAPPED) HRESULT {
                return @as(*const IStiDevice.VTable, @ptrCast(self.vtable)).RawReadData(@as(*const IStiDevice, @ptrCast(self)), lpBuffer, lpdwNumberOfBytes, lpOverlapped);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiDevice_RawWriteData(self: *const T, lpBuffer: ?*anyopaque, nNumberOfBytes: u32, lpOverlapped: ?*OVERLAPPED) HRESULT {
                return @as(*const IStiDevice.VTable, @ptrCast(self.vtable)).RawWriteData(@as(*const IStiDevice, @ptrCast(self)), lpBuffer, nNumberOfBytes, lpOverlapped);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiDevice_RawReadCommand(self: *const T, lpBuffer: ?*anyopaque, lpdwNumberOfBytes: ?*u32, lpOverlapped: ?*OVERLAPPED) HRESULT {
                return @as(*const IStiDevice.VTable, @ptrCast(self.vtable)).RawReadCommand(@as(*const IStiDevice, @ptrCast(self)), lpBuffer, lpdwNumberOfBytes, lpOverlapped);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiDevice_RawWriteCommand(self: *const T, lpBuffer: ?*anyopaque, nNumberOfBytes: u32, lpOverlapped: ?*OVERLAPPED) HRESULT {
                return @as(*const IStiDevice.VTable, @ptrCast(self.vtable)).RawWriteCommand(@as(*const IStiDevice, @ptrCast(self)), lpBuffer, nNumberOfBytes, lpOverlapped);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiDevice_Subscribe(self: *const T, lpSubsribe: ?*STISUBSCRIBE) HRESULT {
                return @as(*const IStiDevice.VTable, @ptrCast(self.vtable)).Subscribe(@as(*const IStiDevice, @ptrCast(self)), lpSubsribe);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiDevice_GetLastNotificationData(self: *const T, lpNotify: ?*STINOTIFY) HRESULT {
                return @as(*const IStiDevice.VTable, @ptrCast(self.vtable)).GetLastNotificationData(@as(*const IStiDevice, @ptrCast(self)), lpNotify);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiDevice_UnSubscribe(self: *const T) HRESULT {
                return @as(*const IStiDevice.VTable, @ptrCast(self.vtable)).UnSubscribe(@as(*const IStiDevice, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiDevice_GetLastErrorInfo(self: *const T, pLastErrorInfo: ?*_ERROR_INFOW) HRESULT {
                return @as(*const IStiDevice.VTable, @ptrCast(self.vtable)).GetLastErrorInfo(@as(*const IStiDevice, @ptrCast(self)), pLastErrorInfo);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const STI_USD_CAPS = extern struct {
    dwVersion: u32,
    dwGenericCaps: u32,
};

const IID_IStiDeviceControl_Value = Guid.initString("128a9860-52dc-11d0-9edf-444553540000");
pub const IID_IStiDeviceControl = &IID_IStiDeviceControl_Value;
pub const IStiDeviceControl = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDeviceControl,
                dwDeviceType: u32,
                dwMode: u32,
                pwszPortName: ?[*:0]const u16,
                dwFlags: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDeviceControl,
                dwDeviceType: u32,
                dwMode: u32,
                pwszPortName: ?[*:0]const u16,
                dwFlags: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RawReadData: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDeviceControl,
                lpBuffer: ?*anyopaque,
                lpdwNumberOfBytes: ?*u32,
                lpOverlapped: ?*OVERLAPPED,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDeviceControl,
                lpBuffer: ?*anyopaque,
                lpdwNumberOfBytes: ?*u32,
                lpOverlapped: ?*OVERLAPPED,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RawWriteData: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDeviceControl,
                lpBuffer: ?*anyopaque,
                nNumberOfBytes: u32,
                lpOverlapped: ?*OVERLAPPED,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDeviceControl,
                lpBuffer: ?*anyopaque,
                nNumberOfBytes: u32,
                lpOverlapped: ?*OVERLAPPED,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RawReadCommand: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDeviceControl,
                lpBuffer: ?*anyopaque,
                lpdwNumberOfBytes: ?*u32,
                lpOverlapped: ?*OVERLAPPED,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDeviceControl,
                lpBuffer: ?*anyopaque,
                lpdwNumberOfBytes: ?*u32,
                lpOverlapped: ?*OVERLAPPED,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RawWriteCommand: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDeviceControl,
                lpBuffer: ?*anyopaque,
                nNumberOfBytes: u32,
                lpOverlapped: ?*OVERLAPPED,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDeviceControl,
                lpBuffer: ?*anyopaque,
                nNumberOfBytes: u32,
                lpOverlapped: ?*OVERLAPPED,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RawDeviceControl: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDeviceControl,
                EscapeFunction: u32,
                lpInData: ?*anyopaque,
                cbInDataSize: u32,
                pOutData: ?*anyopaque,
                dwOutDataSize: u32,
                pdwActualData: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDeviceControl,
                EscapeFunction: u32,
                lpInData: ?*anyopaque,
                cbInDataSize: u32,
                pOutData: ?*anyopaque,
                dwOutDataSize: u32,
                pdwActualData: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetLastError: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDeviceControl,
                lpdwLastError: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDeviceControl,
                lpdwLastError: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetMyDevicePortName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDeviceControl,
                lpszDevicePath: [*:0]u16,
                cwDevicePathSize: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDeviceControl,
                lpszDevicePath: [*:0]u16,
                cwDevicePathSize: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetMyDeviceHandle: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDeviceControl,
                lph: ?*?HANDLE,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDeviceControl,
                lph: ?*?HANDLE,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetMyDeviceOpenMode: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDeviceControl,
                pdwOpenMode: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDeviceControl,
                pdwOpenMode: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        WriteToErrorLog: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiDeviceControl,
                dwMessageType: u32,
                pszMessage: ?[*:0]const u16,
                dwErrorCode: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiDeviceControl,
                dwMessageType: u32,
                pszMessage: ?[*:0]const u16,
                dwErrorCode: u32,
            ) 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 IStiDeviceControl_Initialize(self: *const T, dwDeviceType: u32, dwMode: u32, pwszPortName: ?[*:0]const u16, dwFlags: u32) HRESULT {
                return @as(*const IStiDeviceControl.VTable, @ptrCast(self.vtable)).Initialize(@as(*const IStiDeviceControl, @ptrCast(self)), dwDeviceType, dwMode, pwszPortName, dwFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiDeviceControl_RawReadData(self: *const T, lpBuffer: ?*anyopaque, lpdwNumberOfBytes: ?*u32, lpOverlapped: ?*OVERLAPPED) HRESULT {
                return @as(*const IStiDeviceControl.VTable, @ptrCast(self.vtable)).RawReadData(@as(*const IStiDeviceControl, @ptrCast(self)), lpBuffer, lpdwNumberOfBytes, lpOverlapped);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiDeviceControl_RawWriteData(self: *const T, lpBuffer: ?*anyopaque, nNumberOfBytes: u32, lpOverlapped: ?*OVERLAPPED) HRESULT {
                return @as(*const IStiDeviceControl.VTable, @ptrCast(self.vtable)).RawWriteData(@as(*const IStiDeviceControl, @ptrCast(self)), lpBuffer, nNumberOfBytes, lpOverlapped);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiDeviceControl_RawReadCommand(self: *const T, lpBuffer: ?*anyopaque, lpdwNumberOfBytes: ?*u32, lpOverlapped: ?*OVERLAPPED) HRESULT {
                return @as(*const IStiDeviceControl.VTable, @ptrCast(self.vtable)).RawReadCommand(@as(*const IStiDeviceControl, @ptrCast(self)), lpBuffer, lpdwNumberOfBytes, lpOverlapped);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiDeviceControl_RawWriteCommand(self: *const T, lpBuffer: ?*anyopaque, nNumberOfBytes: u32, lpOverlapped: ?*OVERLAPPED) HRESULT {
                return @as(*const IStiDeviceControl.VTable, @ptrCast(self.vtable)).RawWriteCommand(@as(*const IStiDeviceControl, @ptrCast(self)), lpBuffer, nNumberOfBytes, lpOverlapped);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiDeviceControl_RawDeviceControl(self: *const T, EscapeFunction: u32, lpInData: ?*anyopaque, cbInDataSize: u32, pOutData: ?*anyopaque, dwOutDataSize: u32, pdwActualData: ?*u32) HRESULT {
                return @as(*const IStiDeviceControl.VTable, @ptrCast(self.vtable)).RawDeviceControl(@as(*const IStiDeviceControl, @ptrCast(self)), EscapeFunction, lpInData, cbInDataSize, pOutData, dwOutDataSize, pdwActualData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiDeviceControl_GetLastError(self: *const T, lpdwLastError: ?*u32) HRESULT {
                return @as(*const IStiDeviceControl.VTable, @ptrCast(self.vtable)).GetLastError(@as(*const IStiDeviceControl, @ptrCast(self)), lpdwLastError);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiDeviceControl_GetMyDevicePortName(self: *const T, lpszDevicePath: [*:0]u16, cwDevicePathSize: u32) HRESULT {
                return @as(*const IStiDeviceControl.VTable, @ptrCast(self.vtable)).GetMyDevicePortName(@as(*const IStiDeviceControl, @ptrCast(self)), lpszDevicePath, cwDevicePathSize);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiDeviceControl_GetMyDeviceHandle(self: *const T, lph: ?*?HANDLE) HRESULT {
                return @as(*const IStiDeviceControl.VTable, @ptrCast(self.vtable)).GetMyDeviceHandle(@as(*const IStiDeviceControl, @ptrCast(self)), lph);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiDeviceControl_GetMyDeviceOpenMode(self: *const T, pdwOpenMode: ?*u32) HRESULT {
                return @as(*const IStiDeviceControl.VTable, @ptrCast(self.vtable)).GetMyDeviceOpenMode(@as(*const IStiDeviceControl, @ptrCast(self)), pdwOpenMode);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiDeviceControl_WriteToErrorLog(self: *const T, dwMessageType: u32, pszMessage: ?[*:0]const u16, dwErrorCode: u32) HRESULT {
                return @as(*const IStiDeviceControl.VTable, @ptrCast(self.vtable)).WriteToErrorLog(@as(*const IStiDeviceControl, @ptrCast(self)), dwMessageType, pszMessage, dwErrorCode);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_IStiUSD_Value = Guid.initString("0c9bb460-51ac-11d0-90ea-00aa0060f86c");
pub const IID_IStiUSD = &IID_IStiUSD_Value;
pub const IStiUSD = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        Initialize: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiUSD,
                pHelDcb: ?*IStiDeviceControl,
                dwStiVersion: u32,
                hParametersKey: ?HKEY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiUSD,
                pHelDcb: ?*IStiDeviceControl,
                dwStiVersion: u32,
                hParametersKey: ?HKEY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCapabilities: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiUSD,
                pDevCaps: ?*STI_USD_CAPS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiUSD,
                pDevCaps: ?*STI_USD_CAPS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetStatus: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiUSD,
                pDevStatus: ?*STI_DEVICE_STATUS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiUSD,
                pDevStatus: ?*STI_DEVICE_STATUS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DeviceReset: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiUSD,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiUSD,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Diagnostic: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiUSD,
                pBuffer: ?*STI_DIAG,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiUSD,
                pBuffer: ?*STI_DIAG,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Escape: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiUSD,
                EscapeFunction: u32,
                // TODO: what to do with BytesParamIndex 2?
                lpInData: ?*anyopaque,
                cbInDataSize: u32,
                // TODO: what to do with BytesParamIndex 4?
                pOutData: ?*anyopaque,
                cbOutDataSize: u32,
                pdwActualData: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiUSD,
                EscapeFunction: u32,
                // TODO: what to do with BytesParamIndex 2?
                lpInData: ?*anyopaque,
                cbInDataSize: u32,
                // TODO: what to do with BytesParamIndex 4?
                pOutData: ?*anyopaque,
                cbOutDataSize: u32,
                pdwActualData: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetLastError: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiUSD,
                pdwLastDeviceError: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiUSD,
                pdwLastDeviceError: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        LockDevice: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiUSD,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiUSD,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        UnLockDevice: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiUSD,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiUSD,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RawReadData: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiUSD,
                // TODO: what to do with BytesParamIndex 1?
                lpBuffer: ?*anyopaque,
                lpdwNumberOfBytes: ?*u32,
                lpOverlapped: ?*OVERLAPPED,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiUSD,
                // TODO: what to do with BytesParamIndex 1?
                lpBuffer: ?*anyopaque,
                lpdwNumberOfBytes: ?*u32,
                lpOverlapped: ?*OVERLAPPED,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RawWriteData: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiUSD,
                // TODO: what to do with BytesParamIndex 1?
                lpBuffer: ?*anyopaque,
                nNumberOfBytes: u32,
                lpOverlapped: ?*OVERLAPPED,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiUSD,
                // TODO: what to do with BytesParamIndex 1?
                lpBuffer: ?*anyopaque,
                nNumberOfBytes: u32,
                lpOverlapped: ?*OVERLAPPED,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RawReadCommand: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiUSD,
                // TODO: what to do with BytesParamIndex 1?
                lpBuffer: ?*anyopaque,
                lpdwNumberOfBytes: ?*u32,
                lpOverlapped: ?*OVERLAPPED,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiUSD,
                // TODO: what to do with BytesParamIndex 1?
                lpBuffer: ?*anyopaque,
                lpdwNumberOfBytes: ?*u32,
                lpOverlapped: ?*OVERLAPPED,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RawWriteCommand: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiUSD,
                // TODO: what to do with BytesParamIndex 1?
                lpBuffer: ?*anyopaque,
                nNumberOfBytes: u32,
                lpOverlapped: ?*OVERLAPPED,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiUSD,
                // TODO: what to do with BytesParamIndex 1?
                lpBuffer: ?*anyopaque,
                nNumberOfBytes: u32,
                lpOverlapped: ?*OVERLAPPED,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetNotificationHandle: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiUSD,
                hEvent: ?HANDLE,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiUSD,
                hEvent: ?HANDLE,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetNotificationData: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiUSD,
                lpNotify: ?*STINOTIFY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiUSD,
                lpNotify: ?*STINOTIFY,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetLastErrorInfo: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IStiUSD,
                pLastErrorInfo: ?*_ERROR_INFOW,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IStiUSD,
                pLastErrorInfo: ?*_ERROR_INFOW,
            ) 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 IStiUSD_Initialize(self: *const T, pHelDcb: ?*IStiDeviceControl, dwStiVersion: u32, hParametersKey: ?HKEY) HRESULT {
                return @as(*const IStiUSD.VTable, @ptrCast(self.vtable)).Initialize(@as(*const IStiUSD, @ptrCast(self)), pHelDcb, dwStiVersion, hParametersKey);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiUSD_GetCapabilities(self: *const T, pDevCaps: ?*STI_USD_CAPS) HRESULT {
                return @as(*const IStiUSD.VTable, @ptrCast(self.vtable)).GetCapabilities(@as(*const IStiUSD, @ptrCast(self)), pDevCaps);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiUSD_GetStatus(self: *const T, pDevStatus: ?*STI_DEVICE_STATUS) HRESULT {
                return @as(*const IStiUSD.VTable, @ptrCast(self.vtable)).GetStatus(@as(*const IStiUSD, @ptrCast(self)), pDevStatus);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiUSD_DeviceReset(self: *const T) HRESULT {
                return @as(*const IStiUSD.VTable, @ptrCast(self.vtable)).DeviceReset(@as(*const IStiUSD, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiUSD_Diagnostic(self: *const T, pBuffer: ?*STI_DIAG) HRESULT {
                return @as(*const IStiUSD.VTable, @ptrCast(self.vtable)).Diagnostic(@as(*const IStiUSD, @ptrCast(self)), pBuffer);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiUSD_Escape(self: *const T, EscapeFunction: u32, lpInData: ?*anyopaque, cbInDataSize: u32, pOutData: ?*anyopaque, cbOutDataSize: u32, pdwActualData: ?*u32) HRESULT {
                return @as(*const IStiUSD.VTable, @ptrCast(self.vtable)).Escape(@as(*const IStiUSD, @ptrCast(self)), EscapeFunction, lpInData, cbInDataSize, pOutData, cbOutDataSize, pdwActualData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiUSD_GetLastError(self: *const T, pdwLastDeviceError: ?*u32) HRESULT {
                return @as(*const IStiUSD.VTable, @ptrCast(self.vtable)).GetLastError(@as(*const IStiUSD, @ptrCast(self)), pdwLastDeviceError);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiUSD_LockDevice(self: *const T) HRESULT {
                return @as(*const IStiUSD.VTable, @ptrCast(self.vtable)).LockDevice(@as(*const IStiUSD, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiUSD_UnLockDevice(self: *const T) HRESULT {
                return @as(*const IStiUSD.VTable, @ptrCast(self.vtable)).UnLockDevice(@as(*const IStiUSD, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiUSD_RawReadData(self: *const T, lpBuffer: ?*anyopaque, lpdwNumberOfBytes: ?*u32, lpOverlapped: ?*OVERLAPPED) HRESULT {
                return @as(*const IStiUSD.VTable, @ptrCast(self.vtable)).RawReadData(@as(*const IStiUSD, @ptrCast(self)), lpBuffer, lpdwNumberOfBytes, lpOverlapped);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiUSD_RawWriteData(self: *const T, lpBuffer: ?*anyopaque, nNumberOfBytes: u32, lpOverlapped: ?*OVERLAPPED) HRESULT {
                return @as(*const IStiUSD.VTable, @ptrCast(self.vtable)).RawWriteData(@as(*const IStiUSD, @ptrCast(self)), lpBuffer, nNumberOfBytes, lpOverlapped);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiUSD_RawReadCommand(self: *const T, lpBuffer: ?*anyopaque, lpdwNumberOfBytes: ?*u32, lpOverlapped: ?*OVERLAPPED) HRESULT {
                return @as(*const IStiUSD.VTable, @ptrCast(self.vtable)).RawReadCommand(@as(*const IStiUSD, @ptrCast(self)), lpBuffer, lpdwNumberOfBytes, lpOverlapped);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiUSD_RawWriteCommand(self: *const T, lpBuffer: ?*anyopaque, nNumberOfBytes: u32, lpOverlapped: ?*OVERLAPPED) HRESULT {
                return @as(*const IStiUSD.VTable, @ptrCast(self.vtable)).RawWriteCommand(@as(*const IStiUSD, @ptrCast(self)), lpBuffer, nNumberOfBytes, lpOverlapped);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiUSD_SetNotificationHandle(self: *const T, hEvent: ?HANDLE) HRESULT {
                return @as(*const IStiUSD.VTable, @ptrCast(self.vtable)).SetNotificationHandle(@as(*const IStiUSD, @ptrCast(self)), hEvent);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiUSD_GetNotificationData(self: *const T, lpNotify: ?*STINOTIFY) HRESULT {
                return @as(*const IStiUSD.VTable, @ptrCast(self.vtable)).GetNotificationData(@as(*const IStiUSD, @ptrCast(self)), lpNotify);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IStiUSD_GetLastErrorInfo(self: *const T, pLastErrorInfo: ?*_ERROR_INFOW) HRESULT {
                return @as(*const IStiUSD.VTable, @ptrCast(self.vtable)).GetLastErrorInfo(@as(*const IStiUSD, @ptrCast(self)), pLastErrorInfo);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

//--------------------------------------------------------------------------------
// Section: Functions (59)
//--------------------------------------------------------------------------------
// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxConnectFaxServerA(
    MachineName: ?[*:0]const u8,
    FaxHandle: ?*?HANDLE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxConnectFaxServerW(
    MachineName: ?[*:0]const u16,
    FaxHandle: ?*?HANDLE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

pub extern "winfax" fn FaxClose(
    FaxHandle: ?HANDLE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

pub extern "winfax" fn FaxOpenPort(
    FaxHandle: ?HANDLE,
    DeviceId: u32,
    Flags: u32,
    FaxPortHandle: ?*?HANDLE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxCompleteJobParamsA(
    JobParams: ?*?*FAX_JOB_PARAMA,
    CoverpageInfo: ?*?*FAX_COVERPAGE_INFOA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxCompleteJobParamsW(
    JobParams: ?*?*FAX_JOB_PARAMW,
    CoverpageInfo: ?*?*FAX_COVERPAGE_INFOW,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxSendDocumentA(
    FaxHandle: ?HANDLE,
    FileName: ?[*:0]const u8,
    JobParams: ?*FAX_JOB_PARAMA,
    CoverpageInfo: ?*const FAX_COVERPAGE_INFOA,
    FaxJobId: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxSendDocumentW(
    FaxHandle: ?HANDLE,
    FileName: ?[*:0]const u16,
    JobParams: ?*FAX_JOB_PARAMW,
    CoverpageInfo: ?*const FAX_COVERPAGE_INFOW,
    FaxJobId: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxSendDocumentForBroadcastA(
    FaxHandle: ?HANDLE,
    FileName: ?[*:0]const u8,
    FaxJobId: ?*u32,
    FaxRecipientCallback: ?PFAX_RECIPIENT_CALLBACKA,
    Context: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxSendDocumentForBroadcastW(
    FaxHandle: ?HANDLE,
    FileName: ?[*:0]const u16,
    FaxJobId: ?*u32,
    FaxRecipientCallback: ?PFAX_RECIPIENT_CALLBACKW,
    Context: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxEnumJobsA(
    FaxHandle: ?HANDLE,
    JobEntry: ?*?*FAX_JOB_ENTRYA,
    JobsReturned: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxEnumJobsW(
    FaxHandle: ?HANDLE,
    JobEntry: ?*?*FAX_JOB_ENTRYW,
    JobsReturned: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxGetJobA(
    FaxHandle: ?HANDLE,
    JobId: u32,
    JobEntry: ?*?*FAX_JOB_ENTRYA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxGetJobW(
    FaxHandle: ?HANDLE,
    JobId: u32,
    JobEntry: ?*?*FAX_JOB_ENTRYW,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxSetJobA(
    FaxHandle: ?HANDLE,
    JobId: u32,
    Command: u32,
    JobEntry: ?*const FAX_JOB_ENTRYA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxSetJobW(
    FaxHandle: ?HANDLE,
    JobId: u32,
    Command: u32,
    JobEntry: ?*const FAX_JOB_ENTRYW,
) callconv(@import("std").os.windows.WINAPI) BOOL;

pub extern "winfax" fn FaxGetPageData(
    FaxHandle: ?HANDLE,
    JobId: u32,
    Buffer: ?*?*u8,
    BufferSize: ?*u32,
    ImageWidth: ?*u32,
    ImageHeight: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxGetDeviceStatusA(
    FaxPortHandle: ?HANDLE,
    DeviceStatus: ?*?*FAX_DEVICE_STATUSA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxGetDeviceStatusW(
    FaxPortHandle: ?HANDLE,
    DeviceStatus: ?*?*FAX_DEVICE_STATUSW,
) callconv(@import("std").os.windows.WINAPI) BOOL;

pub extern "winfax" fn FaxAbort(
    FaxHandle: ?HANDLE,
    JobId: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxGetConfigurationA(
    FaxHandle: ?HANDLE,
    FaxConfig: ?*?*FAX_CONFIGURATIONA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxGetConfigurationW(
    FaxHandle: ?HANDLE,
    FaxConfig: ?*?*FAX_CONFIGURATIONW,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxSetConfigurationA(
    FaxHandle: ?HANDLE,
    FaxConfig: ?*const FAX_CONFIGURATIONA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxSetConfigurationW(
    FaxHandle: ?HANDLE,
    FaxConfig: ?*const FAX_CONFIGURATIONW,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxGetLoggingCategoriesA(
    FaxHandle: ?HANDLE,
    Categories: ?*?*FAX_LOG_CATEGORYA,
    NumberCategories: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxGetLoggingCategoriesW(
    FaxHandle: ?HANDLE,
    Categories: ?*?*FAX_LOG_CATEGORYW,
    NumberCategories: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxSetLoggingCategoriesA(
    FaxHandle: ?HANDLE,
    Categories: ?*const FAX_LOG_CATEGORYA,
    NumberCategories: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxSetLoggingCategoriesW(
    FaxHandle: ?HANDLE,
    Categories: ?*const FAX_LOG_CATEGORYW,
    NumberCategories: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxEnumPortsA(
    FaxHandle: ?HANDLE,
    PortInfo: ?*?*FAX_PORT_INFOA,
    PortsReturned: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxEnumPortsW(
    FaxHandle: ?HANDLE,
    PortInfo: ?*?*FAX_PORT_INFOW,
    PortsReturned: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxGetPortA(
    FaxPortHandle: ?HANDLE,
    PortInfo: ?*?*FAX_PORT_INFOA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxGetPortW(
    FaxPortHandle: ?HANDLE,
    PortInfo: ?*?*FAX_PORT_INFOW,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxSetPortA(
    FaxPortHandle: ?HANDLE,
    PortInfo: ?*const FAX_PORT_INFOA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxSetPortW(
    FaxPortHandle: ?HANDLE,
    PortInfo: ?*const FAX_PORT_INFOW,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxEnumRoutingMethodsA(
    FaxPortHandle: ?HANDLE,
    RoutingMethod: ?*?*FAX_ROUTING_METHODA,
    MethodsReturned: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxEnumRoutingMethodsW(
    FaxPortHandle: ?HANDLE,
    RoutingMethod: ?*?*FAX_ROUTING_METHODW,
    MethodsReturned: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxEnableRoutingMethodA(
    FaxPortHandle: ?HANDLE,
    RoutingGuid: ?[*:0]const u8,
    Enabled: BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxEnableRoutingMethodW(
    FaxPortHandle: ?HANDLE,
    RoutingGuid: ?[*:0]const u16,
    Enabled: BOOL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxEnumGlobalRoutingInfoA(
    FaxHandle: ?HANDLE,
    RoutingInfo: ?*?*FAX_GLOBAL_ROUTING_INFOA,
    MethodsReturned: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxEnumGlobalRoutingInfoW(
    FaxHandle: ?HANDLE,
    RoutingInfo: ?*?*FAX_GLOBAL_ROUTING_INFOW,
    MethodsReturned: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxSetGlobalRoutingInfoA(
    FaxHandle: ?HANDLE,
    RoutingInfo: ?*const FAX_GLOBAL_ROUTING_INFOA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxSetGlobalRoutingInfoW(
    FaxHandle: ?HANDLE,
    RoutingInfo: ?*const FAX_GLOBAL_ROUTING_INFOW,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxGetRoutingInfoA(
    FaxPortHandle: ?HANDLE,
    RoutingGuid: ?[*:0]const u8,
    RoutingInfoBuffer: ?*?*u8,
    RoutingInfoBufferSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxGetRoutingInfoW(
    FaxPortHandle: ?HANDLE,
    RoutingGuid: ?[*:0]const u16,
    RoutingInfoBuffer: ?*?*u8,
    RoutingInfoBufferSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxSetRoutingInfoA(
    FaxPortHandle: ?HANDLE,
    RoutingGuid: ?[*:0]const u8,
    RoutingInfoBuffer: ?*const u8,
    RoutingInfoBufferSize: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxSetRoutingInfoW(
    FaxPortHandle: ?HANDLE,
    RoutingGuid: ?[*:0]const u16,
    RoutingInfoBuffer: ?*const u8,
    RoutingInfoBufferSize: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

pub extern "winfax" fn FaxInitializeEventQueue(
    FaxHandle: ?HANDLE,
    CompletionPort: ?HANDLE,
    CompletionKey: usize,
    hWnd: ?HWND,
    MessageStart: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

pub extern "winfax" fn FaxFreeBuffer(
    Buffer: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxStartPrintJobA(
    PrinterName: ?[*:0]const u8,
    PrintInfo: ?*const FAX_PRINT_INFOA,
    FaxJobId: ?*u32,
    FaxContextInfo: ?*FAX_CONTEXT_INFOA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxStartPrintJobW(
    PrinterName: ?[*:0]const u16,
    PrintInfo: ?*const FAX_PRINT_INFOW,
    FaxJobId: ?*u32,
    FaxContextInfo: ?*FAX_CONTEXT_INFOW,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxPrintCoverPageA(
    FaxContextInfo: ?*const FAX_CONTEXT_INFOA,
    CoverPageInfo: ?*const FAX_COVERPAGE_INFOA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxPrintCoverPageW(
    FaxContextInfo: ?*const FAX_CONTEXT_INFOW,
    CoverPageInfo: ?*const FAX_COVERPAGE_INFOW,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxRegisterServiceProviderW(
    DeviceProvider: ?[*:0]const u16,
    FriendlyName: ?[*:0]const u16,
    ImageName: ?[*:0]const u16,
    TspName: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) BOOL;

pub extern "winfax" fn FaxUnregisterServiceProviderW(
    DeviceProvider: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "winfax" fn FaxRegisterRoutingExtensionW(
    FaxHandle: ?HANDLE,
    ExtensionName: ?[*:0]const u16,
    FriendlyName: ?[*:0]const u16,
    ImageName: ?[*:0]const u16,
    CallBack: ?PFAX_ROUTING_INSTALLATION_CALLBACKW,
    Context: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

pub extern "winfax" fn FaxAccessCheck(
    FaxHandle: ?HANDLE,
    AccessMask: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "fxsutility" fn CanSendToFaxRecipient() callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "fxsutility" fn SendToFaxRecipient(
    sndMode: SendToMode,
    lpFileName: ?[*:0]const u16,
) callconv(@import("std").os.windows.WINAPI) u32;

pub extern "sti" fn StiCreateInstanceW(
    hinst: ?HINSTANCE,
    dwVer: u32,
    ppSti: ?*?*IStillImageW,
    punkOuter: ?*IUnknown,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

//--------------------------------------------------------------------------------
// Section: Unicode Aliases (59)
//--------------------------------------------------------------------------------
const thismodule = @This();
pub usingnamespace switch (@import("../zig.zig").unicode_mode) {
    .ansi => struct {
        pub const FAX_LOG_CATEGORY = thismodule.FAX_LOG_CATEGORYA;
        pub const FAX_CONFIGURATION = thismodule.FAX_CONFIGURATIONA;
        pub const FAX_DEVICE_STATUS = thismodule.FAX_DEVICE_STATUSA;
        pub const FAX_JOB_ENTRY = thismodule.FAX_JOB_ENTRYA;
        pub const FAX_PORT_INFO = thismodule.FAX_PORT_INFOA;
        pub const FAX_ROUTING_METHOD = thismodule.FAX_ROUTING_METHODA;
        pub const FAX_GLOBAL_ROUTING_INFO = thismodule.FAX_GLOBAL_ROUTING_INFOA;
        pub const FAX_COVERPAGE_INFO = thismodule.FAX_COVERPAGE_INFOA;
        pub const FAX_JOB_PARAM = thismodule.FAX_JOB_PARAMA;
        pub const FAX_EVENT = thismodule.FAX_EVENTA;
        pub const FAX_PRINT_INFO = thismodule.FAX_PRINT_INFOA;
        pub const FAX_CONTEXT_INFO = thismodule.FAX_CONTEXT_INFOA;
        pub const PFAXCONNECTFAXSERVER = thismodule.PFAXCONNECTFAXSERVERA;
        pub const PFAXCOMPLETEJOBPARAMS = thismodule.PFAXCOMPLETEJOBPARAMSA;
        pub const PFAXSENDDOCUMENT = thismodule.PFAXSENDDOCUMENTA;
        pub const PFAX_RECIPIENT_CALLBACK = thismodule.PFAX_RECIPIENT_CALLBACKA;
        pub const PFAXSENDDOCUMENTFORBROADCAST = thismodule.PFAXSENDDOCUMENTFORBROADCASTA;
        pub const PFAXENUMJOBS = thismodule.PFAXENUMJOBSA;
        pub const PFAXGETJOB = thismodule.PFAXGETJOBA;
        pub const PFAXSETJOB = thismodule.PFAXSETJOBA;
        pub const PFAXGETDEVICESTATUS = thismodule.PFAXGETDEVICESTATUSA;
        pub const PFAXGETCONFIGURATION = thismodule.PFAXGETCONFIGURATIONA;
        pub const PFAXSETCONFIGURATION = thismodule.PFAXSETCONFIGURATIONA;
        pub const PFAXGETLOGGINGCATEGORIES = thismodule.PFAXGETLOGGINGCATEGORIESA;
        pub const PFAXSETLOGGINGCATEGORIES = thismodule.PFAXSETLOGGINGCATEGORIESA;
        pub const PFAXENUMPORTS = thismodule.PFAXENUMPORTSA;
        pub const PFAXGETPORT = thismodule.PFAXGETPORTA;
        pub const PFAXSETPORT = thismodule.PFAXSETPORTA;
        pub const PFAXENUMROUTINGMETHODS = thismodule.PFAXENUMROUTINGMETHODSA;
        pub const PFAXENABLEROUTINGMETHOD = thismodule.PFAXENABLEROUTINGMETHODA;
        pub const PFAXENUMGLOBALROUTINGINFO = thismodule.PFAXENUMGLOBALROUTINGINFOA;
        pub const PFAXSETGLOBALROUTINGINFO = thismodule.PFAXSETGLOBALROUTINGINFOA;
        pub const PFAXGETROUTINGINFO = thismodule.PFAXGETROUTINGINFOA;
        pub const PFAXSETROUTINGINFO = thismodule.PFAXSETROUTINGINFOA;
        pub const PFAXSTARTPRINTJOB = thismodule.PFAXSTARTPRINTJOBA;
        pub const PFAXPRINTCOVERPAGE = thismodule.PFAXPRINTCOVERPAGEA;
        pub const FaxConnectFaxServer = thismodule.FaxConnectFaxServerA;
        pub const FaxCompleteJobParams = thismodule.FaxCompleteJobParamsA;
        pub const FaxSendDocument = thismodule.FaxSendDocumentA;
        pub const FaxSendDocumentForBroadcast = thismodule.FaxSendDocumentForBroadcastA;
        pub const FaxEnumJobs = thismodule.FaxEnumJobsA;
        pub const FaxGetJob = thismodule.FaxGetJobA;
        pub const FaxSetJob = thismodule.FaxSetJobA;
        pub const FaxGetDeviceStatus = thismodule.FaxGetDeviceStatusA;
        pub const FaxGetConfiguration = thismodule.FaxGetConfigurationA;
        pub const FaxSetConfiguration = thismodule.FaxSetConfigurationA;
        pub const FaxGetLoggingCategories = thismodule.FaxGetLoggingCategoriesA;
        pub const FaxSetLoggingCategories = thismodule.FaxSetLoggingCategoriesA;
        pub const FaxEnumPorts = thismodule.FaxEnumPortsA;
        pub const FaxGetPort = thismodule.FaxGetPortA;
        pub const FaxSetPort = thismodule.FaxSetPortA;
        pub const FaxEnumRoutingMethods = thismodule.FaxEnumRoutingMethodsA;
        pub const FaxEnableRoutingMethod = thismodule.FaxEnableRoutingMethodA;
        pub const FaxEnumGlobalRoutingInfo = thismodule.FaxEnumGlobalRoutingInfoA;
        pub const FaxSetGlobalRoutingInfo = thismodule.FaxSetGlobalRoutingInfoA;
        pub const FaxGetRoutingInfo = thismodule.FaxGetRoutingInfoA;
        pub const FaxSetRoutingInfo = thismodule.FaxSetRoutingInfoA;
        pub const FaxStartPrintJob = thismodule.FaxStartPrintJobA;
        pub const FaxPrintCoverPage = thismodule.FaxPrintCoverPageA;
    },
    .wide => struct {
        pub const FAX_LOG_CATEGORY = thismodule.FAX_LOG_CATEGORYW;
        pub const FAX_CONFIGURATION = thismodule.FAX_CONFIGURATIONW;
        pub const FAX_DEVICE_STATUS = thismodule.FAX_DEVICE_STATUSW;
        pub const FAX_JOB_ENTRY = thismodule.FAX_JOB_ENTRYW;
        pub const FAX_PORT_INFO = thismodule.FAX_PORT_INFOW;
        pub const FAX_ROUTING_METHOD = thismodule.FAX_ROUTING_METHODW;
        pub const FAX_GLOBAL_ROUTING_INFO = thismodule.FAX_GLOBAL_ROUTING_INFOW;
        pub const FAX_COVERPAGE_INFO = thismodule.FAX_COVERPAGE_INFOW;
        pub const FAX_JOB_PARAM = thismodule.FAX_JOB_PARAMW;
        pub const FAX_EVENT = thismodule.FAX_EVENTW;
        pub const FAX_PRINT_INFO = thismodule.FAX_PRINT_INFOW;
        pub const FAX_CONTEXT_INFO = thismodule.FAX_CONTEXT_INFOW;
        pub const PFAXCONNECTFAXSERVER = thismodule.PFAXCONNECTFAXSERVERW;
        pub const PFAXCOMPLETEJOBPARAMS = thismodule.PFAXCOMPLETEJOBPARAMSW;
        pub const PFAXSENDDOCUMENT = thismodule.PFAXSENDDOCUMENTW;
        pub const PFAX_RECIPIENT_CALLBACK = thismodule.PFAX_RECIPIENT_CALLBACKW;
        pub const PFAXSENDDOCUMENTFORBROADCAST = thismodule.PFAXSENDDOCUMENTFORBROADCASTW;
        pub const PFAXENUMJOBS = thismodule.PFAXENUMJOBSW;
        pub const PFAXGETJOB = thismodule.PFAXGETJOBW;
        pub const PFAXSETJOB = thismodule.PFAXSETJOBW;
        pub const PFAXGETDEVICESTATUS = thismodule.PFAXGETDEVICESTATUSW;
        pub const PFAXGETCONFIGURATION = thismodule.PFAXGETCONFIGURATIONW;
        pub const PFAXSETCONFIGURATION = thismodule.PFAXSETCONFIGURATIONW;
        pub const PFAXGETLOGGINGCATEGORIES = thismodule.PFAXGETLOGGINGCATEGORIESW;
        pub const PFAXSETLOGGINGCATEGORIES = thismodule.PFAXSETLOGGINGCATEGORIESW;
        pub const PFAXENUMPORTS = thismodule.PFAXENUMPORTSW;
        pub const PFAXGETPORT = thismodule.PFAXGETPORTW;
        pub const PFAXSETPORT = thismodule.PFAXSETPORTW;
        pub const PFAXENUMROUTINGMETHODS = thismodule.PFAXENUMROUTINGMETHODSW;
        pub const PFAXENABLEROUTINGMETHOD = thismodule.PFAXENABLEROUTINGMETHODW;
        pub const PFAXENUMGLOBALROUTINGINFO = thismodule.PFAXENUMGLOBALROUTINGINFOW;
        pub const PFAXSETGLOBALROUTINGINFO = thismodule.PFAXSETGLOBALROUTINGINFOW;
        pub const PFAXGETROUTINGINFO = thismodule.PFAXGETROUTINGINFOW;
        pub const PFAXSETROUTINGINFO = thismodule.PFAXSETROUTINGINFOW;
        pub const PFAXSTARTPRINTJOB = thismodule.PFAXSTARTPRINTJOBW;
        pub const PFAXPRINTCOVERPAGE = thismodule.PFAXPRINTCOVERPAGEW;
        pub const FaxConnectFaxServer = thismodule.FaxConnectFaxServerW;
        pub const FaxCompleteJobParams = thismodule.FaxCompleteJobParamsW;
        pub const FaxSendDocument = thismodule.FaxSendDocumentW;
        pub const FaxSendDocumentForBroadcast = thismodule.FaxSendDocumentForBroadcastW;
        pub const FaxEnumJobs = thismodule.FaxEnumJobsW;
        pub const FaxGetJob = thismodule.FaxGetJobW;
        pub const FaxSetJob = thismodule.FaxSetJobW;
        pub const FaxGetDeviceStatus = thismodule.FaxGetDeviceStatusW;
        pub const FaxGetConfiguration = thismodule.FaxGetConfigurationW;
        pub const FaxSetConfiguration = thismodule.FaxSetConfigurationW;
        pub const FaxGetLoggingCategories = thismodule.FaxGetLoggingCategoriesW;
        pub const FaxSetLoggingCategories = thismodule.FaxSetLoggingCategoriesW;
        pub const FaxEnumPorts = thismodule.FaxEnumPortsW;
        pub const FaxGetPort = thismodule.FaxGetPortW;
        pub const FaxSetPort = thismodule.FaxSetPortW;
        pub const FaxEnumRoutingMethods = thismodule.FaxEnumRoutingMethodsW;
        pub const FaxEnableRoutingMethod = thismodule.FaxEnableRoutingMethodW;
        pub const FaxEnumGlobalRoutingInfo = thismodule.FaxEnumGlobalRoutingInfoW;
        pub const FaxSetGlobalRoutingInfo = thismodule.FaxSetGlobalRoutingInfoW;
        pub const FaxGetRoutingInfo = thismodule.FaxGetRoutingInfoW;
        pub const FaxSetRoutingInfo = thismodule.FaxSetRoutingInfoW;
        pub const FaxStartPrintJob = thismodule.FaxStartPrintJobW;
        pub const FaxPrintCoverPage = thismodule.FaxPrintCoverPageW;
    },
    .unspecified => if (@import("builtin").is_test) struct {
        pub const FAX_LOG_CATEGORY = *opaque {};
        pub const FAX_CONFIGURATION = *opaque {};
        pub const FAX_DEVICE_STATUS = *opaque {};
        pub const FAX_JOB_ENTRY = *opaque {};
        pub const FAX_PORT_INFO = *opaque {};
        pub const FAX_ROUTING_METHOD = *opaque {};
        pub const FAX_GLOBAL_ROUTING_INFO = *opaque {};
        pub const FAX_COVERPAGE_INFO = *opaque {};
        pub const FAX_JOB_PARAM = *opaque {};
        pub const FAX_EVENT = *opaque {};
        pub const FAX_PRINT_INFO = *opaque {};
        pub const FAX_CONTEXT_INFO = *opaque {};
        pub const PFAXCONNECTFAXSERVER = *opaque {};
        pub const PFAXCOMPLETEJOBPARAMS = *opaque {};
        pub const PFAXSENDDOCUMENT = *opaque {};
        pub const PFAX_RECIPIENT_CALLBACK = *opaque {};
        pub const PFAXSENDDOCUMENTFORBROADCAST = *opaque {};
        pub const PFAXENUMJOBS = *opaque {};
        pub const PFAXGETJOB = *opaque {};
        pub const PFAXSETJOB = *opaque {};
        pub const PFAXGETDEVICESTATUS = *opaque {};
        pub const PFAXGETCONFIGURATION = *opaque {};
        pub const PFAXSETCONFIGURATION = *opaque {};
        pub const PFAXGETLOGGINGCATEGORIES = *opaque {};
        pub const PFAXSETLOGGINGCATEGORIES = *opaque {};
        pub const PFAXENUMPORTS = *opaque {};
        pub const PFAXGETPORT = *opaque {};
        pub const PFAXSETPORT = *opaque {};
        pub const PFAXENUMROUTINGMETHODS = *opaque {};
        pub const PFAXENABLEROUTINGMETHOD = *opaque {};
        pub const PFAXENUMGLOBALROUTINGINFO = *opaque {};
        pub const PFAXSETGLOBALROUTINGINFO = *opaque {};
        pub const PFAXGETROUTINGINFO = *opaque {};
        pub const PFAXSETROUTINGINFO = *opaque {};
        pub const PFAXSTARTPRINTJOB = *opaque {};
        pub const PFAXPRINTCOVERPAGE = *opaque {};
        pub const FaxConnectFaxServer = *opaque {};
        pub const FaxCompleteJobParams = *opaque {};
        pub const FaxSendDocument = *opaque {};
        pub const FaxSendDocumentForBroadcast = *opaque {};
        pub const FaxEnumJobs = *opaque {};
        pub const FaxGetJob = *opaque {};
        pub const FaxSetJob = *opaque {};
        pub const FaxGetDeviceStatus = *opaque {};
        pub const FaxGetConfiguration = *opaque {};
        pub const FaxSetConfiguration = *opaque {};
        pub const FaxGetLoggingCategories = *opaque {};
        pub const FaxSetLoggingCategories = *opaque {};
        pub const FaxEnumPorts = *opaque {};
        pub const FaxGetPort = *opaque {};
        pub const FaxSetPort = *opaque {};
        pub const FaxEnumRoutingMethods = *opaque {};
        pub const FaxEnableRoutingMethod = *opaque {};
        pub const FaxEnumGlobalRoutingInfo = *opaque {};
        pub const FaxSetGlobalRoutingInfo = *opaque {};
        pub const FaxGetRoutingInfo = *opaque {};
        pub const FaxSetRoutingInfo = *opaque {};
        pub const FaxStartPrintJob = *opaque {};
        pub const FaxPrintCoverPage = *opaque {};
    } else struct {
        pub const FAX_LOG_CATEGORY = @compileError("'FAX_LOG_CATEGORY' requires that UNICODE be set to true or false in the root module");
        pub const FAX_CONFIGURATION = @compileError("'FAX_CONFIGURATION' requires that UNICODE be set to true or false in the root module");
        pub const FAX_DEVICE_STATUS = @compileError("'FAX_DEVICE_STATUS' requires that UNICODE be set to true or false in the root module");
        pub const FAX_JOB_ENTRY = @compileError("'FAX_JOB_ENTRY' requires that UNICODE be set to true or false in the root module");
        pub const FAX_PORT_INFO = @compileError("'FAX_PORT_INFO' requires that UNICODE be set to true or false in the root module");
        pub const FAX_ROUTING_METHOD = @compileError("'FAX_ROUTING_METHOD' requires that UNICODE be set to true or false in the root module");
        pub const FAX_GLOBAL_ROUTING_INFO = @compileError("'FAX_GLOBAL_ROUTING_INFO' requires that UNICODE be set to true or false in the root module");
        pub const FAX_COVERPAGE_INFO = @compileError("'FAX_COVERPAGE_INFO' requires that UNICODE be set to true or false in the root module");
        pub const FAX_JOB_PARAM = @compileError("'FAX_JOB_PARAM' requires that UNICODE be set to true or false in the root module");
        pub const FAX_EVENT = @compileError("'FAX_EVENT' requires that UNICODE be set to true or false in the root module");
        pub const FAX_PRINT_INFO = @compileError("'FAX_PRINT_INFO' requires that UNICODE be set to true or false in the root module");
        pub const FAX_CONTEXT_INFO = @compileError("'FAX_CONTEXT_INFO' requires that UNICODE be set to true or false in the root module");
        pub const PFAXCONNECTFAXSERVER = @compileError("'PFAXCONNECTFAXSERVER' requires that UNICODE be set to true or false in the root module");
        pub const PFAXCOMPLETEJOBPARAMS = @compileError("'PFAXCOMPLETEJOBPARAMS' requires that UNICODE be set to true or false in the root module");
        pub const PFAXSENDDOCUMENT = @compileError("'PFAXSENDDOCUMENT' requires that UNICODE be set to true or false in the root module");
        pub const PFAX_RECIPIENT_CALLBACK = @compileError("'PFAX_RECIPIENT_CALLBACK' requires that UNICODE be set to true or false in the root module");
        pub const PFAXSENDDOCUMENTFORBROADCAST = @compileError("'PFAXSENDDOCUMENTFORBROADCAST' requires that UNICODE be set to true or false in the root module");
        pub const PFAXENUMJOBS = @compileError("'PFAXENUMJOBS' requires that UNICODE be set to true or false in the root module");
        pub const PFAXGETJOB = @compileError("'PFAXGETJOB' requires that UNICODE be set to true or false in the root module");
        pub const PFAXSETJOB = @compileError("'PFAXSETJOB' requires that UNICODE be set to true or false in the root module");
        pub const PFAXGETDEVICESTATUS = @compileError("'PFAXGETDEVICESTATUS' requires that UNICODE be set to true or false in the root module");
        pub const PFAXGETCONFIGURATION = @compileError("'PFAXGETCONFIGURATION' requires that UNICODE be set to true or false in the root module");
        pub const PFAXSETCONFIGURATION = @compileError("'PFAXSETCONFIGURATION' requires that UNICODE be set to true or false in the root module");
        pub const PFAXGETLOGGINGCATEGORIES = @compileError("'PFAXGETLOGGINGCATEGORIES' requires that UNICODE be set to true or false in the root module");
        pub const PFAXSETLOGGINGCATEGORIES = @compileError("'PFAXSETLOGGINGCATEGORIES' requires that UNICODE be set to true or false in the root module");
        pub const PFAXENUMPORTS = @compileError("'PFAXENUMPORTS' requires that UNICODE be set to true or false in the root module");
        pub const PFAXGETPORT = @compileError("'PFAXGETPORT' requires that UNICODE be set to true or false in the root module");
        pub const PFAXSETPORT = @compileError("'PFAXSETPORT' requires that UNICODE be set to true or false in the root module");
        pub const PFAXENUMROUTINGMETHODS = @compileError("'PFAXENUMROUTINGMETHODS' requires that UNICODE be set to true or false in the root module");
        pub const PFAXENABLEROUTINGMETHOD = @compileError("'PFAXENABLEROUTINGMETHOD' requires that UNICODE be set to true or false in the root module");
        pub const PFAXENUMGLOBALROUTINGINFO = @compileError("'PFAXENUMGLOBALROUTINGINFO' requires that UNICODE be set to true or false in the root module");
        pub const PFAXSETGLOBALROUTINGINFO = @compileError("'PFAXSETGLOBALROUTINGINFO' requires that UNICODE be set to true or false in the root module");
        pub const PFAXGETROUTINGINFO = @compileError("'PFAXGETROUTINGINFO' requires that UNICODE be set to true or false in the root module");
        pub const PFAXSETROUTINGINFO = @compileError("'PFAXSETROUTINGINFO' requires that UNICODE be set to true or false in the root module");
        pub const PFAXSTARTPRINTJOB = @compileError("'PFAXSTARTPRINTJOB' requires that UNICODE be set to true or false in the root module");
        pub const PFAXPRINTCOVERPAGE = @compileError("'PFAXPRINTCOVERPAGE' requires that UNICODE be set to true or false in the root module");
        pub const FaxConnectFaxServer = @compileError("'FaxConnectFaxServer' requires that UNICODE be set to true or false in the root module");
        pub const FaxCompleteJobParams = @compileError("'FaxCompleteJobParams' requires that UNICODE be set to true or false in the root module");
        pub const FaxSendDocument = @compileError("'FaxSendDocument' requires that UNICODE be set to true or false in the root module");
        pub const FaxSendDocumentForBroadcast = @compileError("'FaxSendDocumentForBroadcast' requires that UNICODE be set to true or false in the root module");
        pub const FaxEnumJobs = @compileError("'FaxEnumJobs' requires that UNICODE be set to true or false in the root module");
        pub const FaxGetJob = @compileError("'FaxGetJob' requires that UNICODE be set to true or false in the root module");
        pub const FaxSetJob = @compileError("'FaxSetJob' requires that UNICODE be set to true or false in the root module");
        pub const FaxGetDeviceStatus = @compileError("'FaxGetDeviceStatus' requires that UNICODE be set to true or false in the root module");
        pub const FaxGetConfiguration = @compileError("'FaxGetConfiguration' requires that UNICODE be set to true or false in the root module");
        pub const FaxSetConfiguration = @compileError("'FaxSetConfiguration' requires that UNICODE be set to true or false in the root module");
        pub const FaxGetLoggingCategories = @compileError("'FaxGetLoggingCategories' requires that UNICODE be set to true or false in the root module");
        pub const FaxSetLoggingCategories = @compileError("'FaxSetLoggingCategories' requires that UNICODE be set to true or false in the root module");
        pub const FaxEnumPorts = @compileError("'FaxEnumPorts' requires that UNICODE be set to true or false in the root module");
        pub const FaxGetPort = @compileError("'FaxGetPort' requires that UNICODE be set to true or false in the root module");
        pub const FaxSetPort = @compileError("'FaxSetPort' requires that UNICODE be set to true or false in the root module");
        pub const FaxEnumRoutingMethods = @compileError("'FaxEnumRoutingMethods' requires that UNICODE be set to true or false in the root module");
        pub const FaxEnableRoutingMethod = @compileError("'FaxEnableRoutingMethod' requires that UNICODE be set to true or false in the root module");
        pub const FaxEnumGlobalRoutingInfo = @compileError("'FaxEnumGlobalRoutingInfo' requires that UNICODE be set to true or false in the root module");
        pub const FaxSetGlobalRoutingInfo = @compileError("'FaxSetGlobalRoutingInfo' requires that UNICODE be set to true or false in the root module");
        pub const FaxGetRoutingInfo = @compileError("'FaxGetRoutingInfo' requires that UNICODE be set to true or false in the root module");
        pub const FaxSetRoutingInfo = @compileError("'FaxSetRoutingInfo' requires that UNICODE be set to true or false in the root module");
        pub const FaxStartPrintJob = @compileError("'FaxStartPrintJob' requires that UNICODE be set to true or false in the root module");
        pub const FaxPrintCoverPage = @compileError("'FaxPrintCoverPage' requires that UNICODE be set to true or false in the root module");
    },
};
//--------------------------------------------------------------------------------
// Section: Imports (20)
//--------------------------------------------------------------------------------
const Guid = @import("../zig.zig").Guid;
const BOOL = @import("../foundation.zig").BOOL;
const BSTR = @import("../foundation.zig").BSTR;
const CHAR = @import("../foundation.zig").CHAR;
const FILETIME = @import("../foundation.zig").FILETIME;
const HANDLE = @import("../foundation.zig").HANDLE;
const HDC = @import("../graphics/gdi.zig").HDC;
const HINSTANCE = @import("../foundation.zig").HINSTANCE;
const HKEY = @import("../system/registry.zig").HKEY;
const HPROPSHEETPAGE = @import("../ui/controls.zig").HPROPSHEETPAGE;
const HRESULT = @import("../foundation.zig").HRESULT;
const HWND = @import("../foundation.zig").HWND;
const IDispatch = @import("../system/com.zig").IDispatch;
const IUnknown = @import("../system/com.zig").IUnknown;
const OVERLAPPED = @import("../system/io.zig").OVERLAPPED;
const PROPERTYKEY = @import("../ui/shell/properties_system.zig").PROPERTYKEY;
const PSTR = @import("../foundation.zig").PSTR;
const PWSTR = @import("../foundation.zig").PWSTR;
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(), "PFAXCONNECTFAXSERVERA")) {
        _ = PFAXCONNECTFAXSERVERA;
    }
    if (@hasDecl(@This(), "PFAXCONNECTFAXSERVERW")) {
        _ = PFAXCONNECTFAXSERVERW;
    }
    if (@hasDecl(@This(), "PFAXCLOSE")) {
        _ = PFAXCLOSE;
    }
    if (@hasDecl(@This(), "PFAXOPENPORT")) {
        _ = PFAXOPENPORT;
    }
    if (@hasDecl(@This(), "PFAXCOMPLETEJOBPARAMSA")) {
        _ = PFAXCOMPLETEJOBPARAMSA;
    }
    if (@hasDecl(@This(), "PFAXCOMPLETEJOBPARAMSW")) {
        _ = PFAXCOMPLETEJOBPARAMSW;
    }
    if (@hasDecl(@This(), "PFAXSENDDOCUMENTA")) {
        _ = PFAXSENDDOCUMENTA;
    }
    if (@hasDecl(@This(), "PFAXSENDDOCUMENTW")) {
        _ = PFAXSENDDOCUMENTW;
    }
    if (@hasDecl(@This(), "PFAX_RECIPIENT_CALLBACKA")) {
        _ = PFAX_RECIPIENT_CALLBACKA;
    }
    if (@hasDecl(@This(), "PFAX_RECIPIENT_CALLBACKW")) {
        _ = PFAX_RECIPIENT_CALLBACKW;
    }
    if (@hasDecl(@This(), "PFAXSENDDOCUMENTFORBROADCASTA")) {
        _ = PFAXSENDDOCUMENTFORBROADCASTA;
    }
    if (@hasDecl(@This(), "PFAXSENDDOCUMENTFORBROADCASTW")) {
        _ = PFAXSENDDOCUMENTFORBROADCASTW;
    }
    if (@hasDecl(@This(), "PFAXENUMJOBSA")) {
        _ = PFAXENUMJOBSA;
    }
    if (@hasDecl(@This(), "PFAXENUMJOBSW")) {
        _ = PFAXENUMJOBSW;
    }
    if (@hasDecl(@This(), "PFAXGETJOBA")) {
        _ = PFAXGETJOBA;
    }
    if (@hasDecl(@This(), "PFAXGETJOBW")) {
        _ = PFAXGETJOBW;
    }
    if (@hasDecl(@This(), "PFAXSETJOBA")) {
        _ = PFAXSETJOBA;
    }
    if (@hasDecl(@This(), "PFAXSETJOBW")) {
        _ = PFAXSETJOBW;
    }
    if (@hasDecl(@This(), "PFAXGETPAGEDATA")) {
        _ = PFAXGETPAGEDATA;
    }
    if (@hasDecl(@This(), "PFAXGETDEVICESTATUSA")) {
        _ = PFAXGETDEVICESTATUSA;
    }
    if (@hasDecl(@This(), "PFAXGETDEVICESTATUSW")) {
        _ = PFAXGETDEVICESTATUSW;
    }
    if (@hasDecl(@This(), "PFAXABORT")) {
        _ = PFAXABORT;
    }
    if (@hasDecl(@This(), "PFAXGETCONFIGURATIONA")) {
        _ = PFAXGETCONFIGURATIONA;
    }
    if (@hasDecl(@This(), "PFAXGETCONFIGURATIONW")) {
        _ = PFAXGETCONFIGURATIONW;
    }
    if (@hasDecl(@This(), "PFAXSETCONFIGURATIONA")) {
        _ = PFAXSETCONFIGURATIONA;
    }
    if (@hasDecl(@This(), "PFAXSETCONFIGURATIONW")) {
        _ = PFAXSETCONFIGURATIONW;
    }
    if (@hasDecl(@This(), "PFAXGETLOGGINGCATEGORIESA")) {
        _ = PFAXGETLOGGINGCATEGORIESA;
    }
    if (@hasDecl(@This(), "PFAXGETLOGGINGCATEGORIESW")) {
        _ = PFAXGETLOGGINGCATEGORIESW;
    }
    if (@hasDecl(@This(), "PFAXSETLOGGINGCATEGORIESA")) {
        _ = PFAXSETLOGGINGCATEGORIESA;
    }
    if (@hasDecl(@This(), "PFAXSETLOGGINGCATEGORIESW")) {
        _ = PFAXSETLOGGINGCATEGORIESW;
    }
    if (@hasDecl(@This(), "PFAXENUMPORTSA")) {
        _ = PFAXENUMPORTSA;
    }
    if (@hasDecl(@This(), "PFAXENUMPORTSW")) {
        _ = PFAXENUMPORTSW;
    }
    if (@hasDecl(@This(), "PFAXGETPORTA")) {
        _ = PFAXGETPORTA;
    }
    if (@hasDecl(@This(), "PFAXGETPORTW")) {
        _ = PFAXGETPORTW;
    }
    if (@hasDecl(@This(), "PFAXSETPORTA")) {
        _ = PFAXSETPORTA;
    }
    if (@hasDecl(@This(), "PFAXSETPORTW")) {
        _ = PFAXSETPORTW;
    }
    if (@hasDecl(@This(), "PFAXENUMROUTINGMETHODSA")) {
        _ = PFAXENUMROUTINGMETHODSA;
    }
    if (@hasDecl(@This(), "PFAXENUMROUTINGMETHODSW")) {
        _ = PFAXENUMROUTINGMETHODSW;
    }
    if (@hasDecl(@This(), "PFAXENABLEROUTINGMETHODA")) {
        _ = PFAXENABLEROUTINGMETHODA;
    }
    if (@hasDecl(@This(), "PFAXENABLEROUTINGMETHODW")) {
        _ = PFAXENABLEROUTINGMETHODW;
    }
    if (@hasDecl(@This(), "PFAXENUMGLOBALROUTINGINFOA")) {
        _ = PFAXENUMGLOBALROUTINGINFOA;
    }
    if (@hasDecl(@This(), "PFAXENUMGLOBALROUTINGINFOW")) {
        _ = PFAXENUMGLOBALROUTINGINFOW;
    }
    if (@hasDecl(@This(), "PFAXSETGLOBALROUTINGINFOA")) {
        _ = PFAXSETGLOBALROUTINGINFOA;
    }
    if (@hasDecl(@This(), "PFAXSETGLOBALROUTINGINFOW")) {
        _ = PFAXSETGLOBALROUTINGINFOW;
    }
    if (@hasDecl(@This(), "PFAXGETROUTINGINFOA")) {
        _ = PFAXGETROUTINGINFOA;
    }
    if (@hasDecl(@This(), "PFAXGETROUTINGINFOW")) {
        _ = PFAXGETROUTINGINFOW;
    }
    if (@hasDecl(@This(), "PFAXSETROUTINGINFOA")) {
        _ = PFAXSETROUTINGINFOA;
    }
    if (@hasDecl(@This(), "PFAXSETROUTINGINFOW")) {
        _ = PFAXSETROUTINGINFOW;
    }
    if (@hasDecl(@This(), "PFAXINITIALIZEEVENTQUEUE")) {
        _ = PFAXINITIALIZEEVENTQUEUE;
    }
    if (@hasDecl(@This(), "PFAXFREEBUFFER")) {
        _ = PFAXFREEBUFFER;
    }
    if (@hasDecl(@This(), "PFAXSTARTPRINTJOBA")) {
        _ = PFAXSTARTPRINTJOBA;
    }
    if (@hasDecl(@This(), "PFAXSTARTPRINTJOBW")) {
        _ = PFAXSTARTPRINTJOBW;
    }
    if (@hasDecl(@This(), "PFAXPRINTCOVERPAGEA")) {
        _ = PFAXPRINTCOVERPAGEA;
    }
    if (@hasDecl(@This(), "PFAXPRINTCOVERPAGEW")) {
        _ = PFAXPRINTCOVERPAGEW;
    }
    if (@hasDecl(@This(), "PFAXREGISTERSERVICEPROVIDERW")) {
        _ = PFAXREGISTERSERVICEPROVIDERW;
    }
    if (@hasDecl(@This(), "PFAXUNREGISTERSERVICEPROVIDERW")) {
        _ = PFAXUNREGISTERSERVICEPROVIDERW;
    }
    if (@hasDecl(@This(), "PFAX_ROUTING_INSTALLATION_CALLBACKW")) {
        _ = PFAX_ROUTING_INSTALLATION_CALLBACKW;
    }
    if (@hasDecl(@This(), "PFAXREGISTERROUTINGEXTENSIONW")) {
        _ = PFAXREGISTERROUTINGEXTENSIONW;
    }
    if (@hasDecl(@This(), "PFAXACCESSCHECK")) {
        _ = PFAXACCESSCHECK;
    }
    if (@hasDecl(@This(), "PFAX_SERVICE_CALLBACK")) {
        _ = PFAX_SERVICE_CALLBACK;
    }
    if (@hasDecl(@This(), "PFAX_LINECALLBACK")) {
        _ = PFAX_LINECALLBACK;
    }
    if (@hasDecl(@This(), "PFAX_SEND_CALLBACK")) {
        _ = PFAX_SEND_CALLBACK;
    }
    if (@hasDecl(@This(), "PFAXDEVINITIALIZE")) {
        _ = PFAXDEVINITIALIZE;
    }
    if (@hasDecl(@This(), "PFAXDEVVIRTUALDEVICECREATION")) {
        _ = PFAXDEVVIRTUALDEVICECREATION;
    }
    if (@hasDecl(@This(), "PFAXDEVSTARTJOB")) {
        _ = PFAXDEVSTARTJOB;
    }
    if (@hasDecl(@This(), "PFAXDEVENDJOB")) {
        _ = PFAXDEVENDJOB;
    }
    if (@hasDecl(@This(), "PFAXDEVSEND")) {
        _ = PFAXDEVSEND;
    }
    if (@hasDecl(@This(), "PFAXDEVRECEIVE")) {
        _ = PFAXDEVRECEIVE;
    }
    if (@hasDecl(@This(), "PFAXDEVREPORTSTATUS")) {
        _ = PFAXDEVREPORTSTATUS;
    }
    if (@hasDecl(@This(), "PFAXDEVABORTOPERATION")) {
        _ = PFAXDEVABORTOPERATION;
    }
    if (@hasDecl(@This(), "PFAXDEVCONFIGURE")) {
        _ = PFAXDEVCONFIGURE;
    }
    if (@hasDecl(@This(), "PFAXDEVSHUTDOWN")) {
        _ = PFAXDEVSHUTDOWN;
    }
    if (@hasDecl(@This(), "PFAXROUTEADDFILE")) {
        _ = PFAXROUTEADDFILE;
    }
    if (@hasDecl(@This(), "PFAXROUTEDELETEFILE")) {
        _ = PFAXROUTEDELETEFILE;
    }
    if (@hasDecl(@This(), "PFAXROUTEGETFILE")) {
        _ = PFAXROUTEGETFILE;
    }
    if (@hasDecl(@This(), "PFAXROUTEENUMFILE")) {
        _ = PFAXROUTEENUMFILE;
    }
    if (@hasDecl(@This(), "PFAXROUTEENUMFILES")) {
        _ = PFAXROUTEENUMFILES;
    }
    if (@hasDecl(@This(), "PFAXROUTEMODIFYROUTINGDATA")) {
        _ = PFAXROUTEMODIFYROUTINGDATA;
    }
    if (@hasDecl(@This(), "PFAXROUTEINITIALIZE")) {
        _ = PFAXROUTEINITIALIZE;
    }
    if (@hasDecl(@This(), "PFAXROUTEMETHOD")) {
        _ = PFAXROUTEMETHOD;
    }
    if (@hasDecl(@This(), "PFAXROUTEDEVICEENABLE")) {
        _ = PFAXROUTEDEVICEENABLE;
    }
    if (@hasDecl(@This(), "PFAXROUTEDEVICECHANGENOTIFICATION")) {
        _ = PFAXROUTEDEVICECHANGENOTIFICATION;
    }
    if (@hasDecl(@This(), "PFAXROUTEGETROUTINGINFO")) {
        _ = PFAXROUTEGETROUTINGINFO;
    }
    if (@hasDecl(@This(), "PFAXROUTESETROUTINGINFO")) {
        _ = PFAXROUTESETROUTINGINFO;
    }
    if (@hasDecl(@This(), "PFAX_EXT_GET_DATA")) {
        _ = PFAX_EXT_GET_DATA;
    }
    if (@hasDecl(@This(), "PFAX_EXT_SET_DATA")) {
        _ = PFAX_EXT_SET_DATA;
    }
    if (@hasDecl(@This(), "PFAX_EXT_CONFIG_CHANGE")) {
        _ = PFAX_EXT_CONFIG_CHANGE;
    }
    if (@hasDecl(@This(), "PFAX_EXT_REGISTER_FOR_EVENTS")) {
        _ = PFAX_EXT_REGISTER_FOR_EVENTS;
    }
    if (@hasDecl(@This(), "PFAX_EXT_UNREGISTER_FOR_EVENTS")) {
        _ = PFAX_EXT_UNREGISTER_FOR_EVENTS;
    }
    if (@hasDecl(@This(), "PFAX_EXT_FREE_BUFFER")) {
        _ = PFAX_EXT_FREE_BUFFER;
    }
    if (@hasDecl(@This(), "PFAX_EXT_INITIALIZE_CONFIG")) {
        _ = PFAX_EXT_INITIALIZE_CONFIG;
    }

    @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);
        }
    }
}
