//! NOTE: this file is autogenerated, DO NOT MODIFY
//--------------------------------------------------------------------------------
// Section: Constants (969)
//--------------------------------------------------------------------------------
pub const WIA_DIP_DEV_ID = @as(u32, 2);
pub const WIA_DIP_VEND_DESC = @as(u32, 3);
pub const WIA_DIP_DEV_DESC = @as(u32, 4);
pub const WIA_DIP_DEV_TYPE = @as(u32, 5);
pub const WIA_DIP_PORT_NAME = @as(u32, 6);
pub const WIA_DIP_DEV_NAME = @as(u32, 7);
pub const WIA_DIP_SERVER_NAME = @as(u32, 8);
pub const WIA_DIP_REMOTE_DEV_ID = @as(u32, 9);
pub const WIA_DIP_UI_CLSID = @as(u32, 10);
pub const WIA_DIP_HW_CONFIG = @as(u32, 11);
pub const WIA_DIP_BAUDRATE = @as(u32, 12);
pub const WIA_DIP_STI_GEN_CAPABILITIES = @as(u32, 13);
pub const WIA_DIP_WIA_VERSION = @as(u32, 14);
pub const WIA_DIP_DRIVER_VERSION = @as(u32, 15);
pub const WIA_DIP_PNP_ID = @as(u32, 16);
pub const WIA_DIP_STI_DRIVER_VERSION = @as(u32, 17);
pub const WIA_DPA_FIRMWARE_VERSION = @as(u32, 1026);
pub const WIA_DPA_CONNECT_STATUS = @as(u32, 1027);
pub const WIA_DPA_DEVICE_TIME = @as(u32, 1028);
pub const WIA_DPC_PICTURES_TAKEN = @as(u32, 2050);
pub const WIA_DPC_PICTURES_REMAINING = @as(u32, 2051);
pub const WIA_DPC_EXPOSURE_MODE = @as(u32, 2052);
pub const WIA_DPC_EXPOSURE_COMP = @as(u32, 2053);
pub const WIA_DPC_EXPOSURE_TIME = @as(u32, 2054);
pub const WIA_DPC_FNUMBER = @as(u32, 2055);
pub const WIA_DPC_FLASH_MODE = @as(u32, 2056);
pub const WIA_DPC_FOCUS_MODE = @as(u32, 2057);
pub const WIA_DPC_FOCUS_MANUAL_DIST = @as(u32, 2058);
pub const WIA_DPC_ZOOM_POSITION = @as(u32, 2059);
pub const WIA_DPC_PAN_POSITION = @as(u32, 2060);
pub const WIA_DPC_TILT_POSITION = @as(u32, 2061);
pub const WIA_DPC_TIMER_MODE = @as(u32, 2062);
pub const WIA_DPC_TIMER_VALUE = @as(u32, 2063);
pub const WIA_DPC_POWER_MODE = @as(u32, 2064);
pub const WIA_DPC_BATTERY_STATUS = @as(u32, 2065);
pub const WIA_DPC_THUMB_WIDTH = @as(u32, 2066);
pub const WIA_DPC_THUMB_HEIGHT = @as(u32, 2067);
pub const WIA_DPC_PICT_WIDTH = @as(u32, 2068);
pub const WIA_DPC_PICT_HEIGHT = @as(u32, 2069);
pub const WIA_DPC_DIMENSION = @as(u32, 2070);
pub const WIA_DPC_COMPRESSION_SETTING = @as(u32, 2071);
pub const WIA_DPC_FOCUS_METERING = @as(u32, 2072);
pub const WIA_DPC_TIMELAPSE_INTERVAL = @as(u32, 2073);
pub const WIA_DPC_TIMELAPSE_NUMBER = @as(u32, 2074);
pub const WIA_DPC_BURST_INTERVAL = @as(u32, 2075);
pub const WIA_DPC_BURST_NUMBER = @as(u32, 2076);
pub const WIA_DPC_EFFECT_MODE = @as(u32, 2077);
pub const WIA_DPC_DIGITAL_ZOOM = @as(u32, 2078);
pub const WIA_DPC_SHARPNESS = @as(u32, 2079);
pub const WIA_DPC_CONTRAST = @as(u32, 2080);
pub const WIA_DPC_CAPTURE_MODE = @as(u32, 2081);
pub const WIA_DPC_CAPTURE_DELAY = @as(u32, 2082);
pub const WIA_DPC_EXPOSURE_INDEX = @as(u32, 2083);
pub const WIA_DPC_EXPOSURE_METERING_MODE = @as(u32, 2084);
pub const WIA_DPC_FOCUS_METERING_MODE = @as(u32, 2085);
pub const WIA_DPC_FOCUS_DISTANCE = @as(u32, 2086);
pub const WIA_DPC_FOCAL_LENGTH = @as(u32, 2087);
pub const WIA_DPC_RGB_GAIN = @as(u32, 2088);
pub const WIA_DPC_WHITE_BALANCE = @as(u32, 2089);
pub const WIA_DPC_UPLOAD_URL = @as(u32, 2090);
pub const WIA_DPC_ARTIST = @as(u32, 2091);
pub const WIA_DPC_COPYRIGHT_INFO = @as(u32, 2092);
pub const WIA_DPS_HORIZONTAL_BED_SIZE = @as(u32, 3074);
pub const WIA_DPS_VERTICAL_BED_SIZE = @as(u32, 3075);
pub const WIA_DPS_HORIZONTAL_SHEET_FEED_SIZE = @as(u32, 3076);
pub const WIA_DPS_VERTICAL_SHEET_FEED_SIZE = @as(u32, 3077);
pub const WIA_DPS_SHEET_FEEDER_REGISTRATION = @as(u32, 3078);
pub const WIA_DPS_HORIZONTAL_BED_REGISTRATION = @as(u32, 3079);
pub const WIA_DPS_VERTICAL_BED_REGISTRATION = @as(u32, 3080);
pub const WIA_DPS_PLATEN_COLOR = @as(u32, 3081);
pub const WIA_DPS_PAD_COLOR = @as(u32, 3082);
pub const WIA_DPS_FILTER_SELECT = @as(u32, 3083);
pub const WIA_DPS_DITHER_SELECT = @as(u32, 3084);
pub const WIA_DPS_DITHER_PATTERN_DATA = @as(u32, 3085);
pub const WIA_DPS_DOCUMENT_HANDLING_CAPABILITIES = @as(u32, 3086);
pub const WIA_DPS_DOCUMENT_HANDLING_STATUS = @as(u32, 3087);
pub const WIA_DPS_DOCUMENT_HANDLING_SELECT = @as(u32, 3088);
pub const WIA_DPS_DOCUMENT_HANDLING_CAPACITY = @as(u32, 3089);
pub const WIA_DPS_OPTICAL_XRES = @as(u32, 3090);
pub const WIA_DPS_OPTICAL_YRES = @as(u32, 3091);
pub const WIA_DPS_ENDORSER_CHARACTERS = @as(u32, 3092);
pub const WIA_DPS_ENDORSER_STRING = @as(u32, 3093);
pub const WIA_DPS_SCAN_AHEAD_PAGES = @as(u32, 3094);
pub const WIA_DPS_MAX_SCAN_TIME = @as(u32, 3095);
pub const WIA_DPS_PAGES = @as(u32, 3096);
pub const WIA_DPS_PAGE_SIZE = @as(u32, 3097);
pub const WIA_DPS_PAGE_WIDTH = @as(u32, 3098);
pub const WIA_DPS_PAGE_HEIGHT = @as(u32, 3099);
pub const WIA_DPS_PREVIEW = @as(u32, 3100);
pub const WIA_DPS_TRANSPARENCY = @as(u32, 3101);
pub const WIA_DPS_TRANSPARENCY_SELECT = @as(u32, 3102);
pub const WIA_DPS_SHOW_PREVIEW_CONTROL = @as(u32, 3103);
pub const WIA_DPS_MIN_HORIZONTAL_SHEET_FEED_SIZE = @as(u32, 3104);
pub const WIA_DPS_MIN_VERTICAL_SHEET_FEED_SIZE = @as(u32, 3105);
pub const WIA_DPS_TRANSPARENCY_CAPABILITIES = @as(u32, 3106);
pub const WIA_DPS_TRANSPARENCY_STATUS = @as(u32, 3107);
pub const WIA_DPF_MOUNT_POINT = @as(u32, 3330);
pub const WIA_DPV_LAST_PICTURE_TAKEN = @as(u32, 3586);
pub const WIA_DPV_IMAGES_DIRECTORY = @as(u32, 3587);
pub const WIA_DPV_DSHOW_DEVICE_PATH = @as(u32, 3588);
pub const WIA_IPA_ITEM_NAME = @as(u32, 4098);
pub const WIA_IPA_FULL_ITEM_NAME = @as(u32, 4099);
pub const WIA_IPA_ITEM_TIME = @as(u32, 4100);
pub const WIA_IPA_ITEM_FLAGS = @as(u32, 4101);
pub const WIA_IPA_ACCESS_RIGHTS = @as(u32, 4102);
pub const WIA_IPA_DATATYPE = @as(u32, 4103);
pub const WIA_IPA_DEPTH = @as(u32, 4104);
pub const WIA_IPA_PREFERRED_FORMAT = @as(u32, 4105);
pub const WIA_IPA_FORMAT = @as(u32, 4106);
pub const WIA_IPA_COMPRESSION = @as(u32, 4107);
pub const WIA_IPA_TYMED = @as(u32, 4108);
pub const WIA_IPA_CHANNELS_PER_PIXEL = @as(u32, 4109);
pub const WIA_IPA_BITS_PER_CHANNEL = @as(u32, 4110);
pub const WIA_IPA_PLANAR = @as(u32, 4111);
pub const WIA_IPA_PIXELS_PER_LINE = @as(u32, 4112);
pub const WIA_IPA_BYTES_PER_LINE = @as(u32, 4113);
pub const WIA_IPA_NUMBER_OF_LINES = @as(u32, 4114);
pub const WIA_IPA_GAMMA_CURVES = @as(u32, 4115);
pub const WIA_IPA_ITEM_SIZE = @as(u32, 4116);
pub const WIA_IPA_COLOR_PROFILE = @as(u32, 4117);
pub const WIA_IPA_MIN_BUFFER_SIZE = @as(u32, 4118);
pub const WIA_IPA_BUFFER_SIZE = @as(u32, 4118);
pub const WIA_IPA_REGION_TYPE = @as(u32, 4119);
pub const WIA_IPA_ICM_PROFILE_NAME = @as(u32, 4120);
pub const WIA_IPA_APP_COLOR_MAPPING = @as(u32, 4121);
pub const WIA_IPA_PROP_STREAM_COMPAT_ID = @as(u32, 4122);
pub const WIA_IPA_FILENAME_EXTENSION = @as(u32, 4123);
pub const WIA_IPA_SUPPRESS_PROPERTY_PAGE = @as(u32, 4124);
pub const WIA_IPC_THUMBNAIL = @as(u32, 5122);
pub const WIA_IPC_THUMB_WIDTH = @as(u32, 5123);
pub const WIA_IPC_THUMB_HEIGHT = @as(u32, 5124);
pub const WIA_IPC_AUDIO_AVAILABLE = @as(u32, 5125);
pub const WIA_IPC_AUDIO_DATA_FORMAT = @as(u32, 5126);
pub const WIA_IPC_AUDIO_DATA = @as(u32, 5127);
pub const WIA_IPC_NUM_PICT_PER_ROW = @as(u32, 5128);
pub const WIA_IPC_SEQUENCE = @as(u32, 5129);
pub const WIA_IPC_TIMEDELAY = @as(u32, 5130);
pub const WIA_IPS_CUR_INTENT = @as(u32, 6146);
pub const WIA_IPS_XRES = @as(u32, 6147);
pub const WIA_IPS_YRES = @as(u32, 6148);
pub const WIA_IPS_XPOS = @as(u32, 6149);
pub const WIA_IPS_YPOS = @as(u32, 6150);
pub const WIA_IPS_XEXTENT = @as(u32, 6151);
pub const WIA_IPS_YEXTENT = @as(u32, 6152);
pub const WIA_IPS_PHOTOMETRIC_INTERP = @as(u32, 6153);
pub const WIA_IPS_BRIGHTNESS = @as(u32, 6154);
pub const WIA_IPS_CONTRAST = @as(u32, 6155);
pub const WIA_IPS_ORIENTATION = @as(u32, 6156);
pub const WIA_IPS_ROTATION = @as(u32, 6157);
pub const WIA_IPS_MIRROR = @as(u32, 6158);
pub const WIA_IPS_THRESHOLD = @as(u32, 6159);
pub const WIA_IPS_INVERT = @as(u32, 6160);
pub const WIA_IPS_WARM_UP_TIME = @as(u32, 6161);
pub const WIA_DPS_USER_NAME = @as(u32, 3112);
pub const WIA_DPS_SERVICE_ID = @as(u32, 3113);
pub const WIA_DPS_DEVICE_ID = @as(u32, 3114);
pub const WIA_DPS_GLOBAL_IDENTITY = @as(u32, 3115);
pub const WIA_DPS_SCAN_AVAILABLE_ITEM = @as(u32, 3116);
pub const WIA_IPS_DESKEW_X = @as(u32, 6162);
pub const WIA_IPS_DESKEW_Y = @as(u32, 6163);
pub const WIA_IPS_SEGMENTATION = @as(u32, 6164);
pub const WIA_IPS_MAX_HORIZONTAL_SIZE = @as(u32, 6165);
pub const WIA_IPS_MAX_VERTICAL_SIZE = @as(u32, 6166);
pub const WIA_IPS_MIN_HORIZONTAL_SIZE = @as(u32, 6167);
pub const WIA_IPS_MIN_VERTICAL_SIZE = @as(u32, 6168);
pub const WIA_IPS_TRANSFER_CAPABILITIES = @as(u32, 6169);
pub const WIA_IPS_SHEET_FEEDER_REGISTRATION = @as(u32, 3078);
pub const WIA_IPS_DOCUMENT_HANDLING_SELECT = @as(u32, 3088);
pub const WIA_IPS_OPTICAL_XRES = @as(u32, 3090);
pub const WIA_IPS_OPTICAL_YRES = @as(u32, 3091);
pub const WIA_IPS_PAGES = @as(u32, 3096);
pub const WIA_IPS_PAGE_SIZE = @as(u32, 3097);
pub const WIA_IPS_PAGE_WIDTH = @as(u32, 3098);
pub const WIA_IPS_PAGE_HEIGHT = @as(u32, 3099);
pub const WIA_IPS_PREVIEW = @as(u32, 3100);
pub const WIA_IPS_SHOW_PREVIEW_CONTROL = @as(u32, 3103);
pub const WIA_IPS_FILM_SCAN_MODE = @as(u32, 3104);
pub const WIA_IPS_LAMP = @as(u32, 3105);
pub const WIA_IPS_LAMP_AUTO_OFF = @as(u32, 3106);
pub const WIA_IPS_AUTO_DESKEW = @as(u32, 3107);
pub const WIA_IPS_SUPPORTS_CHILD_ITEM_CREATION = @as(u32, 3108);
pub const WIA_IPS_XSCALING = @as(u32, 3109);
pub const WIA_IPS_YSCALING = @as(u32, 3110);
pub const WIA_IPS_PREVIEW_TYPE = @as(u32, 3111);
pub const WIA_IPA_ITEM_CATEGORY = @as(u32, 4125);
pub const WIA_IPA_UPLOAD_ITEM_SIZE = @as(u32, 4126);
pub const WIA_IPA_ITEMS_STORED = @as(u32, 4127);
pub const WIA_IPA_RAW_BITS_PER_CHANNEL = @as(u32, 4128);
pub const WIA_IPS_FILM_NODE_NAME = @as(u32, 4129);
pub const WIA_IPS_PRINTER_ENDORSER = @as(u32, 4130);
pub const WIA_IPS_PRINTER_ENDORSER_ORDER = @as(u32, 4131);
pub const WIA_IPS_PRINTER_ENDORSER_COUNTER = @as(u32, 4132);
pub const WIA_IPS_PRINTER_ENDORSER_STEP = @as(u32, 4133);
pub const WIA_IPS_PRINTER_ENDORSER_XOFFSET = @as(u32, 4134);
pub const WIA_IPS_PRINTER_ENDORSER_YOFFSET = @as(u32, 4135);
pub const WIA_IPS_PRINTER_ENDORSER_NUM_LINES = @as(u32, 4136);
pub const WIA_IPS_PRINTER_ENDORSER_STRING = @as(u32, 4137);
pub const WIA_IPS_PRINTER_ENDORSER_VALID_CHARACTERS = @as(u32, 4138);
pub const WIA_IPS_PRINTER_ENDORSER_VALID_FORMAT_SPECIFIERS = @as(u32, 4139);
pub const WIA_IPS_PRINTER_ENDORSER_TEXT_UPLOAD = @as(u32, 4140);
pub const WIA_IPS_PRINTER_ENDORSER_TEXT_DOWNLOAD = @as(u32, 4141);
pub const WIA_IPS_PRINTER_ENDORSER_GRAPHICS = @as(u32, 4142);
pub const WIA_IPS_PRINTER_ENDORSER_GRAPHICS_POSITION = @as(u32, 4143);
pub const WIA_IPS_PRINTER_ENDORSER_GRAPHICS_MIN_WIDTH = @as(u32, 4144);
pub const WIA_IPS_PRINTER_ENDORSER_GRAPHICS_MAX_WIDTH = @as(u32, 4145);
pub const WIA_IPS_PRINTER_ENDORSER_GRAPHICS_MIN_HEIGHT = @as(u32, 4146);
pub const WIA_IPS_PRINTER_ENDORSER_GRAPHICS_MAX_HEIGHT = @as(u32, 4147);
pub const WIA_IPS_PRINTER_ENDORSER_GRAPHICS_UPLOAD = @as(u32, 4148);
pub const WIA_IPS_PRINTER_ENDORSER_GRAPHICS_DOWNLOAD = @as(u32, 4149);
pub const WIA_IPS_BARCODE_READER = @as(u32, 4150);
pub const WIA_IPS_MAXIMUM_BARCODES_PER_PAGE = @as(u32, 4151);
pub const WIA_IPS_BARCODE_SEARCH_DIRECTION = @as(u32, 4152);
pub const WIA_IPS_MAXIMUM_BARCODE_SEARCH_RETRIES = @as(u32, 4153);
pub const WIA_IPS_BARCODE_SEARCH_TIMEOUT = @as(u32, 4154);
pub const WIA_IPS_SUPPORTED_BARCODE_TYPES = @as(u32, 4155);
pub const WIA_IPS_ENABLED_BARCODE_TYPES = @as(u32, 4156);
pub const WIA_IPS_PATCH_CODE_READER = @as(u32, 4157);
pub const WIA_IPS_SUPPORTED_PATCH_CODE_TYPES = @as(u32, 4162);
pub const WIA_IPS_ENABLED_PATCH_CODE_TYPES = @as(u32, 4163);
pub const WIA_IPS_MICR_READER = @as(u32, 4164);
pub const WIA_IPS_JOB_SEPARATORS = @as(u32, 4165);
pub const WIA_IPS_LONG_DOCUMENT = @as(u32, 4166);
pub const WIA_IPS_BLANK_PAGES = @as(u32, 4167);
pub const WIA_IPS_MULTI_FEED = @as(u32, 4168);
pub const WIA_IPS_MULTI_FEED_SENSITIVITY = @as(u32, 4169);
pub const WIA_IPS_AUTO_CROP = @as(u32, 4170);
pub const WIA_IPS_OVER_SCAN = @as(u32, 4171);
pub const WIA_IPS_OVER_SCAN_LEFT = @as(u32, 4172);
pub const WIA_IPS_OVER_SCAN_RIGHT = @as(u32, 4173);
pub const WIA_IPS_OVER_SCAN_TOP = @as(u32, 4174);
pub const WIA_IPS_OVER_SCAN_BOTTOM = @as(u32, 4175);
pub const WIA_IPS_COLOR_DROP = @as(u32, 4176);
pub const WIA_IPS_COLOR_DROP_RED = @as(u32, 4177);
pub const WIA_IPS_COLOR_DROP_GREEN = @as(u32, 4178);
pub const WIA_IPS_COLOR_DROP_BLUE = @as(u32, 4179);
pub const WIA_IPS_SCAN_AHEAD = @as(u32, 4180);
pub const WIA_IPS_SCAN_AHEAD_CAPACITY = @as(u32, 4181);
pub const WIA_IPS_FEEDER_CONTROL = @as(u32, 4182);
pub const WIA_IPS_PRINTER_ENDORSER_PADDING = @as(u32, 4183);
pub const WIA_IPS_PRINTER_ENDORSER_FONT_TYPE = @as(u32, 4184);
pub const WIA_IPS_ALARM = @as(u32, 4185);
pub const WIA_IPS_PRINTER_ENDORSER_INK = @as(u32, 4186);
pub const WIA_IPS_PRINTER_ENDORSER_CHARACTER_ROTATION = @as(u32, 4187);
pub const WIA_IPS_PRINTER_ENDORSER_MAX_CHARACTERS = @as(u32, 4188);
pub const WIA_IPS_PRINTER_ENDORSER_MAX_GRAPHICS = @as(u32, 4189);
pub const WIA_IPS_PRINTER_ENDORSER_COUNTER_DIGITS = @as(u32, 4190);
pub const WIA_IPS_COLOR_DROP_MULTI = @as(u32, 4191);
pub const WIA_IPS_BLANK_PAGES_SENSITIVITY = @as(u32, 4192);
pub const WIA_IPS_MULTI_FEED_DETECT_METHOD = @as(u32, 4193);
pub const WIA_CATEGORY_FINISHED_FILE = Guid.initString("ff2b77ca-cf84-432b-a735-3a130dde2a88");
pub const WIA_CATEGORY_FLATBED = Guid.initString("fb607b1f-43f3-488b-855b-fb703ec342a6");
pub const WIA_CATEGORY_FEEDER = Guid.initString("fe131934-f84c-42ad-8da4-6129cddd7288");
pub const WIA_CATEGORY_FILM = Guid.initString("fcf65be7-3ce3-4473-af85-f5d37d21b68a");
pub const WIA_CATEGORY_ROOT = Guid.initString("f193526f-59b8-4a26-9888-e16e4f97ce10");
pub const WIA_CATEGORY_FOLDER = Guid.initString("c692a446-6f5a-481d-85bb-92e2e86fd30a");
pub const WIA_CATEGORY_FEEDER_FRONT = Guid.initString("4823175c-3b28-487b-a7e6-eebc17614fd1");
pub const WIA_CATEGORY_FEEDER_BACK = Guid.initString("61ca74d4-39db-42aa-89b1-8c19c9cd4c23");
pub const WIA_CATEGORY_AUTO = Guid.initString("defe5fd8-6c97-4dde-b11e-cb509b270e11");
pub const WIA_CATEGORY_IMPRINTER = Guid.initString("fc65016d-9202-43dd-91a7-64c2954cfb8b");
pub const WIA_CATEGORY_ENDORSER = Guid.initString("47102cc3-127f-4771-adfc-991ab8ee1e97");
pub const WIA_CATEGORY_BARCODE_READER = Guid.initString("36e178a0-473f-494b-af8f-6c3f6d7486fc");
pub const WIA_CATEGORY_PATCH_CODE_READER = Guid.initString("8faa1a6d-9c8a-42cd-98b3-ee9700cbc74f");
pub const WIA_CATEGORY_MICR_READER = Guid.initString("3b86c1ec-71bc-4645-b4d5-1b19da2be978");
pub const CLSID_WiaDefaultSegFilter = Guid.initString("d4f4d30b-0b29-4508-8922-0c5797d42765");
pub const WIA_TRANSFER_CHILDREN_SINGLE_SCAN = @as(u32, 1);
pub const WIA_USE_SEGMENTATION_FILTER = @as(u32, 0);
pub const WIA_DONT_USE_SEGMENTATION_FILTER = @as(u32, 1);
pub const WIA_FILM_COLOR_SLIDE = @as(u32, 0);
pub const WIA_FILM_COLOR_NEGATIVE = @as(u32, 1);
pub const WIA_FILM_BW_NEGATIVE = @as(u32, 2);
pub const WIA_LAMP_ON = @as(u32, 0);
pub const WIA_LAMP_OFF = @as(u32, 1);
pub const WIA_AUTO_DESKEW_ON = @as(u32, 0);
pub const WIA_AUTO_DESKEW_OFF = @as(u32, 1);
pub const WIA_ADVANCED_PREVIEW = @as(u32, 0);
pub const WIA_BASIC_PREVIEW = @as(u32, 1);
pub const WIA_PRINTER_ENDORSER_DISABLED = @as(u32, 0);
pub const WIA_PRINTER_ENDORSER_AUTO = @as(u32, 1);
pub const WIA_PRINTER_ENDORSER_FLATBED = @as(u32, 2);
pub const WIA_PRINTER_ENDORSER_FEEDER_FRONT = @as(u32, 3);
pub const WIA_PRINTER_ENDORSER_FEEDER_BACK = @as(u32, 4);
pub const WIA_PRINTER_ENDORSER_FEEDER_DUPLEX = @as(u32, 5);
pub const WIA_PRINTER_ENDORSER_DIGITAL = @as(u32, 6);
pub const WIA_PRINTER_ENDORSER_BEFORE_SCAN = @as(u32, 0);
pub const WIA_PRINTER_ENDORSER_AFTER_SCAN = @as(u32, 1);
pub const WIA_PRINT_DATE = @as(u32, 0);
pub const WIA_PRINT_YEAR = @as(u32, 1);
pub const WIA_PRINT_MONTH = @as(u32, 2);
pub const WIA_PRINT_DAY = @as(u32, 3);
pub const WIA_PRINT_WEEK_DAY = @as(u32, 4);
pub const WIA_PRINT_TIME_24H = @as(u32, 5);
pub const WIA_PRINT_TIME_12H = @as(u32, 6);
pub const WIA_PRINT_HOUR_24H = @as(u32, 7);
pub const WIA_PRINT_HOUR_12H = @as(u32, 8);
pub const WIA_PRINT_AM_PM = @as(u32, 9);
pub const WIA_PRINT_MINUTE = @as(u32, 10);
pub const WIA_PRINT_SECOND = @as(u32, 11);
pub const WIA_PRINT_PAGE_COUNT = @as(u32, 12);
pub const WIA_PRINT_IMAGE = @as(u32, 13);
pub const WIA_PRINT_MILLISECOND = @as(u32, 14);
pub const WIA_PRINT_MONTH_NAME = @as(u32, 15);
pub const WIA_PRINT_MONTH_SHORT = @as(u32, 16);
pub const WIA_PRINT_WEEK_DAY_SHORT = @as(u32, 17);
pub const WIA_PRINTER_ENDORSER_GRAPHICS_LEFT = @as(u32, 0);
pub const WIA_PRINTER_ENDORSER_GRAPHICS_RIGHT = @as(u32, 1);
pub const WIA_PRINTER_ENDORSER_GRAPHICS_TOP = @as(u32, 2);
pub const WIA_PRINTER_ENDORSER_GRAPHICS_BOTTOM = @as(u32, 3);
pub const WIA_PRINTER_ENDORSER_GRAPHICS_TOP_LEFT = @as(u32, 4);
pub const WIA_PRINTER_ENDORSER_GRAPHICS_TOP_RIGHT = @as(u32, 5);
pub const WIA_PRINTER_ENDORSER_GRAPHICS_BOTTOM_LEFT = @as(u32, 6);
pub const WIA_PRINTER_ENDORSER_GRAPHICS_BOTTOM_RIGHT = @as(u32, 7);
pub const WIA_PRINTER_ENDORSER_GRAPHICS_BACKGROUND = @as(u32, 8);
pub const WIA_PRINTER_ENDORSER_GRAPHICS_DEVICE_DEFAULT = @as(u32, 9);
pub const WIA_BARCODE_READER_DISABLED = @as(u32, 0);
pub const WIA_BARCODE_READER_AUTO = @as(u32, 1);
pub const WIA_BARCODE_READER_FLATBED = @as(u32, 2);
pub const WIA_BARCODE_READER_FEEDER_FRONT = @as(u32, 3);
pub const WIA_BARCODE_READER_FEEDER_BACK = @as(u32, 4);
pub const WIA_BARCODE_READER_FEEDER_DUPLEX = @as(u32, 5);
pub const WIA_BARCODE_HORIZONTAL_SEARCH = @as(u32, 0);
pub const WIA_BARCODE_VERTICAL_SEARCH = @as(u32, 1);
pub const WIA_BARCODE_HORIZONTAL_VERTICAL_SEARCH = @as(u32, 2);
pub const WIA_BARCODE_VERTICAL_HORIZONTAL_SEARCH = @as(u32, 3);
pub const WIA_BARCODE_AUTO_SEARCH = @as(u32, 4);
pub const WIA_BARCODE_UPCA = @as(u32, 0);
pub const WIA_BARCODE_UPCE = @as(u32, 1);
pub const WIA_BARCODE_CODABAR = @as(u32, 2);
pub const WIA_BARCODE_NONINTERLEAVED_2OF5 = @as(u32, 3);
pub const WIA_BARCODE_INTERLEAVED_2OF5 = @as(u32, 4);
pub const WIA_BARCODE_CODE39 = @as(u32, 5);
pub const WIA_BARCODE_CODE39_MOD43 = @as(u32, 6);
pub const WIA_BARCODE_CODE39_FULLASCII = @as(u32, 7);
pub const WIA_BARCODE_CODE93 = @as(u32, 8);
pub const WIA_BARCODE_CODE128 = @as(u32, 9);
pub const WIA_BARCODE_CODE128A = @as(u32, 10);
pub const WIA_BARCODE_CODE128B = @as(u32, 11);
pub const WIA_BARCODE_CODE128C = @as(u32, 12);
pub const WIA_BARCODE_GS1128 = @as(u32, 13);
pub const WIA_BARCODE_GS1DATABAR = @as(u32, 14);
pub const WIA_BARCODE_ITF14 = @as(u32, 15);
pub const WIA_BARCODE_EAN8 = @as(u32, 16);
pub const WIA_BARCODE_EAN13 = @as(u32, 17);
pub const WIA_BARCODE_POSTNETA = @as(u32, 18);
pub const WIA_BARCODE_POSTNETB = @as(u32, 19);
pub const WIA_BARCODE_POSTNETC = @as(u32, 20);
pub const WIA_BARCODE_POSTNET_DPBC = @as(u32, 21);
pub const WIA_BARCODE_PLANET = @as(u32, 22);
pub const WIA_BARCODE_INTELLIGENT_MAIL = @as(u32, 23);
pub const WIA_BARCODE_POSTBAR = @as(u32, 24);
pub const WIA_BARCODE_RM4SCC = @as(u32, 25);
pub const WIA_BARCODE_HIGH_CAPACITY_COLOR = @as(u32, 26);
pub const WIA_BARCODE_MAXICODE = @as(u32, 27);
pub const WIA_BARCODE_PDF417 = @as(u32, 28);
pub const WIA_BARCODE_CPCBINARY = @as(u32, 29);
pub const WIA_BARCODE_FIM = @as(u32, 30);
pub const WIA_BARCODE_PHARMACODE = @as(u32, 31);
pub const WIA_BARCODE_PLESSEY = @as(u32, 32);
pub const WIA_BARCODE_MSI = @as(u32, 33);
pub const WIA_BARCODE_JAN = @as(u32, 34);
pub const WIA_BARCODE_TELEPEN = @as(u32, 35);
pub const WIA_BARCODE_AZTEC = @as(u32, 36);
pub const WIA_BARCODE_SMALLAZTEC = @as(u32, 37);
pub const WIA_BARCODE_DATAMATRIX = @as(u32, 38);
pub const WIA_BARCODE_DATASTRIP = @as(u32, 39);
pub const WIA_BARCODE_EZCODE = @as(u32, 40);
pub const WIA_BARCODE_QRCODE = @as(u32, 41);
pub const WIA_BARCODE_SHOTCODE = @as(u32, 42);
pub const WIA_BARCODE_SPARQCODE = @as(u32, 43);
pub const WIA_BARCODE_CUSTOMBASE = @as(u32, 32768);
pub const WIA_PATCH_CODE_READER_DISABLED = @as(u32, 0);
pub const WIA_PATCH_CODE_READER_AUTO = @as(u32, 1);
pub const WIA_PATCH_CODE_READER_FLATBED = @as(u32, 2);
pub const WIA_PATCH_CODE_READER_FEEDER_FRONT = @as(u32, 3);
pub const WIA_PATCH_CODE_READER_FEEDER_BACK = @as(u32, 4);
pub const WIA_PATCH_CODE_READER_FEEDER_DUPLEX = @as(u32, 5);
pub const WIA_PATCH_CODE_UNKNOWN = @as(u32, 0);
pub const WIA_PATCH_CODE_1 = @as(u32, 1);
pub const WIA_PATCH_CODE_2 = @as(u32, 2);
pub const WIA_PATCH_CODE_3 = @as(u32, 3);
pub const WIA_PATCH_CODE_4 = @as(u32, 4);
pub const WIA_PATCH_CODE_T = @as(u32, 5);
pub const WIA_PATCH_CODE_6 = @as(u32, 6);
pub const WIA_PATCH_CODE_7 = @as(u32, 7);
pub const WIA_PATCH_CODE_8 = @as(u32, 8);
pub const WIA_PATCH_CODE_9 = @as(u32, 9);
pub const WIA_PATCH_CODE_10 = @as(u32, 10);
pub const WIA_PATCH_CODE_11 = @as(u32, 11);
pub const WIA_PATCH_CODE_12 = @as(u32, 12);
pub const WIA_PATCH_CODE_13 = @as(u32, 13);
pub const WIA_PATCH_CODE_14 = @as(u32, 14);
pub const WIA_PATCH_CODE_CUSTOM_BASE = @as(u32, 32768);
pub const WIA_MICR_READER_DISABLED = @as(u32, 0);
pub const WIA_MICR_READER_AUTO = @as(u32, 1);
pub const WIA_MICR_READER_FLATBED = @as(u32, 2);
pub const WIA_MICR_READER_FEEDER_FRONT = @as(u32, 3);
pub const WIA_MICR_READER_FEEDER_BACK = @as(u32, 4);
pub const WIA_MICR_READER_FEEDER_DUPLEX = @as(u32, 5);
pub const WIA_SEPARATOR_DISABLED = @as(u32, 0);
pub const WIA_SEPARATOR_DETECT_SCAN_CONTINUE = @as(u32, 1);
pub const WIA_SEPARATOR_DETECT_SCAN_STOP = @as(u32, 2);
pub const WIA_SEPARATOR_DETECT_NOSCAN_CONTINUE = @as(u32, 3);
pub const WIA_SEPARATOR_DETECT_NOSCAN_STOP = @as(u32, 4);
pub const WIA_LONG_DOCUMENT_DISABLED = @as(u32, 0);
pub const WIA_LONG_DOCUMENT_ENABLED = @as(u32, 1);
pub const WIA_LONG_DOCUMENT_SPLIT = @as(u32, 2);
pub const WIA_BLANK_PAGE_DETECTION_DISABLED = @as(u32, 0);
pub const WIA_BLANK_PAGE_DISCARD = @as(u32, 1);
pub const WIA_BLANK_PAGE_JOB_SEPARATOR = @as(u32, 2);
pub const WIA_MULTI_FEED_DETECT_DISABLED = @as(u32, 0);
pub const WIA_MULTI_FEED_DETECT_STOP_ERROR = @as(u32, 1);
pub const WIA_MULTI_FEED_DETECT_STOP_SUCCESS = @as(u32, 2);
pub const WIA_MULTI_FEED_DETECT_CONTINUE = @as(u32, 3);
pub const WIA_MULTI_FEED_DETECT_METHOD_LENGTH = @as(u32, 0);
pub const WIA_MULTI_FEED_DETECT_METHOD_OVERLAP = @as(u32, 1);
pub const WIA_AUTO_CROP_DISABLED = @as(u32, 0);
pub const WIA_AUTO_CROP_SINGLE = @as(u32, 1);
pub const WIA_AUTO_CROP_MULTI = @as(u32, 2);
pub const WIA_OVER_SCAN_DISABLED = @as(u32, 0);
pub const WIA_OVER_SCAN_TOP_BOTTOM = @as(u32, 1);
pub const WIA_OVER_SCAN_LEFT_RIGHT = @as(u32, 2);
pub const WIA_OVER_SCAN_ALL = @as(u32, 3);
pub const WIA_COLOR_DROP_DISABLED = @as(u32, 0);
pub const WIA_COLOR_DROP_RED = @as(u32, 1);
pub const WIA_COLOR_DROP_GREEN = @as(u32, 2);
pub const WIA_COLOR_DROP_BLUE = @as(u32, 3);
pub const WIA_COLOR_DROP_RGB = @as(u32, 4);
pub const WIA_SCAN_AHEAD_DISABLED = @as(u32, 0);
pub const WIA_SCAN_AHEAD_ENABLED = @as(u32, 1);
pub const WIA_FEEDER_CONTROL_AUTO = @as(u32, 0);
pub const WIA_FEEDER_CONTROL_MANUAL = @as(u32, 1);
pub const WIA_PRINT_PADDING_NONE = @as(u32, 0);
pub const WIA_PRINT_PADDING_ZERO = @as(u32, 1);
pub const WIA_PRINT_PADDING_BLANK = @as(u32, 2);
pub const WIA_PRINT_FONT_NORMAL = @as(u32, 0);
pub const WIA_PRINT_FONT_BOLD = @as(u32, 1);
pub const WIA_PRINT_FONT_EXTRA_BOLD = @as(u32, 2);
pub const WIA_PRINT_FONT_ITALIC_BOLD = @as(u32, 3);
pub const WIA_PRINT_FONT_ITALIC_EXTRA_BOLD = @as(u32, 4);
pub const WIA_PRINT_FONT_ITALIC = @as(u32, 5);
pub const WIA_PRINT_FONT_SMALL = @as(u32, 6);
pub const WIA_PRINT_FONT_SMALL_BOLD = @as(u32, 7);
pub const WIA_PRINT_FONT_SMALL_EXTRA_BOLD = @as(u32, 8);
pub const WIA_PRINT_FONT_SMALL_ITALIC_BOLD = @as(u32, 9);
pub const WIA_PRINT_FONT_SMALL_ITALIC_EXTRA_BOLD = @as(u32, 10);
pub const WIA_PRINT_FONT_SMALL_ITALIC = @as(u32, 11);
pub const WIA_PRINT_FONT_LARGE = @as(u32, 12);
pub const WIA_PRINT_FONT_LARGE_BOLD = @as(u32, 13);
pub const WIA_PRINT_FONT_LARGE_EXTRA_BOLD = @as(u32, 14);
pub const WIA_PRINT_FONT_LARGE_ITALIC_BOLD = @as(u32, 15);
pub const WIA_PRINT_FONT_LARGE_ITALIC_EXTRA_BOLD = @as(u32, 16);
pub const WIA_PRINT_FONT_LARGE_ITALIC = @as(u32, 17);
pub const WIA_ALARM_NONE = @as(u32, 0);
pub const WIA_ALARM_BEEP1 = @as(u32, 1);
pub const WIA_ALARM_BEEP2 = @as(u32, 2);
pub const WIA_ALARM_BEEP3 = @as(u32, 3);
pub const WIA_ALARM_BEEP4 = @as(u32, 4);
pub const WIA_ALARM_BEEP5 = @as(u32, 5);
pub const WIA_ALARM_BEEP6 = @as(u32, 6);
pub const WIA_ALARM_BEEP7 = @as(u32, 7);
pub const WIA_ALARM_BEEP8 = @as(u32, 8);
pub const WIA_ALARM_BEEP9 = @as(u32, 9);
pub const WIA_ALARM_BEEP10 = @as(u32, 10);
pub const WIA_PRIVATE_DEVPROP = @as(u32, 38914);
pub const WIA_PRIVATE_ITEMPROP = @as(u32, 71682);
pub const WiaImgFmt_UNDEFINED = Guid.initString("b96b3ca9-0728-11d3-9d7b-0000f81ef32e");
pub const WiaImgFmt_RAWRGB = Guid.initString("bca48b55-f272-4371-b0f1-4a150d057bb4");
pub const WiaImgFmt_MEMORYBMP = Guid.initString("b96b3caa-0728-11d3-9d7b-0000f81ef32e");
pub const WiaImgFmt_BMP = Guid.initString("b96b3cab-0728-11d3-9d7b-0000f81ef32e");
pub const WiaImgFmt_EMF = Guid.initString("b96b3cac-0728-11d3-9d7b-0000f81ef32e");
pub const WiaImgFmt_WMF = Guid.initString("b96b3cad-0728-11d3-9d7b-0000f81ef32e");
pub const WiaImgFmt_JPEG = Guid.initString("b96b3cae-0728-11d3-9d7b-0000f81ef32e");
pub const WiaImgFmt_PNG = Guid.initString("b96b3caf-0728-11d3-9d7b-0000f81ef32e");
pub const WiaImgFmt_GIF = Guid.initString("b96b3cb0-0728-11d3-9d7b-0000f81ef32e");
pub const WiaImgFmt_TIFF = Guid.initString("b96b3cb1-0728-11d3-9d7b-0000f81ef32e");
pub const WiaImgFmt_EXIF = Guid.initString("b96b3cb2-0728-11d3-9d7b-0000f81ef32e");
pub const WiaImgFmt_PHOTOCD = Guid.initString("b96b3cb3-0728-11d3-9d7b-0000f81ef32e");
pub const WiaImgFmt_FLASHPIX = Guid.initString("b96b3cb4-0728-11d3-9d7b-0000f81ef32e");
pub const WiaImgFmt_ICO = Guid.initString("b96b3cb5-0728-11d3-9d7b-0000f81ef32e");
pub const WiaImgFmt_CIFF = Guid.initString("9821a8ab-3a7e-4215-94e0-d27a460c03b2");
pub const WiaImgFmt_PICT = Guid.initString("a6bc85d8-6b3e-40ee-a95c-25d482e41adc");
pub const WiaImgFmt_JPEG2K = Guid.initString("344ee2b2-39db-4dde-8173-c4b75f8f1e49");
pub const WiaImgFmt_JPEG2KX = Guid.initString("43e14614-c80a-4850-baf3-4b152dc8da27");
pub const WiaImgFmt_RAW = Guid.initString("6f120719-f1a8-4e07-9ade-9b64c63a3dcc");
pub const WiaImgFmt_JBIG = Guid.initString("41e8dd92-2f0a-43d4-8636-f1614ba11e46");
pub const WiaImgFmt_JBIG2 = Guid.initString("bb8e7e67-283c-4235-9e59-0b9bf94ca687");
pub const WiaImgFmt_RTF = Guid.initString("573dd6a3-4834-432d-a9b5-e198dd9e890d");
pub const WiaImgFmt_XML = Guid.initString("b9171457-dac8-4884-b393-15b471d5f07e");
pub const WiaImgFmt_HTML = Guid.initString("c99a4e62-99de-4a94-acca-71956ac2977d");
pub const WiaImgFmt_TXT = Guid.initString("fafd4d82-723f-421f-9318-30501ac44b59");
pub const WiaImgFmt_PDFA = Guid.initString("9980bd5b-3463-43c7-bdca-3caa146f229f");
pub const WiaImgFmt_XPS = Guid.initString("700b4a0f-2011-411c-b430-d1e0b2e10b28");
pub const WiaImgFmt_OXPS = Guid.initString("2c7b1240-c14d-4109-9755-04b89025153a");
pub const WiaImgFmt_CSV = Guid.initString("355bda24-5a9f-4494-80dc-be752cecbc8c");
pub const WiaImgFmt_MPG = Guid.initString("ecd757e4-d2ec-4f57-955d-bcf8a97c4e52");
pub const WiaImgFmt_AVI = Guid.initString("32f8ca14-087c-4908-b7c4-6757fe7e90ab");
pub const WiaAudFmt_WAV = Guid.initString("f818e146-07af-40ff-ae55-be8f2c065dbe");
pub const WiaAudFmt_MP3 = Guid.initString("0fbc71fb-43bf-49f2-9190-e6fecff37e54");
pub const WiaAudFmt_AIFF = Guid.initString("66e2bf4f-b6fc-443f-94c8-2f33c8a65aaf");
pub const WiaAudFmt_WMA = Guid.initString("d61d6413-8bc2-438f-93ad-21bd484db6a1");
pub const WiaImgFmt_ASF = Guid.initString("8d948ee9-d0aa-4a12-9d9a-9cc5de36199b");
pub const WiaImgFmt_SCRIPT = Guid.initString("fe7d6c53-2dac-446a-b0bd-d73e21e924c9");
pub const WiaImgFmt_EXEC = Guid.initString("485da097-141e-4aa5-bb3b-a5618d95d02b");
pub const WiaImgFmt_UNICODE16 = Guid.initString("1b7639b6-6357-47d1-9a07-12452dc073e9");
pub const WiaImgFmt_DPOF = Guid.initString("369eeeab-a0e8-45ca-86a6-a83ce5697e28");
pub const WiaImgFmt_XMLBAR = Guid.initString("6235701c-3a98-484c-b2a8-fdffd87e6b16");
pub const WiaImgFmt_RAWBAR = Guid.initString("da63f833-d26e-451e-90d2-ea55a1365d62");
pub const WiaImgFmt_XMLPAT = Guid.initString("f8986f55-f052-460d-9523-3a7dfedbb33c");
pub const WiaImgFmt_RAWPAT = Guid.initString("7760507c-5064-400c-9a17-575624d8824b");
pub const WiaImgFmt_XMLMIC = Guid.initString("2d164c61-b9ae-4b23-8973-c7067e1fbd31");
pub const WiaImgFmt_RAWMIC = Guid.initString("22c4f058-0d88-409c-ac1c-eec12b0ea680");
pub const WIA_EVENT_DEVICE_DISCONNECTED = Guid.initString("143e4e83-6497-11d2-a231-00c04fa31809");
pub const WIA_EVENT_DEVICE_CONNECTED = Guid.initString("a28bbade-64b6-11d2-a231-00c04fa31809");
pub const WIA_EVENT_ITEM_DELETED = Guid.initString("1d22a559-e14f-11d2-b326-00c04f68ce61");
pub const WIA_EVENT_ITEM_CREATED = Guid.initString("4c8f4ef5-e14f-11d2-b326-00c04f68ce61");
pub const WIA_EVENT_TREE_UPDATED = Guid.initString("c9859b91-4ab2-4cd6-a1fc-582eec55e585");
pub const WIA_EVENT_VOLUME_INSERT = Guid.initString("9638bbfd-d1bd-11d2-b31f-00c04f68ce61");
pub const WIA_EVENT_SCAN_IMAGE = Guid.initString("a6c5a715-8c6e-11d2-977a-0000f87a926f");
pub const WIA_EVENT_SCAN_PRINT_IMAGE = Guid.initString("b441f425-8c6e-11d2-977a-0000f87a926f");
pub const WIA_EVENT_SCAN_FAX_IMAGE = Guid.initString("c00eb793-8c6e-11d2-977a-0000f87a926f");
pub const WIA_EVENT_SCAN_OCR_IMAGE = Guid.initString("9d095b89-37d6-4877-afed-62a297dc6dbe");
pub const WIA_EVENT_SCAN_EMAIL_IMAGE = Guid.initString("c686dcee-54f2-419e-9a27-2fc7f2e98f9e");
pub const WIA_EVENT_SCAN_FILM_IMAGE = Guid.initString("9b2b662c-6185-438c-b68b-e39ee25e71cb");
pub const WIA_EVENT_SCAN_IMAGE2 = Guid.initString("fc4767c1-c8b3-48a2-9cfa-2e90cb3d3590");
pub const WIA_EVENT_SCAN_IMAGE3 = Guid.initString("154e27be-b617-4653-acc5-0fd7bd4c65ce");
pub const WIA_EVENT_SCAN_IMAGE4 = Guid.initString("a65b704a-7f3c-4447-a75d-8a26dfca1fdf");
pub const WIA_EVENT_STORAGE_CREATED = Guid.initString("353308b2-fe73-46c8-895e-fa4551ccc85a");
pub const WIA_EVENT_STORAGE_DELETED = Guid.initString("5e41e75e-9390-44c5-9a51-e47019e390cf");
pub const WIA_EVENT_STI_PROXY = Guid.initString("d711f81f-1f0d-422d-8641-927d1b93e5e5");
pub const WIA_EVENT_CANCEL_IO = Guid.initString("c860f7b8-9ccd-41ea-bbbf-4dd09c5b1795");
pub const WIA_EVENT_POWER_SUSPEND = Guid.initString("a0922ff9-c3b4-411c-9e29-03a66993d2be");
pub const WIA_EVENT_POWER_RESUME = Guid.initString("618f153e-f686-4350-9634-4115a304830c");
pub const WIA_EVENT_HANDLER_NO_ACTION = Guid.initString("e0372b7d-e115-4525-bc55-b629e68c745a");
pub const WIA_EVENT_HANDLER_PROMPT = Guid.initString("5f4baad0-4d59-4fcd-b213-783ce7a92f22");
pub const WIA_EVENT_DEVICE_NOT_READY = Guid.initString("d8962d7e-e4dc-4b4d-ba29-668a87f42e6f");
pub const WIA_EVENT_DEVICE_READY = Guid.initString("7523ec6c-988b-419e-9a0a-425ac31b37dc");
pub const WIA_EVENT_FLATBED_LID_OPEN = Guid.initString("ba0a0623-437d-4f03-a97d-7793b123113c");
pub const WIA_EVENT_FLATBED_LID_CLOSED = Guid.initString("f879af0f-9b29-4283-ad95-d412164d39a9");
pub const WIA_EVENT_FEEDER_LOADED = Guid.initString("cc8d701e-9aba-481d-bf74-78f763dc342a");
pub const WIA_EVENT_FEEDER_EMPTIED = Guid.initString("e70b4b82-6dda-46bb-8ff9-53ceb1a03e35");
pub const WIA_EVENT_COVER_OPEN = Guid.initString("19a12136-fa1c-4f66-900f-8f914ec74ec9");
pub const WIA_EVENT_COVER_CLOSED = Guid.initString("6714a1e6-e285-468c-9b8c-da7dc4cbaa05");
pub const WIA_CMD_SYNCHRONIZE = Guid.initString("9b26b7b2-acad-11d2-a093-00c04f72dc3c");
pub const WIA_CMD_TAKE_PICTURE = Guid.initString("af933cac-acad-11d2-a093-00c04f72dc3c");
pub const WIA_CMD_DELETE_ALL_ITEMS = Guid.initString("e208c170-acad-11d2-a093-00c04f72dc3c");
pub const WIA_CMD_CHANGE_DOCUMENT = Guid.initString("04e725b0-acae-11d2-a093-00c04f72dc3c");
pub const WIA_CMD_UNLOAD_DOCUMENT = Guid.initString("1f3b3d8e-acae-11d2-a093-00c04f72dc3c");
pub const WIA_CMD_DIAGNOSTIC = Guid.initString("10ff52f5-de04-4cf0-a5ad-691f8dce0141");
pub const WIA_CMD_FORMAT = Guid.initString("c3a693aa-f788-4d34-a5b0-be7190759a24");
pub const WIA_CMD_DELETE_DEVICE_TREE = Guid.initString("73815942-dbea-11d2-8416-00c04fa36145");
pub const WIA_CMD_BUILD_DEVICE_TREE = Guid.initString("9cba5ce0-dbea-11d2-8416-00c04fa36145");
pub const WIA_CMD_START_FEEDER = Guid.initString("5a9df6c9-5f2d-4a39-9d6c-00456d047f00");
pub const WIA_CMD_STOP_FEEDER = Guid.initString("d847b06d-3905-459c-9509-9b29cdb691e7");
pub const WIA_CMD_PAUSE_FEEDER = Guid.initString("50985e4d-a5b2-4b71-9c95-6d7d7c469a43");
pub const BASE_VAL_WIA_ERROR = @as(u32, 0);
pub const BASE_VAL_WIA_SUCCESS = @as(u32, 0);
pub const WIA_ERROR_GENERAL_ERROR = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2145320959));
pub const WIA_ERROR_PAPER_JAM = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2145320958));
pub const WIA_ERROR_PAPER_EMPTY = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2145320957));
pub const WIA_ERROR_PAPER_PROBLEM = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2145320956));
pub const WIA_ERROR_OFFLINE = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2145320955));
pub const WIA_ERROR_BUSY = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2145320954));
pub const WIA_ERROR_WARMING_UP = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2145320953));
pub const WIA_ERROR_USER_INTERVENTION = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2145320952));
pub const WIA_ERROR_ITEM_DELETED = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2145320951));
pub const WIA_ERROR_DEVICE_COMMUNICATION = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2145320950));
pub const WIA_ERROR_INVALID_COMMAND = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2145320949));
pub const WIA_ERROR_INCORRECT_HARDWARE_SETTING = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2145320948));
pub const WIA_ERROR_DEVICE_LOCKED = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2145320947));
pub const WIA_ERROR_EXCEPTION_IN_DRIVER = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2145320946));
pub const WIA_ERROR_INVALID_DRIVER_RESPONSE = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2145320945));
pub const WIA_ERROR_COVER_OPEN = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2145320944));
pub const WIA_ERROR_LAMP_OFF = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2145320943));
pub const WIA_ERROR_DESTINATION = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2145320942));
pub const WIA_ERROR_NETWORK_RESERVATION_FAILED = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2145320941));
pub const WIA_ERROR_MULTI_FEED = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2145320940));
pub const WIA_ERROR_MAXIMUM_PRINTER_ENDORSER_COUNTER = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2145320939));
pub const WIA_STATUS_END_OF_MEDIA = @import("../zig.zig").typedConst(HRESULT, @as(i32, 2162689));
pub const WIA_STATUS_WARMING_UP = @import("../zig.zig").typedConst(HRESULT, @as(i32, 2162690));
pub const WIA_STATUS_CALIBRATING = @import("../zig.zig").typedConst(HRESULT, @as(i32, 2162691));
pub const WIA_STATUS_RESERVING_NETWORK_DEVICE = @import("../zig.zig").typedConst(HRESULT, @as(i32, 2162694));
pub const WIA_STATUS_NETWORK_DEVICE_RESERVED = @import("../zig.zig").typedConst(HRESULT, @as(i32, 2162695));
pub const WIA_STATUS_CLEAR = @import("../zig.zig").typedConst(HRESULT, @as(i32, 2162696));
pub const WIA_STATUS_SKIP_ITEM = @import("../zig.zig").typedConst(HRESULT, @as(i32, 2162697));
pub const WIA_STATUS_NOT_HANDLED = @import("../zig.zig").typedConst(HRESULT, @as(i32, 2162698));
pub const WIA_S_CHANGE_DEVICE = @import("../zig.zig").typedConst(HRESULT, @as(i32, 2162699));
pub const WIA_S_NO_DEVICE_AVAILABLE = @import("../zig.zig").typedConst(HRESULT, @as(i32, -2145320939));
pub const WIA_SELECT_DEVICE_NODEFAULT = @as(u32, 1);
pub const WIA_DEVICE_DIALOG_SINGLE_IMAGE = @as(u32, 2);
pub const WIA_DEVICE_DIALOG_USE_COMMON_UI = @as(u32, 4);
pub const WIA_REGISTER_EVENT_CALLBACK = @as(u32, 1);
pub const WIA_UNREGISTER_EVENT_CALLBACK = @as(u32, 2);
pub const WIA_SET_DEFAULT_HANDLER = @as(u32, 4);
pub const WIA_NOTIFICATION_EVENT = @as(u32, 1);
pub const WIA_ACTION_EVENT = @as(u32, 2);
pub const WIA_LINE_ORDER_TOP_TO_BOTTOM = @as(u32, 1);
pub const WIA_LINE_ORDER_BOTTOM_TO_TOP = @as(u32, 2);
pub const WIA_IS_DEFAULT_HANDLER = @as(u32, 1);
pub const TYMED_CALLBACK = @as(u32, 128);
pub const TYMED_MULTIPAGE_FILE = @as(u32, 256);
pub const TYMED_MULTIPAGE_CALLBACK = @as(u32, 512);
pub const IT_MSG_DATA_HEADER = @as(u32, 1);
pub const IT_MSG_DATA = @as(u32, 2);
pub const IT_MSG_STATUS = @as(u32, 3);
pub const IT_MSG_TERMINATION = @as(u32, 4);
pub const IT_MSG_NEW_PAGE = @as(u32, 5);
pub const IT_MSG_FILE_PREVIEW_DATA = @as(u32, 6);
pub const IT_MSG_FILE_PREVIEW_DATA_HEADER = @as(u32, 7);
pub const IT_STATUS_TRANSFER_FROM_DEVICE = @as(u32, 1);
pub const IT_STATUS_PROCESSING_DATA = @as(u32, 2);
pub const IT_STATUS_TRANSFER_TO_CLIENT = @as(u32, 4);
pub const IT_STATUS_MASK = @as(u32, 7);
pub const WIA_TRANSFER_ACQUIRE_CHILDREN = @as(u32, 1);
pub const WIA_TRANSFER_MSG_STATUS = @as(u32, 1);
pub const WIA_TRANSFER_MSG_END_OF_STREAM = @as(u32, 2);
pub const WIA_TRANSFER_MSG_END_OF_TRANSFER = @as(u32, 3);
pub const WIA_TRANSFER_MSG_DEVICE_STATUS = @as(u32, 5);
pub const WIA_TRANSFER_MSG_NEW_PAGE = @as(u32, 6);
pub const WIA_MAJOR_EVENT_DEVICE_CONNECT = @as(u32, 1);
pub const WIA_MAJOR_EVENT_DEVICE_DISCONNECT = @as(u32, 2);
pub const WIA_MAJOR_EVENT_PICTURE_TAKEN = @as(u32, 3);
pub const WIA_MAJOR_EVENT_PICTURE_DELETED = @as(u32, 4);
pub const WIA_DEVICE_NOT_CONNECTED = @as(u32, 0);
pub const WIA_DEVICE_CONNECTED = @as(u32, 1);
pub const WIA_DEVICE_COMMANDS = @as(u32, 1);
pub const WIA_DEVICE_EVENTS = @as(u32, 2);
pub const WIA_DEVINFO_ENUM_ALL = @as(u32, 15);
pub const WIA_DEVINFO_ENUM_LOCAL = @as(u32, 16);
pub const WiaItemTypeFree = @as(u32, 0);
pub const WiaItemTypeImage = @as(u32, 1);
pub const WiaItemTypeFile = @as(u32, 2);
pub const WiaItemTypeFolder = @as(u32, 4);
pub const WiaItemTypeRoot = @as(u32, 8);
pub const WiaItemTypeAnalyze = @as(u32, 16);
pub const WiaItemTypeAudio = @as(u32, 32);
pub const WiaItemTypeDevice = @as(u32, 64);
pub const WiaItemTypeDeleted = @as(u32, 128);
pub const WiaItemTypeDisconnected = @as(u32, 256);
pub const WiaItemTypeHPanorama = @as(u32, 512);
pub const WiaItemTypeVPanorama = @as(u32, 1024);
pub const WiaItemTypeBurst = @as(u32, 2048);
pub const WiaItemTypeStorage = @as(u32, 4096);
pub const WiaItemTypeTransfer = @as(u32, 8192);
pub const WiaItemTypeGenerated = @as(u32, 16384);
pub const WiaItemTypeHasAttachments = @as(u32, 32768);
pub const WiaItemTypeVideo = @as(u32, 65536);
pub const WiaItemTypeRemoved = @as(u32, 2147483648);
pub const WiaItemTypeDocument = @as(u32, 262144);
pub const WiaItemTypeProgrammableDataSource = @as(u32, 524288);
pub const WiaItemTypeMask = @as(u32, 2148532223);
pub const WIA_MAX_CTX_SIZE = @as(u32, 16777216);
pub const WIA_PROP_READ = @as(u32, 1);
pub const WIA_PROP_WRITE = @as(u32, 2);
pub const WIA_PROP_SYNC_REQUIRED = @as(u32, 4);
pub const WIA_PROP_NONE = @as(u32, 8);
pub const WIA_PROP_RANGE = @as(u32, 16);
pub const WIA_PROP_LIST = @as(u32, 32);
pub const WIA_PROP_FLAG = @as(u32, 64);
pub const WIA_PROP_CACHEABLE = @as(u32, 65536);
pub const COPY_PARENT_PROPERTY_VALUES = @as(u32, 1073741824);
pub const WIA_ITEM_CAN_BE_DELETED = @as(u32, 128);
pub const WIA_ITEM_READ = @as(u32, 1);
pub const WIA_ITEM_WRITE = @as(u32, 2);
pub const WIA_RANGE_MIN = @as(u32, 0);
pub const WIA_RANGE_NOM = @as(u32, 1);
pub const WIA_RANGE_MAX = @as(u32, 2);
pub const WIA_RANGE_STEP = @as(u32, 3);
pub const WIA_RANGE_NUM_ELEMS = @as(u32, 4);
pub const WIA_LIST_COUNT = @as(u32, 0);
pub const WIA_LIST_NOM = @as(u32, 1);
pub const WIA_LIST_VALUES = @as(u32, 2);
pub const WIA_LIST_NUM_ELEMS = @as(u32, 2);
pub const WIA_FLAG_NOM = @as(u32, 0);
pub const WIA_FLAG_VALUES = @as(u32, 1);
pub const WIA_FLAG_NUM_ELEMS = @as(u32, 2);
pub const WIA_DIP_FIRST = @as(u32, 2);
pub const WIA_IPA_FIRST = @as(u32, 4098);
pub const WIA_DPF_FIRST = @as(u32, 3330);
pub const WIA_IPS_FIRST = @as(u32, 6146);
pub const WIA_DPS_FIRST = @as(u32, 3074);
pub const WIA_IPC_FIRST = @as(u32, 5122);
pub const WIA_NUM_IPC = @as(u32, 9);
pub const WIA_RESERVED_FOR_NEW_PROPS = @as(u32, 1024);
pub const WHITEBALANCE_MANUAL = @as(u32, 1);
pub const WHITEBALANCE_AUTO = @as(u32, 2);
pub const WHITEBALANCE_ONEPUSH_AUTO = @as(u32, 3);
pub const WHITEBALANCE_DAYLIGHT = @as(u32, 4);
pub const WHITEBALANCE_FLORESCENT = @as(u32, 5);
pub const WHITEBALANCE_TUNGSTEN = @as(u32, 6);
pub const WHITEBALANCE_FLASH = @as(u32, 7);
pub const FOCUSMODE_MANUAL = @as(u32, 1);
pub const FOCUSMODE_AUTO = @as(u32, 2);
pub const FOCUSMODE_MACROAUTO = @as(u32, 3);
pub const EXPOSUREMETERING_AVERAGE = @as(u32, 1);
pub const EXPOSUREMETERING_CENTERWEIGHT = @as(u32, 2);
pub const EXPOSUREMETERING_MULTISPOT = @as(u32, 3);
pub const EXPOSUREMETERING_CENTERSPOT = @as(u32, 4);
pub const FLASHMODE_AUTO = @as(u32, 1);
pub const FLASHMODE_OFF = @as(u32, 2);
pub const FLASHMODE_FILL = @as(u32, 3);
pub const FLASHMODE_REDEYE_AUTO = @as(u32, 4);
pub const FLASHMODE_REDEYE_FILL = @as(u32, 5);
pub const FLASHMODE_EXTERNALSYNC = @as(u32, 6);
pub const EXPOSUREMODE_MANUAL = @as(u32, 1);
pub const EXPOSUREMODE_AUTO = @as(u32, 2);
pub const EXPOSUREMODE_APERTURE_PRIORITY = @as(u32, 3);
pub const EXPOSUREMODE_SHUTTER_PRIORITY = @as(u32, 4);
pub const EXPOSUREMODE_PROGRAM_CREATIVE = @as(u32, 5);
pub const EXPOSUREMODE_PROGRAM_ACTION = @as(u32, 6);
pub const EXPOSUREMODE_PORTRAIT = @as(u32, 7);
pub const CAPTUREMODE_NORMAL = @as(u32, 1);
pub const CAPTUREMODE_BURST = @as(u32, 2);
pub const CAPTUREMODE_TIMELAPSE = @as(u32, 3);
pub const EFFECTMODE_STANDARD = @as(u32, 1);
pub const EFFECTMODE_BW = @as(u32, 2);
pub const EFFECTMODE_SEPIA = @as(u32, 3);
pub const FOCUSMETERING_CENTERSPOT = @as(u32, 1);
pub const FOCUSMETERING_MULTISPOT = @as(u32, 2);
pub const POWERMODE_LINE = @as(u32, 1);
pub const POWERMODE_BATTERY = @as(u32, 2);
pub const LEFT_JUSTIFIED = @as(u32, 0);
pub const CENTERED = @as(u32, 1);
pub const RIGHT_JUSTIFIED = @as(u32, 2);
pub const TOP_JUSTIFIED = @as(u32, 0);
pub const BOTTOM_JUSTIFIED = @as(u32, 2);
pub const PORTRAIT = @as(u32, 0);
pub const LANSCAPE = @as(u32, 1);
pub const LANDSCAPE = @as(u32, 1);
pub const ROT180 = @as(u32, 2);
pub const ROT270 = @as(u32, 3);
pub const MIRRORED = @as(u32, 1);
pub const FEED = @as(u32, 1);
pub const FLAT = @as(u32, 2);
pub const DUP = @as(u32, 4);
pub const DETECT_FLAT = @as(u32, 8);
pub const DETECT_SCAN = @as(u32, 16);
pub const DETECT_FEED = @as(u32, 32);
pub const DETECT_DUP = @as(u32, 64);
pub const DETECT_FEED_AVAIL = @as(u32, 128);
pub const DETECT_DUP_AVAIL = @as(u32, 256);
pub const FILM_TPA = @as(u32, 512);
pub const DETECT_FILM_TPA = @as(u32, 1024);
pub const STOR = @as(u32, 2048);
pub const DETECT_STOR = @as(u32, 4096);
pub const ADVANCED_DUP = @as(u32, 8192);
pub const AUTO_SOURCE = @as(u32, 32768);
pub const IMPRINTER = @as(u32, 65536);
pub const ENDORSER = @as(u32, 131072);
pub const BARCODE_READER = @as(u32, 262144);
pub const PATCH_CODE_READER = @as(u32, 524288);
pub const MICR_READER = @as(u32, 1048576);
pub const FEED_READY = @as(u32, 1);
pub const FLAT_READY = @as(u32, 2);
pub const DUP_READY = @as(u32, 4);
pub const FLAT_COVER_UP = @as(u32, 8);
pub const PATH_COVER_UP = @as(u32, 16);
pub const PAPER_JAM = @as(u32, 32);
pub const FILM_TPA_READY = @as(u32, 64);
pub const STORAGE_READY = @as(u32, 128);
pub const STORAGE_FULL = @as(u32, 256);
pub const MULTIPLE_FEED = @as(u32, 512);
pub const DEVICE_ATTENTION = @as(u32, 1024);
pub const LAMP_ERR = @as(u32, 2048);
pub const IMPRINTER_READY = @as(u32, 4096);
pub const ENDORSER_READY = @as(u32, 8192);
pub const BARCODE_READER_READY = @as(u32, 16384);
pub const PATCH_CODE_READER_READY = @as(u32, 32768);
pub const MICR_READER_READY = @as(u32, 65536);
pub const FEEDER = @as(u32, 1);
pub const FLATBED = @as(u32, 2);
pub const DUPLEX = @as(u32, 4);
pub const FRONT_FIRST = @as(u32, 8);
pub const BACK_FIRST = @as(u32, 16);
pub const FRONT_ONLY = @as(u32, 32);
pub const BACK_ONLY = @as(u32, 64);
pub const NEXT_PAGE = @as(u32, 128);
pub const PREFEED = @as(u32, 256);
pub const AUTO_ADVANCE = @as(u32, 512);
pub const ADVANCED_DUPLEX = @as(u32, 1024);
pub const LIGHT_SOURCE_PRESENT_DETECT = @as(u32, 1);
pub const LIGHT_SOURCE_PRESENT = @as(u32, 2);
pub const LIGHT_SOURCE_DETECT_READY = @as(u32, 4);
pub const LIGHT_SOURCE_READY = @as(u32, 8);
pub const TRANSPARENCY_DYNAMIC_FRAME_SUPPORT = @as(u32, 1);
pub const TRANSPARENCY_STATIC_FRAME_SUPPORT = @as(u32, 2);
pub const LIGHT_SOURCE_SELECT = @as(u32, 1);
pub const LIGHT_SOURCE_POSITIVE = @as(u32, 2);
pub const LIGHT_SOURCE_NEGATIVE = @as(u32, 4);
pub const WIA_SCAN_AHEAD_ALL = @as(u32, 0);
pub const ALL_PAGES = @as(u32, 0);
pub const WIA_FINAL_SCAN = @as(u32, 0);
pub const WIA_PREVIEW_SCAN = @as(u32, 1);
pub const WIA_SHOW_PREVIEW_CONTROL = @as(u32, 0);
pub const WIA_DONT_SHOW_PREVIEW_CONTROL = @as(u32, 1);
pub const WIA_PAGE_A4 = @as(u32, 0);
pub const WIA_PAGE_LETTER = @as(u32, 1);
pub const WIA_PAGE_CUSTOM = @as(u32, 2);
pub const WIA_PAGE_USLEGAL = @as(u32, 3);
pub const WIA_PAGE_USLETTER = @as(u32, 1);
pub const WIA_PAGE_USLEDGER = @as(u32, 4);
pub const WIA_PAGE_USSTATEMENT = @as(u32, 5);
pub const WIA_PAGE_BUSINESSCARD = @as(u32, 6);
pub const WIA_PAGE_ISO_A0 = @as(u32, 7);
pub const WIA_PAGE_ISO_A1 = @as(u32, 8);
pub const WIA_PAGE_ISO_A2 = @as(u32, 9);
pub const WIA_PAGE_ISO_A3 = @as(u32, 10);
pub const WIA_PAGE_ISO_A4 = @as(u32, 0);
pub const WIA_PAGE_ISO_A5 = @as(u32, 11);
pub const WIA_PAGE_ISO_A6 = @as(u32, 12);
pub const WIA_PAGE_ISO_A7 = @as(u32, 13);
pub const WIA_PAGE_ISO_A8 = @as(u32, 14);
pub const WIA_PAGE_ISO_A9 = @as(u32, 15);
pub const WIA_PAGE_ISO_A10 = @as(u32, 16);
pub const WIA_PAGE_ISO_B0 = @as(u32, 17);
pub const WIA_PAGE_ISO_B1 = @as(u32, 18);
pub const WIA_PAGE_ISO_B2 = @as(u32, 19);
pub const WIA_PAGE_ISO_B3 = @as(u32, 20);
pub const WIA_PAGE_ISO_B4 = @as(u32, 21);
pub const WIA_PAGE_ISO_B5 = @as(u32, 22);
pub const WIA_PAGE_ISO_B6 = @as(u32, 23);
pub const WIA_PAGE_ISO_B7 = @as(u32, 24);
pub const WIA_PAGE_ISO_B8 = @as(u32, 25);
pub const WIA_PAGE_ISO_B9 = @as(u32, 26);
pub const WIA_PAGE_ISO_B10 = @as(u32, 27);
pub const WIA_PAGE_ISO_C0 = @as(u32, 28);
pub const WIA_PAGE_ISO_C1 = @as(u32, 29);
pub const WIA_PAGE_ISO_C2 = @as(u32, 30);
pub const WIA_PAGE_ISO_C3 = @as(u32, 31);
pub const WIA_PAGE_ISO_C4 = @as(u32, 32);
pub const WIA_PAGE_ISO_C5 = @as(u32, 33);
pub const WIA_PAGE_ISO_C6 = @as(u32, 34);
pub const WIA_PAGE_ISO_C7 = @as(u32, 35);
pub const WIA_PAGE_ISO_C8 = @as(u32, 36);
pub const WIA_PAGE_ISO_C9 = @as(u32, 37);
pub const WIA_PAGE_ISO_C10 = @as(u32, 38);
pub const WIA_PAGE_JIS_B0 = @as(u32, 39);
pub const WIA_PAGE_JIS_B1 = @as(u32, 40);
pub const WIA_PAGE_JIS_B2 = @as(u32, 41);
pub const WIA_PAGE_JIS_B3 = @as(u32, 42);
pub const WIA_PAGE_JIS_B4 = @as(u32, 43);
pub const WIA_PAGE_JIS_B5 = @as(u32, 44);
pub const WIA_PAGE_JIS_B6 = @as(u32, 45);
pub const WIA_PAGE_JIS_B7 = @as(u32, 46);
pub const WIA_PAGE_JIS_B8 = @as(u32, 47);
pub const WIA_PAGE_JIS_B9 = @as(u32, 48);
pub const WIA_PAGE_JIS_B10 = @as(u32, 49);
pub const WIA_PAGE_JIS_2A = @as(u32, 50);
pub const WIA_PAGE_JIS_4A = @as(u32, 51);
pub const WIA_PAGE_DIN_2B = @as(u32, 52);
pub const WIA_PAGE_DIN_4B = @as(u32, 53);
pub const WIA_PAGE_AUTO = @as(u32, 100);
pub const WIA_PAGE_CUSTOM_BASE = @as(u32, 32768);
pub const WIA_COMPRESSION_NONE = @as(u32, 0);
pub const WIA_COMPRESSION_BI_RLE4 = @as(u32, 1);
pub const WIA_COMPRESSION_BI_RLE8 = @as(u32, 2);
pub const WIA_COMPRESSION_G3 = @as(u32, 3);
pub const WIA_COMPRESSION_G4 = @as(u32, 4);
pub const WIA_COMPRESSION_JPEG = @as(u32, 5);
pub const WIA_COMPRESSION_JBIG = @as(u32, 6);
pub const WIA_COMPRESSION_JPEG2K = @as(u32, 7);
pub const WIA_COMPRESSION_PNG = @as(u32, 8);
pub const WIA_COMPRESSION_AUTO = @as(u32, 100);
pub const WIA_PACKED_PIXEL = @as(u32, 0);
pub const WIA_PLANAR = @as(u32, 1);
pub const WIA_DATA_THRESHOLD = @as(u32, 0);
pub const WIA_DATA_DITHER = @as(u32, 1);
pub const WIA_DATA_GRAYSCALE = @as(u32, 2);
pub const WIA_DATA_COLOR = @as(u32, 3);
pub const WIA_DATA_COLOR_THRESHOLD = @as(u32, 4);
pub const WIA_DATA_COLOR_DITHER = @as(u32, 5);
pub const WIA_DATA_RAW_RGB = @as(u32, 6);
pub const WIA_DATA_RAW_BGR = @as(u32, 7);
pub const WIA_DATA_RAW_YUV = @as(u32, 8);
pub const WIA_DATA_RAW_YUVK = @as(u32, 9);
pub const WIA_DATA_RAW_CMY = @as(u32, 10);
pub const WIA_DATA_RAW_CMYK = @as(u32, 11);
pub const WIA_DATA_AUTO = @as(u32, 100);
pub const WIA_DEPTH_AUTO = @as(u32, 0);
pub const WIA_PHOTO_WHITE_1 = @as(u32, 0);
pub const WIA_PHOTO_WHITE_0 = @as(u32, 1);
pub const WIA_PROPPAGE_SCANNER_ITEM_GENERAL = @as(u32, 1);
pub const WIA_PROPPAGE_CAMERA_ITEM_GENERAL = @as(u32, 2);
pub const WIA_PROPPAGE_DEVICE_GENERAL = @as(u32, 4);
pub const WIA_INTENT_NONE = @as(u32, 0);
pub const WIA_INTENT_IMAGE_TYPE_COLOR = @as(u32, 1);
pub const WIA_INTENT_IMAGE_TYPE_GRAYSCALE = @as(u32, 2);
pub const WIA_INTENT_IMAGE_TYPE_TEXT = @as(u32, 4);
pub const WIA_INTENT_IMAGE_TYPE_MASK = @as(u32, 15);
pub const WIA_INTENT_MINIMIZE_SIZE = @as(u32, 65536);
pub const WIA_INTENT_MAXIMIZE_QUALITY = @as(u32, 131072);
pub const WIA_INTENT_BEST_PREVIEW = @as(u32, 262144);
pub const WIA_INTENT_SIZE_MASK = @as(u32, 983040);
pub const WIA_NUM_DIP = @as(u32, 16);
pub const GUID_DEVINTERFACE_IMAGE = Guid.initString("6bdd1fc6-810f-11d0-bec7-08002be2092f");
pub const MAX_IO_HANDLES = @as(u32, 16);
pub const MAX_RESERVED = @as(u32, 4);
pub const MAX_ANSI_CHAR = @as(u32, 255);
pub const BUS_TYPE_SCSI = @as(u32, 200);
pub const BUS_TYPE_USB = @as(u32, 201);
pub const BUS_TYPE_PARALLEL = @as(u32, 202);
pub const BUS_TYPE_FIREWIRE = @as(u32, 203);
pub const SCAN_FIRST = @as(u32, 10);
pub const SCAN_NEXT = @as(u32, 20);
pub const SCAN_FINISHED = @as(u32, 30);
pub const SCANMODE_FINALSCAN = @as(u32, 0);
pub const SCANMODE_PREVIEWSCAN = @as(u32, 1);
pub const CMD_INITIALIZE = @as(u32, 100);
pub const CMD_UNINITIALIZE = @as(u32, 101);
pub const CMD_SETXRESOLUTION = @as(u32, 102);
pub const CMD_SETYRESOLUTION = @as(u32, 103);
pub const CMD_SETCONTRAST = @as(u32, 104);
pub const CMD_SETINTENSITY = @as(u32, 105);
pub const CMD_SETDATATYPE = @as(u32, 106);
pub const CMD_SETDITHER = @as(u32, 107);
pub const CMD_SETMIRROR = @as(u32, 108);
pub const CMD_SETNEGATIVE = @as(u32, 109);
pub const CMD_SETTONEMAP = @as(u32, 110);
pub const CMD_SETCOLORDITHER = @as(u32, 111);
pub const CMD_SETMATRIX = @as(u32, 112);
pub const CMD_SETSPEED = @as(u32, 113);
pub const CMD_SETFILTER = @as(u32, 114);
pub const CMD_LOAD_ADF = @as(u32, 115);
pub const CMD_UNLOAD_ADF = @as(u32, 116);
pub const CMD_GETADFAVAILABLE = @as(u32, 117);
pub const CMD_GETADFOPEN = @as(u32, 118);
pub const CMD_GETADFREADY = @as(u32, 119);
pub const CMD_GETADFHASPAPER = @as(u32, 120);
pub const CMD_GETADFSTATUS = @as(u32, 121);
pub const CMD_GETADFUNLOADREADY = @as(u32, 122);
pub const CMD_GETTPAAVAILABLE = @as(u32, 123);
pub const CMD_GETTPAOPENED = @as(u32, 124);
pub const CMD_TPAREADY = @as(u32, 125);
pub const CMD_SETLAMP = @as(u32, 126);
pub const CMD_SENDSCSICOMMAND = @as(u32, 127);
pub const CMD_STI_DEVICERESET = @as(u32, 128);
pub const CMD_STI_GETSTATUS = @as(u32, 129);
pub const CMD_STI_DIAGNOSTIC = @as(u32, 130);
pub const CMD_RESETSCANNER = @as(u32, 131);
pub const CMD_GETCAPABILITIES = @as(u32, 132);
pub const CMD_GET_INTERRUPT_EVENT = @as(u32, 133);
pub const CMD_SETGSDNAME = @as(u32, 134);
pub const CMD_SETSCANMODE = @as(u32, 135);
pub const CMD_SETSTIDEVICEHKEY = @as(u32, 136);
pub const CMD_GETSUPPORTEDFILEFORMATS = @as(u32, 138);
pub const CMD_GETSUPPORTEDMEMORYFORMATS = @as(u32, 139);
pub const CMD_SETFORMAT = @as(u32, 140);
pub const SUPPORT_COLOR = @as(u32, 1);
pub const SUPPORT_BW = @as(u32, 2);
pub const SUPPORT_GRAYSCALE = @as(u32, 4);
pub const MCRO_ERROR_GENERAL_ERROR = @as(u32, 0);
pub const MCRO_STATUS_OK = @as(u32, 1);
pub const MCRO_ERROR_PAPER_JAM = @as(u32, 2);
pub const MCRO_ERROR_PAPER_PROBLEM = @as(u32, 3);
pub const MCRO_ERROR_PAPER_EMPTY = @as(u32, 4);
pub const MCRO_ERROR_OFFLINE = @as(u32, 5);
pub const MCRO_ERROR_USER_INTERVENTION = @as(u32, 6);
pub const WIA_ORDER_RGB = @as(u32, 0);
pub const WIA_ORDER_BGR = @as(u32, 1);
pub const WiaItemTypeTwainCapabilityPassThrough = @as(u32, 131072);
pub const ESC_TWAIN_CAPABILITY = @as(u32, 2001);
pub const ESC_TWAIN_PRIVATE_SUPPORTED_CAPS = @as(u32, 2002);
pub const WIA_WSD_MANUFACTURER = @as(u32, 38914);
pub const WIA_WSD_MANUFACTURER_URL = @as(u32, 38915);
pub const WIA_WSD_MODEL_NAME = @as(u32, 38916);
pub const WIA_WSD_MODEL_NUMBER = @as(u32, 38917);
pub const WIA_WSD_MODEL_URL = @as(u32, 38918);
pub const WIA_WSD_PRESENTATION_URL = @as(u32, 38919);
pub const WIA_WSD_FRIENDLY_NAME = @as(u32, 38920);
pub const WIA_WSD_SERIAL_NUMBER = @as(u32, 38921);
pub const WIA_WSD_SCAN_AVAILABLE_ITEM = @as(u32, 38922);

//--------------------------------------------------------------------------------
// Section: Types (67)
//--------------------------------------------------------------------------------
const CLSID_WiaDevMgr_Value = Guid.initString("a1f4e726-8cf1-11d1-bf92-0060081ed811");
pub const CLSID_WiaDevMgr = &CLSID_WiaDevMgr_Value;

const CLSID_WiaDevMgr2_Value = Guid.initString("b6c292bc-7c88-41ee-8b54-8ec92617e599");
pub const CLSID_WiaDevMgr2 = &CLSID_WiaDevMgr2_Value;

const CLSID_WiaLog_Value = Guid.initString("a1e75357-881a-419e-83e2-bb16db197c68");
pub const CLSID_WiaLog = &CLSID_WiaLog_Value;

pub const WIA_DITHER_PATTERN_DATA = extern struct {
    lSize: i32,
    bstrPatternName: ?BSTR,
    lPatternWidth: i32,
    lPatternLength: i32,
    cbPattern: i32,
    pbPattern: ?*u8,
};

pub const WIA_PROPID_TO_NAME = extern struct {
    propid: u32,
    pszName: ?PWSTR,
};

pub const WIA_FORMAT_INFO = extern struct {
    guidFormatID: Guid,
    lTymed: i32,
};

pub const WIA_RAW_HEADER = extern struct {
    Tag: u32,
    Version: u32,
    HeaderSize: u32,
    XRes: u32,
    YRes: u32,
    XExtent: u32,
    YExtent: u32,
    BytesPerLine: u32,
    BitsPerPixel: u32,
    ChannelsPerPixel: u32,
    DataType: u32,
    BitsPerChannel: [8]u8,
    Compression: u32,
    PhotometricInterp: u32,
    LineOrder: u32,
    RawDataOffset: u32,
    RawDataSize: u32,
    PaletteOffset: u32,
    PaletteSize: u32,
};

pub const WIA_BARCODE_INFO = extern struct {
    Size: u32,
    Type: u32,
    Page: u32,
    Confidence: u32,
    XOffset: u32,
    YOffset: u32,
    Rotation: u32,
    Length: u32,
    Text: [1]u16,
};

pub const WIA_BARCODES = extern struct {
    Tag: u32,
    Version: u32,
    Size: u32,
    Count: u32,
    Barcodes: [1]WIA_BARCODE_INFO,
};

pub const WIA_PATCH_CODE_INFO = extern struct {
    Type: u32,
};

pub const WIA_PATCH_CODES = extern struct {
    Tag: u32,
    Version: u32,
    Size: u32,
    Count: u32,
    PatchCodes: [1]WIA_PATCH_CODE_INFO,
};

pub const WIA_MICR_INFO = extern struct {
    Size: u32,
    Page: u32,
    Length: u32,
    Text: [1]u16,
};

pub const WIA_MICR = extern struct {
    Tag: u32,
    Version: u32,
    Size: u32,
    Placeholder: u16,
    Reserved: u16,
    Count: u32,
    Micr: [1]WIA_MICR_INFO,
};

// TODO: this type is limited to platform 'windows5.0'
const IID_IWiaDevMgr_Value = Guid.initString("5eb2502a-8cf1-11d1-bf92-0060081ed811");
pub const IID_IWiaDevMgr = &IID_IWiaDevMgr_Value;
pub const IWiaDevMgr = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        EnumDeviceInfo: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDevMgr,
                lFlag: i32,
                ppIEnum: ?*?*IEnumWIA_DEV_INFO,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDevMgr,
                lFlag: i32,
                ppIEnum: ?*?*IEnumWIA_DEV_INFO,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CreateDevice: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDevMgr,
                bstrDeviceID: ?BSTR,
                ppWiaItemRoot: ?*?*IWiaItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDevMgr,
                bstrDeviceID: ?BSTR,
                ppWiaItemRoot: ?*?*IWiaItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SelectDeviceDlg: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDevMgr,
                hwndParent: ?HWND,
                lDeviceType: i32,
                lFlags: i32,
                pbstrDeviceID: ?*?BSTR,
                ppItemRoot: ?*?*IWiaItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDevMgr,
                hwndParent: ?HWND,
                lDeviceType: i32,
                lFlags: i32,
                pbstrDeviceID: ?*?BSTR,
                ppItemRoot: ?*?*IWiaItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SelectDeviceDlgID: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDevMgr,
                hwndParent: ?HWND,
                lDeviceType: i32,
                lFlags: i32,
                pbstrDeviceID: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDevMgr,
                hwndParent: ?HWND,
                lDeviceType: i32,
                lFlags: i32,
                pbstrDeviceID: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetImageDlg: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDevMgr,
                hwndParent: ?HWND,
                lDeviceType: i32,
                lFlags: i32,
                lIntent: i32,
                pItemRoot: ?*IWiaItem,
                bstrFilename: ?BSTR,
                pguidFormat: ?*Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDevMgr,
                hwndParent: ?HWND,
                lDeviceType: i32,
                lFlags: i32,
                lIntent: i32,
                pItemRoot: ?*IWiaItem,
                bstrFilename: ?BSTR,
                pguidFormat: ?*Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RegisterEventCallbackProgram: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDevMgr,
                lFlags: i32,
                bstrDeviceID: ?BSTR,
                pEventGUID: ?*const Guid,
                bstrCommandline: ?BSTR,
                bstrName: ?BSTR,
                bstrDescription: ?BSTR,
                bstrIcon: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDevMgr,
                lFlags: i32,
                bstrDeviceID: ?BSTR,
                pEventGUID: ?*const Guid,
                bstrCommandline: ?BSTR,
                bstrName: ?BSTR,
                bstrDescription: ?BSTR,
                bstrIcon: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RegisterEventCallbackInterface: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDevMgr,
                lFlags: i32,
                bstrDeviceID: ?BSTR,
                pEventGUID: ?*const Guid,
                pIWiaEventCallback: ?*IWiaEventCallback,
                pEventObject: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDevMgr,
                lFlags: i32,
                bstrDeviceID: ?BSTR,
                pEventGUID: ?*const Guid,
                pIWiaEventCallback: ?*IWiaEventCallback,
                pEventObject: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RegisterEventCallbackCLSID: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDevMgr,
                lFlags: i32,
                bstrDeviceID: ?BSTR,
                pEventGUID: ?*const Guid,
                pClsID: ?*const Guid,
                bstrName: ?BSTR,
                bstrDescription: ?BSTR,
                bstrIcon: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDevMgr,
                lFlags: i32,
                bstrDeviceID: ?BSTR,
                pEventGUID: ?*const Guid,
                pClsID: ?*const Guid,
                bstrName: ?BSTR,
                bstrDescription: ?BSTR,
                bstrIcon: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AddDeviceDlg: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDevMgr,
                hwndParent: ?HWND,
                lFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDevMgr,
                hwndParent: ?HWND,
                lFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDevMgr_EnumDeviceInfo(self: *const T, lFlag: i32, ppIEnum: ?*?*IEnumWIA_DEV_INFO) HRESULT {
                return @as(*const IWiaDevMgr.VTable, @ptrCast(self.vtable)).EnumDeviceInfo(@as(*const IWiaDevMgr, @ptrCast(self)), lFlag, ppIEnum);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDevMgr_CreateDevice(self: *const T, bstrDeviceID: ?BSTR, ppWiaItemRoot: ?*?*IWiaItem) HRESULT {
                return @as(*const IWiaDevMgr.VTable, @ptrCast(self.vtable)).CreateDevice(@as(*const IWiaDevMgr, @ptrCast(self)), bstrDeviceID, ppWiaItemRoot);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDevMgr_SelectDeviceDlg(self: *const T, hwndParent: ?HWND, lDeviceType: i32, lFlags: i32, pbstrDeviceID: ?*?BSTR, ppItemRoot: ?*?*IWiaItem) HRESULT {
                return @as(*const IWiaDevMgr.VTable, @ptrCast(self.vtable)).SelectDeviceDlg(@as(*const IWiaDevMgr, @ptrCast(self)), hwndParent, lDeviceType, lFlags, pbstrDeviceID, ppItemRoot);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDevMgr_SelectDeviceDlgID(self: *const T, hwndParent: ?HWND, lDeviceType: i32, lFlags: i32, pbstrDeviceID: ?*?BSTR) HRESULT {
                return @as(*const IWiaDevMgr.VTable, @ptrCast(self.vtable)).SelectDeviceDlgID(@as(*const IWiaDevMgr, @ptrCast(self)), hwndParent, lDeviceType, lFlags, pbstrDeviceID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDevMgr_GetImageDlg(self: *const T, hwndParent: ?HWND, lDeviceType: i32, lFlags: i32, lIntent: i32, pItemRoot: ?*IWiaItem, bstrFilename: ?BSTR, pguidFormat: ?*Guid) HRESULT {
                return @as(*const IWiaDevMgr.VTable, @ptrCast(self.vtable)).GetImageDlg(@as(*const IWiaDevMgr, @ptrCast(self)), hwndParent, lDeviceType, lFlags, lIntent, pItemRoot, bstrFilename, pguidFormat);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDevMgr_RegisterEventCallbackProgram(self: *const T, lFlags: i32, bstrDeviceID: ?BSTR, pEventGUID: ?*const Guid, bstrCommandline: ?BSTR, bstrName: ?BSTR, bstrDescription: ?BSTR, bstrIcon: ?BSTR) HRESULT {
                return @as(*const IWiaDevMgr.VTable, @ptrCast(self.vtable)).RegisterEventCallbackProgram(@as(*const IWiaDevMgr, @ptrCast(self)), lFlags, bstrDeviceID, pEventGUID, bstrCommandline, bstrName, bstrDescription, bstrIcon);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDevMgr_RegisterEventCallbackInterface(self: *const T, lFlags: i32, bstrDeviceID: ?BSTR, pEventGUID: ?*const Guid, pIWiaEventCallback: ?*IWiaEventCallback, pEventObject: ?*?*IUnknown) HRESULT {
                return @as(*const IWiaDevMgr.VTable, @ptrCast(self.vtable)).RegisterEventCallbackInterface(@as(*const IWiaDevMgr, @ptrCast(self)), lFlags, bstrDeviceID, pEventGUID, pIWiaEventCallback, pEventObject);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDevMgr_RegisterEventCallbackCLSID(self: *const T, lFlags: i32, bstrDeviceID: ?BSTR, pEventGUID: ?*const Guid, pClsID: ?*const Guid, bstrName: ?BSTR, bstrDescription: ?BSTR, bstrIcon: ?BSTR) HRESULT {
                return @as(*const IWiaDevMgr.VTable, @ptrCast(self.vtable)).RegisterEventCallbackCLSID(@as(*const IWiaDevMgr, @ptrCast(self)), lFlags, bstrDeviceID, pEventGUID, pClsID, bstrName, bstrDescription, bstrIcon);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDevMgr_AddDeviceDlg(self: *const T, hwndParent: ?HWND, lFlags: i32) HRESULT {
                return @as(*const IWiaDevMgr.VTable, @ptrCast(self.vtable)).AddDeviceDlg(@as(*const IWiaDevMgr, @ptrCast(self)), hwndParent, lFlags);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.0'
const IID_IEnumWIA_DEV_INFO_Value = Guid.initString("5e38b83c-8cf1-11d1-bf92-0060081ed811");
pub const IID_IEnumWIA_DEV_INFO = &IID_IEnumWIA_DEV_INFO_Value;
pub const IEnumWIA_DEV_INFO = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        Next: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumWIA_DEV_INFO,
                celt: u32,
                rgelt: ?*?*IWiaPropertyStorage,
                pceltFetched: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumWIA_DEV_INFO,
                celt: u32,
                rgelt: ?*?*IWiaPropertyStorage,
                pceltFetched: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Skip: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumWIA_DEV_INFO,
                celt: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumWIA_DEV_INFO,
                celt: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Reset: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumWIA_DEV_INFO,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumWIA_DEV_INFO,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clone: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumWIA_DEV_INFO,
                ppIEnum: ?*?*IEnumWIA_DEV_INFO,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumWIA_DEV_INFO,
                ppIEnum: ?*?*IEnumWIA_DEV_INFO,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCount: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumWIA_DEV_INFO,
                celt: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumWIA_DEV_INFO,
                celt: ?*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 IEnumWIA_DEV_INFO_Next(self: *const T, celt: u32, rgelt: ?*?*IWiaPropertyStorage, pceltFetched: ?*u32) HRESULT {
                return @as(*const IEnumWIA_DEV_INFO.VTable, @ptrCast(self.vtable)).Next(@as(*const IEnumWIA_DEV_INFO, @ptrCast(self)), celt, rgelt, pceltFetched);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumWIA_DEV_INFO_Skip(self: *const T, celt: u32) HRESULT {
                return @as(*const IEnumWIA_DEV_INFO.VTable, @ptrCast(self.vtable)).Skip(@as(*const IEnumWIA_DEV_INFO, @ptrCast(self)), celt);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumWIA_DEV_INFO_Reset(self: *const T) HRESULT {
                return @as(*const IEnumWIA_DEV_INFO.VTable, @ptrCast(self.vtable)).Reset(@as(*const IEnumWIA_DEV_INFO, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumWIA_DEV_INFO_Clone(self: *const T, ppIEnum: ?*?*IEnumWIA_DEV_INFO) HRESULT {
                return @as(*const IEnumWIA_DEV_INFO.VTable, @ptrCast(self.vtable)).Clone(@as(*const IEnumWIA_DEV_INFO, @ptrCast(self)), ppIEnum);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumWIA_DEV_INFO_GetCount(self: *const T, celt: ?*u32) HRESULT {
                return @as(*const IEnumWIA_DEV_INFO.VTable, @ptrCast(self.vtable)).GetCount(@as(*const IEnumWIA_DEV_INFO, @ptrCast(self)), celt);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.0'
const IID_IWiaEventCallback_Value = Guid.initString("ae6287b0-0084-11d2-973b-00a0c9068f2e");
pub const IID_IWiaEventCallback = &IID_IWiaEventCallback_Value;
pub const IWiaEventCallback = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        ImageEventCallback: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaEventCallback,
                pEventGUID: ?*const Guid,
                bstrEventDescription: ?BSTR,
                bstrDeviceID: ?BSTR,
                bstrDeviceDescription: ?BSTR,
                dwDeviceType: u32,
                bstrFullItemName: ?BSTR,
                pulEventType: ?*u32,
                ulReserved: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaEventCallback,
                pEventGUID: ?*const Guid,
                bstrEventDescription: ?BSTR,
                bstrDeviceID: ?BSTR,
                bstrDeviceDescription: ?BSTR,
                dwDeviceType: u32,
                bstrFullItemName: ?BSTR,
                pulEventType: ?*u32,
                ulReserved: 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 IWiaEventCallback_ImageEventCallback(self: *const T, pEventGUID: ?*const Guid, bstrEventDescription: ?BSTR, bstrDeviceID: ?BSTR, bstrDeviceDescription: ?BSTR, dwDeviceType: u32, bstrFullItemName: ?BSTR, pulEventType: ?*u32, ulReserved: u32) HRESULT {
                return @as(*const IWiaEventCallback.VTable, @ptrCast(self.vtable)).ImageEventCallback(@as(*const IWiaEventCallback, @ptrCast(self)), pEventGUID, bstrEventDescription, bstrDeviceID, bstrDeviceDescription, dwDeviceType, bstrFullItemName, pulEventType, ulReserved);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const WIA_DATA_CALLBACK_HEADER = extern struct {
    lSize: i32,
    guidFormatID: Guid,
    lBufferSize: i32,
    lPageCount: i32,
};

// TODO: this type is limited to platform 'windows5.0'
const IID_IWiaDataCallback_Value = Guid.initString("a558a866-a5b0-11d2-a08f-00c04f72dc3c");
pub const IID_IWiaDataCallback = &IID_IWiaDataCallback_Value;
pub const IWiaDataCallback = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        BandedDataCallback: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDataCallback,
                lMessage: i32,
                lStatus: i32,
                lPercentComplete: i32,
                lOffset: i32,
                lLength: i32,
                lReserved: i32,
                lResLength: i32,
                pbBuffer: ?*u8,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDataCallback,
                lMessage: i32,
                lStatus: i32,
                lPercentComplete: i32,
                lOffset: i32,
                lLength: i32,
                lReserved: i32,
                lResLength: i32,
                pbBuffer: ?*u8,
            ) 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 IWiaDataCallback_BandedDataCallback(self: *const T, lMessage: i32, lStatus: i32, lPercentComplete: i32, lOffset: i32, lLength: i32, lReserved: i32, lResLength: i32, pbBuffer: ?*u8) HRESULT {
                return @as(*const IWiaDataCallback.VTable, @ptrCast(self.vtable)).BandedDataCallback(@as(*const IWiaDataCallback, @ptrCast(self)), lMessage, lStatus, lPercentComplete, lOffset, lLength, lReserved, lResLength, pbBuffer);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const WIA_DATA_TRANSFER_INFO = extern struct {
    ulSize: u32,
    ulSection: u32,
    ulBufferSize: u32,
    bDoubleBuffer: BOOL,
    ulReserved1: u32,
    ulReserved2: u32,
    ulReserved3: u32,
};

pub const WIA_EXTENDED_TRANSFER_INFO = extern struct {
    ulSize: u32,
    ulMinBufferSize: u32,
    ulOptimalBufferSize: u32,
    ulMaxBufferSize: u32,
    ulNumBuffers: u32,
};

// TODO: this type is limited to platform 'windows5.0'
const IID_IWiaDataTransfer_Value = Guid.initString("a6cef998-a5b0-11d2-a08f-00c04f72dc3c");
pub const IID_IWiaDataTransfer = &IID_IWiaDataTransfer_Value;
pub const IWiaDataTransfer = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        idtGetData: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDataTransfer,
                pMedium: ?*STGMEDIUM,
                pIWiaDataCallback: ?*IWiaDataCallback,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDataTransfer,
                pMedium: ?*STGMEDIUM,
                pIWiaDataCallback: ?*IWiaDataCallback,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        idtGetBandedData: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDataTransfer,
                pWiaDataTransInfo: ?*WIA_DATA_TRANSFER_INFO,
                pIWiaDataCallback: ?*IWiaDataCallback,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDataTransfer,
                pWiaDataTransInfo: ?*WIA_DATA_TRANSFER_INFO,
                pIWiaDataCallback: ?*IWiaDataCallback,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        idtQueryGetData: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDataTransfer,
                pfe: ?*WIA_FORMAT_INFO,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDataTransfer,
                pfe: ?*WIA_FORMAT_INFO,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        idtEnumWIA_FORMAT_INFO: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDataTransfer,
                ppEnum: ?*?*IEnumWIA_FORMAT_INFO,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDataTransfer,
                ppEnum: ?*?*IEnumWIA_FORMAT_INFO,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        idtGetExtendedTransferInfo: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDataTransfer,
                pExtendedTransferInfo: ?*WIA_EXTENDED_TRANSFER_INFO,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDataTransfer,
                pExtendedTransferInfo: ?*WIA_EXTENDED_TRANSFER_INFO,
            ) 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 IWiaDataTransfer_idtGetData(self: *const T, pMedium: ?*STGMEDIUM, pIWiaDataCallback: ?*IWiaDataCallback) HRESULT {
                return @as(*const IWiaDataTransfer.VTable, @ptrCast(self.vtable)).idtGetData(@as(*const IWiaDataTransfer, @ptrCast(self)), pMedium, pIWiaDataCallback);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDataTransfer_idtGetBandedData(self: *const T, pWiaDataTransInfo: ?*WIA_DATA_TRANSFER_INFO, pIWiaDataCallback: ?*IWiaDataCallback) HRESULT {
                return @as(*const IWiaDataTransfer.VTable, @ptrCast(self.vtable)).idtGetBandedData(@as(*const IWiaDataTransfer, @ptrCast(self)), pWiaDataTransInfo, pIWiaDataCallback);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDataTransfer_idtQueryGetData(self: *const T, pfe: ?*WIA_FORMAT_INFO) HRESULT {
                return @as(*const IWiaDataTransfer.VTable, @ptrCast(self.vtable)).idtQueryGetData(@as(*const IWiaDataTransfer, @ptrCast(self)), pfe);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDataTransfer_idtEnumWIA_FORMAT_INFO(self: *const T, ppEnum: ?*?*IEnumWIA_FORMAT_INFO) HRESULT {
                return @as(*const IWiaDataTransfer.VTable, @ptrCast(self.vtable)).idtEnumWIA_FORMAT_INFO(@as(*const IWiaDataTransfer, @ptrCast(self)), ppEnum);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDataTransfer_idtGetExtendedTransferInfo(self: *const T, pExtendedTransferInfo: ?*WIA_EXTENDED_TRANSFER_INFO) HRESULT {
                return @as(*const IWiaDataTransfer.VTable, @ptrCast(self.vtable)).idtGetExtendedTransferInfo(@as(*const IWiaDataTransfer, @ptrCast(self)), pExtendedTransferInfo);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.0'
const IID_IWiaItem_Value = Guid.initString("4db1ad10-3391-11d2-9a33-00c04fa36145");
pub const IID_IWiaItem = &IID_IWiaItem_Value;
pub const IWiaItem = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        GetItemType: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem,
                pItemType: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem,
                pItemType: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AnalyzeItem: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem,
                lFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem,
                lFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EnumChildItems: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem,
                ppIEnumWiaItem: ?*?*IEnumWiaItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem,
                ppIEnumWiaItem: ?*?*IEnumWiaItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DeleteItem: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem,
                lFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem,
                lFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CreateChildItem: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem,
                lFlags: i32,
                bstrItemName: ?BSTR,
                bstrFullItemName: ?BSTR,
                ppIWiaItem: ?*?*IWiaItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem,
                lFlags: i32,
                bstrItemName: ?BSTR,
                bstrFullItemName: ?BSTR,
                ppIWiaItem: ?*?*IWiaItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EnumRegisterEventInfo: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem,
                lFlags: i32,
                pEventGUID: ?*const Guid,
                ppIEnum: ?*?*IEnumWIA_DEV_CAPS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem,
                lFlags: i32,
                pEventGUID: ?*const Guid,
                ppIEnum: ?*?*IEnumWIA_DEV_CAPS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        FindItemByName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem,
                lFlags: i32,
                bstrFullItemName: ?BSTR,
                ppIWiaItem: ?*?*IWiaItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem,
                lFlags: i32,
                bstrFullItemName: ?BSTR,
                ppIWiaItem: ?*?*IWiaItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DeviceDlg: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem,
                hwndParent: ?HWND,
                lFlags: i32,
                lIntent: i32,
                plItemCount: ?*i32,
                ppIWiaItem: ?*?*?*IWiaItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem,
                hwndParent: ?HWND,
                lFlags: i32,
                lIntent: i32,
                plItemCount: ?*i32,
                ppIWiaItem: ?*?*?*IWiaItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DeviceCommand: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem,
                lFlags: i32,
                pCmdGUID: ?*const Guid,
                pIWiaItem: ?*?*IWiaItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem,
                lFlags: i32,
                pCmdGUID: ?*const Guid,
                pIWiaItem: ?*?*IWiaItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetRootItem: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem,
                ppIWiaItem: ?*?*IWiaItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem,
                ppIWiaItem: ?*?*IWiaItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EnumDeviceCapabilities: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem,
                lFlags: i32,
                ppIEnumWIA_DEV_CAPS: ?*?*IEnumWIA_DEV_CAPS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem,
                lFlags: i32,
                ppIEnumWIA_DEV_CAPS: ?*?*IEnumWIA_DEV_CAPS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DumpItemData: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem,
                bstrData: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem,
                bstrData: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DumpDrvItemData: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem,
                bstrData: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem,
                bstrData: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DumpTreeItemData: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem,
                bstrData: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem,
                bstrData: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Diagnostic: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem,
                ulSize: u32,
                pBuffer: [*:0]u8,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem,
                ulSize: u32,
                pBuffer: [*:0]u8,
            ) 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 IWiaItem_GetItemType(self: *const T, pItemType: ?*i32) HRESULT {
                return @as(*const IWiaItem.VTable, @ptrCast(self.vtable)).GetItemType(@as(*const IWiaItem, @ptrCast(self)), pItemType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem_AnalyzeItem(self: *const T, lFlags: i32) HRESULT {
                return @as(*const IWiaItem.VTable, @ptrCast(self.vtable)).AnalyzeItem(@as(*const IWiaItem, @ptrCast(self)), lFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem_EnumChildItems(self: *const T, ppIEnumWiaItem: ?*?*IEnumWiaItem) HRESULT {
                return @as(*const IWiaItem.VTable, @ptrCast(self.vtable)).EnumChildItems(@as(*const IWiaItem, @ptrCast(self)), ppIEnumWiaItem);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem_DeleteItem(self: *const T, lFlags: i32) HRESULT {
                return @as(*const IWiaItem.VTable, @ptrCast(self.vtable)).DeleteItem(@as(*const IWiaItem, @ptrCast(self)), lFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem_CreateChildItem(self: *const T, lFlags: i32, bstrItemName: ?BSTR, bstrFullItemName: ?BSTR, ppIWiaItem: ?*?*IWiaItem) HRESULT {
                return @as(*const IWiaItem.VTable, @ptrCast(self.vtable)).CreateChildItem(@as(*const IWiaItem, @ptrCast(self)), lFlags, bstrItemName, bstrFullItemName, ppIWiaItem);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem_EnumRegisterEventInfo(self: *const T, lFlags: i32, pEventGUID: ?*const Guid, ppIEnum: ?*?*IEnumWIA_DEV_CAPS) HRESULT {
                return @as(*const IWiaItem.VTable, @ptrCast(self.vtable)).EnumRegisterEventInfo(@as(*const IWiaItem, @ptrCast(self)), lFlags, pEventGUID, ppIEnum);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem_FindItemByName(self: *const T, lFlags: i32, bstrFullItemName: ?BSTR, ppIWiaItem: ?*?*IWiaItem) HRESULT {
                return @as(*const IWiaItem.VTable, @ptrCast(self.vtable)).FindItemByName(@as(*const IWiaItem, @ptrCast(self)), lFlags, bstrFullItemName, ppIWiaItem);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem_DeviceDlg(self: *const T, hwndParent: ?HWND, lFlags: i32, lIntent: i32, plItemCount: ?*i32, ppIWiaItem: ?*?*?*IWiaItem) HRESULT {
                return @as(*const IWiaItem.VTable, @ptrCast(self.vtable)).DeviceDlg(@as(*const IWiaItem, @ptrCast(self)), hwndParent, lFlags, lIntent, plItemCount, ppIWiaItem);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem_DeviceCommand(self: *const T, lFlags: i32, pCmdGUID: ?*const Guid, pIWiaItem: ?*?*IWiaItem) HRESULT {
                return @as(*const IWiaItem.VTable, @ptrCast(self.vtable)).DeviceCommand(@as(*const IWiaItem, @ptrCast(self)), lFlags, pCmdGUID, pIWiaItem);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem_GetRootItem(self: *const T, ppIWiaItem: ?*?*IWiaItem) HRESULT {
                return @as(*const IWiaItem.VTable, @ptrCast(self.vtable)).GetRootItem(@as(*const IWiaItem, @ptrCast(self)), ppIWiaItem);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem_EnumDeviceCapabilities(self: *const T, lFlags: i32, ppIEnumWIA_DEV_CAPS: ?*?*IEnumWIA_DEV_CAPS) HRESULT {
                return @as(*const IWiaItem.VTable, @ptrCast(self.vtable)).EnumDeviceCapabilities(@as(*const IWiaItem, @ptrCast(self)), lFlags, ppIEnumWIA_DEV_CAPS);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem_DumpItemData(self: *const T, bstrData: ?*?BSTR) HRESULT {
                return @as(*const IWiaItem.VTable, @ptrCast(self.vtable)).DumpItemData(@as(*const IWiaItem, @ptrCast(self)), bstrData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem_DumpDrvItemData(self: *const T, bstrData: ?*?BSTR) HRESULT {
                return @as(*const IWiaItem.VTable, @ptrCast(self.vtable)).DumpDrvItemData(@as(*const IWiaItem, @ptrCast(self)), bstrData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem_DumpTreeItemData(self: *const T, bstrData: ?*?BSTR) HRESULT {
                return @as(*const IWiaItem.VTable, @ptrCast(self.vtable)).DumpTreeItemData(@as(*const IWiaItem, @ptrCast(self)), bstrData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem_Diagnostic(self: *const T, ulSize: u32, pBuffer: [*:0]u8) HRESULT {
                return @as(*const IWiaItem.VTable, @ptrCast(self.vtable)).Diagnostic(@as(*const IWiaItem, @ptrCast(self)), ulSize, pBuffer);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.0'
const IID_IWiaPropertyStorage_Value = Guid.initString("98b5e8a0-29cc-491a-aac0-e6db4fdcceb6");
pub const IID_IWiaPropertyStorage = &IID_IWiaPropertyStorage_Value;
pub const IWiaPropertyStorage = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        ReadMultiple: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaPropertyStorage,
                cpspec: u32,
                rgpspec: [*]const PROPSPEC,
                rgpropvar: [*]PROPVARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaPropertyStorage,
                cpspec: u32,
                rgpspec: [*]const PROPSPEC,
                rgpropvar: [*]PROPVARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        WriteMultiple: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaPropertyStorage,
                cpspec: u32,
                rgpspec: ?*const PROPSPEC,
                rgpropvar: ?*const PROPVARIANT,
                propidNameFirst: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaPropertyStorage,
                cpspec: u32,
                rgpspec: ?*const PROPSPEC,
                rgpropvar: ?*const PROPVARIANT,
                propidNameFirst: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DeleteMultiple: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaPropertyStorage,
                cpspec: u32,
                rgpspec: [*]const PROPSPEC,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaPropertyStorage,
                cpspec: u32,
                rgpspec: [*]const PROPSPEC,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ReadPropertyNames: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaPropertyStorage,
                cpropid: u32,
                rgpropid: [*]const u32,
                rglpwstrName: [*]?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaPropertyStorage,
                cpropid: u32,
                rgpropid: [*]const u32,
                rglpwstrName: [*]?PWSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        WritePropertyNames: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaPropertyStorage,
                cpropid: u32,
                rgpropid: [*]const u32,
                rglpwstrName: [*]const ?[*:0]const u16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaPropertyStorage,
                cpropid: u32,
                rgpropid: [*]const u32,
                rglpwstrName: [*]const ?[*:0]const u16,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DeletePropertyNames: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaPropertyStorage,
                cpropid: u32,
                rgpropid: [*]const u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaPropertyStorage,
                cpropid: u32,
                rgpropid: [*]const u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Commit: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaPropertyStorage,
                grfCommitFlags: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaPropertyStorage,
                grfCommitFlags: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Revert: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaPropertyStorage,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaPropertyStorage,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Enum: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaPropertyStorage,
                ppenum: ?*?*IEnumSTATPROPSTG,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaPropertyStorage,
                ppenum: ?*?*IEnumSTATPROPSTG,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetTimes: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaPropertyStorage,
                pctime: ?*const FILETIME,
                patime: ?*const FILETIME,
                pmtime: ?*const FILETIME,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaPropertyStorage,
                pctime: ?*const FILETIME,
                patime: ?*const FILETIME,
                pmtime: ?*const FILETIME,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetClass: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaPropertyStorage,
                clsid: ?*const Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaPropertyStorage,
                clsid: ?*const Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Stat: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaPropertyStorage,
                pstatpsstg: ?*STATPROPSETSTG,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaPropertyStorage,
                pstatpsstg: ?*STATPROPSETSTG,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetPropertyAttributes: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaPropertyStorage,
                cpspec: u32,
                rgpspec: [*]PROPSPEC,
                rgflags: [*]u32,
                rgpropvar: [*]PROPVARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaPropertyStorage,
                cpspec: u32,
                rgpspec: [*]PROPSPEC,
                rgflags: [*]u32,
                rgpropvar: [*]PROPVARIANT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCount: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaPropertyStorage,
                pulNumProps: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaPropertyStorage,
                pulNumProps: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetPropertyStream: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaPropertyStorage,
                pCompatibilityId: ?*Guid,
                ppIStream: ?*?*IStream,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaPropertyStorage,
                pCompatibilityId: ?*Guid,
                ppIStream: ?*?*IStream,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetPropertyStream: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaPropertyStorage,
                pCompatibilityId: ?*Guid,
                pIStream: ?*IStream,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaPropertyStorage,
                pCompatibilityId: ?*Guid,
                pIStream: ?*IStream,
            ) 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 IWiaPropertyStorage_ReadMultiple(self: *const T, cpspec: u32, rgpspec: [*]const PROPSPEC, rgpropvar: [*]PROPVARIANT) HRESULT {
                return @as(*const IWiaPropertyStorage.VTable, @ptrCast(self.vtable)).ReadMultiple(@as(*const IWiaPropertyStorage, @ptrCast(self)), cpspec, rgpspec, rgpropvar);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaPropertyStorage_WriteMultiple(self: *const T, cpspec: u32, rgpspec: ?*const PROPSPEC, rgpropvar: ?*const PROPVARIANT, propidNameFirst: u32) HRESULT {
                return @as(*const IWiaPropertyStorage.VTable, @ptrCast(self.vtable)).WriteMultiple(@as(*const IWiaPropertyStorage, @ptrCast(self)), cpspec, rgpspec, rgpropvar, propidNameFirst);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaPropertyStorage_DeleteMultiple(self: *const T, cpspec: u32, rgpspec: [*]const PROPSPEC) HRESULT {
                return @as(*const IWiaPropertyStorage.VTable, @ptrCast(self.vtable)).DeleteMultiple(@as(*const IWiaPropertyStorage, @ptrCast(self)), cpspec, rgpspec);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaPropertyStorage_ReadPropertyNames(self: *const T, cpropid: u32, rgpropid: [*]const u32, rglpwstrName: [*]?PWSTR) HRESULT {
                return @as(*const IWiaPropertyStorage.VTable, @ptrCast(self.vtable)).ReadPropertyNames(@as(*const IWiaPropertyStorage, @ptrCast(self)), cpropid, rgpropid, rglpwstrName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaPropertyStorage_WritePropertyNames(self: *const T, cpropid: u32, rgpropid: [*]const u32, rglpwstrName: [*]const ?[*:0]const u16) HRESULT {
                return @as(*const IWiaPropertyStorage.VTable, @ptrCast(self.vtable)).WritePropertyNames(@as(*const IWiaPropertyStorage, @ptrCast(self)), cpropid, rgpropid, rglpwstrName);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaPropertyStorage_DeletePropertyNames(self: *const T, cpropid: u32, rgpropid: [*]const u32) HRESULT {
                return @as(*const IWiaPropertyStorage.VTable, @ptrCast(self.vtable)).DeletePropertyNames(@as(*const IWiaPropertyStorage, @ptrCast(self)), cpropid, rgpropid);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaPropertyStorage_Commit(self: *const T, grfCommitFlags: u32) HRESULT {
                return @as(*const IWiaPropertyStorage.VTable, @ptrCast(self.vtable)).Commit(@as(*const IWiaPropertyStorage, @ptrCast(self)), grfCommitFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaPropertyStorage_Revert(self: *const T) HRESULT {
                return @as(*const IWiaPropertyStorage.VTable, @ptrCast(self.vtable)).Revert(@as(*const IWiaPropertyStorage, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaPropertyStorage_Enum(self: *const T, ppenum: ?*?*IEnumSTATPROPSTG) HRESULT {
                return @as(*const IWiaPropertyStorage.VTable, @ptrCast(self.vtable)).Enum(@as(*const IWiaPropertyStorage, @ptrCast(self)), ppenum);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaPropertyStorage_SetTimes(self: *const T, pctime: ?*const FILETIME, patime: ?*const FILETIME, pmtime: ?*const FILETIME) HRESULT {
                return @as(*const IWiaPropertyStorage.VTable, @ptrCast(self.vtable)).SetTimes(@as(*const IWiaPropertyStorage, @ptrCast(self)), pctime, patime, pmtime);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaPropertyStorage_SetClass(self: *const T, clsid: ?*const Guid) HRESULT {
                return @as(*const IWiaPropertyStorage.VTable, @ptrCast(self.vtable)).SetClass(@as(*const IWiaPropertyStorage, @ptrCast(self)), clsid);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaPropertyStorage_Stat(self: *const T, pstatpsstg: ?*STATPROPSETSTG) HRESULT {
                return @as(*const IWiaPropertyStorage.VTable, @ptrCast(self.vtable)).Stat(@as(*const IWiaPropertyStorage, @ptrCast(self)), pstatpsstg);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaPropertyStorage_GetPropertyAttributes(self: *const T, cpspec: u32, rgpspec: [*]PROPSPEC, rgflags: [*]u32, rgpropvar: [*]PROPVARIANT) HRESULT {
                return @as(*const IWiaPropertyStorage.VTable, @ptrCast(self.vtable)).GetPropertyAttributes(@as(*const IWiaPropertyStorage, @ptrCast(self)), cpspec, rgpspec, rgflags, rgpropvar);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaPropertyStorage_GetCount(self: *const T, pulNumProps: ?*u32) HRESULT {
                return @as(*const IWiaPropertyStorage.VTable, @ptrCast(self.vtable)).GetCount(@as(*const IWiaPropertyStorage, @ptrCast(self)), pulNumProps);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaPropertyStorage_GetPropertyStream(self: *const T, pCompatibilityId: ?*Guid, ppIStream: ?*?*IStream) HRESULT {
                return @as(*const IWiaPropertyStorage.VTable, @ptrCast(self.vtable)).GetPropertyStream(@as(*const IWiaPropertyStorage, @ptrCast(self)), pCompatibilityId, ppIStream);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaPropertyStorage_SetPropertyStream(self: *const T, pCompatibilityId: ?*Guid, pIStream: ?*IStream) HRESULT {
                return @as(*const IWiaPropertyStorage.VTable, @ptrCast(self.vtable)).SetPropertyStream(@as(*const IWiaPropertyStorage, @ptrCast(self)), pCompatibilityId, pIStream);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.0'
const IID_IEnumWiaItem_Value = Guid.initString("5e8383fc-3391-11d2-9a33-00c04fa36145");
pub const IID_IEnumWiaItem = &IID_IEnumWiaItem_Value;
pub const IEnumWiaItem = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        Next: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumWiaItem,
                celt: u32,
                ppIWiaItem: ?*?*IWiaItem,
                pceltFetched: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumWiaItem,
                celt: u32,
                ppIWiaItem: ?*?*IWiaItem,
                pceltFetched: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Skip: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumWiaItem,
                celt: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumWiaItem,
                celt: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Reset: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumWiaItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumWiaItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clone: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumWiaItem,
                ppIEnum: ?*?*IEnumWiaItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumWiaItem,
                ppIEnum: ?*?*IEnumWiaItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCount: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumWiaItem,
                celt: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumWiaItem,
                celt: ?*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 IEnumWiaItem_Next(self: *const T, celt: u32, ppIWiaItem: ?*?*IWiaItem, pceltFetched: ?*u32) HRESULT {
                return @as(*const IEnumWiaItem.VTable, @ptrCast(self.vtable)).Next(@as(*const IEnumWiaItem, @ptrCast(self)), celt, ppIWiaItem, pceltFetched);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumWiaItem_Skip(self: *const T, celt: u32) HRESULT {
                return @as(*const IEnumWiaItem.VTable, @ptrCast(self.vtable)).Skip(@as(*const IEnumWiaItem, @ptrCast(self)), celt);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumWiaItem_Reset(self: *const T) HRESULT {
                return @as(*const IEnumWiaItem.VTable, @ptrCast(self.vtable)).Reset(@as(*const IEnumWiaItem, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumWiaItem_Clone(self: *const T, ppIEnum: ?*?*IEnumWiaItem) HRESULT {
                return @as(*const IEnumWiaItem.VTable, @ptrCast(self.vtable)).Clone(@as(*const IEnumWiaItem, @ptrCast(self)), ppIEnum);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumWiaItem_GetCount(self: *const T, celt: ?*u32) HRESULT {
                return @as(*const IEnumWiaItem.VTable, @ptrCast(self.vtable)).GetCount(@as(*const IEnumWiaItem, @ptrCast(self)), celt);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const WIA_DEV_CAP = extern struct {
    guid: Guid,
    ulFlags: u32,
    bstrName: ?BSTR,
    bstrDescription: ?BSTR,
    bstrIcon: ?BSTR,
    bstrCommandline: ?BSTR,
};

// TODO: this type is limited to platform 'windows5.0'
const IID_IEnumWIA_DEV_CAPS_Value = Guid.initString("1fcc4287-aca6-11d2-a093-00c04f72dc3c");
pub const IID_IEnumWIA_DEV_CAPS = &IID_IEnumWIA_DEV_CAPS_Value;
pub const IEnumWIA_DEV_CAPS = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        Next: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumWIA_DEV_CAPS,
                celt: u32,
                rgelt: ?*WIA_DEV_CAP,
                pceltFetched: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumWIA_DEV_CAPS,
                celt: u32,
                rgelt: ?*WIA_DEV_CAP,
                pceltFetched: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Skip: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumWIA_DEV_CAPS,
                celt: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumWIA_DEV_CAPS,
                celt: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Reset: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumWIA_DEV_CAPS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumWIA_DEV_CAPS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clone: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumWIA_DEV_CAPS,
                ppIEnum: ?*?*IEnumWIA_DEV_CAPS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumWIA_DEV_CAPS,
                ppIEnum: ?*?*IEnumWIA_DEV_CAPS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCount: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumWIA_DEV_CAPS,
                pcelt: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumWIA_DEV_CAPS,
                pcelt: ?*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 IEnumWIA_DEV_CAPS_Next(self: *const T, celt: u32, rgelt: ?*WIA_DEV_CAP, pceltFetched: ?*u32) HRESULT {
                return @as(*const IEnumWIA_DEV_CAPS.VTable, @ptrCast(self.vtable)).Next(@as(*const IEnumWIA_DEV_CAPS, @ptrCast(self)), celt, rgelt, pceltFetched);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumWIA_DEV_CAPS_Skip(self: *const T, celt: u32) HRESULT {
                return @as(*const IEnumWIA_DEV_CAPS.VTable, @ptrCast(self.vtable)).Skip(@as(*const IEnumWIA_DEV_CAPS, @ptrCast(self)), celt);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumWIA_DEV_CAPS_Reset(self: *const T) HRESULT {
                return @as(*const IEnumWIA_DEV_CAPS.VTable, @ptrCast(self.vtable)).Reset(@as(*const IEnumWIA_DEV_CAPS, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumWIA_DEV_CAPS_Clone(self: *const T, ppIEnum: ?*?*IEnumWIA_DEV_CAPS) HRESULT {
                return @as(*const IEnumWIA_DEV_CAPS.VTable, @ptrCast(self.vtable)).Clone(@as(*const IEnumWIA_DEV_CAPS, @ptrCast(self)), ppIEnum);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumWIA_DEV_CAPS_GetCount(self: *const T, pcelt: ?*u32) HRESULT {
                return @as(*const IEnumWIA_DEV_CAPS.VTable, @ptrCast(self.vtable)).GetCount(@as(*const IEnumWIA_DEV_CAPS, @ptrCast(self)), pcelt);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.0'
const IID_IEnumWIA_FORMAT_INFO_Value = Guid.initString("81befc5b-656d-44f1-b24c-d41d51b4dc81");
pub const IID_IEnumWIA_FORMAT_INFO = &IID_IEnumWIA_FORMAT_INFO_Value;
pub const IEnumWIA_FORMAT_INFO = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        Next: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumWIA_FORMAT_INFO,
                celt: u32,
                rgelt: ?*WIA_FORMAT_INFO,
                pceltFetched: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumWIA_FORMAT_INFO,
                celt: u32,
                rgelt: ?*WIA_FORMAT_INFO,
                pceltFetched: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Skip: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumWIA_FORMAT_INFO,
                celt: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumWIA_FORMAT_INFO,
                celt: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Reset: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumWIA_FORMAT_INFO,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumWIA_FORMAT_INFO,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clone: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumWIA_FORMAT_INFO,
                ppIEnum: ?*?*IEnumWIA_FORMAT_INFO,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumWIA_FORMAT_INFO,
                ppIEnum: ?*?*IEnumWIA_FORMAT_INFO,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCount: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumWIA_FORMAT_INFO,
                pcelt: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumWIA_FORMAT_INFO,
                pcelt: ?*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 IEnumWIA_FORMAT_INFO_Next(self: *const T, celt: u32, rgelt: ?*WIA_FORMAT_INFO, pceltFetched: ?*u32) HRESULT {
                return @as(*const IEnumWIA_FORMAT_INFO.VTable, @ptrCast(self.vtable)).Next(@as(*const IEnumWIA_FORMAT_INFO, @ptrCast(self)), celt, rgelt, pceltFetched);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumWIA_FORMAT_INFO_Skip(self: *const T, celt: u32) HRESULT {
                return @as(*const IEnumWIA_FORMAT_INFO.VTable, @ptrCast(self.vtable)).Skip(@as(*const IEnumWIA_FORMAT_INFO, @ptrCast(self)), celt);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumWIA_FORMAT_INFO_Reset(self: *const T) HRESULT {
                return @as(*const IEnumWIA_FORMAT_INFO.VTable, @ptrCast(self.vtable)).Reset(@as(*const IEnumWIA_FORMAT_INFO, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumWIA_FORMAT_INFO_Clone(self: *const T, ppIEnum: ?*?*IEnumWIA_FORMAT_INFO) HRESULT {
                return @as(*const IEnumWIA_FORMAT_INFO.VTable, @ptrCast(self.vtable)).Clone(@as(*const IEnumWIA_FORMAT_INFO, @ptrCast(self)), ppIEnum);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumWIA_FORMAT_INFO_GetCount(self: *const T, pcelt: ?*u32) HRESULT {
                return @as(*const IEnumWIA_FORMAT_INFO.VTable, @ptrCast(self.vtable)).GetCount(@as(*const IEnumWIA_FORMAT_INFO, @ptrCast(self)), pcelt);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.0'
const IID_IWiaLog_Value = Guid.initString("a00c10b6-82a1-452f-8b6c-86062aad6890");
pub const IID_IWiaLog = &IID_IWiaLog_Value;
pub const IWiaLog = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        InitializeLog: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaLog,
                hInstance: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaLog,
                hInstance: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        hResult: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaLog,
                hResult: HRESULT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaLog,
                hResult: HRESULT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Log: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaLog,
                lFlags: i32,
                lResID: i32,
                lDetail: i32,
                bstrText: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaLog,
                lFlags: i32,
                lResID: i32,
                lDetail: i32,
                bstrText: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaLog_InitializeLog(self: *const T, hInstance: i32) HRESULT {
                return @as(*const IWiaLog.VTable, @ptrCast(self.vtable)).InitializeLog(@as(*const IWiaLog, @ptrCast(self)), hInstance);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaLog_hResult(self: *const T, hResult: HRESULT) HRESULT {
                return @as(*const IWiaLog.VTable, @ptrCast(self.vtable)).hResult(@as(*const IWiaLog, @ptrCast(self)), hResult);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaLog_Log(self: *const T, lFlags: i32, lResID: i32, lDetail: i32, bstrText: ?BSTR) HRESULT {
                return @as(*const IWiaLog.VTable, @ptrCast(self.vtable)).Log(@as(*const IWiaLog, @ptrCast(self)), lFlags, lResID, lDetail, bstrText);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.0'
const IID_IWiaLogEx_Value = Guid.initString("af1f22ac-7a40-4787-b421-aeb47a1fbd0b");
pub const IID_IWiaLogEx = &IID_IWiaLogEx_Value;
pub const IWiaLogEx = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        InitializeLogEx: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaLogEx,
                hInstance: ?*u8,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaLogEx,
                hInstance: ?*u8,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        hResult: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaLogEx,
                hResult: HRESULT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaLogEx,
                hResult: HRESULT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Log: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaLogEx,
                lFlags: i32,
                lResID: i32,
                lDetail: i32,
                bstrText: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaLogEx,
                lFlags: i32,
                lResID: i32,
                lDetail: i32,
                bstrText: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        hResultEx: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaLogEx,
                lMethodId: i32,
                hResult: HRESULT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaLogEx,
                lMethodId: i32,
                hResult: HRESULT,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        LogEx: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaLogEx,
                lMethodId: i32,
                lFlags: i32,
                lResID: i32,
                lDetail: i32,
                bstrText: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaLogEx,
                lMethodId: i32,
                lFlags: i32,
                lResID: i32,
                lDetail: i32,
                bstrText: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaLogEx_InitializeLogEx(self: *const T, hInstance: ?*u8) HRESULT {
                return @as(*const IWiaLogEx.VTable, @ptrCast(self.vtable)).InitializeLogEx(@as(*const IWiaLogEx, @ptrCast(self)), hInstance);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaLogEx_hResult(self: *const T, hResult: HRESULT) HRESULT {
                return @as(*const IWiaLogEx.VTable, @ptrCast(self.vtable)).hResult(@as(*const IWiaLogEx, @ptrCast(self)), hResult);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaLogEx_Log(self: *const T, lFlags: i32, lResID: i32, lDetail: i32, bstrText: ?BSTR) HRESULT {
                return @as(*const IWiaLogEx.VTable, @ptrCast(self.vtable)).Log(@as(*const IWiaLogEx, @ptrCast(self)), lFlags, lResID, lDetail, bstrText);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaLogEx_hResultEx(self: *const T, lMethodId: i32, hResult: HRESULT) HRESULT {
                return @as(*const IWiaLogEx.VTable, @ptrCast(self.vtable)).hResultEx(@as(*const IWiaLogEx, @ptrCast(self)), lMethodId, hResult);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaLogEx_LogEx(self: *const T, lMethodId: i32, lFlags: i32, lResID: i32, lDetail: i32, bstrText: ?BSTR) HRESULT {
                return @as(*const IWiaLogEx.VTable, @ptrCast(self.vtable)).LogEx(@as(*const IWiaLogEx, @ptrCast(self)), lMethodId, lFlags, lResID, lDetail, bstrText);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.0'
const IID_IWiaNotifyDevMgr_Value = Guid.initString("70681ea0-e7bf-4291-9fb1-4e8813a3f78e");
pub const IID_IWiaNotifyDevMgr = &IID_IWiaNotifyDevMgr_Value;
pub const IWiaNotifyDevMgr = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        NewDeviceArrival: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaNotifyDevMgr,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaNotifyDevMgr,
            ) 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 IWiaNotifyDevMgr_NewDeviceArrival(self: *const T) HRESULT {
                return @as(*const IWiaNotifyDevMgr.VTable, @ptrCast(self.vtable)).NewDeviceArrival(@as(*const IWiaNotifyDevMgr, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

// TODO: this type is limited to platform 'windows5.0'
const IID_IWiaItemExtras_Value = Guid.initString("6291ef2c-36ef-4532-876a-8e132593778d");
pub const IID_IWiaItemExtras = &IID_IWiaItemExtras_Value;
pub const IWiaItemExtras = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        GetExtendedErrorInfo: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItemExtras,
                bstrErrorText: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItemExtras,
                bstrErrorText: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Escape: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItemExtras,
                dwEscapeCode: u32,
                lpInData: [*:0]u8,
                cbInDataSize: u32,
                pOutData: ?*u8,
                dwOutDataSize: u32,
                pdwActualDataSize: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItemExtras,
                dwEscapeCode: u32,
                lpInData: [*:0]u8,
                cbInDataSize: u32,
                pOutData: ?*u8,
                dwOutDataSize: u32,
                pdwActualDataSize: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CancelPendingIO: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItemExtras,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItemExtras,
            ) 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 IWiaItemExtras_GetExtendedErrorInfo(self: *const T, bstrErrorText: ?*?BSTR) HRESULT {
                return @as(*const IWiaItemExtras.VTable, @ptrCast(self.vtable)).GetExtendedErrorInfo(@as(*const IWiaItemExtras, @ptrCast(self)), bstrErrorText);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItemExtras_Escape(self: *const T, dwEscapeCode: u32, lpInData: [*:0]u8, cbInDataSize: u32, pOutData: ?*u8, dwOutDataSize: u32, pdwActualDataSize: ?*u32) HRESULT {
                return @as(*const IWiaItemExtras.VTable, @ptrCast(self.vtable)).Escape(@as(*const IWiaItemExtras, @ptrCast(self)), dwEscapeCode, lpInData, cbInDataSize, pOutData, dwOutDataSize, pdwActualDataSize);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItemExtras_CancelPendingIO(self: *const T) HRESULT {
                return @as(*const IWiaItemExtras.VTable, @ptrCast(self.vtable)).CancelPendingIO(@as(*const IWiaItemExtras, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_IWiaAppErrorHandler_Value = Guid.initString("6c16186c-d0a6-400c-80f4-d26986a0e734");
pub const IID_IWiaAppErrorHandler = &IID_IWiaAppErrorHandler_Value;
pub const IWiaAppErrorHandler = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        GetWindow: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaAppErrorHandler,
                phwnd: ?*?HWND,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaAppErrorHandler,
                phwnd: ?*?HWND,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ReportStatus: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaAppErrorHandler,
                lFlags: i32,
                pWiaItem2: ?*IWiaItem2,
                hrStatus: HRESULT,
                lPercentComplete: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaAppErrorHandler,
                lFlags: i32,
                pWiaItem2: ?*IWiaItem2,
                hrStatus: HRESULT,
                lPercentComplete: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaAppErrorHandler_GetWindow(self: *const T, phwnd: ?*?HWND) HRESULT {
                return @as(*const IWiaAppErrorHandler.VTable, @ptrCast(self.vtable)).GetWindow(@as(*const IWiaAppErrorHandler, @ptrCast(self)), phwnd);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaAppErrorHandler_ReportStatus(self: *const T, lFlags: i32, pWiaItem2: ?*IWiaItem2, hrStatus: HRESULT, lPercentComplete: i32) HRESULT {
                return @as(*const IWiaAppErrorHandler.VTable, @ptrCast(self.vtable)).ReportStatus(@as(*const IWiaAppErrorHandler, @ptrCast(self)), lFlags, pWiaItem2, hrStatus, lPercentComplete);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_IWiaErrorHandler_Value = Guid.initString("0e4a51b1-bc1f-443d-a835-72e890759ef3");
pub const IID_IWiaErrorHandler = &IID_IWiaErrorHandler_Value;
pub const IWiaErrorHandler = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        ReportStatus: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaErrorHandler,
                lFlags: i32,
                hwndParent: ?HWND,
                pWiaItem2: ?*IWiaItem2,
                hrStatus: HRESULT,
                lPercentComplete: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaErrorHandler,
                lFlags: i32,
                hwndParent: ?HWND,
                pWiaItem2: ?*IWiaItem2,
                hrStatus: HRESULT,
                lPercentComplete: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetStatusDescription: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaErrorHandler,
                lFlags: i32,
                pWiaItem2: ?*IWiaItem2,
                hrStatus: HRESULT,
                pbstrDescription: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaErrorHandler,
                lFlags: i32,
                pWiaItem2: ?*IWiaItem2,
                hrStatus: HRESULT,
                pbstrDescription: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaErrorHandler_ReportStatus(self: *const T, lFlags: i32, hwndParent: ?HWND, pWiaItem2: ?*IWiaItem2, hrStatus: HRESULT, lPercentComplete: i32) HRESULT {
                return @as(*const IWiaErrorHandler.VTable, @ptrCast(self.vtable)).ReportStatus(@as(*const IWiaErrorHandler, @ptrCast(self)), lFlags, hwndParent, pWiaItem2, hrStatus, lPercentComplete);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaErrorHandler_GetStatusDescription(self: *const T, lFlags: i32, pWiaItem2: ?*IWiaItem2, hrStatus: HRESULT, pbstrDescription: ?*?BSTR) HRESULT {
                return @as(*const IWiaErrorHandler.VTable, @ptrCast(self.vtable)).GetStatusDescription(@as(*const IWiaErrorHandler, @ptrCast(self)), lFlags, pWiaItem2, hrStatus, pbstrDescription);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_IWiaTransfer_Value = Guid.initString("c39d6942-2f4e-4d04-92fe-4ef4d3a1de5a");
pub const IID_IWiaTransfer = &IID_IWiaTransfer_Value;
pub const IWiaTransfer = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        Download: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaTransfer,
                lFlags: i32,
                pIWiaTransferCallback: ?*IWiaTransferCallback,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaTransfer,
                lFlags: i32,
                pIWiaTransferCallback: ?*IWiaTransferCallback,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Upload: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaTransfer,
                lFlags: i32,
                pSource: ?*IStream,
                pIWiaTransferCallback: ?*IWiaTransferCallback,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaTransfer,
                lFlags: i32,
                pSource: ?*IStream,
                pIWiaTransferCallback: ?*IWiaTransferCallback,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Cancel: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaTransfer,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaTransfer,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EnumWIA_FORMAT_INFO: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaTransfer,
                ppEnum: ?*?*IEnumWIA_FORMAT_INFO,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaTransfer,
                ppEnum: ?*?*IEnumWIA_FORMAT_INFO,
            ) 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 IWiaTransfer_Download(self: *const T, lFlags: i32, pIWiaTransferCallback: ?*IWiaTransferCallback) HRESULT {
                return @as(*const IWiaTransfer.VTable, @ptrCast(self.vtable)).Download(@as(*const IWiaTransfer, @ptrCast(self)), lFlags, pIWiaTransferCallback);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaTransfer_Upload(self: *const T, lFlags: i32, pSource: ?*IStream, pIWiaTransferCallback: ?*IWiaTransferCallback) HRESULT {
                return @as(*const IWiaTransfer.VTable, @ptrCast(self.vtable)).Upload(@as(*const IWiaTransfer, @ptrCast(self)), lFlags, pSource, pIWiaTransferCallback);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaTransfer_Cancel(self: *const T) HRESULT {
                return @as(*const IWiaTransfer.VTable, @ptrCast(self.vtable)).Cancel(@as(*const IWiaTransfer, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaTransfer_EnumWIA_FORMAT_INFO(self: *const T, ppEnum: ?*?*IEnumWIA_FORMAT_INFO) HRESULT {
                return @as(*const IWiaTransfer.VTable, @ptrCast(self.vtable)).EnumWIA_FORMAT_INFO(@as(*const IWiaTransfer, @ptrCast(self)), ppEnum);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const WiaTransferParams = extern struct {
    lMessage: i32,
    lPercentComplete: i32,
    ulTransferredBytes: u64,
    hrErrorStatus: HRESULT,
};

const IID_IWiaTransferCallback_Value = Guid.initString("27d4eaaf-28a6-4ca5-9aab-e678168b9527");
pub const IID_IWiaTransferCallback = &IID_IWiaTransferCallback_Value;
pub const IWiaTransferCallback = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        TransferCallback: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaTransferCallback,
                lFlags: i32,
                pWiaTransferParams: ?*WiaTransferParams,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaTransferCallback,
                lFlags: i32,
                pWiaTransferParams: ?*WiaTransferParams,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetNextStream: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaTransferCallback,
                lFlags: i32,
                bstrItemName: ?BSTR,
                bstrFullItemName: ?BSTR,
                ppDestination: ?*?*IStream,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaTransferCallback,
                lFlags: i32,
                bstrItemName: ?BSTR,
                bstrFullItemName: ?BSTR,
                ppDestination: ?*?*IStream,
            ) 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 IWiaTransferCallback_TransferCallback(self: *const T, lFlags: i32, pWiaTransferParams: ?*WiaTransferParams) HRESULT {
                return @as(*const IWiaTransferCallback.VTable, @ptrCast(self.vtable)).TransferCallback(@as(*const IWiaTransferCallback, @ptrCast(self)), lFlags, pWiaTransferParams);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaTransferCallback_GetNextStream(self: *const T, lFlags: i32, bstrItemName: ?BSTR, bstrFullItemName: ?BSTR, ppDestination: ?*?*IStream) HRESULT {
                return @as(*const IWiaTransferCallback.VTable, @ptrCast(self.vtable)).GetNextStream(@as(*const IWiaTransferCallback, @ptrCast(self)), lFlags, bstrItemName, bstrFullItemName, ppDestination);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_IWiaSegmentationFilter_Value = Guid.initString("ec46a697-ac04-4447-8f65-ff63d5154b21");
pub const IID_IWiaSegmentationFilter = &IID_IWiaSegmentationFilter_Value;
pub const IWiaSegmentationFilter = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        DetectRegions: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaSegmentationFilter,
                lFlags: i32,
                pInputStream: ?*IStream,
                pWiaItem2: ?*IWiaItem2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaSegmentationFilter,
                lFlags: i32,
                pInputStream: ?*IStream,
                pWiaItem2: ?*IWiaItem2,
            ) 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 IWiaSegmentationFilter_DetectRegions(self: *const T, lFlags: i32, pInputStream: ?*IStream, pWiaItem2: ?*IWiaItem2) HRESULT {
                return @as(*const IWiaSegmentationFilter.VTable, @ptrCast(self.vtable)).DetectRegions(@as(*const IWiaSegmentationFilter, @ptrCast(self)), lFlags, pInputStream, pWiaItem2);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_IWiaImageFilter_Value = Guid.initString("a8a79ffa-450b-41f1-8f87-849ccd94ebf6");
pub const IID_IWiaImageFilter = &IID_IWiaImageFilter_Value;
pub const IWiaImageFilter = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        InitializeFilter: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaImageFilter,
                pWiaItem2: ?*IWiaItem2,
                pWiaTransferCallback: ?*IWiaTransferCallback,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaImageFilter,
                pWiaItem2: ?*IWiaItem2,
                pWiaTransferCallback: ?*IWiaTransferCallback,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetNewCallback: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaImageFilter,
                pWiaTransferCallback: ?*IWiaTransferCallback,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaImageFilter,
                pWiaTransferCallback: ?*IWiaTransferCallback,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        FilterPreviewImage: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaImageFilter,
                lFlags: i32,
                pWiaChildItem2: ?*IWiaItem2,
                InputImageExtents: RECT,
                pInputStream: ?*IStream,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaImageFilter,
                lFlags: i32,
                pWiaChildItem2: ?*IWiaItem2,
                InputImageExtents: RECT,
                pInputStream: ?*IStream,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ApplyProperties: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaImageFilter,
                pWiaPropertyStorage: ?*IWiaPropertyStorage,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaImageFilter,
                pWiaPropertyStorage: ?*IWiaPropertyStorage,
            ) 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 IWiaImageFilter_InitializeFilter(self: *const T, pWiaItem2: ?*IWiaItem2, pWiaTransferCallback: ?*IWiaTransferCallback) HRESULT {
                return @as(*const IWiaImageFilter.VTable, @ptrCast(self.vtable)).InitializeFilter(@as(*const IWiaImageFilter, @ptrCast(self)), pWiaItem2, pWiaTransferCallback);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaImageFilter_SetNewCallback(self: *const T, pWiaTransferCallback: ?*IWiaTransferCallback) HRESULT {
                return @as(*const IWiaImageFilter.VTable, @ptrCast(self.vtable)).SetNewCallback(@as(*const IWiaImageFilter, @ptrCast(self)), pWiaTransferCallback);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaImageFilter_FilterPreviewImage(self: *const T, lFlags: i32, pWiaChildItem2: ?*IWiaItem2, InputImageExtents: RECT, pInputStream: ?*IStream) HRESULT {
                return @as(*const IWiaImageFilter.VTable, @ptrCast(self.vtable)).FilterPreviewImage(@as(*const IWiaImageFilter, @ptrCast(self)), lFlags, pWiaChildItem2, InputImageExtents, pInputStream);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaImageFilter_ApplyProperties(self: *const T, pWiaPropertyStorage: ?*IWiaPropertyStorage) HRESULT {
                return @as(*const IWiaImageFilter.VTable, @ptrCast(self.vtable)).ApplyProperties(@as(*const IWiaImageFilter, @ptrCast(self)), pWiaPropertyStorage);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_IWiaPreview_Value = Guid.initString("95c2b4fd-33f2-4d86-ad40-9431f0df08f7");
pub const IID_IWiaPreview = &IID_IWiaPreview_Value;
pub const IWiaPreview = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        GetNewPreview: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaPreview,
                lFlags: i32,
                pWiaItem2: ?*IWiaItem2,
                pWiaTransferCallback: ?*IWiaTransferCallback,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaPreview,
                lFlags: i32,
                pWiaItem2: ?*IWiaItem2,
                pWiaTransferCallback: ?*IWiaTransferCallback,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        UpdatePreview: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaPreview,
                lFlags: i32,
                pChildWiaItem2: ?*IWiaItem2,
                pWiaTransferCallback: ?*IWiaTransferCallback,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaPreview,
                lFlags: i32,
                pChildWiaItem2: ?*IWiaItem2,
                pWiaTransferCallback: ?*IWiaTransferCallback,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DetectRegions: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaPreview,
                lFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaPreview,
                lFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clear: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaPreview,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaPreview,
            ) 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 IWiaPreview_GetNewPreview(self: *const T, lFlags: i32, pWiaItem2: ?*IWiaItem2, pWiaTransferCallback: ?*IWiaTransferCallback) HRESULT {
                return @as(*const IWiaPreview.VTable, @ptrCast(self.vtable)).GetNewPreview(@as(*const IWiaPreview, @ptrCast(self)), lFlags, pWiaItem2, pWiaTransferCallback);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaPreview_UpdatePreview(self: *const T, lFlags: i32, pChildWiaItem2: ?*IWiaItem2, pWiaTransferCallback: ?*IWiaTransferCallback) HRESULT {
                return @as(*const IWiaPreview.VTable, @ptrCast(self.vtable)).UpdatePreview(@as(*const IWiaPreview, @ptrCast(self)), lFlags, pChildWiaItem2, pWiaTransferCallback);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaPreview_DetectRegions(self: *const T, lFlags: i32) HRESULT {
                return @as(*const IWiaPreview.VTable, @ptrCast(self.vtable)).DetectRegions(@as(*const IWiaPreview, @ptrCast(self)), lFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaPreview_Clear(self: *const T) HRESULT {
                return @as(*const IWiaPreview.VTable, @ptrCast(self.vtable)).Clear(@as(*const IWiaPreview, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_IEnumWiaItem2_Value = Guid.initString("59970af4-cd0d-44d9-ab24-52295630e582");
pub const IID_IEnumWiaItem2 = &IID_IEnumWiaItem2_Value;
pub const IEnumWiaItem2 = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        Next: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumWiaItem2,
                cElt: u32,
                ppIWiaItem2: ?*?*IWiaItem2,
                pcEltFetched: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumWiaItem2,
                cElt: u32,
                ppIWiaItem2: ?*?*IWiaItem2,
                pcEltFetched: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Skip: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumWiaItem2,
                cElt: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumWiaItem2,
                cElt: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Reset: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumWiaItem2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumWiaItem2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Clone: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumWiaItem2,
                ppIEnum: ?*?*IEnumWiaItem2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumWiaItem2,
                ppIEnum: ?*?*IEnumWiaItem2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCount: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IEnumWiaItem2,
                cElt: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IEnumWiaItem2,
                cElt: ?*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 IEnumWiaItem2_Next(self: *const T, cElt: u32, ppIWiaItem2: ?*?*IWiaItem2, pcEltFetched: ?*u32) HRESULT {
                return @as(*const IEnumWiaItem2.VTable, @ptrCast(self.vtable)).Next(@as(*const IEnumWiaItem2, @ptrCast(self)), cElt, ppIWiaItem2, pcEltFetched);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumWiaItem2_Skip(self: *const T, cElt: u32) HRESULT {
                return @as(*const IEnumWiaItem2.VTable, @ptrCast(self.vtable)).Skip(@as(*const IEnumWiaItem2, @ptrCast(self)), cElt);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumWiaItem2_Reset(self: *const T) HRESULT {
                return @as(*const IEnumWiaItem2.VTable, @ptrCast(self.vtable)).Reset(@as(*const IEnumWiaItem2, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumWiaItem2_Clone(self: *const T, ppIEnum: ?*?*IEnumWiaItem2) HRESULT {
                return @as(*const IEnumWiaItem2.VTable, @ptrCast(self.vtable)).Clone(@as(*const IEnumWiaItem2, @ptrCast(self)), ppIEnum);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IEnumWiaItem2_GetCount(self: *const T, cElt: ?*u32) HRESULT {
                return @as(*const IEnumWiaItem2.VTable, @ptrCast(self.vtable)).GetCount(@as(*const IEnumWiaItem2, @ptrCast(self)), cElt);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_IWiaItem2_Value = Guid.initString("6cba0075-1287-407d-9b77-cf0e030435cc");
pub const IID_IWiaItem2 = &IID_IWiaItem2_Value;
pub const IWiaItem2 = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        CreateChildItem: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem2,
                lItemFlags: i32,
                lCreationFlags: i32,
                bstrItemName: ?BSTR,
                ppIWiaItem2: ?*?*IWiaItem2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem2,
                lItemFlags: i32,
                lCreationFlags: i32,
                bstrItemName: ?BSTR,
                ppIWiaItem2: ?*?*IWiaItem2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DeleteItem: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem2,
                lFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem2,
                lFlags: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EnumChildItems: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem2,
                pCategoryGUID: ?*const Guid,
                ppIEnumWiaItem2: ?*?*IEnumWiaItem2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem2,
                pCategoryGUID: ?*const Guid,
                ppIEnumWiaItem2: ?*?*IEnumWiaItem2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        FindItemByName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem2,
                lFlags: i32,
                bstrFullItemName: ?BSTR,
                ppIWiaItem2: ?*?*IWiaItem2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem2,
                lFlags: i32,
                bstrFullItemName: ?BSTR,
                ppIWiaItem2: ?*?*IWiaItem2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetItemCategory: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem2,
                pItemCategoryGUID: ?*Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem2,
                pItemCategoryGUID: ?*Guid,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetItemType: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem2,
                pItemType: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem2,
                pItemType: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DeviceDlg: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem2,
                lFlags: i32,
                hwndParent: ?HWND,
                bstrFolderName: ?BSTR,
                bstrFilename: ?BSTR,
                plNumFiles: ?*i32,
                ppbstrFilePaths: ?*?*?BSTR,
                ppItem: ?*?*IWiaItem2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem2,
                lFlags: i32,
                hwndParent: ?HWND,
                bstrFolderName: ?BSTR,
                bstrFilename: ?BSTR,
                plNumFiles: ?*i32,
                ppbstrFilePaths: ?*?*?BSTR,
                ppItem: ?*?*IWiaItem2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DeviceCommand: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem2,
                lFlags: i32,
                pCmdGUID: ?*const Guid,
                ppIWiaItem2: ?*?*IWiaItem2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem2,
                lFlags: i32,
                pCmdGUID: ?*const Guid,
                ppIWiaItem2: ?*?*IWiaItem2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EnumDeviceCapabilities: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem2,
                lFlags: i32,
                ppIEnumWIA_DEV_CAPS: ?*?*IEnumWIA_DEV_CAPS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem2,
                lFlags: i32,
                ppIEnumWIA_DEV_CAPS: ?*?*IEnumWIA_DEV_CAPS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CheckExtension: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem2,
                lFlags: i32,
                bstrName: ?BSTR,
                riidExtensionInterface: ?*const Guid,
                pbExtensionExists: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem2,
                lFlags: i32,
                bstrName: ?BSTR,
                riidExtensionInterface: ?*const Guid,
                pbExtensionExists: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetExtension: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem2,
                lFlags: i32,
                bstrName: ?BSTR,
                riidExtensionInterface: ?*const Guid,
                ppOut: ?*?*anyopaque,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem2,
                lFlags: i32,
                bstrName: ?BSTR,
                riidExtensionInterface: ?*const Guid,
                ppOut: ?*?*anyopaque,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetParentItem: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem2,
                ppIWiaItem2: ?*?*IWiaItem2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem2,
                ppIWiaItem2: ?*?*IWiaItem2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetRootItem: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem2,
                ppIWiaItem2: ?*?*IWiaItem2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem2,
                ppIWiaItem2: ?*?*IWiaItem2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetPreviewComponent: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem2,
                lFlags: i32,
                ppWiaPreview: ?*?*IWiaPreview,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem2,
                lFlags: i32,
                ppWiaPreview: ?*?*IWiaPreview,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        EnumRegisterEventInfo: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem2,
                lFlags: i32,
                pEventGUID: ?*const Guid,
                ppIEnum: ?*?*IEnumWIA_DEV_CAPS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem2,
                lFlags: i32,
                pEventGUID: ?*const Guid,
                ppIEnum: ?*?*IEnumWIA_DEV_CAPS,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Diagnostic: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaItem2,
                ulSize: u32,
                pBuffer: [*:0]u8,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaItem2,
                ulSize: u32,
                pBuffer: [*:0]u8,
            ) 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 IWiaItem2_CreateChildItem(self: *const T, lItemFlags: i32, lCreationFlags: i32, bstrItemName: ?BSTR, ppIWiaItem2: ?*?*IWiaItem2) HRESULT {
                return @as(*const IWiaItem2.VTable, @ptrCast(self.vtable)).CreateChildItem(@as(*const IWiaItem2, @ptrCast(self)), lItemFlags, lCreationFlags, bstrItemName, ppIWiaItem2);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem2_DeleteItem(self: *const T, lFlags: i32) HRESULT {
                return @as(*const IWiaItem2.VTable, @ptrCast(self.vtable)).DeleteItem(@as(*const IWiaItem2, @ptrCast(self)), lFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem2_EnumChildItems(self: *const T, pCategoryGUID: ?*const Guid, ppIEnumWiaItem2: ?*?*IEnumWiaItem2) HRESULT {
                return @as(*const IWiaItem2.VTable, @ptrCast(self.vtable)).EnumChildItems(@as(*const IWiaItem2, @ptrCast(self)), pCategoryGUID, ppIEnumWiaItem2);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem2_FindItemByName(self: *const T, lFlags: i32, bstrFullItemName: ?BSTR, ppIWiaItem2: ?*?*IWiaItem2) HRESULT {
                return @as(*const IWiaItem2.VTable, @ptrCast(self.vtable)).FindItemByName(@as(*const IWiaItem2, @ptrCast(self)), lFlags, bstrFullItemName, ppIWiaItem2);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem2_GetItemCategory(self: *const T, pItemCategoryGUID: ?*Guid) HRESULT {
                return @as(*const IWiaItem2.VTable, @ptrCast(self.vtable)).GetItemCategory(@as(*const IWiaItem2, @ptrCast(self)), pItemCategoryGUID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem2_GetItemType(self: *const T, pItemType: ?*i32) HRESULT {
                return @as(*const IWiaItem2.VTable, @ptrCast(self.vtable)).GetItemType(@as(*const IWiaItem2, @ptrCast(self)), pItemType);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem2_DeviceDlg(self: *const T, lFlags: i32, hwndParent: ?HWND, bstrFolderName: ?BSTR, bstrFilename: ?BSTR, plNumFiles: ?*i32, ppbstrFilePaths: ?*?*?BSTR, ppItem: ?*?*IWiaItem2) HRESULT {
                return @as(*const IWiaItem2.VTable, @ptrCast(self.vtable)).DeviceDlg(@as(*const IWiaItem2, @ptrCast(self)), lFlags, hwndParent, bstrFolderName, bstrFilename, plNumFiles, ppbstrFilePaths, ppItem);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem2_DeviceCommand(self: *const T, lFlags: i32, pCmdGUID: ?*const Guid, ppIWiaItem2: ?*?*IWiaItem2) HRESULT {
                return @as(*const IWiaItem2.VTable, @ptrCast(self.vtable)).DeviceCommand(@as(*const IWiaItem2, @ptrCast(self)), lFlags, pCmdGUID, ppIWiaItem2);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem2_EnumDeviceCapabilities(self: *const T, lFlags: i32, ppIEnumWIA_DEV_CAPS: ?*?*IEnumWIA_DEV_CAPS) HRESULT {
                return @as(*const IWiaItem2.VTable, @ptrCast(self.vtable)).EnumDeviceCapabilities(@as(*const IWiaItem2, @ptrCast(self)), lFlags, ppIEnumWIA_DEV_CAPS);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem2_CheckExtension(self: *const T, lFlags: i32, bstrName: ?BSTR, riidExtensionInterface: ?*const Guid, pbExtensionExists: ?*BOOL) HRESULT {
                return @as(*const IWiaItem2.VTable, @ptrCast(self.vtable)).CheckExtension(@as(*const IWiaItem2, @ptrCast(self)), lFlags, bstrName, riidExtensionInterface, pbExtensionExists);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem2_GetExtension(self: *const T, lFlags: i32, bstrName: ?BSTR, riidExtensionInterface: ?*const Guid, ppOut: ?*?*anyopaque) HRESULT {
                return @as(*const IWiaItem2.VTable, @ptrCast(self.vtable)).GetExtension(@as(*const IWiaItem2, @ptrCast(self)), lFlags, bstrName, riidExtensionInterface, ppOut);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem2_GetParentItem(self: *const T, ppIWiaItem2: ?*?*IWiaItem2) HRESULT {
                return @as(*const IWiaItem2.VTable, @ptrCast(self.vtable)).GetParentItem(@as(*const IWiaItem2, @ptrCast(self)), ppIWiaItem2);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem2_GetRootItem(self: *const T, ppIWiaItem2: ?*?*IWiaItem2) HRESULT {
                return @as(*const IWiaItem2.VTable, @ptrCast(self.vtable)).GetRootItem(@as(*const IWiaItem2, @ptrCast(self)), ppIWiaItem2);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem2_GetPreviewComponent(self: *const T, lFlags: i32, ppWiaPreview: ?*?*IWiaPreview) HRESULT {
                return @as(*const IWiaItem2.VTable, @ptrCast(self.vtable)).GetPreviewComponent(@as(*const IWiaItem2, @ptrCast(self)), lFlags, ppWiaPreview);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem2_EnumRegisterEventInfo(self: *const T, lFlags: i32, pEventGUID: ?*const Guid, ppIEnum: ?*?*IEnumWIA_DEV_CAPS) HRESULT {
                return @as(*const IWiaItem2.VTable, @ptrCast(self.vtable)).EnumRegisterEventInfo(@as(*const IWiaItem2, @ptrCast(self)), lFlags, pEventGUID, ppIEnum);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaItem2_Diagnostic(self: *const T, ulSize: u32, pBuffer: [*:0]u8) HRESULT {
                return @as(*const IWiaItem2.VTable, @ptrCast(self.vtable)).Diagnostic(@as(*const IWiaItem2, @ptrCast(self)), ulSize, pBuffer);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_IWiaDevMgr2_Value = Guid.initString("79c07cf1-cbdd-41ee-8ec3-f00080cada7a");
pub const IID_IWiaDevMgr2 = &IID_IWiaDevMgr2_Value;
pub const IWiaDevMgr2 = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        EnumDeviceInfo: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDevMgr2,
                lFlags: i32,
                ppIEnum: ?*?*IEnumWIA_DEV_INFO,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDevMgr2,
                lFlags: i32,
                ppIEnum: ?*?*IEnumWIA_DEV_INFO,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CreateDevice: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDevMgr2,
                lFlags: i32,
                bstrDeviceID: ?BSTR,
                ppWiaItem2Root: ?*?*IWiaItem2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDevMgr2,
                lFlags: i32,
                bstrDeviceID: ?BSTR,
                ppWiaItem2Root: ?*?*IWiaItem2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SelectDeviceDlg: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDevMgr2,
                hwndParent: ?HWND,
                lDeviceType: i32,
                lFlags: i32,
                pbstrDeviceID: ?*?BSTR,
                ppItemRoot: ?*?*IWiaItem2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDevMgr2,
                hwndParent: ?HWND,
                lDeviceType: i32,
                lFlags: i32,
                pbstrDeviceID: ?*?BSTR,
                ppItemRoot: ?*?*IWiaItem2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SelectDeviceDlgID: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDevMgr2,
                hwndParent: ?HWND,
                lDeviceType: i32,
                lFlags: i32,
                pbstrDeviceID: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDevMgr2,
                hwndParent: ?HWND,
                lDeviceType: i32,
                lFlags: i32,
                pbstrDeviceID: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RegisterEventCallbackInterface: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDevMgr2,
                lFlags: i32,
                bstrDeviceID: ?BSTR,
                pEventGUID: ?*const Guid,
                pIWiaEventCallback: ?*IWiaEventCallback,
                pEventObject: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDevMgr2,
                lFlags: i32,
                bstrDeviceID: ?BSTR,
                pEventGUID: ?*const Guid,
                pIWiaEventCallback: ?*IWiaEventCallback,
                pEventObject: ?*?*IUnknown,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RegisterEventCallbackProgram: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDevMgr2,
                lFlags: i32,
                bstrDeviceID: ?BSTR,
                pEventGUID: ?*const Guid,
                bstrFullAppName: ?BSTR,
                bstrCommandLineArg: ?BSTR,
                bstrName: ?BSTR,
                bstrDescription: ?BSTR,
                bstrIcon: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDevMgr2,
                lFlags: i32,
                bstrDeviceID: ?BSTR,
                pEventGUID: ?*const Guid,
                bstrFullAppName: ?BSTR,
                bstrCommandLineArg: ?BSTR,
                bstrName: ?BSTR,
                bstrDescription: ?BSTR,
                bstrIcon: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RegisterEventCallbackCLSID: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDevMgr2,
                lFlags: i32,
                bstrDeviceID: ?BSTR,
                pEventGUID: ?*const Guid,
                pClsID: ?*const Guid,
                bstrName: ?BSTR,
                bstrDescription: ?BSTR,
                bstrIcon: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDevMgr2,
                lFlags: i32,
                bstrDeviceID: ?BSTR,
                pEventGUID: ?*const Guid,
                pClsID: ?*const Guid,
                bstrName: ?BSTR,
                bstrDescription: ?BSTR,
                bstrIcon: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetImageDlg: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDevMgr2,
                lFlags: i32,
                bstrDeviceID: ?BSTR,
                hwndParent: ?HWND,
                bstrFolderName: ?BSTR,
                bstrFilename: ?BSTR,
                plNumFiles: ?*i32,
                ppbstrFilePaths: ?*?*?BSTR,
                ppItem: ?*?*IWiaItem2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDevMgr2,
                lFlags: i32,
                bstrDeviceID: ?BSTR,
                hwndParent: ?HWND,
                bstrFolderName: ?BSTR,
                bstrFilename: ?BSTR,
                plNumFiles: ?*i32,
                ppbstrFilePaths: ?*?*?BSTR,
                ppItem: ?*?*IWiaItem2,
            ) 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 IWiaDevMgr2_EnumDeviceInfo(self: *const T, lFlags: i32, ppIEnum: ?*?*IEnumWIA_DEV_INFO) HRESULT {
                return @as(*const IWiaDevMgr2.VTable, @ptrCast(self.vtable)).EnumDeviceInfo(@as(*const IWiaDevMgr2, @ptrCast(self)), lFlags, ppIEnum);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDevMgr2_CreateDevice(self: *const T, lFlags: i32, bstrDeviceID: ?BSTR, ppWiaItem2Root: ?*?*IWiaItem2) HRESULT {
                return @as(*const IWiaDevMgr2.VTable, @ptrCast(self.vtable)).CreateDevice(@as(*const IWiaDevMgr2, @ptrCast(self)), lFlags, bstrDeviceID, ppWiaItem2Root);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDevMgr2_SelectDeviceDlg(self: *const T, hwndParent: ?HWND, lDeviceType: i32, lFlags: i32, pbstrDeviceID: ?*?BSTR, ppItemRoot: ?*?*IWiaItem2) HRESULT {
                return @as(*const IWiaDevMgr2.VTable, @ptrCast(self.vtable)).SelectDeviceDlg(@as(*const IWiaDevMgr2, @ptrCast(self)), hwndParent, lDeviceType, lFlags, pbstrDeviceID, ppItemRoot);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDevMgr2_SelectDeviceDlgID(self: *const T, hwndParent: ?HWND, lDeviceType: i32, lFlags: i32, pbstrDeviceID: ?*?BSTR) HRESULT {
                return @as(*const IWiaDevMgr2.VTable, @ptrCast(self.vtable)).SelectDeviceDlgID(@as(*const IWiaDevMgr2, @ptrCast(self)), hwndParent, lDeviceType, lFlags, pbstrDeviceID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDevMgr2_RegisterEventCallbackInterface(self: *const T, lFlags: i32, bstrDeviceID: ?BSTR, pEventGUID: ?*const Guid, pIWiaEventCallback: ?*IWiaEventCallback, pEventObject: ?*?*IUnknown) HRESULT {
                return @as(*const IWiaDevMgr2.VTable, @ptrCast(self.vtable)).RegisterEventCallbackInterface(@as(*const IWiaDevMgr2, @ptrCast(self)), lFlags, bstrDeviceID, pEventGUID, pIWiaEventCallback, pEventObject);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDevMgr2_RegisterEventCallbackProgram(self: *const T, lFlags: i32, bstrDeviceID: ?BSTR, pEventGUID: ?*const Guid, bstrFullAppName: ?BSTR, bstrCommandLineArg: ?BSTR, bstrName: ?BSTR, bstrDescription: ?BSTR, bstrIcon: ?BSTR) HRESULT {
                return @as(*const IWiaDevMgr2.VTable, @ptrCast(self.vtable)).RegisterEventCallbackProgram(@as(*const IWiaDevMgr2, @ptrCast(self)), lFlags, bstrDeviceID, pEventGUID, bstrFullAppName, bstrCommandLineArg, bstrName, bstrDescription, bstrIcon);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDevMgr2_RegisterEventCallbackCLSID(self: *const T, lFlags: i32, bstrDeviceID: ?BSTR, pEventGUID: ?*const Guid, pClsID: ?*const Guid, bstrName: ?BSTR, bstrDescription: ?BSTR, bstrIcon: ?BSTR) HRESULT {
                return @as(*const IWiaDevMgr2.VTable, @ptrCast(self.vtable)).RegisterEventCallbackCLSID(@as(*const IWiaDevMgr2, @ptrCast(self)), lFlags, bstrDeviceID, pEventGUID, pClsID, bstrName, bstrDescription, bstrIcon);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDevMgr2_GetImageDlg(self: *const T, lFlags: i32, bstrDeviceID: ?BSTR, hwndParent: ?HWND, bstrFolderName: ?BSTR, bstrFilename: ?BSTR, plNumFiles: ?*i32, ppbstrFilePaths: ?*?*?BSTR, ppItem: ?*?*IWiaItem2) HRESULT {
                return @as(*const IWiaDevMgr2.VTable, @ptrCast(self.vtable)).GetImageDlg(@as(*const IWiaDevMgr2, @ptrCast(self)), lFlags, bstrDeviceID, hwndParent, bstrFolderName, bstrFilename, plNumFiles, ppbstrFilePaths, ppItem);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const MINIDRV_TRANSFER_CONTEXT = extern struct {
    lSize: i32,
    lWidthInPixels: i32,
    lLines: i32,
    lDepth: i32,
    lXRes: i32,
    lYRes: i32,
    lCompression: i32,
    guidFormatID: Guid,
    tymed: i32,
    hFile: isize,
    cbOffset: i32,
    lBufferSize: i32,
    lActiveBuffer: i32,
    lNumBuffers: i32,
    pBaseBuffer: ?*u8,
    pTransferBuffer: ?*u8,
    bTransferDataCB: BOOL,
    bClassDrvAllocBuf: BOOL,
    lClientAddress: isize,
    pIWiaMiniDrvCallBack: ?*IWiaMiniDrvCallBack,
    lImageSize: i32,
    lHeaderSize: i32,
    lItemSize: i32,
    cbWidthInBytes: i32,
    lPage: i32,
    lCurIfdOffset: i32,
    lPrevIfdOffset: i32,
};

pub const WIA_DEV_CAP_DRV = extern struct {
    guid: ?*Guid,
    ulFlags: u32,
    wszName: ?PWSTR,
    wszDescription: ?PWSTR,
    wszIcon: ?PWSTR,
};

const IID_IWiaMiniDrv_Value = Guid.initString("d8cdee14-3c6c-11d2-9a35-00c04fa36145");
pub const IID_IWiaMiniDrv = &IID_IWiaMiniDrv_Value;
pub const IWiaMiniDrv = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        drvInitializeWia: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0000: ?*u8,
                __MIDL__IWiaMiniDrv0001: i32,
                __MIDL__IWiaMiniDrv0002: ?BSTR,
                __MIDL__IWiaMiniDrv0003: ?BSTR,
                __MIDL__IWiaMiniDrv0004: ?*IUnknown,
                __MIDL__IWiaMiniDrv0005: ?*IUnknown,
                __MIDL__IWiaMiniDrv0006: ?*?*IWiaDrvItem,
                __MIDL__IWiaMiniDrv0007: ?*?*IUnknown,
                __MIDL__IWiaMiniDrv0008: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0000: ?*u8,
                __MIDL__IWiaMiniDrv0001: i32,
                __MIDL__IWiaMiniDrv0002: ?BSTR,
                __MIDL__IWiaMiniDrv0003: ?BSTR,
                __MIDL__IWiaMiniDrv0004: ?*IUnknown,
                __MIDL__IWiaMiniDrv0005: ?*IUnknown,
                __MIDL__IWiaMiniDrv0006: ?*?*IWiaDrvItem,
                __MIDL__IWiaMiniDrv0007: ?*?*IUnknown,
                __MIDL__IWiaMiniDrv0008: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        drvAcquireItemData: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0009: ?*u8,
                __MIDL__IWiaMiniDrv0010: i32,
                __MIDL__IWiaMiniDrv0011: ?*MINIDRV_TRANSFER_CONTEXT,
                __MIDL__IWiaMiniDrv0012: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0009: ?*u8,
                __MIDL__IWiaMiniDrv0010: i32,
                __MIDL__IWiaMiniDrv0011: ?*MINIDRV_TRANSFER_CONTEXT,
                __MIDL__IWiaMiniDrv0012: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        drvInitItemProperties: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0013: ?*u8,
                __MIDL__IWiaMiniDrv0014: i32,
                __MIDL__IWiaMiniDrv0015: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0013: ?*u8,
                __MIDL__IWiaMiniDrv0014: i32,
                __MIDL__IWiaMiniDrv0015: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        drvValidateItemProperties: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0016: ?*u8,
                __MIDL__IWiaMiniDrv0017: i32,
                __MIDL__IWiaMiniDrv0018: u32,
                __MIDL__IWiaMiniDrv0019: ?*const PROPSPEC,
                __MIDL__IWiaMiniDrv0020: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0016: ?*u8,
                __MIDL__IWiaMiniDrv0017: i32,
                __MIDL__IWiaMiniDrv0018: u32,
                __MIDL__IWiaMiniDrv0019: ?*const PROPSPEC,
                __MIDL__IWiaMiniDrv0020: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        drvWriteItemProperties: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0021: ?*u8,
                __MIDL__IWiaMiniDrv0022: i32,
                __MIDL__IWiaMiniDrv0023: ?*MINIDRV_TRANSFER_CONTEXT,
                __MIDL__IWiaMiniDrv0024: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0021: ?*u8,
                __MIDL__IWiaMiniDrv0022: i32,
                __MIDL__IWiaMiniDrv0023: ?*MINIDRV_TRANSFER_CONTEXT,
                __MIDL__IWiaMiniDrv0024: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        drvReadItemProperties: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0025: ?*u8,
                __MIDL__IWiaMiniDrv0026: i32,
                __MIDL__IWiaMiniDrv0027: u32,
                __MIDL__IWiaMiniDrv0028: ?*const PROPSPEC,
                __MIDL__IWiaMiniDrv0029: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0025: ?*u8,
                __MIDL__IWiaMiniDrv0026: i32,
                __MIDL__IWiaMiniDrv0027: u32,
                __MIDL__IWiaMiniDrv0028: ?*const PROPSPEC,
                __MIDL__IWiaMiniDrv0029: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        drvLockWiaDevice: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0030: ?*u8,
                __MIDL__IWiaMiniDrv0031: i32,
                __MIDL__IWiaMiniDrv0032: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0030: ?*u8,
                __MIDL__IWiaMiniDrv0031: i32,
                __MIDL__IWiaMiniDrv0032: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        drvUnLockWiaDevice: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0033: ?*u8,
                __MIDL__IWiaMiniDrv0034: i32,
                __MIDL__IWiaMiniDrv0035: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0033: ?*u8,
                __MIDL__IWiaMiniDrv0034: i32,
                __MIDL__IWiaMiniDrv0035: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        drvAnalyzeItem: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0036: ?*u8,
                __MIDL__IWiaMiniDrv0037: i32,
                __MIDL__IWiaMiniDrv0038: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0036: ?*u8,
                __MIDL__IWiaMiniDrv0037: i32,
                __MIDL__IWiaMiniDrv0038: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        drvGetDeviceErrorStr: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0039: i32,
                __MIDL__IWiaMiniDrv0040: i32,
                __MIDL__IWiaMiniDrv0041: ?*?PWSTR,
                __MIDL__IWiaMiniDrv0042: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0039: i32,
                __MIDL__IWiaMiniDrv0040: i32,
                __MIDL__IWiaMiniDrv0041: ?*?PWSTR,
                __MIDL__IWiaMiniDrv0042: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        drvDeviceCommand: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0043: ?*u8,
                __MIDL__IWiaMiniDrv0044: i32,
                __MIDL__IWiaMiniDrv0045: ?*const Guid,
                __MIDL__IWiaMiniDrv0046: ?*?*IWiaDrvItem,
                __MIDL__IWiaMiniDrv0047: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0043: ?*u8,
                __MIDL__IWiaMiniDrv0044: i32,
                __MIDL__IWiaMiniDrv0045: ?*const Guid,
                __MIDL__IWiaMiniDrv0046: ?*?*IWiaDrvItem,
                __MIDL__IWiaMiniDrv0047: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        drvGetCapabilities: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0048: ?*u8,
                __MIDL__IWiaMiniDrv0049: i32,
                __MIDL__IWiaMiniDrv0050: ?*i32,
                __MIDL__IWiaMiniDrv0051: ?*?*WIA_DEV_CAP_DRV,
                __MIDL__IWiaMiniDrv0052: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0048: ?*u8,
                __MIDL__IWiaMiniDrv0049: i32,
                __MIDL__IWiaMiniDrv0050: ?*i32,
                __MIDL__IWiaMiniDrv0051: ?*?*WIA_DEV_CAP_DRV,
                __MIDL__IWiaMiniDrv0052: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        drvDeleteItem: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0053: ?*u8,
                __MIDL__IWiaMiniDrv0054: i32,
                __MIDL__IWiaMiniDrv0055: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0053: ?*u8,
                __MIDL__IWiaMiniDrv0054: i32,
                __MIDL__IWiaMiniDrv0055: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        drvFreeDrvItemContext: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0056: i32,
                __MIDL__IWiaMiniDrv0057: ?*u8,
                __MIDL__IWiaMiniDrv0058: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0056: i32,
                __MIDL__IWiaMiniDrv0057: ?*u8,
                __MIDL__IWiaMiniDrv0058: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        drvGetWiaFormatInfo: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0059: ?*u8,
                __MIDL__IWiaMiniDrv0060: i32,
                __MIDL__IWiaMiniDrv0061: ?*i32,
                __MIDL__IWiaMiniDrv0062: ?*?*WIA_FORMAT_INFO,
                __MIDL__IWiaMiniDrv0063: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0059: ?*u8,
                __MIDL__IWiaMiniDrv0060: i32,
                __MIDL__IWiaMiniDrv0061: ?*i32,
                __MIDL__IWiaMiniDrv0062: ?*?*WIA_FORMAT_INFO,
                __MIDL__IWiaMiniDrv0063: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        drvNotifyPnpEvent: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaMiniDrv,
                pEventGUID: ?*const Guid,
                bstrDeviceID: ?BSTR,
                ulReserved: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaMiniDrv,
                pEventGUID: ?*const Guid,
                bstrDeviceID: ?BSTR,
                ulReserved: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        drvUnInitializeWia: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0064: ?*u8,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaMiniDrv,
                __MIDL__IWiaMiniDrv0064: ?*u8,
            ) 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 IWiaMiniDrv_drvInitializeWia(self: *const T, __MIDL__IWiaMiniDrv0000: ?*u8, __MIDL__IWiaMiniDrv0001: i32, __MIDL__IWiaMiniDrv0002: ?BSTR, __MIDL__IWiaMiniDrv0003: ?BSTR, __MIDL__IWiaMiniDrv0004: ?*IUnknown, __MIDL__IWiaMiniDrv0005: ?*IUnknown, __MIDL__IWiaMiniDrv0006: ?*?*IWiaDrvItem, __MIDL__IWiaMiniDrv0007: ?*?*IUnknown, __MIDL__IWiaMiniDrv0008: ?*i32) HRESULT {
                return @as(*const IWiaMiniDrv.VTable, @ptrCast(self.vtable)).drvInitializeWia(@as(*const IWiaMiniDrv, @ptrCast(self)), __MIDL__IWiaMiniDrv0000, __MIDL__IWiaMiniDrv0001, __MIDL__IWiaMiniDrv0002, __MIDL__IWiaMiniDrv0003, __MIDL__IWiaMiniDrv0004, __MIDL__IWiaMiniDrv0005, __MIDL__IWiaMiniDrv0006, __MIDL__IWiaMiniDrv0007, __MIDL__IWiaMiniDrv0008);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaMiniDrv_drvAcquireItemData(self: *const T, __MIDL__IWiaMiniDrv0009: ?*u8, __MIDL__IWiaMiniDrv0010: i32, __MIDL__IWiaMiniDrv0011: ?*MINIDRV_TRANSFER_CONTEXT, __MIDL__IWiaMiniDrv0012: ?*i32) HRESULT {
                return @as(*const IWiaMiniDrv.VTable, @ptrCast(self.vtable)).drvAcquireItemData(@as(*const IWiaMiniDrv, @ptrCast(self)), __MIDL__IWiaMiniDrv0009, __MIDL__IWiaMiniDrv0010, __MIDL__IWiaMiniDrv0011, __MIDL__IWiaMiniDrv0012);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaMiniDrv_drvInitItemProperties(self: *const T, __MIDL__IWiaMiniDrv0013: ?*u8, __MIDL__IWiaMiniDrv0014: i32, __MIDL__IWiaMiniDrv0015: ?*i32) HRESULT {
                return @as(*const IWiaMiniDrv.VTable, @ptrCast(self.vtable)).drvInitItemProperties(@as(*const IWiaMiniDrv, @ptrCast(self)), __MIDL__IWiaMiniDrv0013, __MIDL__IWiaMiniDrv0014, __MIDL__IWiaMiniDrv0015);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaMiniDrv_drvValidateItemProperties(self: *const T, __MIDL__IWiaMiniDrv0016: ?*u8, __MIDL__IWiaMiniDrv0017: i32, __MIDL__IWiaMiniDrv0018: u32, __MIDL__IWiaMiniDrv0019: ?*const PROPSPEC, __MIDL__IWiaMiniDrv0020: ?*i32) HRESULT {
                return @as(*const IWiaMiniDrv.VTable, @ptrCast(self.vtable)).drvValidateItemProperties(@as(*const IWiaMiniDrv, @ptrCast(self)), __MIDL__IWiaMiniDrv0016, __MIDL__IWiaMiniDrv0017, __MIDL__IWiaMiniDrv0018, __MIDL__IWiaMiniDrv0019, __MIDL__IWiaMiniDrv0020);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaMiniDrv_drvWriteItemProperties(self: *const T, __MIDL__IWiaMiniDrv0021: ?*u8, __MIDL__IWiaMiniDrv0022: i32, __MIDL__IWiaMiniDrv0023: ?*MINIDRV_TRANSFER_CONTEXT, __MIDL__IWiaMiniDrv0024: ?*i32) HRESULT {
                return @as(*const IWiaMiniDrv.VTable, @ptrCast(self.vtable)).drvWriteItemProperties(@as(*const IWiaMiniDrv, @ptrCast(self)), __MIDL__IWiaMiniDrv0021, __MIDL__IWiaMiniDrv0022, __MIDL__IWiaMiniDrv0023, __MIDL__IWiaMiniDrv0024);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaMiniDrv_drvReadItemProperties(self: *const T, __MIDL__IWiaMiniDrv0025: ?*u8, __MIDL__IWiaMiniDrv0026: i32, __MIDL__IWiaMiniDrv0027: u32, __MIDL__IWiaMiniDrv0028: ?*const PROPSPEC, __MIDL__IWiaMiniDrv0029: ?*i32) HRESULT {
                return @as(*const IWiaMiniDrv.VTable, @ptrCast(self.vtable)).drvReadItemProperties(@as(*const IWiaMiniDrv, @ptrCast(self)), __MIDL__IWiaMiniDrv0025, __MIDL__IWiaMiniDrv0026, __MIDL__IWiaMiniDrv0027, __MIDL__IWiaMiniDrv0028, __MIDL__IWiaMiniDrv0029);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaMiniDrv_drvLockWiaDevice(self: *const T, __MIDL__IWiaMiniDrv0030: ?*u8, __MIDL__IWiaMiniDrv0031: i32, __MIDL__IWiaMiniDrv0032: ?*i32) HRESULT {
                return @as(*const IWiaMiniDrv.VTable, @ptrCast(self.vtable)).drvLockWiaDevice(@as(*const IWiaMiniDrv, @ptrCast(self)), __MIDL__IWiaMiniDrv0030, __MIDL__IWiaMiniDrv0031, __MIDL__IWiaMiniDrv0032);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaMiniDrv_drvUnLockWiaDevice(self: *const T, __MIDL__IWiaMiniDrv0033: ?*u8, __MIDL__IWiaMiniDrv0034: i32, __MIDL__IWiaMiniDrv0035: ?*i32) HRESULT {
                return @as(*const IWiaMiniDrv.VTable, @ptrCast(self.vtable)).drvUnLockWiaDevice(@as(*const IWiaMiniDrv, @ptrCast(self)), __MIDL__IWiaMiniDrv0033, __MIDL__IWiaMiniDrv0034, __MIDL__IWiaMiniDrv0035);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaMiniDrv_drvAnalyzeItem(self: *const T, __MIDL__IWiaMiniDrv0036: ?*u8, __MIDL__IWiaMiniDrv0037: i32, __MIDL__IWiaMiniDrv0038: ?*i32) HRESULT {
                return @as(*const IWiaMiniDrv.VTable, @ptrCast(self.vtable)).drvAnalyzeItem(@as(*const IWiaMiniDrv, @ptrCast(self)), __MIDL__IWiaMiniDrv0036, __MIDL__IWiaMiniDrv0037, __MIDL__IWiaMiniDrv0038);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaMiniDrv_drvGetDeviceErrorStr(self: *const T, __MIDL__IWiaMiniDrv0039: i32, __MIDL__IWiaMiniDrv0040: i32, __MIDL__IWiaMiniDrv0041: ?*?PWSTR, __MIDL__IWiaMiniDrv0042: ?*i32) HRESULT {
                return @as(*const IWiaMiniDrv.VTable, @ptrCast(self.vtable)).drvGetDeviceErrorStr(@as(*const IWiaMiniDrv, @ptrCast(self)), __MIDL__IWiaMiniDrv0039, __MIDL__IWiaMiniDrv0040, __MIDL__IWiaMiniDrv0041, __MIDL__IWiaMiniDrv0042);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaMiniDrv_drvDeviceCommand(self: *const T, __MIDL__IWiaMiniDrv0043: ?*u8, __MIDL__IWiaMiniDrv0044: i32, __MIDL__IWiaMiniDrv0045: ?*const Guid, __MIDL__IWiaMiniDrv0046: ?*?*IWiaDrvItem, __MIDL__IWiaMiniDrv0047: ?*i32) HRESULT {
                return @as(*const IWiaMiniDrv.VTable, @ptrCast(self.vtable)).drvDeviceCommand(@as(*const IWiaMiniDrv, @ptrCast(self)), __MIDL__IWiaMiniDrv0043, __MIDL__IWiaMiniDrv0044, __MIDL__IWiaMiniDrv0045, __MIDL__IWiaMiniDrv0046, __MIDL__IWiaMiniDrv0047);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaMiniDrv_drvGetCapabilities(self: *const T, __MIDL__IWiaMiniDrv0048: ?*u8, __MIDL__IWiaMiniDrv0049: i32, __MIDL__IWiaMiniDrv0050: ?*i32, __MIDL__IWiaMiniDrv0051: ?*?*WIA_DEV_CAP_DRV, __MIDL__IWiaMiniDrv0052: ?*i32) HRESULT {
                return @as(*const IWiaMiniDrv.VTable, @ptrCast(self.vtable)).drvGetCapabilities(@as(*const IWiaMiniDrv, @ptrCast(self)), __MIDL__IWiaMiniDrv0048, __MIDL__IWiaMiniDrv0049, __MIDL__IWiaMiniDrv0050, __MIDL__IWiaMiniDrv0051, __MIDL__IWiaMiniDrv0052);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaMiniDrv_drvDeleteItem(self: *const T, __MIDL__IWiaMiniDrv0053: ?*u8, __MIDL__IWiaMiniDrv0054: i32, __MIDL__IWiaMiniDrv0055: ?*i32) HRESULT {
                return @as(*const IWiaMiniDrv.VTable, @ptrCast(self.vtable)).drvDeleteItem(@as(*const IWiaMiniDrv, @ptrCast(self)), __MIDL__IWiaMiniDrv0053, __MIDL__IWiaMiniDrv0054, __MIDL__IWiaMiniDrv0055);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaMiniDrv_drvFreeDrvItemContext(self: *const T, __MIDL__IWiaMiniDrv0056: i32, __MIDL__IWiaMiniDrv0057: ?*u8, __MIDL__IWiaMiniDrv0058: ?*i32) HRESULT {
                return @as(*const IWiaMiniDrv.VTable, @ptrCast(self.vtable)).drvFreeDrvItemContext(@as(*const IWiaMiniDrv, @ptrCast(self)), __MIDL__IWiaMiniDrv0056, __MIDL__IWiaMiniDrv0057, __MIDL__IWiaMiniDrv0058);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaMiniDrv_drvGetWiaFormatInfo(self: *const T, __MIDL__IWiaMiniDrv0059: ?*u8, __MIDL__IWiaMiniDrv0060: i32, __MIDL__IWiaMiniDrv0061: ?*i32, __MIDL__IWiaMiniDrv0062: ?*?*WIA_FORMAT_INFO, __MIDL__IWiaMiniDrv0063: ?*i32) HRESULT {
                return @as(*const IWiaMiniDrv.VTable, @ptrCast(self.vtable)).drvGetWiaFormatInfo(@as(*const IWiaMiniDrv, @ptrCast(self)), __MIDL__IWiaMiniDrv0059, __MIDL__IWiaMiniDrv0060, __MIDL__IWiaMiniDrv0061, __MIDL__IWiaMiniDrv0062, __MIDL__IWiaMiniDrv0063);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaMiniDrv_drvNotifyPnpEvent(self: *const T, pEventGUID: ?*const Guid, bstrDeviceID: ?BSTR, ulReserved: u32) HRESULT {
                return @as(*const IWiaMiniDrv.VTable, @ptrCast(self.vtable)).drvNotifyPnpEvent(@as(*const IWiaMiniDrv, @ptrCast(self)), pEventGUID, bstrDeviceID, ulReserved);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaMiniDrv_drvUnInitializeWia(self: *const T, __MIDL__IWiaMiniDrv0064: ?*u8) HRESULT {
                return @as(*const IWiaMiniDrv.VTable, @ptrCast(self.vtable)).drvUnInitializeWia(@as(*const IWiaMiniDrv, @ptrCast(self)), __MIDL__IWiaMiniDrv0064);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_IWiaMiniDrvCallBack_Value = Guid.initString("33a57d5a-3de8-11d2-9a36-00c04fa36145");
pub const IID_IWiaMiniDrvCallBack = &IID_IWiaMiniDrvCallBack_Value;
pub const IWiaMiniDrvCallBack = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        MiniDrvCallback: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaMiniDrvCallBack,
                lReason: i32,
                lStatus: i32,
                lPercentComplete: i32,
                lOffset: i32,
                lLength: i32,
                pTranCtx: ?*MINIDRV_TRANSFER_CONTEXT,
                lReserved: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaMiniDrvCallBack,
                lReason: i32,
                lStatus: i32,
                lPercentComplete: i32,
                lOffset: i32,
                lLength: i32,
                pTranCtx: ?*MINIDRV_TRANSFER_CONTEXT,
                lReserved: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaMiniDrvCallBack_MiniDrvCallback(self: *const T, lReason: i32, lStatus: i32, lPercentComplete: i32, lOffset: i32, lLength: i32, pTranCtx: ?*MINIDRV_TRANSFER_CONTEXT, lReserved: i32) HRESULT {
                return @as(*const IWiaMiniDrvCallBack.VTable, @ptrCast(self.vtable)).MiniDrvCallback(@as(*const IWiaMiniDrvCallBack, @ptrCast(self)), lReason, lStatus, lPercentComplete, lOffset, lLength, pTranCtx, lReserved);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_IWiaMiniDrvTransferCallback_Value = Guid.initString("a9d2ee89-2ce5-4ff0-8adb-c961d1d774ca");
pub const IID_IWiaMiniDrvTransferCallback = &IID_IWiaMiniDrvTransferCallback_Value;
pub const IWiaMiniDrvTransferCallback = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        GetNextStream: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaMiniDrvTransferCallback,
                lFlags: i32,
                bstrItemName: ?BSTR,
                bstrFullItemName: ?BSTR,
                ppIStream: ?*?*IStream,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaMiniDrvTransferCallback,
                lFlags: i32,
                bstrItemName: ?BSTR,
                bstrFullItemName: ?BSTR,
                ppIStream: ?*?*IStream,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SendMessage: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaMiniDrvTransferCallback,
                lFlags: i32,
                pWiaTransferParams: ?*WiaTransferParams,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaMiniDrvTransferCallback,
                lFlags: i32,
                pWiaTransferParams: ?*WiaTransferParams,
            ) 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 IWiaMiniDrvTransferCallback_GetNextStream(self: *const T, lFlags: i32, bstrItemName: ?BSTR, bstrFullItemName: ?BSTR, ppIStream: ?*?*IStream) HRESULT {
                return @as(*const IWiaMiniDrvTransferCallback.VTable, @ptrCast(self.vtable)).GetNextStream(@as(*const IWiaMiniDrvTransferCallback, @ptrCast(self)), lFlags, bstrItemName, bstrFullItemName, ppIStream);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaMiniDrvTransferCallback_SendMessage(self: *const T, lFlags: i32, pWiaTransferParams: ?*WiaTransferParams) HRESULT {
                return @as(*const IWiaMiniDrvTransferCallback.VTable, @ptrCast(self.vtable)).SendMessage(@as(*const IWiaMiniDrvTransferCallback, @ptrCast(self)), lFlags, pWiaTransferParams);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_IWiaDrvItem_Value = Guid.initString("1f02b5c5-b00c-11d2-a094-00c04f72dc3c");
pub const IID_IWiaDrvItem = &IID_IWiaDrvItem_Value;
pub const IWiaDrvItem = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        GetItemFlags: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDrvItem,
                __MIDL__IWiaDrvItem0000: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDrvItem,
                __MIDL__IWiaDrvItem0000: ?*i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetDeviceSpecContext: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDrvItem,
                __MIDL__IWiaDrvItem0001: ?*?*u8,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDrvItem,
                __MIDL__IWiaDrvItem0001: ?*?*u8,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetFullItemName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDrvItem,
                __MIDL__IWiaDrvItem0002: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDrvItem,
                __MIDL__IWiaDrvItem0002: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetItemName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDrvItem,
                __MIDL__IWiaDrvItem0003: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDrvItem,
                __MIDL__IWiaDrvItem0003: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        AddItemToFolder: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDrvItem,
                __MIDL__IWiaDrvItem0004: ?*IWiaDrvItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDrvItem,
                __MIDL__IWiaDrvItem0004: ?*IWiaDrvItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        UnlinkItemTree: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDrvItem,
                __MIDL__IWiaDrvItem0005: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDrvItem,
                __MIDL__IWiaDrvItem0005: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        RemoveItemFromFolder: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDrvItem,
                __MIDL__IWiaDrvItem0006: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDrvItem,
                __MIDL__IWiaDrvItem0006: i32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        FindItemByName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDrvItem,
                __MIDL__IWiaDrvItem0007: i32,
                __MIDL__IWiaDrvItem0008: ?BSTR,
                __MIDL__IWiaDrvItem0009: ?*?*IWiaDrvItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDrvItem,
                __MIDL__IWiaDrvItem0007: i32,
                __MIDL__IWiaDrvItem0008: ?BSTR,
                __MIDL__IWiaDrvItem0009: ?*?*IWiaDrvItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        FindChildItemByName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDrvItem,
                __MIDL__IWiaDrvItem0010: ?BSTR,
                __MIDL__IWiaDrvItem0011: ?*?*IWiaDrvItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDrvItem,
                __MIDL__IWiaDrvItem0010: ?BSTR,
                __MIDL__IWiaDrvItem0011: ?*?*IWiaDrvItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetParentItem: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDrvItem,
                __MIDL__IWiaDrvItem0012: ?*?*IWiaDrvItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDrvItem,
                __MIDL__IWiaDrvItem0012: ?*?*IWiaDrvItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetFirstChildItem: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDrvItem,
                __MIDL__IWiaDrvItem0013: ?*?*IWiaDrvItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDrvItem,
                __MIDL__IWiaDrvItem0013: ?*?*IWiaDrvItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetNextSiblingItem: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDrvItem,
                __MIDL__IWiaDrvItem0014: ?*?*IWiaDrvItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDrvItem,
                __MIDL__IWiaDrvItem0014: ?*?*IWiaDrvItem,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DumpItemData: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaDrvItem,
                __MIDL__IWiaDrvItem0015: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaDrvItem,
                __MIDL__IWiaDrvItem0015: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
    };
    vtable: *const VTable,
    pub fn MethodMixin(comptime T: type) type {
        return struct {
            pub usingnamespace IUnknown.MethodMixin(T);
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDrvItem_GetItemFlags(self: *const T, __MIDL__IWiaDrvItem0000: ?*i32) HRESULT {
                return @as(*const IWiaDrvItem.VTable, @ptrCast(self.vtable)).GetItemFlags(@as(*const IWiaDrvItem, @ptrCast(self)), __MIDL__IWiaDrvItem0000);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDrvItem_GetDeviceSpecContext(self: *const T, __MIDL__IWiaDrvItem0001: ?*?*u8) HRESULT {
                return @as(*const IWiaDrvItem.VTable, @ptrCast(self.vtable)).GetDeviceSpecContext(@as(*const IWiaDrvItem, @ptrCast(self)), __MIDL__IWiaDrvItem0001);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDrvItem_GetFullItemName(self: *const T, __MIDL__IWiaDrvItem0002: ?*?BSTR) HRESULT {
                return @as(*const IWiaDrvItem.VTable, @ptrCast(self.vtable)).GetFullItemName(@as(*const IWiaDrvItem, @ptrCast(self)), __MIDL__IWiaDrvItem0002);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDrvItem_GetItemName(self: *const T, __MIDL__IWiaDrvItem0003: ?*?BSTR) HRESULT {
                return @as(*const IWiaDrvItem.VTable, @ptrCast(self.vtable)).GetItemName(@as(*const IWiaDrvItem, @ptrCast(self)), __MIDL__IWiaDrvItem0003);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDrvItem_AddItemToFolder(self: *const T, __MIDL__IWiaDrvItem0004: ?*IWiaDrvItem) HRESULT {
                return @as(*const IWiaDrvItem.VTable, @ptrCast(self.vtable)).AddItemToFolder(@as(*const IWiaDrvItem, @ptrCast(self)), __MIDL__IWiaDrvItem0004);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDrvItem_UnlinkItemTree(self: *const T, __MIDL__IWiaDrvItem0005: i32) HRESULT {
                return @as(*const IWiaDrvItem.VTable, @ptrCast(self.vtable)).UnlinkItemTree(@as(*const IWiaDrvItem, @ptrCast(self)), __MIDL__IWiaDrvItem0005);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDrvItem_RemoveItemFromFolder(self: *const T, __MIDL__IWiaDrvItem0006: i32) HRESULT {
                return @as(*const IWiaDrvItem.VTable, @ptrCast(self.vtable)).RemoveItemFromFolder(@as(*const IWiaDrvItem, @ptrCast(self)), __MIDL__IWiaDrvItem0006);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDrvItem_FindItemByName(self: *const T, __MIDL__IWiaDrvItem0007: i32, __MIDL__IWiaDrvItem0008: ?BSTR, __MIDL__IWiaDrvItem0009: ?*?*IWiaDrvItem) HRESULT {
                return @as(*const IWiaDrvItem.VTable, @ptrCast(self.vtable)).FindItemByName(@as(*const IWiaDrvItem, @ptrCast(self)), __MIDL__IWiaDrvItem0007, __MIDL__IWiaDrvItem0008, __MIDL__IWiaDrvItem0009);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDrvItem_FindChildItemByName(self: *const T, __MIDL__IWiaDrvItem0010: ?BSTR, __MIDL__IWiaDrvItem0011: ?*?*IWiaDrvItem) HRESULT {
                return @as(*const IWiaDrvItem.VTable, @ptrCast(self.vtable)).FindChildItemByName(@as(*const IWiaDrvItem, @ptrCast(self)), __MIDL__IWiaDrvItem0010, __MIDL__IWiaDrvItem0011);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDrvItem_GetParentItem(self: *const T, __MIDL__IWiaDrvItem0012: ?*?*IWiaDrvItem) HRESULT {
                return @as(*const IWiaDrvItem.VTable, @ptrCast(self.vtable)).GetParentItem(@as(*const IWiaDrvItem, @ptrCast(self)), __MIDL__IWiaDrvItem0012);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDrvItem_GetFirstChildItem(self: *const T, __MIDL__IWiaDrvItem0013: ?*?*IWiaDrvItem) HRESULT {
                return @as(*const IWiaDrvItem.VTable, @ptrCast(self.vtable)).GetFirstChildItem(@as(*const IWiaDrvItem, @ptrCast(self)), __MIDL__IWiaDrvItem0013);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDrvItem_GetNextSiblingItem(self: *const T, __MIDL__IWiaDrvItem0014: ?*?*IWiaDrvItem) HRESULT {
                return @as(*const IWiaDrvItem.VTable, @ptrCast(self.vtable)).GetNextSiblingItem(@as(*const IWiaDrvItem, @ptrCast(self)), __MIDL__IWiaDrvItem0014);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaDrvItem_DumpItemData(self: *const T, __MIDL__IWiaDrvItem0015: ?*?BSTR) HRESULT {
                return @as(*const IWiaDrvItem.VTable, @ptrCast(self.vtable)).DumpItemData(@as(*const IWiaDrvItem, @ptrCast(self)), __MIDL__IWiaDrvItem0015);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const WIA_PROPERTY_INFO = extern struct {
    lAccessFlags: u32,
    vt: u16,
    ValidVal: extern union {
        Range: extern struct {
            Min: i32,
            Nom: i32,
            Max: i32,
            Inc: i32,
        },
        RangeFloat: extern struct {
            Min: f64,
            Nom: f64,
            Max: f64,
            Inc: f64,
        },
        List: extern struct {
            cNumList: i32,
            Nom: i32,
            pList: ?*u8,
        },
        ListFloat: extern struct {
            cNumList: i32,
            Nom: f64,
            pList: ?*u8,
        },
        ListGuid: extern struct {
            cNumList: i32,
            Nom: Guid,
            pList: ?*Guid,
        },
        ListBStr: extern struct {
            cNumList: i32,
            Nom: ?BSTR,
            pList: ?*?BSTR,
        },
        Flag: extern struct {
            Nom: i32,
            ValidBits: i32,
        },
        None: extern struct {
            Dummy: i32,
        },
    },
};

pub const WIA_PROPERTY_CONTEXT = extern struct {
    cProps: u32,
    pProps: ?*u32,
    pChanged: ?*BOOL,
};

pub const WIAS_CHANGED_VALUE_INFO = extern struct {
    bChanged: BOOL,
    vt: i32,
    Old: extern union {
        lVal: i32,
        fltVal: f32,
        bstrVal: ?BSTR,
        guidVal: Guid,
    },
    Current: extern union {
        lVal: i32,
        fltVal: f32,
        bstrVal: ?BSTR,
        guidVal: Guid,
    },
};

pub const WIAS_DOWN_SAMPLE_INFO = extern struct {
    ulOriginalWidth: u32,
    ulOriginalHeight: u32,
    ulBitsPerPixel: u32,
    ulXRes: u32,
    ulYRes: u32,
    ulDownSampledWidth: u32,
    ulDownSampledHeight: u32,
    ulActualSize: u32,
    ulDestBufSize: u32,
    ulSrcBufSize: u32,
    pSrcBuffer: ?*u8,
    pDestBuffer: ?*u8,
};

pub const WIAS_ENDORSER_VALUE = extern struct {
    wszTokenName: ?PWSTR,
    wszValue: ?PWSTR,
};

pub const WIAS_ENDORSER_INFO = extern struct {
    ulPageCount: u32,
    ulNumEndorserValues: u32,
    pEndorserValues: ?*WIAS_ENDORSER_VALUE,
};

const CLSID_WiaVideo_Value = Guid.initString("3908c3cd-4478-4536-af2f-10c25d4ef89a");
pub const CLSID_WiaVideo = &CLSID_WiaVideo_Value;

pub const WIAVIDEO_STATE = enum(i32) {
    NO_VIDEO = 1,
    CREATING_VIDEO = 2,
    VIDEO_CREATED = 3,
    VIDEO_PLAYING = 4,
    VIDEO_PAUSED = 5,
    DESTROYING_VIDEO = 6,
};
pub const WIAVIDEO_NO_VIDEO = WIAVIDEO_STATE.NO_VIDEO;
pub const WIAVIDEO_CREATING_VIDEO = WIAVIDEO_STATE.CREATING_VIDEO;
pub const WIAVIDEO_VIDEO_CREATED = WIAVIDEO_STATE.VIDEO_CREATED;
pub const WIAVIDEO_VIDEO_PLAYING = WIAVIDEO_STATE.VIDEO_PLAYING;
pub const WIAVIDEO_VIDEO_PAUSED = WIAVIDEO_STATE.VIDEO_PAUSED;
pub const WIAVIDEO_DESTROYING_VIDEO = WIAVIDEO_STATE.DESTROYING_VIDEO;

// TODO: this type is limited to platform 'windows5.1.2600'
const IID_IWiaVideo_Value = Guid.initString("d52920aa-db88-41f0-946c-e00dc0a19cfa");
pub const IID_IWiaVideo = &IID_IWiaVideo_Value;
pub const IWiaVideo = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_PreviewVisible: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IWiaVideo,
                pbPreviewVisible: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IWiaVideo,
                pbPreviewVisible: ?*BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_PreviewVisible: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IWiaVideo,
                bPreviewVisible: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            else => *const fn (
                self: *const IWiaVideo,
                bPreviewVisible: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        get_ImagesDirectory: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IWiaVideo,
                pbstrImageDirectory: ?*?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 IWiaVideo,
                pbstrImageDirectory: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        // TODO: this function has a "SpecialName", should Zig do anything with this?
        put_ImagesDirectory: switch (@import("builtin").zig_backend) {
            // TODO: this function has a "SpecialName", should Zig do anything with this?
            .stage1 => fn (
                self: *const IWiaVideo,
                bstrImageDirectory: ?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 IWiaVideo,
                bstrImageDirectory: ?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CreateVideoByWiaDevID: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaVideo,
                bstrWiaDeviceID: ?BSTR,
                hwndParent: ?HWND,
                bStretchToFitParent: BOOL,
                bAutoBeginPlayback: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaVideo,
                bstrWiaDeviceID: ?BSTR,
                hwndParent: ?HWND,
                bStretchToFitParent: BOOL,
                bAutoBeginPlayback: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CreateVideoByDevNum: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaVideo,
                uiDeviceNumber: u32,
                hwndParent: ?HWND,
                bStretchToFitParent: BOOL,
                bAutoBeginPlayback: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaVideo,
                uiDeviceNumber: u32,
                hwndParent: ?HWND,
                bStretchToFitParent: BOOL,
                bAutoBeginPlayback: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        CreateVideoByName: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaVideo,
                bstrFriendlyName: ?BSTR,
                hwndParent: ?HWND,
                bStretchToFitParent: BOOL,
                bAutoBeginPlayback: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaVideo,
                bstrFriendlyName: ?BSTR,
                hwndParent: ?HWND,
                bStretchToFitParent: BOOL,
                bAutoBeginPlayback: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        DestroyVideo: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaVideo,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaVideo,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Play: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaVideo,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaVideo,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Pause: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaVideo,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaVideo,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        TakePicture: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaVideo,
                pbstrNewImageFilename: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaVideo,
                pbstrNewImageFilename: ?*?BSTR,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        ResizeVideo: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaVideo,
                bStretchToFitParent: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaVideo,
                bStretchToFitParent: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetCurrentState: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaVideo,
                pState: ?*WIAVIDEO_STATE,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaVideo,
                pState: ?*WIAVIDEO_STATE,
            ) 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 IWiaVideo_get_PreviewVisible(self: *const T, pbPreviewVisible: ?*BOOL) HRESULT {
                return @as(*const IWiaVideo.VTable, @ptrCast(self.vtable)).get_PreviewVisible(@as(*const IWiaVideo, @ptrCast(self)), pbPreviewVisible);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaVideo_put_PreviewVisible(self: *const T, bPreviewVisible: BOOL) HRESULT {
                return @as(*const IWiaVideo.VTable, @ptrCast(self.vtable)).put_PreviewVisible(@as(*const IWiaVideo, @ptrCast(self)), bPreviewVisible);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaVideo_get_ImagesDirectory(self: *const T, pbstrImageDirectory: ?*?BSTR) HRESULT {
                return @as(*const IWiaVideo.VTable, @ptrCast(self.vtable)).get_ImagesDirectory(@as(*const IWiaVideo, @ptrCast(self)), pbstrImageDirectory);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaVideo_put_ImagesDirectory(self: *const T, bstrImageDirectory: ?BSTR) HRESULT {
                return @as(*const IWiaVideo.VTable, @ptrCast(self.vtable)).put_ImagesDirectory(@as(*const IWiaVideo, @ptrCast(self)), bstrImageDirectory);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaVideo_CreateVideoByWiaDevID(self: *const T, bstrWiaDeviceID: ?BSTR, hwndParent: ?HWND, bStretchToFitParent: BOOL, bAutoBeginPlayback: BOOL) HRESULT {
                return @as(*const IWiaVideo.VTable, @ptrCast(self.vtable)).CreateVideoByWiaDevID(@as(*const IWiaVideo, @ptrCast(self)), bstrWiaDeviceID, hwndParent, bStretchToFitParent, bAutoBeginPlayback);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaVideo_CreateVideoByDevNum(self: *const T, uiDeviceNumber: u32, hwndParent: ?HWND, bStretchToFitParent: BOOL, bAutoBeginPlayback: BOOL) HRESULT {
                return @as(*const IWiaVideo.VTable, @ptrCast(self.vtable)).CreateVideoByDevNum(@as(*const IWiaVideo, @ptrCast(self)), uiDeviceNumber, hwndParent, bStretchToFitParent, bAutoBeginPlayback);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaVideo_CreateVideoByName(self: *const T, bstrFriendlyName: ?BSTR, hwndParent: ?HWND, bStretchToFitParent: BOOL, bAutoBeginPlayback: BOOL) HRESULT {
                return @as(*const IWiaVideo.VTable, @ptrCast(self.vtable)).CreateVideoByName(@as(*const IWiaVideo, @ptrCast(self)), bstrFriendlyName, hwndParent, bStretchToFitParent, bAutoBeginPlayback);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaVideo_DestroyVideo(self: *const T) HRESULT {
                return @as(*const IWiaVideo.VTable, @ptrCast(self.vtable)).DestroyVideo(@as(*const IWiaVideo, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaVideo_Play(self: *const T) HRESULT {
                return @as(*const IWiaVideo.VTable, @ptrCast(self.vtable)).Play(@as(*const IWiaVideo, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaVideo_Pause(self: *const T) HRESULT {
                return @as(*const IWiaVideo.VTable, @ptrCast(self.vtable)).Pause(@as(*const IWiaVideo, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaVideo_TakePicture(self: *const T, pbstrNewImageFilename: ?*?BSTR) HRESULT {
                return @as(*const IWiaVideo.VTable, @ptrCast(self.vtable)).TakePicture(@as(*const IWiaVideo, @ptrCast(self)), pbstrNewImageFilename);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaVideo_ResizeVideo(self: *const T, bStretchToFitParent: BOOL) HRESULT {
                return @as(*const IWiaVideo.VTable, @ptrCast(self.vtable)).ResizeVideo(@as(*const IWiaVideo, @ptrCast(self)), bStretchToFitParent);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaVideo_GetCurrentState(self: *const T, pState: ?*WIAVIDEO_STATE) HRESULT {
                return @as(*const IWiaVideo.VTable, @ptrCast(self.vtable)).GetCurrentState(@as(*const IWiaVideo, @ptrCast(self)), pState);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const DEVICEDIALOGDATA2 = extern struct {
    cbSize: u32,
    pIWiaItemRoot: ?*IWiaItem2,
    dwFlags: u32,
    hwndParent: ?HWND,
    bstrFolderName: ?BSTR,
    bstrFilename: ?BSTR,
    lNumFiles: i32,
    pbstrFilePaths: ?*?BSTR,
    pWiaItem: ?*IWiaItem2,
};

const IID_IWiaUIExtension2_Value = Guid.initString("305600d7-5088-46d7-9a15-b77b09cdba7a");
pub const IID_IWiaUIExtension2 = &IID_IWiaUIExtension2_Value;
pub const IWiaUIExtension2 = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        DeviceDialog: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaUIExtension2,
                pDeviceDialogData: ?*DEVICEDIALOGDATA2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaUIExtension2,
                pDeviceDialogData: ?*DEVICEDIALOGDATA2,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetDeviceIcon: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaUIExtension2,
                bstrDeviceId: ?BSTR,
                phIcon: ?*?HICON,
                nSize: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaUIExtension2,
                bstrDeviceId: ?BSTR,
                phIcon: ?*?HICON,
                nSize: 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 IWiaUIExtension2_DeviceDialog(self: *const T, pDeviceDialogData: ?*DEVICEDIALOGDATA2) HRESULT {
                return @as(*const IWiaUIExtension2.VTable, @ptrCast(self.vtable)).DeviceDialog(@as(*const IWiaUIExtension2, @ptrCast(self)), pDeviceDialogData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaUIExtension2_GetDeviceIcon(self: *const T, bstrDeviceId: ?BSTR, phIcon: ?*?HICON, nSize: u32) HRESULT {
                return @as(*const IWiaUIExtension2.VTable, @ptrCast(self.vtable)).GetDeviceIcon(@as(*const IWiaUIExtension2, @ptrCast(self)), bstrDeviceId, phIcon, nSize);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const DEVICEDIALOGDATA = extern struct {
    cbSize: u32,
    hwndParent: ?HWND,
    pIWiaItemRoot: ?*IWiaItem,
    dwFlags: u32,
    lIntent: i32,
    lItemCount: i32,
    ppWiaItems: ?*?*IWiaItem,
};

const IID_IWiaUIExtension_Value = Guid.initString("da319113-50ee-4c80-b460-57d005d44a2c");
pub const IID_IWiaUIExtension = &IID_IWiaUIExtension_Value;
pub const IWiaUIExtension = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        DeviceDialog: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaUIExtension,
                pDeviceDialogData: ?*DEVICEDIALOGDATA,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaUIExtension,
                pDeviceDialogData: ?*DEVICEDIALOGDATA,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetDeviceIcon: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaUIExtension,
                bstrDeviceId: ?BSTR,
                phIcon: ?*?HICON,
                nSize: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaUIExtension,
                bstrDeviceId: ?BSTR,
                phIcon: ?*?HICON,
                nSize: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetDeviceBitmapLogo: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IWiaUIExtension,
                bstrDeviceId: ?BSTR,
                phBitmap: ?*?HBITMAP,
                nMaxWidth: u32,
                nMaxHeight: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IWiaUIExtension,
                bstrDeviceId: ?BSTR,
                phBitmap: ?*?HBITMAP,
                nMaxWidth: u32,
                nMaxHeight: 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 IWiaUIExtension_DeviceDialog(self: *const T, pDeviceDialogData: ?*DEVICEDIALOGDATA) HRESULT {
                return @as(*const IWiaUIExtension.VTable, @ptrCast(self.vtable)).DeviceDialog(@as(*const IWiaUIExtension, @ptrCast(self)), pDeviceDialogData);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaUIExtension_GetDeviceIcon(self: *const T, bstrDeviceId: ?BSTR, phIcon: ?*?HICON, nSize: u32) HRESULT {
                return @as(*const IWiaUIExtension.VTable, @ptrCast(self.vtable)).GetDeviceIcon(@as(*const IWiaUIExtension, @ptrCast(self)), bstrDeviceId, phIcon, nSize);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IWiaUIExtension_GetDeviceBitmapLogo(self: *const T, bstrDeviceId: ?BSTR, phBitmap: ?*?HBITMAP, nMaxWidth: u32, nMaxHeight: u32) HRESULT {
                return @as(*const IWiaUIExtension.VTable, @ptrCast(self.vtable)).GetDeviceBitmapLogo(@as(*const IWiaUIExtension, @ptrCast(self)), bstrDeviceId, phBitmap, nMaxWidth, nMaxHeight);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

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

pub const RANGEVALUE = extern struct {
    lMin: i32,
    lMax: i32,
    lStep: i32,
};

pub const SCANWINDOW = extern struct {
    xPos: i32,
    yPos: i32,
    xExtent: i32,
    yExtent: i32,
};

pub const SCANINFO = extern struct {
    ADF: i32,
    TPA: i32,
    Endorser: i32,
    OpticalXResolution: i32,
    OpticalYResolution: i32,
    BedWidth: i32,
    BedHeight: i32,
    IntensityRange: RANGEVALUE,
    ContrastRange: RANGEVALUE,
    SupportedCompressionType: i32,
    SupportedDataTypes: i32,
    WidthPixels: i32,
    WidthBytes: i32,
    Lines: i32,
    DataType: i32,
    PixelBits: i32,
    Intensity: i32,
    Contrast: i32,
    Xresolution: i32,
    Yresolution: i32,
    Window: SCANWINDOW,
    DitherPattern: i32,
    Negative: i32,
    Mirror: i32,
    AutoBack: i32,
    ColorDitherPattern: i32,
    ToneMap: i32,
    Compression: i32,
    RawDataFormat: i32,
    RawPixelOrder: i32,
    bNeedDataAlignment: i32,
    DelayBetweenRead: i32,
    MaxBufferSize: i32,
    DeviceIOHandles: [16]?HANDLE,
    lReserved: [4]i32,
    pMicroDriverContext: ?*anyopaque,
};

pub const VAL = extern struct {
    lVal: i32,
    dblVal: f64,
    pGuid: ?*Guid,
    pScanInfo: ?*SCANINFO,
    handle: isize,
    ppButtonNames: ?*?*u16,
    pHandle: ?*?HANDLE,
    lReserved: i32,
    szVal: [255]CHAR,
};

pub const TWAIN_CAPABILITY = extern struct {
    lSize: i32,
    lMSG: i32,
    lCapID: i32,
    lConType: i32,
    lRC: i32,
    lCC: i32,
    lDataSize: i32,
    Data: [1]u8,
};

//--------------------------------------------------------------------------------
// Section: Functions (0)
//--------------------------------------------------------------------------------

//--------------------------------------------------------------------------------
// Section: Unicode Aliases (0)
//--------------------------------------------------------------------------------
const thismodule = @This();
pub usingnamespace switch (@import("../zig.zig").unicode_mode) {
    .ansi => struct {},
    .wide => struct {},
    .unspecified => if (@import("builtin").is_test) struct {} else struct {},
};
//--------------------------------------------------------------------------------
// Section: Imports (19)
//--------------------------------------------------------------------------------
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 HBITMAP = @import("../graphics/gdi.zig").HBITMAP;
const HICON = @import("../ui/windows_and_messaging.zig").HICON;
const HRESULT = @import("../foundation.zig").HRESULT;
const HWND = @import("../foundation.zig").HWND;
const IEnumSTATPROPSTG = @import("../system/com/structured_storage.zig").IEnumSTATPROPSTG;
const IStream = @import("../system/com.zig").IStream;
const IUnknown = @import("../system/com.zig").IUnknown;
const PROPSPEC = @import("../system/com/structured_storage.zig").PROPSPEC;
const PROPVARIANT = @import("../system/com/structured_storage.zig").PROPVARIANT;
const PWSTR = @import("../foundation.zig").PWSTR;
const RECT = @import("../foundation.zig").RECT;
const STATPROPSETSTG = @import("../system/com/structured_storage.zig").STATPROPSETSTG;
const STGMEDIUM = @import("../system/com.zig").STGMEDIUM;

test {
    // The following '_ = <FuncPtrType>' lines are a workaround for https://github.com/ziglang/zig/issues/4476
    if (@hasDecl(@This(), "DeviceDialogFunction")) {
        _ = DeviceDialogFunction;
    }

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