//! NOTE: this file is autogenerated, DO NOT MODIFY
//--------------------------------------------------------------------------------
// Section: Constants (737)
//--------------------------------------------------------------------------------
pub const GUID_DEVINTERFACE_DISPLAY_ADAPTER = Guid.initString("5b45201d-f2f2-4f3b-85bb-30ff1f953599");
pub const GUID_DEVINTERFACE_MONITOR = Guid.initString("e6f07b5f-ee97-4a90-b076-33f57bf4eaa7");
pub const GUID_DISPLAY_DEVICE_ARRIVAL = Guid.initString("1ca05180-a699-450a-9a0c-de4fbe3ddd89");
pub const GUID_DEVINTERFACE_VIDEO_OUTPUT_ARRIVAL = Guid.initString("1ad9e4f0-f88d-4360-bab9-4c2d55e564cd");
pub const DEVPKEY_IndirectDisplay = PROPERTYKEY{ .fmtid = Guid.initString("c50a3f10-aa5c-4247-b830-d6a6f8eaa310"), .pid = 1 };
pub const DEVPKEY_Device_TerminalLuid = PROPERTYKEY{ .fmtid = Guid.initString("c50a3f10-aa5c-4247-b830-d6a6f8eaa310"), .pid = 2 };
pub const DEVPKEY_Device_AdapterLuid = PROPERTYKEY{ .fmtid = Guid.initString("c50a3f10-aa5c-4247-b830-d6a6f8eaa310"), .pid = 3 };
pub const DEVPKEY_Device_ActivityId = PROPERTYKEY{ .fmtid = Guid.initString("c50a3f10-aa5c-4247-b830-d6a6f8eaa310"), .pid = 4 };
pub const INDIRECT_DISPLAY_INFO_FLAGS_CREATED_IDDCX_ADAPTER = @as(u32, 1);
pub const IOCTL_VIDEO_DISABLE_VDM = @as(u32, 2293764);
pub const IOCTL_VIDEO_REGISTER_VDM = @as(u32, 2293768);
pub const IOCTL_VIDEO_SET_OUTPUT_DEVICE_POWER_STATE = @as(u32, 2293772);
pub const IOCTL_VIDEO_GET_OUTPUT_DEVICE_POWER_STATE = @as(u32, 2293776);
pub const IOCTL_VIDEO_MONITOR_DEVICE = @as(u32, 2293780);
pub const IOCTL_VIDEO_ENUM_MONITOR_PDO = @as(u32, 2293784);
pub const IOCTL_VIDEO_INIT_WIN32K_CALLBACKS = @as(u32, 2293788);
pub const IOCTL_VIDEO_IS_VGA_DEVICE = @as(u32, 2293796);
pub const IOCTL_VIDEO_USE_DEVICE_IN_SESSION = @as(u32, 2293800);
pub const IOCTL_VIDEO_PREPARE_FOR_EARECOVERY = @as(u32, 2293804);
pub const IOCTL_VIDEO_ENABLE_VDM = @as(u32, 2293760);
pub const IOCTL_VIDEO_SAVE_HARDWARE_STATE = @as(u32, 2294272);
pub const IOCTL_VIDEO_RESTORE_HARDWARE_STATE = @as(u32, 2294276);
pub const IOCTL_VIDEO_HANDLE_VIDEOPARAMETERS = @as(u32, 2293792);
pub const IOCTL_VIDEO_QUERY_AVAIL_MODES = @as(u32, 2294784);
pub const IOCTL_VIDEO_QUERY_NUM_AVAIL_MODES = @as(u32, 2294788);
pub const IOCTL_VIDEO_QUERY_CURRENT_MODE = @as(u32, 2294792);
pub const IOCTL_VIDEO_SET_CURRENT_MODE = @as(u32, 2294796);
pub const IOCTL_VIDEO_RESET_DEVICE = @as(u32, 2294800);
pub const IOCTL_VIDEO_LOAD_AND_SET_FONT = @as(u32, 2294804);
pub const IOCTL_VIDEO_SET_PALETTE_REGISTERS = @as(u32, 2294808);
pub const IOCTL_VIDEO_SET_COLOR_REGISTERS = @as(u32, 2294812);
pub const IOCTL_VIDEO_ENABLE_CURSOR = @as(u32, 2294816);
pub const IOCTL_VIDEO_DISABLE_CURSOR = @as(u32, 2294820);
pub const IOCTL_VIDEO_SET_CURSOR_ATTR = @as(u32, 2294824);
pub const IOCTL_VIDEO_QUERY_CURSOR_ATTR = @as(u32, 2294828);
pub const IOCTL_VIDEO_SET_CURSOR_POSITION = @as(u32, 2294832);
pub const IOCTL_VIDEO_QUERY_CURSOR_POSITION = @as(u32, 2294836);
pub const IOCTL_VIDEO_ENABLE_POINTER = @as(u32, 2294840);
pub const IOCTL_VIDEO_DISABLE_POINTER = @as(u32, 2294844);
pub const IOCTL_VIDEO_SET_POINTER_ATTR = @as(u32, 2294848);
pub const IOCTL_VIDEO_QUERY_POINTER_ATTR = @as(u32, 2294852);
pub const IOCTL_VIDEO_SET_POINTER_POSITION = @as(u32, 2294856);
pub const IOCTL_VIDEO_QUERY_POINTER_POSITION = @as(u32, 2294860);
pub const IOCTL_VIDEO_QUERY_POINTER_CAPABILITIES = @as(u32, 2294864);
pub const IOCTL_VIDEO_GET_BANK_SELECT_CODE = @as(u32, 2294868);
pub const IOCTL_VIDEO_MAP_VIDEO_MEMORY = @as(u32, 2294872);
pub const IOCTL_VIDEO_UNMAP_VIDEO_MEMORY = @as(u32, 2294876);
pub const IOCTL_VIDEO_QUERY_PUBLIC_ACCESS_RANGES = @as(u32, 2294880);
pub const IOCTL_VIDEO_FREE_PUBLIC_ACCESS_RANGES = @as(u32, 2294884);
pub const IOCTL_VIDEO_QUERY_COLOR_CAPABILITIES = @as(u32, 2294888);
pub const IOCTL_VIDEO_SET_POWER_MANAGEMENT = @as(u32, 2294892);
pub const IOCTL_VIDEO_GET_POWER_MANAGEMENT = @as(u32, 2294896);
pub const IOCTL_VIDEO_SHARE_VIDEO_MEMORY = @as(u32, 2294900);
pub const IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY = @as(u32, 2294904);
pub const IOCTL_VIDEO_SET_COLOR_LUT_DATA = @as(u32, 2294908);
pub const IOCTL_VIDEO_GET_CHILD_STATE = @as(u32, 2294912);
pub const IOCTL_VIDEO_VALIDATE_CHILD_STATE_CONFIGURATION = @as(u32, 2294916);
pub const IOCTL_VIDEO_SET_CHILD_STATE_CONFIGURATION = @as(u32, 2294920);
pub const IOCTL_VIDEO_SWITCH_DUALVIEW = @as(u32, 2294924);
pub const IOCTL_VIDEO_SET_BANK_POSITION = @as(u32, 2294928);
pub const IOCTL_VIDEO_QUERY_SUPPORTED_BRIGHTNESS = @as(u32, 2294932);
pub const IOCTL_VIDEO_QUERY_DISPLAY_BRIGHTNESS = @as(u32, 2294936);
pub const IOCTL_VIDEO_SET_DISPLAY_BRIGHTNESS = @as(u32, 2294940);
pub const IOCTL_FSVIDEO_COPY_FRAME_BUFFER = @as(u32, 3409920);
pub const IOCTL_FSVIDEO_WRITE_TO_FRAME_BUFFER = @as(u32, 3409924);
pub const IOCTL_FSVIDEO_REVERSE_MOUSE_POINTER = @as(u32, 3409928);
pub const IOCTL_FSVIDEO_SET_CURRENT_MODE = @as(u32, 3409932);
pub const IOCTL_FSVIDEO_SET_SCREEN_INFORMATION = @as(u32, 3409936);
pub const IOCTL_FSVIDEO_SET_CURSOR_POSITION = @as(u32, 3409940);
pub const IOCTL_PANEL_QUERY_BRIGHTNESS_CAPS = @as(u32, 2296832);
pub const IOCTL_PANEL_QUERY_BRIGHTNESS_RANGES = @as(u32, 2296836);
pub const IOCTL_PANEL_GET_BRIGHTNESS = @as(u32, 2296840);
pub const IOCTL_PANEL_SET_BRIGHTNESS = @as(u32, 2296844);
pub const IOCTL_PANEL_SET_BRIGHTNESS_STATE = @as(u32, 2296848);
pub const IOCTL_PANEL_SET_BACKLIGHT_OPTIMIZATION = @as(u32, 2296852);
pub const IOCTL_PANEL_GET_BACKLIGHT_REDUCTION = @as(u32, 2296856);
pub const IOCTL_COLORSPACE_TRANSFORM_QUERY_TARGET_CAPS = @as(u32, 2297856);
pub const IOCTL_COLORSPACE_TRANSFORM_SET = @as(u32, 2297860);
pub const IOCTL_SET_ACTIVE_COLOR_PROFILE_NAME = @as(u32, 2297864);
pub const IOCTL_MIPI_DSI_QUERY_CAPS = @as(u32, 2298880);
pub const IOCTL_MIPI_DSI_TRANSMISSION = @as(u32, 2298884);
pub const IOCTL_MIPI_DSI_RESET = @as(u32, 2298888);
pub const DXGK_WIN32K_PARAM_FLAG_UPDATEREGISTRY = @as(u32, 1);
pub const DXGK_WIN32K_PARAM_FLAG_MODESWITCH = @as(u32, 2);
pub const DXGK_WIN32K_PARAM_FLAG_DISABLEVIEW = @as(u32, 4);
pub const VIDEO_DUALVIEW_REMOVABLE = @as(u32, 1);
pub const VIDEO_DUALVIEW_PRIMARY = @as(u32, 2147483648);
pub const VIDEO_DUALVIEW_SECONDARY = @as(u32, 1073741824);
pub const VIDEO_DUALVIEW_WDDM_VGA = @as(u32, 536870912);
pub const VIDEO_STATE_NON_STANDARD_VGA = @as(u32, 1);
pub const VIDEO_STATE_UNEMULATED_VGA_STATE = @as(u32, 2);
pub const VIDEO_STATE_PACKED_CHAIN4_MODE = @as(u32, 4);
pub const VIDEO_MODE_NO_ZERO_MEMORY = @as(u32, 2147483648);
pub const VIDEO_MODE_MAP_MEM_LINEAR = @as(u32, 1073741824);
pub const VIDEO_MODE_COLOR = @as(u32, 1);
pub const VIDEO_MODE_GRAPHICS = @as(u32, 2);
pub const VIDEO_MODE_PALETTE_DRIVEN = @as(u32, 4);
pub const VIDEO_MODE_MANAGED_PALETTE = @as(u32, 8);
pub const VIDEO_MODE_INTERLACED = @as(u32, 16);
pub const VIDEO_MODE_NO_OFF_SCREEN = @as(u32, 32);
pub const VIDEO_MODE_NO_64_BIT_ACCESS = @as(u32, 64);
pub const VIDEO_MODE_BANKED = @as(u32, 128);
pub const VIDEO_MODE_LINEAR = @as(u32, 256);
pub const VIDEO_MODE_ASYNC_POINTER = @as(u32, 1);
pub const VIDEO_MODE_MONO_POINTER = @as(u32, 2);
pub const VIDEO_MODE_COLOR_POINTER = @as(u32, 4);
pub const VIDEO_MODE_ANIMATE_START = @as(u32, 8);
pub const VIDEO_MODE_ANIMATE_UPDATE = @as(u32, 16);
pub const PLANAR_HC = @as(u32, 1);
pub const VIDEO_DEVICE_COLOR = @as(u32, 1);
pub const VIDEO_OPTIONAL_GAMMET_TABLE = @as(u32, 2);
pub const VIDEO_COLOR_LUT_DATA_FORMAT_RGB256WORDS = @as(u32, 1);
pub const VIDEO_COLOR_LUT_DATA_FORMAT_PRIVATEFORMAT = @as(u32, 2147483648);
pub const DISPLAYPOLICY_AC = @as(u32, 1);
pub const DISPLAYPOLICY_DC = @as(u32, 2);
pub const CHAR_TYPE_SBCS = @as(u32, 0);
pub const CHAR_TYPE_LEADING = @as(u32, 2);
pub const CHAR_TYPE_TRAILING = @as(u32, 3);
pub const BITMAP_BITS_BYTE_ALIGN = @as(u32, 8);
pub const BITMAP_BITS_WORD_ALIGN = @as(u32, 16);
pub const BITMAP_ARRAY_BYTE = @as(u32, 3);
pub const BITMAP_PLANES = @as(u32, 1);
pub const BITMAP_BITS_PIXEL = @as(u32, 1);
pub const VIDEO_REASON_NONE = @as(u32, 0);
pub const VIDEO_REASON_POLICY1 = @as(u32, 1);
pub const VIDEO_REASON_POLICY2 = @as(u32, 2);
pub const VIDEO_REASON_POLICY3 = @as(u32, 3);
pub const VIDEO_REASON_POLICY4 = @as(u32, 4);
pub const VIDEO_REASON_LOCK = @as(u32, 5);
pub const VIDEO_REASON_FAILED_ROTATION = @as(u32, 5);
pub const VIDEO_REASON_ALLOCATION = @as(u32, 6);
pub const VIDEO_REASON_SCRATCH = @as(u32, 8);
pub const VIDEO_REASON_CONFIGURATION = @as(u32, 9);
pub const VIDEO_MAX_REASON = @as(u32, 9);
pub const BRIGHTNESS_MAX_LEVEL_COUNT = @as(u32, 103);
pub const BRIGHTNESS_MAX_NIT_RANGE_COUNT = @as(u32, 16);
pub const DSI_PACKET_EMBEDDED_PAYLOAD_SIZE = @as(u32, 8);
pub const MAX_PACKET_COUNT = @as(u32, 128);
pub const DSI_INVALID_PACKET_INDEX = @as(u32, 255);
pub const DSI_SOT_ERROR = @as(u32, 1);
pub const DSI_SOT_SYNC_ERROR = @as(u32, 2);
pub const DSI_EOT_SYNC_ERROR = @as(u32, 4);
pub const DSI_ESCAPE_MODE_ENTRY_COMMAND_ERROR = @as(u32, 8);
pub const DSI_LOW_POWER_TRANSMIT_SYNC_ERROR = @as(u32, 16);
pub const DSI_PERIPHERAL_TIMEOUT_ERROR = @as(u32, 32);
pub const DSI_FALSE_CONTROL_ERROR = @as(u32, 64);
pub const DSI_CONTENTION_DETECTED = @as(u32, 128);
pub const DSI_CHECKSUM_ERROR_CORRECTED = @as(u32, 256);
pub const DSI_CHECKSUM_ERROR_NOT_CORRECTED = @as(u32, 512);
pub const DSI_LONG_PACKET_PAYLOAD_CHECKSUM_ERROR = @as(u32, 1024);
pub const DSI_DSI_DATA_TYPE_NOT_RECOGNIZED = @as(u32, 2048);
pub const DSI_DSI_VC_ID_INVALID = @as(u32, 4096);
pub const DSI_INVALID_TRANSMISSION_LENGTH = @as(u32, 8192);
pub const DSI_DSI_PROTOCOL_VIOLATION = @as(u32, 32768);
pub const HOST_DSI_DEVICE_NOT_READY = @as(u32, 1);
pub const HOST_DSI_INTERFACE_RESET = @as(u32, 2);
pub const HOST_DSI_DEVICE_RESET = @as(u32, 4);
pub const HOST_DSI_TRANSMISSION_CANCELLED = @as(u32, 16);
pub const HOST_DSI_TRANSMISSION_DROPPED = @as(u32, 32);
pub const HOST_DSI_TRANSMISSION_TIMEOUT = @as(u32, 64);
pub const HOST_DSI_INVALID_TRANSMISSION = @as(u32, 256);
pub const HOST_DSI_OS_REJECTED_PACKET = @as(u32, 512);
pub const HOST_DSI_DRIVER_REJECTED_PACKET = @as(u32, 1024);
pub const HOST_DSI_BAD_TRANSMISSION_MODE = @as(u32, 4096);
pub const GUID_MONITOR_OVERRIDE_PSEUDO_SPECIALIZED = Guid.initString("f196c02f-f86f-4f9a-aa15-e9cebdfe3b96");
pub const FD_ERROR = @as(u32, 4294967295);
pub const DDI_ERROR = @as(u32, 4294967295);
pub const FDM_TYPE_BM_SIDE_CONST = @as(u32, 1);
pub const FDM_TYPE_MAXEXT_EQUAL_BM_SIDE = @as(u32, 2);
pub const FDM_TYPE_CHAR_INC_EQUAL_BM_BASE = @as(u32, 4);
pub const FDM_TYPE_ZERO_BEARINGS = @as(u32, 8);
pub const FDM_TYPE_CONST_BEARINGS = @as(u32, 16);
pub const GS_UNICODE_HANDLES = @as(u32, 1);
pub const GS_8BIT_HANDLES = @as(u32, 2);
pub const GS_16BIT_HANDLES = @as(u32, 4);
pub const FM_VERSION_NUMBER = @as(u32, 0);
pub const FM_TYPE_LICENSED = @as(u32, 2);
pub const FM_READONLY_EMBED = @as(u32, 4);
pub const FM_EDITABLE_EMBED = @as(u32, 8);
pub const FM_NO_EMBEDDING = @as(u32, 2);
pub const FM_INFO_TECH_TRUETYPE = @as(u32, 1);
pub const FM_INFO_TECH_BITMAP = @as(u32, 2);
pub const FM_INFO_TECH_STROKE = @as(u32, 4);
pub const FM_INFO_TECH_OUTLINE_NOT_TRUETYPE = @as(u32, 8);
pub const FM_INFO_ARB_XFORMS = @as(u32, 16);
pub const FM_INFO_1BPP = @as(u32, 32);
pub const FM_INFO_4BPP = @as(u32, 64);
pub const FM_INFO_8BPP = @as(u32, 128);
pub const FM_INFO_16BPP = @as(u32, 256);
pub const FM_INFO_24BPP = @as(u32, 512);
pub const FM_INFO_32BPP = @as(u32, 1024);
pub const FM_INFO_INTEGER_WIDTH = @as(u32, 2048);
pub const FM_INFO_CONSTANT_WIDTH = @as(u32, 4096);
pub const FM_INFO_NOT_CONTIGUOUS = @as(u32, 8192);
pub const FM_INFO_TECH_MM = @as(u32, 16384);
pub const FM_INFO_RETURNS_OUTLINES = @as(u32, 32768);
pub const FM_INFO_RETURNS_STROKES = @as(u32, 65536);
pub const FM_INFO_RETURNS_BITMAPS = @as(u32, 131072);
pub const FM_INFO_DSIG = @as(u32, 262144);
pub const FM_INFO_RIGHT_HANDED = @as(u32, 524288);
pub const FM_INFO_INTEGRAL_SCALING = @as(u32, 1048576);
pub const FM_INFO_90DEGREE_ROTATIONS = @as(u32, 2097152);
pub const FM_INFO_OPTICALLY_FIXED_PITCH = @as(u32, 4194304);
pub const FM_INFO_DO_NOT_ENUMERATE = @as(u32, 8388608);
pub const FM_INFO_ISOTROPIC_SCALING_ONLY = @as(u32, 16777216);
pub const FM_INFO_ANISOTROPIC_SCALING_ONLY = @as(u32, 33554432);
pub const FM_INFO_TECH_CFF = @as(u32, 67108864);
pub const FM_INFO_FAMILY_EQUIV = @as(u32, 134217728);
pub const FM_INFO_DBCS_FIXED_PITCH = @as(u32, 268435456);
pub const FM_INFO_NONNEGATIVE_AC = @as(u32, 536870912);
pub const FM_INFO_IGNORE_TC_RA_ABLE = @as(u32, 1073741824);
pub const FM_INFO_TECH_TYPE1 = @as(u32, 2147483648);
pub const MAXCHARSETS = @as(u32, 16);
pub const FM_PANOSE_CULTURE_LATIN = @as(u32, 0);
pub const FM_SEL_ITALIC = @as(u32, 1);
pub const FM_SEL_UNDERSCORE = @as(u32, 2);
pub const FM_SEL_NEGATIVE = @as(u32, 4);
pub const FM_SEL_OUTLINED = @as(u32, 8);
pub const FM_SEL_STRIKEOUT = @as(u32, 16);
pub const FM_SEL_BOLD = @as(u32, 32);
pub const FM_SEL_REGULAR = @as(u32, 64);
pub const OPENGL_CMD = @as(u32, 4352);
pub const OPENGL_GETINFO = @as(u32, 4353);
pub const WNDOBJ_SETUP = @as(u32, 4354);
pub const DDI_DRIVER_VERSION_NT4 = @as(u32, 131072);
pub const DDI_DRIVER_VERSION_SP3 = @as(u32, 131075);
pub const DDI_DRIVER_VERSION_NT5 = @as(u32, 196608);
pub const DDI_DRIVER_VERSION_NT5_01 = @as(u32, 196864);
pub const DDI_DRIVER_VERSION_NT5_01_SP1 = @as(u32, 196865);
pub const GDI_DRIVER_VERSION = @as(u32, 16384);
pub const INDEX_DrvEnablePDEV = @as(i32, 0);
pub const INDEX_DrvCompletePDEV = @as(i32, 1);
pub const INDEX_DrvDisablePDEV = @as(i32, 2);
pub const INDEX_DrvEnableSurface = @as(i32, 3);
pub const INDEX_DrvDisableSurface = @as(i32, 4);
pub const INDEX_DrvAssertMode = @as(i32, 5);
pub const INDEX_DrvOffset = @as(i32, 6);
pub const INDEX_DrvResetPDEV = @as(i32, 7);
pub const INDEX_DrvDisableDriver = @as(i32, 8);
pub const INDEX_DrvCreateDeviceBitmap = @as(i32, 10);
pub const INDEX_DrvDeleteDeviceBitmap = @as(i32, 11);
pub const INDEX_DrvRealizeBrush = @as(i32, 12);
pub const INDEX_DrvDitherColor = @as(i32, 13);
pub const INDEX_DrvStrokePath = @as(i32, 14);
pub const INDEX_DrvFillPath = @as(i32, 15);
pub const INDEX_DrvStrokeAndFillPath = @as(i32, 16);
pub const INDEX_DrvPaint = @as(i32, 17);
pub const INDEX_DrvBitBlt = @as(i32, 18);
pub const INDEX_DrvCopyBits = @as(i32, 19);
pub const INDEX_DrvStretchBlt = @as(i32, 20);
pub const INDEX_DrvSetPalette = @as(i32, 22);
pub const INDEX_DrvTextOut = @as(i32, 23);
pub const INDEX_DrvEscape = @as(i32, 24);
pub const INDEX_DrvDrawEscape = @as(i32, 25);
pub const INDEX_DrvQueryFont = @as(i32, 26);
pub const INDEX_DrvQueryFontTree = @as(i32, 27);
pub const INDEX_DrvQueryFontData = @as(i32, 28);
pub const INDEX_DrvSetPointerShape = @as(i32, 29);
pub const INDEX_DrvMovePointer = @as(i32, 30);
pub const INDEX_DrvLineTo = @as(i32, 31);
pub const INDEX_DrvSendPage = @as(i32, 32);
pub const INDEX_DrvStartPage = @as(i32, 33);
pub const INDEX_DrvEndDoc = @as(i32, 34);
pub const INDEX_DrvStartDoc = @as(i32, 35);
pub const INDEX_DrvGetGlyphMode = @as(i32, 37);
pub const INDEX_DrvSynchronize = @as(i32, 38);
pub const INDEX_DrvSaveScreenBits = @as(i32, 40);
pub const INDEX_DrvGetModes = @as(i32, 41);
pub const INDEX_DrvFree = @as(i32, 42);
pub const INDEX_DrvDestroyFont = @as(i32, 43);
pub const INDEX_DrvQueryFontCaps = @as(i32, 44);
pub const INDEX_DrvLoadFontFile = @as(i32, 45);
pub const INDEX_DrvUnloadFontFile = @as(i32, 46);
pub const INDEX_DrvFontManagement = @as(i32, 47);
pub const INDEX_DrvQueryTrueTypeTable = @as(i32, 48);
pub const INDEX_DrvQueryTrueTypeOutline = @as(i32, 49);
pub const INDEX_DrvGetTrueTypeFile = @as(i32, 50);
pub const INDEX_DrvQueryFontFile = @as(i32, 51);
pub const INDEX_DrvMovePanning = @as(i32, 52);
pub const INDEX_DrvQueryAdvanceWidths = @as(i32, 53);
pub const INDEX_DrvSetPixelFormat = @as(i32, 54);
pub const INDEX_DrvDescribePixelFormat = @as(i32, 55);
pub const INDEX_DrvSwapBuffers = @as(i32, 56);
pub const INDEX_DrvStartBanding = @as(i32, 57);
pub const INDEX_DrvNextBand = @as(i32, 58);
pub const INDEX_DrvGetDirectDrawInfo = @as(i32, 59);
pub const INDEX_DrvEnableDirectDraw = @as(i32, 60);
pub const INDEX_DrvDisableDirectDraw = @as(i32, 61);
pub const INDEX_DrvQuerySpoolType = @as(i32, 62);
pub const INDEX_DrvIcmCreateColorTransform = @as(i32, 64);
pub const INDEX_DrvIcmDeleteColorTransform = @as(i32, 65);
pub const INDEX_DrvIcmCheckBitmapBits = @as(i32, 66);
pub const INDEX_DrvIcmSetDeviceGammaRamp = @as(i32, 67);
pub const INDEX_DrvGradientFill = @as(i32, 68);
pub const INDEX_DrvStretchBltROP = @as(i32, 69);
pub const INDEX_DrvPlgBlt = @as(i32, 70);
pub const INDEX_DrvAlphaBlend = @as(i32, 71);
pub const INDEX_DrvSynthesizeFont = @as(i32, 72);
pub const INDEX_DrvGetSynthesizedFontFiles = @as(i32, 73);
pub const INDEX_DrvTransparentBlt = @as(i32, 74);
pub const INDEX_DrvQueryPerBandInfo = @as(i32, 75);
pub const INDEX_DrvQueryDeviceSupport = @as(i32, 76);
pub const INDEX_DrvReserved1 = @as(i32, 77);
pub const INDEX_DrvReserved2 = @as(i32, 78);
pub const INDEX_DrvReserved3 = @as(i32, 79);
pub const INDEX_DrvReserved4 = @as(i32, 80);
pub const INDEX_DrvReserved5 = @as(i32, 81);
pub const INDEX_DrvReserved6 = @as(i32, 82);
pub const INDEX_DrvReserved7 = @as(i32, 83);
pub const INDEX_DrvReserved8 = @as(i32, 84);
pub const INDEX_DrvDeriveSurface = @as(i32, 85);
pub const INDEX_DrvQueryGlyphAttrs = @as(i32, 86);
pub const INDEX_DrvNotify = @as(i32, 87);
pub const INDEX_DrvSynchronizeSurface = @as(i32, 88);
pub const INDEX_DrvResetDevice = @as(i32, 89);
pub const INDEX_DrvReserved9 = @as(i32, 90);
pub const INDEX_DrvReserved10 = @as(i32, 91);
pub const INDEX_DrvReserved11 = @as(i32, 92);
pub const INDEX_DrvRenderHint = @as(i32, 93);
pub const INDEX_DrvCreateDeviceBitmapEx = @as(i32, 94);
pub const INDEX_DrvDeleteDeviceBitmapEx = @as(i32, 95);
pub const INDEX_DrvAssociateSharedSurface = @as(i32, 96);
pub const INDEX_DrvSynchronizeRedirectionBitmaps = @as(i32, 97);
pub const INDEX_DrvAccumulateD3DDirtyRect = @as(i32, 98);
pub const INDEX_DrvStartDxInterop = @as(i32, 99);
pub const INDEX_DrvEndDxInterop = @as(i32, 100);
pub const INDEX_DrvLockDisplayArea = @as(i32, 101);
pub const INDEX_DrvUnlockDisplayArea = @as(i32, 102);
pub const INDEX_DrvSurfaceComplete = @as(i32, 103);
pub const INDEX_LAST = @as(i32, 89);
pub const GCAPS_BEZIERS = @as(u32, 1);
pub const GCAPS_GEOMETRICWIDE = @as(u32, 2);
pub const GCAPS_ALTERNATEFILL = @as(u32, 4);
pub const GCAPS_WINDINGFILL = @as(u32, 8);
pub const GCAPS_HALFTONE = @as(u32, 16);
pub const GCAPS_COLOR_DITHER = @as(u32, 32);
pub const GCAPS_HORIZSTRIKE = @as(u32, 64);
pub const GCAPS_VERTSTRIKE = @as(u32, 128);
pub const GCAPS_OPAQUERECT = @as(u32, 256);
pub const GCAPS_VECTORFONT = @as(u32, 512);
pub const GCAPS_MONO_DITHER = @as(u32, 1024);
pub const GCAPS_ASYNCCHANGE = @as(u32, 2048);
pub const GCAPS_ASYNCMOVE = @as(u32, 4096);
pub const GCAPS_DONTJOURNAL = @as(u32, 8192);
pub const GCAPS_DIRECTDRAW = @as(u32, 16384);
pub const GCAPS_ARBRUSHOPAQUE = @as(u32, 32768);
pub const GCAPS_PANNING = @as(u32, 65536);
pub const GCAPS_HIGHRESTEXT = @as(u32, 262144);
pub const GCAPS_PALMANAGED = @as(u32, 524288);
pub const GCAPS_DITHERONREALIZE = @as(u32, 2097152);
pub const GCAPS_NO64BITMEMACCESS = @as(u32, 4194304);
pub const GCAPS_FORCEDITHER = @as(u32, 8388608);
pub const GCAPS_GRAY16 = @as(u32, 16777216);
pub const GCAPS_ICM = @as(u32, 33554432);
pub const GCAPS_CMYKCOLOR = @as(u32, 67108864);
pub const GCAPS_LAYERED = @as(u32, 134217728);
pub const GCAPS_ARBRUSHTEXT = @as(u32, 268435456);
pub const GCAPS_SCREENPRECISION = @as(u32, 536870912);
pub const GCAPS_FONT_RASTERIZER = @as(u32, 1073741824);
pub const GCAPS_NUP = @as(u32, 2147483648);
pub const GCAPS2_JPEGSRC = @as(u32, 1);
pub const GCAPS2_xxxx = @as(u32, 2);
pub const GCAPS2_PNGSRC = @as(u32, 8);
pub const GCAPS2_CHANGEGAMMARAMP = @as(u32, 16);
pub const GCAPS2_ALPHACURSOR = @as(u32, 32);
pub const GCAPS2_SYNCFLUSH = @as(u32, 64);
pub const GCAPS2_SYNCTIMER = @as(u32, 128);
pub const GCAPS2_ICD_MULTIMON = @as(u32, 256);
pub const GCAPS2_MOUSETRAILS = @as(u32, 512);
pub const GCAPS2_RESERVED1 = @as(u32, 1024);
pub const GCAPS2_REMOTEDRIVER = @as(u32, 1024);
pub const GCAPS2_EXCLUDELAYERED = @as(u32, 2048);
pub const GCAPS2_INCLUDEAPIBITMAPS = @as(u32, 4096);
pub const GCAPS2_SHOWHIDDENPOINTER = @as(u32, 8192);
pub const GCAPS2_CLEARTYPE = @as(u32, 16384);
pub const GCAPS2_ACC_DRIVER = @as(u32, 32768);
pub const GCAPS2_BITMAPEXREUSE = @as(u32, 65536);
pub const LA_GEOMETRIC = @as(u32, 1);
pub const LA_ALTERNATE = @as(u32, 2);
pub const LA_STARTGAP = @as(u32, 4);
pub const LA_STYLED = @as(u32, 8);
pub const JOIN_ROUND = @as(i32, 0);
pub const JOIN_BEVEL = @as(i32, 1);
pub const JOIN_MITER = @as(i32, 2);
pub const ENDCAP_ROUND = @as(i32, 0);
pub const ENDCAP_SQUARE = @as(i32, 1);
pub const ENDCAP_BUTT = @as(i32, 2);
pub const PRIMARY_ORDER_ABC = @as(u32, 0);
pub const PRIMARY_ORDER_ACB = @as(u32, 1);
pub const PRIMARY_ORDER_BAC = @as(u32, 2);
pub const PRIMARY_ORDER_BCA = @as(u32, 3);
pub const PRIMARY_ORDER_CBA = @as(u32, 4);
pub const PRIMARY_ORDER_CAB = @as(u32, 5);
pub const HT_PATSIZE_2x2 = @as(u32, 0);
pub const HT_PATSIZE_2x2_M = @as(u32, 1);
pub const HT_PATSIZE_4x4 = @as(u32, 2);
pub const HT_PATSIZE_4x4_M = @as(u32, 3);
pub const HT_PATSIZE_6x6 = @as(u32, 4);
pub const HT_PATSIZE_6x6_M = @as(u32, 5);
pub const HT_PATSIZE_8x8 = @as(u32, 6);
pub const HT_PATSIZE_8x8_M = @as(u32, 7);
pub const HT_PATSIZE_10x10 = @as(u32, 8);
pub const HT_PATSIZE_10x10_M = @as(u32, 9);
pub const HT_PATSIZE_12x12 = @as(u32, 10);
pub const HT_PATSIZE_12x12_M = @as(u32, 11);
pub const HT_PATSIZE_14x14 = @as(u32, 12);
pub const HT_PATSIZE_14x14_M = @as(u32, 13);
pub const HT_PATSIZE_16x16 = @as(u32, 14);
pub const HT_PATSIZE_16x16_M = @as(u32, 15);
pub const HT_PATSIZE_SUPERCELL = @as(u32, 16);
pub const HT_PATSIZE_SUPERCELL_M = @as(u32, 17);
pub const HT_PATSIZE_USER = @as(u32, 18);
pub const HT_PATSIZE_MAX_INDEX = @as(u32, 18);
pub const HT_PATSIZE_DEFAULT = @as(u32, 17);
pub const HT_USERPAT_CX_MIN = @as(u32, 4);
pub const HT_USERPAT_CX_MAX = @as(u32, 256);
pub const HT_USERPAT_CY_MIN = @as(u32, 4);
pub const HT_USERPAT_CY_MAX = @as(u32, 256);
pub const HT_FORMAT_1BPP = @as(u32, 0);
pub const HT_FORMAT_4BPP = @as(u32, 2);
pub const HT_FORMAT_4BPP_IRGB = @as(u32, 3);
pub const HT_FORMAT_8BPP = @as(u32, 4);
pub const HT_FORMAT_16BPP = @as(u32, 5);
pub const HT_FORMAT_24BPP = @as(u32, 6);
pub const HT_FORMAT_32BPP = @as(u32, 7);
pub const WINDDI_MAX_BROADCAST_CONTEXT = @as(u32, 64);
pub const HT_FLAG_SQUARE_DEVICE_PEL = @as(u32, 1);
pub const HT_FLAG_HAS_BLACK_DYE = @as(u32, 2);
pub const HT_FLAG_ADDITIVE_PRIMS = @as(u32, 4);
pub const HT_FLAG_USE_8BPP_BITMASK = @as(u32, 8);
pub const HT_FLAG_INK_HIGH_ABSORPTION = @as(u32, 16);
pub const HT_FLAG_INK_ABSORPTION_INDICES = @as(u32, 96);
pub const HT_FLAG_DO_DEVCLR_XFORM = @as(u32, 128);
pub const HT_FLAG_OUTPUT_CMY = @as(u32, 256);
pub const HT_FLAG_PRINT_DRAFT_MODE = @as(u32, 512);
pub const HT_FLAG_INVERT_8BPP_BITMASK_IDX = @as(u32, 1024);
pub const HT_FLAG_8BPP_CMY332_MASK = @as(u32, 4278190080);
pub const HT_FLAG_INK_ABSORPTION_IDX0 = @as(u32, 0);
pub const HT_FLAG_INK_ABSORPTION_IDX1 = @as(u32, 32);
pub const HT_FLAG_INK_ABSORPTION_IDX2 = @as(u32, 64);
pub const HT_FLAG_INK_ABSORPTION_IDX3 = @as(u32, 96);
pub const HT_FLAG_NORMAL_INK_ABSORPTION = @as(u32, 0);
pub const HT_FLAG_LOW_INK_ABSORPTION = @as(u32, 32);
pub const HT_FLAG_LOWER_INK_ABSORPTION = @as(u32, 64);
pub const HT_FLAG_LOWEST_INK_ABSORPTION = @as(u32, 96);
pub const PPC_DEFAULT = @as(u32, 0);
pub const PPC_UNDEFINED = @as(u32, 1);
pub const PPC_RGB_ORDER_VERTICAL_STRIPES = @as(u32, 2);
pub const PPC_BGR_ORDER_VERTICAL_STRIPES = @as(u32, 3);
pub const PPC_RGB_ORDER_HORIZONTAL_STRIPES = @as(u32, 4);
pub const PPC_BGR_ORDER_HORIZONTAL_STRIPES = @as(u32, 5);
pub const PPG_DEFAULT = @as(u32, 0);
pub const PPG_SRGB = @as(u32, 1);
pub const BR_DEVICE_ICM = @as(u32, 1);
pub const BR_HOST_ICM = @as(u32, 2);
pub const BR_CMYKCOLOR = @as(u32, 4);
pub const BR_ORIGCOLOR = @as(u32, 8);
pub const FO_SIM_BOLD = @as(u32, 8192);
pub const FO_SIM_ITALIC = @as(u32, 16384);
pub const FO_EM_HEIGHT = @as(u32, 32768);
pub const FO_GRAY16 = @as(u32, 65536);
pub const FO_NOGRAY16 = @as(u32, 131072);
pub const FO_NOHINTS = @as(u32, 262144);
pub const FO_NO_CHOICE = @as(u32, 524288);
pub const FO_CFF = @as(u32, 1048576);
pub const FO_POSTSCRIPT = @as(u32, 2097152);
pub const FO_MULTIPLEMASTER = @as(u32, 4194304);
pub const FO_VERT_FACE = @as(u32, 8388608);
pub const FO_DBCS_FONT = @as(u32, 16777216);
pub const FO_NOCLEARTYPE = @as(u32, 33554432);
pub const FO_CLEARTYPE_X = @as(u32, 268435456);
pub const FO_CLEARTYPE_Y = @as(u32, 536870912);
pub const FO_CLEARTYPENATURAL_X = @as(u32, 1073741824);
pub const DC_TRIVIAL = @as(u32, 0);
pub const DC_RECT = @as(u32, 1);
pub const DC_COMPLEX = @as(u32, 3);
pub const FC_RECT = @as(u32, 1);
pub const FC_RECT4 = @as(u32, 2);
pub const FC_COMPLEX = @as(u32, 3);
pub const TC_RECTANGLES = @as(u32, 0);
pub const TC_PATHOBJ = @as(u32, 2);
pub const OC_BANK_CLIP = @as(u32, 1);
pub const CT_RECTANGLES = @as(i32, 0);
pub const CD_RIGHTDOWN = @as(i32, 0);
pub const CD_LEFTDOWN = @as(i32, 1);
pub const CD_RIGHTUP = @as(i32, 2);
pub const CD_LEFTUP = @as(i32, 3);
pub const CD_ANY = @as(i32, 4);
pub const CD_LEFTWARDS = @as(i32, 1);
pub const CD_UPWARDS = @as(i32, 2);
pub const FO_HGLYPHS = @as(i32, 0);
pub const FO_GLYPHBITS = @as(i32, 1);
pub const FO_PATHOBJ = @as(i32, 2);
pub const FD_NEGATIVE_FONT = @as(i32, 1);
pub const FO_DEVICE_FONT = @as(i32, 1);
pub const FO_OUTLINE_CAPABLE = @as(i32, 2);
pub const SO_FLAG_DEFAULT_PLACEMENT = @as(u32, 1);
pub const SO_HORIZONTAL = @as(u32, 2);
pub const SO_VERTICAL = @as(u32, 4);
pub const SO_REVERSED = @as(u32, 8);
pub const SO_ZERO_BEARINGS = @as(u32, 16);
pub const SO_CHAR_INC_EQUAL_BM_BASE = @as(u32, 32);
pub const SO_MAXEXT_EQUAL_BM_SIDE = @as(u32, 64);
pub const SO_DO_NOT_SUBSTITUTE_DEVICE_FONT = @as(u32, 128);
pub const SO_GLYPHINDEX_TEXTOUT = @as(u32, 256);
pub const SO_ESC_NOT_ORIENT = @as(u32, 512);
pub const SO_DXDY = @as(u32, 1024);
pub const SO_CHARACTER_EXTRA = @as(u32, 2048);
pub const SO_BREAK_EXTRA = @as(u32, 4096);
pub const FO_ATTR_MODE_ROTATE = @as(u32, 1);
pub const PAL_INDEXED = @as(u32, 1);
pub const PAL_BITFIELDS = @as(u32, 2);
pub const PAL_RGB = @as(u32, 4);
pub const PAL_BGR = @as(u32, 8);
pub const PAL_CMYK = @as(u32, 16);
pub const PO_BEZIERS = @as(u32, 1);
pub const PO_ELLIPSE = @as(u32, 2);
pub const PO_ALL_INTEGERS = @as(u32, 4);
pub const PO_ENUM_AS_INTEGERS = @as(u32, 8);
pub const PO_WIDENED = @as(u32, 16);
pub const PD_BEGINSUBPATH = @as(u32, 1);
pub const PD_ENDSUBPATH = @as(u32, 2);
pub const PD_RESETSTYLE = @as(u32, 4);
pub const PD_CLOSEFIGURE = @as(u32, 8);
pub const PD_BEZIERS = @as(u32, 16);
pub const SGI_EXTRASPACE = @as(u32, 0);
pub const STYPE_BITMAP = @as(i32, 0);
pub const STYPE_DEVBITMAP = @as(i32, 3);
pub const BMF_1BPP = @as(i32, 1);
pub const BMF_4BPP = @as(i32, 2);
pub const BMF_8BPP = @as(i32, 3);
pub const BMF_16BPP = @as(i32, 4);
pub const BMF_24BPP = @as(i32, 5);
pub const BMF_32BPP = @as(i32, 6);
pub const BMF_4RLE = @as(i32, 7);
pub const BMF_8RLE = @as(i32, 8);
pub const BMF_JPEG = @as(i32, 9);
pub const BMF_PNG = @as(i32, 10);
pub const BMF_TOPDOWN = @as(u32, 1);
pub const BMF_NOZEROINIT = @as(u32, 2);
pub const BMF_DONTCACHE = @as(u32, 4);
pub const BMF_USERMEM = @as(u32, 8);
pub const BMF_KMSECTION = @as(u32, 16);
pub const BMF_NOTSYSMEM = @as(u32, 32);
pub const BMF_WINDOW_BLT = @as(u32, 64);
pub const BMF_UMPDMEM = @as(u32, 128);
pub const BMF_TEMP_ALPHA = @as(u32, 256);
pub const BMF_ACC_NOTIFY = @as(u32, 32768);
pub const BMF_RMT_ENTER = @as(u32, 16384);
pub const BMF_RESERVED = @as(u32, 15872);
pub const GX_IDENTITY = @as(i32, 0);
pub const GX_OFFSET = @as(i32, 1);
pub const GX_SCALE = @as(i32, 2);
pub const GX_GENERAL = @as(i32, 3);
pub const XF_LTOL = @as(i32, 0);
pub const XF_INV_LTOL = @as(i32, 1);
pub const XF_LTOFX = @as(i32, 2);
pub const XF_INV_FXTOL = @as(i32, 3);
pub const XO_TRIVIAL = @as(u32, 1);
pub const XO_TABLE = @as(u32, 2);
pub const XO_TO_MONO = @as(u32, 4);
pub const XO_FROM_CMYK = @as(u32, 8);
pub const XO_DEVICE_ICM = @as(u32, 16);
pub const XO_HOST_ICM = @as(u32, 32);
pub const XO_SRCPALETTE = @as(u32, 1);
pub const XO_DESTPALETTE = @as(u32, 2);
pub const XO_DESTDCPALETTE = @as(u32, 3);
pub const XO_SRCBITFIELDS = @as(u32, 4);
pub const XO_DESTBITFIELDS = @as(u32, 5);
pub const HOOK_BITBLT = @as(u32, 1);
pub const HOOK_STRETCHBLT = @as(u32, 2);
pub const HOOK_PLGBLT = @as(u32, 4);
pub const HOOK_TEXTOUT = @as(u32, 8);
pub const HOOK_PAINT = @as(u32, 16);
pub const HOOK_STROKEPATH = @as(u32, 32);
pub const HOOK_FILLPATH = @as(u32, 64);
pub const HOOK_STROKEANDFILLPATH = @as(u32, 128);
pub const HOOK_LINETO = @as(u32, 256);
pub const HOOK_COPYBITS = @as(u32, 1024);
pub const HOOK_MOVEPANNING = @as(u32, 2048);
pub const HOOK_SYNCHRONIZE = @as(u32, 4096);
pub const HOOK_STRETCHBLTROP = @as(u32, 8192);
pub const HOOK_SYNCHRONIZEACCESS = @as(u32, 16384);
pub const HOOK_TRANSPARENTBLT = @as(u32, 32768);
pub const HOOK_ALPHABLEND = @as(u32, 65536);
pub const HOOK_GRADIENTFILL = @as(u32, 131072);
pub const HOOK_FLAGS = @as(u32, 243199);
pub const MS_NOTSYSTEMMEMORY = @as(u32, 1);
pub const MS_SHAREDACCESS = @as(u32, 2);
pub const MS_CDDDEVICEBITMAP = @as(u32, 4);
pub const MS_REUSEDDEVICEBITMAP = @as(u32, 8);
pub const DRVQUERY_USERMODE = @as(u32, 1);
pub const HS_DDI_MAX = @as(u32, 6);
pub const DRD_SUCCESS = @as(u32, 0);
pub const DRD_ERROR = @as(u32, 1);
pub const SS_SAVE = @as(u32, 0);
pub const SS_RESTORE = @as(u32, 1);
pub const SS_FREE = @as(u32, 2);
pub const CDBEX_REDIRECTION = @as(u32, 1);
pub const CDBEX_DXINTEROP = @as(u32, 2);
pub const CDBEX_NTSHAREDSURFACEHANDLE = @as(u32, 4);
pub const CDBEX_CROSSADAPTER = @as(u32, 8);
pub const CDBEX_REUSE = @as(u32, 16);
pub const WINDDI_MAXSETPALETTECOLORS = @as(u32, 256);
pub const WINDDI_MAXSETPALETTECOLORINDEX = @as(u32, 255);
pub const DM_DEFAULT = @as(u32, 1);
pub const DM_MONOCHROME = @as(u32, 2);
pub const DCR_SOLID = @as(u32, 0);
pub const DCR_DRIVER = @as(u32, 1);
pub const DCR_HALFTONE = @as(u32, 2);
pub const RB_DITHERCOLOR = @as(i32, -2147483648);
pub const QFT_LIGATURES = @as(i32, 1);
pub const QFT_KERNPAIRS = @as(i32, 2);
pub const QFT_GLYPHSET = @as(i32, 3);
pub const QFD_GLYPHANDBITMAP = @as(i32, 1);
pub const QFD_GLYPHANDOUTLINE = @as(i32, 2);
pub const QFD_MAXEXTENTS = @as(i32, 3);
pub const QFD_TT_GLYPHANDBITMAP = @as(i32, 4);
pub const QFD_TT_GRAY1_BITMAP = @as(i32, 5);
pub const QFD_TT_GRAY2_BITMAP = @as(i32, 6);
pub const QFD_TT_GRAY4_BITMAP = @as(i32, 8);
pub const QFD_TT_GRAY8_BITMAP = @as(i32, 9);
pub const QFD_TT_MONO_BITMAP = @as(i32, 5);
pub const QC_OUTLINES = @as(u32, 1);
pub const QC_1BIT = @as(u32, 2);
pub const QC_4BIT = @as(u32, 4);
pub const FF_SIGNATURE_VERIFIED = @as(u32, 1);
pub const FF_IGNORED_SIGNATURE = @as(u32, 2);
pub const QAW_GETWIDTHS = @as(u32, 0);
pub const QAW_GETEASYWIDTHS = @as(u32, 1);
pub const TTO_METRICS_ONLY = @as(u32, 1);
pub const TTO_QUBICS = @as(u32, 2);
pub const TTO_UNHINTED = @as(u32, 4);
pub const QFF_DESCRIPTION = @as(i32, 1);
pub const QFF_NUMFACES = @as(i32, 2);
pub const FP_ALTERNATEMODE = @as(i32, 1);
pub const FP_WINDINGMODE = @as(i32, 2);
pub const SPS_ERROR = @as(u32, 0);
pub const SPS_DECLINE = @as(u32, 1);
pub const SPS_ACCEPT_NOEXCLUDE = @as(u32, 2);
pub const SPS_ACCEPT_EXCLUDE = @as(u32, 3);
pub const SPS_ACCEPT_SYNCHRONOUS = @as(u32, 4);
pub const SPS_CHANGE = @as(i32, 1);
pub const SPS_ASYNCCHANGE = @as(i32, 2);
pub const SPS_ANIMATESTART = @as(i32, 4);
pub const SPS_ANIMATEUPDATE = @as(i32, 8);
pub const SPS_ALPHA = @as(i32, 16);
pub const SPS_RESERVED = @as(i32, 32);
pub const SPS_RESERVED1 = @as(i32, 64);
pub const SPS_FLAGSMASK = @as(i32, 255);
pub const SPS_LENGTHMASK = @as(i32, 3840);
pub const SPS_FREQMASK = @as(i32, 1044480);
pub const ED_ABORTDOC = @as(u32, 1);
pub const IGRF_RGB_256BYTES = @as(u32, 0);
pub const IGRF_RGB_256WORDS = @as(u32, 1);
pub const QDS_CHECKJPEGFORMAT = @as(u32, 0);
pub const QDS_CHECKPNGFORMAT = @as(u32, 1);
pub const DSS_TIMER_EVENT = @as(u32, 1);
pub const DSS_FLUSH_EVENT = @as(u32, 2);
pub const DSS_RESERVED = @as(u32, 4);
pub const DSS_RESERVED1 = @as(u32, 8);
pub const DSS_RESERVED2 = @as(u32, 16);
pub const DN_ACCELERATION_LEVEL = @as(u32, 1);
pub const DN_DEVICE_ORIGIN = @as(u32, 2);
pub const DN_SLEEP_MODE = @as(u32, 3);
pub const DN_DRAWING_BEGIN = @as(u32, 4);
pub const DN_ASSOCIATE_WINDOW = @as(u32, 5);
pub const DN_COMPOSITION_CHANGED = @as(u32, 6);
pub const DN_DRAWING_BEGIN_APIBITMAP = @as(u32, 7);
pub const DN_SURFOBJ_DESTRUCTION = @as(u32, 8);
pub const WOC_RGN_CLIENT_DELTA = @as(u32, 1);
pub const WOC_RGN_CLIENT = @as(u32, 2);
pub const WOC_RGN_SURFACE_DELTA = @as(u32, 4);
pub const WOC_RGN_SURFACE = @as(u32, 8);
pub const WOC_CHANGED = @as(u32, 16);
pub const WOC_DELETE = @as(u32, 32);
pub const WOC_DRAWN = @as(u32, 64);
pub const WOC_SPRITE_OVERLAP = @as(u32, 128);
pub const WOC_SPRITE_NO_OVERLAP = @as(u32, 256);
pub const WOC_RGN_SPRITE = @as(u32, 512);
pub const WO_RGN_CLIENT_DELTA = @as(u32, 1);
pub const WO_RGN_CLIENT = @as(u32, 2);
pub const WO_RGN_SURFACE_DELTA = @as(u32, 4);
pub const WO_RGN_SURFACE = @as(u32, 8);
pub const WO_RGN_UPDATE_ALL = @as(u32, 16);
pub const WO_RGN_WINDOW = @as(u32, 32);
pub const WO_DRAW_NOTIFY = @as(u32, 64);
pub const WO_SPRITE_NOTIFY = @as(u32, 128);
pub const WO_RGN_DESKTOP_COORD = @as(u32, 256);
pub const WO_RGN_SPRITE = @as(u32, 512);
pub const EHN_RESTORED = @as(u32, 0);
pub const EHN_ERROR = @as(u32, 1);
pub const ECS_TEARDOWN = @as(u32, 1);
pub const ECS_REDRAW = @as(u32, 2);
pub const DEVHTADJF_COLOR_DEVICE = @as(u32, 1);
pub const DEVHTADJF_ADDITIVE_DEVICE = @as(u32, 2);
pub const FL_ZERO_MEMORY = @as(u32, 1);
pub const FL_NONPAGED_MEMORY = @as(u32, 2);
pub const FL_NON_SESSION = @as(u32, 4);
pub const QSA_MMX = @as(u32, 256);
pub const QSA_SSE = @as(u32, 8192);
pub const QSA_3DNOW = @as(u32, 16384);
pub const QSA_SSE1 = @as(u32, 8192);
pub const QSA_SSE2 = @as(u32, 65536);
pub const QSA_SSE3 = @as(u32, 524288);
pub const ENG_FNT_CACHE_READ_FAULT = @as(u32, 1);
pub const ENG_FNT_CACHE_WRITE_FAULT = @as(u32, 2);
pub const DRH_APIBITMAP = @as(u32, 1);
pub const MC_CAPS_NONE = @as(u32, 0);
pub const MC_CAPS_MONITOR_TECHNOLOGY_TYPE = @as(u32, 1);
pub const MC_CAPS_BRIGHTNESS = @as(u32, 2);
pub const MC_CAPS_CONTRAST = @as(u32, 4);
pub const MC_CAPS_COLOR_TEMPERATURE = @as(u32, 8);
pub const MC_CAPS_RED_GREEN_BLUE_GAIN = @as(u32, 16);
pub const MC_CAPS_RED_GREEN_BLUE_DRIVE = @as(u32, 32);
pub const MC_CAPS_DEGAUSS = @as(u32, 64);
pub const MC_CAPS_DISPLAY_AREA_POSITION = @as(u32, 128);
pub const MC_CAPS_DISPLAY_AREA_SIZE = @as(u32, 256);
pub const MC_CAPS_RESTORE_FACTORY_DEFAULTS = @as(u32, 1024);
pub const MC_CAPS_RESTORE_FACTORY_COLOR_DEFAULTS = @as(u32, 2048);
pub const MC_RESTORE_FACTORY_DEFAULTS_ENABLES_MONITOR_SETTINGS = @as(u32, 4096);
pub const MC_SUPPORTED_COLOR_TEMPERATURE_NONE = @as(u32, 0);
pub const MC_SUPPORTED_COLOR_TEMPERATURE_4000K = @as(u32, 1);
pub const MC_SUPPORTED_COLOR_TEMPERATURE_5000K = @as(u32, 2);
pub const MC_SUPPORTED_COLOR_TEMPERATURE_6500K = @as(u32, 4);
pub const MC_SUPPORTED_COLOR_TEMPERATURE_7500K = @as(u32, 8);
pub const MC_SUPPORTED_COLOR_TEMPERATURE_8200K = @as(u32, 16);
pub const MC_SUPPORTED_COLOR_TEMPERATURE_9300K = @as(u32, 32);
pub const MC_SUPPORTED_COLOR_TEMPERATURE_10000K = @as(u32, 64);
pub const MC_SUPPORTED_COLOR_TEMPERATURE_11500K = @as(u32, 128);
pub const PHYSICAL_MONITOR_DESCRIPTION_SIZE = @as(u32, 128);
pub const GETCONNECTEDIDS_TARGET = @as(u32, 0);
pub const GETCONNECTEDIDS_SOURCE = @as(u32, 1);
pub const S_INIT = @as(u32, 2);
pub const SETCONFIGURATION_STATUS_APPLIED = @as(u32, 0);
pub const SETCONFIGURATION_STATUS_ADDITIONAL = @as(u32, 1);
pub const SETCONFIGURATION_STATUS_OVERRIDDEN = @as(u32, 2);

//--------------------------------------------------------------------------------
// Section: Types (316)
//--------------------------------------------------------------------------------
// TODO: this type has a FreeFunc 'EngDeleteSemaphore', what can Zig do with this information?
pub const HSEMAPHORE = *opaque {};

pub const HSURF = *opaque {};

pub const HFASTMUTEX = *opaque {};

pub const HDRVOBJ = *opaque {};

pub const HDEV = *opaque {};

pub const HBM = *opaque {};

pub const DHSURF = isize;

pub const DHPDEV = isize;

pub const DISPLAYCONFIG_RATIONAL = extern struct {
    Numerator: u32,
    Denominator: u32,
};

pub const DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY = enum(i32) {
    OTHER = -1,
    HD15 = 0,
    SVIDEO = 1,
    COMPOSITE_VIDEO = 2,
    COMPONENT_VIDEO = 3,
    DVI = 4,
    HDMI = 5,
    LVDS = 6,
    D_JPN = 8,
    SDI = 9,
    DISPLAYPORT_EXTERNAL = 10,
    DISPLAYPORT_EMBEDDED = 11,
    UDI_EXTERNAL = 12,
    UDI_EMBEDDED = 13,
    SDTVDONGLE = 14,
    MIRACAST = 15,
    INDIRECT_WIRED = 16,
    INDIRECT_VIRTUAL = 17,
    DISPLAYPORT_USB_TUNNEL = 18,
    INTERNAL = -2147483648,
    // FORCE_UINT32 = -1, this enum value conflicts with OTHER
};
pub const DISPLAYCONFIG_OUTPUT_TECHNOLOGY_OTHER = DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.OTHER;
pub const DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HD15 = DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.HD15;
pub const DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SVIDEO = DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.SVIDEO;
pub const DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPOSITE_VIDEO = DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.COMPOSITE_VIDEO;
pub const DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPONENT_VIDEO = DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.COMPONENT_VIDEO;
pub const DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DVI = DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DVI;
pub const DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HDMI = DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.HDMI;
pub const DISPLAYCONFIG_OUTPUT_TECHNOLOGY_LVDS = DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.LVDS;
pub const DISPLAYCONFIG_OUTPUT_TECHNOLOGY_D_JPN = DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.D_JPN;
pub const DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDI = DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.SDI;
pub const DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EXTERNAL = DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYPORT_EXTERNAL;
pub const DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED = DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYPORT_EMBEDDED;
pub const DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EXTERNAL = DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.UDI_EXTERNAL;
pub const DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EMBEDDED = DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.UDI_EMBEDDED;
pub const DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDTVDONGLE = DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.SDTVDONGLE;
pub const DISPLAYCONFIG_OUTPUT_TECHNOLOGY_MIRACAST = DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.MIRACAST;
pub const DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INDIRECT_WIRED = DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.INDIRECT_WIRED;
pub const DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INDIRECT_VIRTUAL = DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.INDIRECT_VIRTUAL;
pub const DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_USB_TUNNEL = DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.DISPLAYPORT_USB_TUNNEL;
pub const DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL = DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.INTERNAL;
pub const DISPLAYCONFIG_OUTPUT_TECHNOLOGY_FORCE_UINT32 = DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY.OTHER;

pub const DISPLAYCONFIG_SCANLINE_ORDERING = enum(i32) {
    UNSPECIFIED = 0,
    PROGRESSIVE = 1,
    INTERLACED = 2,
    // INTERLACED_UPPERFIELDFIRST = 2, this enum value conflicts with INTERLACED
    INTERLACED_LOWERFIELDFIRST = 3,
    FORCE_UINT32 = -1,
};
pub const DISPLAYCONFIG_SCANLINE_ORDERING_UNSPECIFIED = DISPLAYCONFIG_SCANLINE_ORDERING.UNSPECIFIED;
pub const DISPLAYCONFIG_SCANLINE_ORDERING_PROGRESSIVE = DISPLAYCONFIG_SCANLINE_ORDERING.PROGRESSIVE;
pub const DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED = DISPLAYCONFIG_SCANLINE_ORDERING.INTERLACED;
pub const DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_UPPERFIELDFIRST = DISPLAYCONFIG_SCANLINE_ORDERING.INTERLACED;
pub const DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_LOWERFIELDFIRST = DISPLAYCONFIG_SCANLINE_ORDERING.INTERLACED_LOWERFIELDFIRST;
pub const DISPLAYCONFIG_SCANLINE_ORDERING_FORCE_UINT32 = DISPLAYCONFIG_SCANLINE_ORDERING.FORCE_UINT32;

pub const DISPLAYCONFIG_2DREGION = extern struct {
    cx: u32,
    cy: u32,
};

pub const DISPLAYCONFIG_VIDEO_SIGNAL_INFO = extern struct {
    pixelRate: u64,
    hSyncFreq: DISPLAYCONFIG_RATIONAL,
    vSyncFreq: DISPLAYCONFIG_RATIONAL,
    activeSize: DISPLAYCONFIG_2DREGION,
    totalSize: DISPLAYCONFIG_2DREGION,
    Anonymous: extern union {
        AdditionalSignalInfo: extern struct {
            _bitfield: u32,
        },
        videoStandard: u32,
    },
    scanLineOrdering: DISPLAYCONFIG_SCANLINE_ORDERING,
};

pub const DISPLAYCONFIG_SCALING = enum(i32) {
    IDENTITY = 1,
    CENTERED = 2,
    STRETCHED = 3,
    ASPECTRATIOCENTEREDMAX = 4,
    CUSTOM = 5,
    PREFERRED = 128,
    FORCE_UINT32 = -1,
};
pub const DISPLAYCONFIG_SCALING_IDENTITY = DISPLAYCONFIG_SCALING.IDENTITY;
pub const DISPLAYCONFIG_SCALING_CENTERED = DISPLAYCONFIG_SCALING.CENTERED;
pub const DISPLAYCONFIG_SCALING_STRETCHED = DISPLAYCONFIG_SCALING.STRETCHED;
pub const DISPLAYCONFIG_SCALING_ASPECTRATIOCENTEREDMAX = DISPLAYCONFIG_SCALING.ASPECTRATIOCENTEREDMAX;
pub const DISPLAYCONFIG_SCALING_CUSTOM = DISPLAYCONFIG_SCALING.CUSTOM;
pub const DISPLAYCONFIG_SCALING_PREFERRED = DISPLAYCONFIG_SCALING.PREFERRED;
pub const DISPLAYCONFIG_SCALING_FORCE_UINT32 = DISPLAYCONFIG_SCALING.FORCE_UINT32;

pub const DISPLAYCONFIG_ROTATION = enum(i32) {
    IDENTITY = 1,
    ROTATE90 = 2,
    ROTATE180 = 3,
    ROTATE270 = 4,
    FORCE_UINT32 = -1,
};
pub const DISPLAYCONFIG_ROTATION_IDENTITY = DISPLAYCONFIG_ROTATION.IDENTITY;
pub const DISPLAYCONFIG_ROTATION_ROTATE90 = DISPLAYCONFIG_ROTATION.ROTATE90;
pub const DISPLAYCONFIG_ROTATION_ROTATE180 = DISPLAYCONFIG_ROTATION.ROTATE180;
pub const DISPLAYCONFIG_ROTATION_ROTATE270 = DISPLAYCONFIG_ROTATION.ROTATE270;
pub const DISPLAYCONFIG_ROTATION_FORCE_UINT32 = DISPLAYCONFIG_ROTATION.FORCE_UINT32;

pub const DISPLAYCONFIG_MODE_INFO_TYPE = enum(i32) {
    SOURCE = 1,
    TARGET = 2,
    DESKTOP_IMAGE = 3,
    FORCE_UINT32 = -1,
};
pub const DISPLAYCONFIG_MODE_INFO_TYPE_SOURCE = DISPLAYCONFIG_MODE_INFO_TYPE.SOURCE;
pub const DISPLAYCONFIG_MODE_INFO_TYPE_TARGET = DISPLAYCONFIG_MODE_INFO_TYPE.TARGET;
pub const DISPLAYCONFIG_MODE_INFO_TYPE_DESKTOP_IMAGE = DISPLAYCONFIG_MODE_INFO_TYPE.DESKTOP_IMAGE;
pub const DISPLAYCONFIG_MODE_INFO_TYPE_FORCE_UINT32 = DISPLAYCONFIG_MODE_INFO_TYPE.FORCE_UINT32;

pub const DISPLAYCONFIG_PIXELFORMAT = enum(i32) {
    @"8BPP" = 1,
    @"16BPP" = 2,
    @"24BPP" = 3,
    @"32BPP" = 4,
    NONGDI = 5,
    FORCE_UINT32 = -1,
};
pub const DISPLAYCONFIG_PIXELFORMAT_8BPP = DISPLAYCONFIG_PIXELFORMAT.@"8BPP";
pub const DISPLAYCONFIG_PIXELFORMAT_16BPP = DISPLAYCONFIG_PIXELFORMAT.@"16BPP";
pub const DISPLAYCONFIG_PIXELFORMAT_24BPP = DISPLAYCONFIG_PIXELFORMAT.@"24BPP";
pub const DISPLAYCONFIG_PIXELFORMAT_32BPP = DISPLAYCONFIG_PIXELFORMAT.@"32BPP";
pub const DISPLAYCONFIG_PIXELFORMAT_NONGDI = DISPLAYCONFIG_PIXELFORMAT.NONGDI;
pub const DISPLAYCONFIG_PIXELFORMAT_FORCE_UINT32 = DISPLAYCONFIG_PIXELFORMAT.FORCE_UINT32;

pub const DISPLAYCONFIG_SOURCE_MODE = extern struct {
    width: u32,
    height: u32,
    pixelFormat: DISPLAYCONFIG_PIXELFORMAT,
    position: POINTL,
};

pub const DISPLAYCONFIG_TARGET_MODE = extern struct {
    targetVideoSignalInfo: DISPLAYCONFIG_VIDEO_SIGNAL_INFO,
};

pub const DISPLAYCONFIG_DESKTOP_IMAGE_INFO = extern struct {
    PathSourceSize: POINTL,
    DesktopImageRegion: RECTL,
    DesktopImageClip: RECTL,
};

pub const DISPLAYCONFIG_MODE_INFO = extern struct {
    infoType: DISPLAYCONFIG_MODE_INFO_TYPE,
    id: u32,
    adapterId: LUID,
    Anonymous: extern union {
        targetMode: DISPLAYCONFIG_TARGET_MODE,
        sourceMode: DISPLAYCONFIG_SOURCE_MODE,
        desktopImageInfo: DISPLAYCONFIG_DESKTOP_IMAGE_INFO,
    },
};

pub const DISPLAYCONFIG_PATH_SOURCE_INFO = extern struct {
    adapterId: LUID,
    id: u32,
    Anonymous: extern union {
        modeInfoIdx: u32,
        Anonymous: extern struct {
            _bitfield: u32,
        },
    },
    statusFlags: u32,
};

pub const DISPLAYCONFIG_PATH_TARGET_INFO = extern struct {
    adapterId: LUID,
    id: u32,
    Anonymous: extern union {
        modeInfoIdx: u32,
        Anonymous: extern struct {
            _bitfield: u32,
        },
    },
    outputTechnology: DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY,
    rotation: DISPLAYCONFIG_ROTATION,
    scaling: DISPLAYCONFIG_SCALING,
    refreshRate: DISPLAYCONFIG_RATIONAL,
    scanLineOrdering: DISPLAYCONFIG_SCANLINE_ORDERING,
    targetAvailable: BOOL,
    statusFlags: u32,
};

pub const DISPLAYCONFIG_PATH_INFO = extern struct {
    sourceInfo: DISPLAYCONFIG_PATH_SOURCE_INFO,
    targetInfo: DISPLAYCONFIG_PATH_TARGET_INFO,
    flags: u32,
};

pub const DISPLAYCONFIG_TOPOLOGY_ID = enum(i32) {
    INTERNAL = 1,
    CLONE = 2,
    EXTEND = 4,
    EXTERNAL = 8,
    FORCE_UINT32 = -1,
};
pub const DISPLAYCONFIG_TOPOLOGY_INTERNAL = DISPLAYCONFIG_TOPOLOGY_ID.INTERNAL;
pub const DISPLAYCONFIG_TOPOLOGY_CLONE = DISPLAYCONFIG_TOPOLOGY_ID.CLONE;
pub const DISPLAYCONFIG_TOPOLOGY_EXTEND = DISPLAYCONFIG_TOPOLOGY_ID.EXTEND;
pub const DISPLAYCONFIG_TOPOLOGY_EXTERNAL = DISPLAYCONFIG_TOPOLOGY_ID.EXTERNAL;
pub const DISPLAYCONFIG_TOPOLOGY_FORCE_UINT32 = DISPLAYCONFIG_TOPOLOGY_ID.FORCE_UINT32;

pub const DISPLAYCONFIG_DEVICE_INFO_TYPE = enum(i32) {
    GET_SOURCE_NAME = 1,
    GET_TARGET_NAME = 2,
    GET_TARGET_PREFERRED_MODE = 3,
    GET_ADAPTER_NAME = 4,
    SET_TARGET_PERSISTENCE = 5,
    GET_TARGET_BASE_TYPE = 6,
    GET_SUPPORT_VIRTUAL_RESOLUTION = 7,
    SET_SUPPORT_VIRTUAL_RESOLUTION = 8,
    GET_ADVANCED_COLOR_INFO = 9,
    SET_ADVANCED_COLOR_STATE = 10,
    GET_SDR_WHITE_LEVEL = 11,
    GET_MONITOR_SPECIALIZATION = 12,
    SET_MONITOR_SPECIALIZATION = 13,
    FORCE_UINT32 = -1,
};
pub const DISPLAYCONFIG_DEVICE_INFO_GET_SOURCE_NAME = DISPLAYCONFIG_DEVICE_INFO_TYPE.GET_SOURCE_NAME;
pub const DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_NAME = DISPLAYCONFIG_DEVICE_INFO_TYPE.GET_TARGET_NAME;
pub const DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_PREFERRED_MODE = DISPLAYCONFIG_DEVICE_INFO_TYPE.GET_TARGET_PREFERRED_MODE;
pub const DISPLAYCONFIG_DEVICE_INFO_GET_ADAPTER_NAME = DISPLAYCONFIG_DEVICE_INFO_TYPE.GET_ADAPTER_NAME;
pub const DISPLAYCONFIG_DEVICE_INFO_SET_TARGET_PERSISTENCE = DISPLAYCONFIG_DEVICE_INFO_TYPE.SET_TARGET_PERSISTENCE;
pub const DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_BASE_TYPE = DISPLAYCONFIG_DEVICE_INFO_TYPE.GET_TARGET_BASE_TYPE;
pub const DISPLAYCONFIG_DEVICE_INFO_GET_SUPPORT_VIRTUAL_RESOLUTION = DISPLAYCONFIG_DEVICE_INFO_TYPE.GET_SUPPORT_VIRTUAL_RESOLUTION;
pub const DISPLAYCONFIG_DEVICE_INFO_SET_SUPPORT_VIRTUAL_RESOLUTION = DISPLAYCONFIG_DEVICE_INFO_TYPE.SET_SUPPORT_VIRTUAL_RESOLUTION;
pub const DISPLAYCONFIG_DEVICE_INFO_GET_ADVANCED_COLOR_INFO = DISPLAYCONFIG_DEVICE_INFO_TYPE.GET_ADVANCED_COLOR_INFO;
pub const DISPLAYCONFIG_DEVICE_INFO_SET_ADVANCED_COLOR_STATE = DISPLAYCONFIG_DEVICE_INFO_TYPE.SET_ADVANCED_COLOR_STATE;
pub const DISPLAYCONFIG_DEVICE_INFO_GET_SDR_WHITE_LEVEL = DISPLAYCONFIG_DEVICE_INFO_TYPE.GET_SDR_WHITE_LEVEL;
pub const DISPLAYCONFIG_DEVICE_INFO_GET_MONITOR_SPECIALIZATION = DISPLAYCONFIG_DEVICE_INFO_TYPE.GET_MONITOR_SPECIALIZATION;
pub const DISPLAYCONFIG_DEVICE_INFO_SET_MONITOR_SPECIALIZATION = DISPLAYCONFIG_DEVICE_INFO_TYPE.SET_MONITOR_SPECIALIZATION;
pub const DISPLAYCONFIG_DEVICE_INFO_FORCE_UINT32 = DISPLAYCONFIG_DEVICE_INFO_TYPE.FORCE_UINT32;

pub const DISPLAYCONFIG_DEVICE_INFO_HEADER = extern struct {
    type: DISPLAYCONFIG_DEVICE_INFO_TYPE,
    size: u32,
    adapterId: LUID,
    id: u32,
};

pub const DISPLAYCONFIG_SOURCE_DEVICE_NAME = extern struct {
    header: DISPLAYCONFIG_DEVICE_INFO_HEADER,
    viewGdiDeviceName: [32]u16,
};

pub const DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS = extern struct {
    Anonymous: extern union {
        Anonymous: extern struct {
            _bitfield: u32,
        },
        value: u32,
    },
};

pub const DISPLAYCONFIG_TARGET_DEVICE_NAME = extern struct {
    header: DISPLAYCONFIG_DEVICE_INFO_HEADER,
    flags: DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS,
    outputTechnology: DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY,
    edidManufactureId: u16,
    edidProductCodeId: u16,
    connectorInstance: u32,
    monitorFriendlyDeviceName: [64]u16,
    monitorDevicePath: [128]u16,
};

pub const DISPLAYCONFIG_TARGET_PREFERRED_MODE = extern struct {
    header: DISPLAYCONFIG_DEVICE_INFO_HEADER,
    width: u32,
    height: u32,
    targetMode: DISPLAYCONFIG_TARGET_MODE,
};

pub const DISPLAYCONFIG_ADAPTER_NAME = extern struct {
    header: DISPLAYCONFIG_DEVICE_INFO_HEADER,
    adapterDevicePath: [128]u16,
};

pub const DISPLAYCONFIG_TARGET_BASE_TYPE = extern struct {
    header: DISPLAYCONFIG_DEVICE_INFO_HEADER,
    baseOutputTechnology: DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY,
};

pub const DISPLAYCONFIG_SET_TARGET_PERSISTENCE = extern struct {
    header: DISPLAYCONFIG_DEVICE_INFO_HEADER,
    Anonymous: extern union {
        Anonymous: extern struct {
            _bitfield: u32,
        },
        value: u32,
    },
};

pub const DISPLAYCONFIG_SUPPORT_VIRTUAL_RESOLUTION = extern struct {
    header: DISPLAYCONFIG_DEVICE_INFO_HEADER,
    Anonymous: extern union {
        Anonymous: extern struct {
            _bitfield: u32,
        },
        value: u32,
    },
};

pub const DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO = extern struct {
    header: DISPLAYCONFIG_DEVICE_INFO_HEADER,
    Anonymous: extern union {
        Anonymous: extern struct {
            _bitfield: u32,
        },
        value: u32,
    },
    colorEncoding: DISPLAYCONFIG_COLOR_ENCODING,
    bitsPerColorChannel: u32,
};

pub const DISPLAYCONFIG_SET_ADVANCED_COLOR_STATE = extern struct {
    header: DISPLAYCONFIG_DEVICE_INFO_HEADER,
    Anonymous: extern union {
        Anonymous: extern struct {
            _bitfield: u32,
        },
        value: u32,
    },
};

pub const DISPLAYCONFIG_SDR_WHITE_LEVEL = extern struct {
    header: DISPLAYCONFIG_DEVICE_INFO_HEADER,
    SDRWhiteLevel: u32,
};

pub const DISPLAYCONFIG_GET_MONITOR_SPECIALIZATION = extern struct {
    header: DISPLAYCONFIG_DEVICE_INFO_HEADER,
    Anonymous: extern union {
        Anonymous: extern struct {
            _bitfield: u32,
        },
        value: u32,
    },
};

pub const DISPLAYCONFIG_SET_MONITOR_SPECIALIZATION = extern struct {
    header: DISPLAYCONFIG_DEVICE_INFO_HEADER,
    Anonymous: extern union {
        Anonymous: extern struct {
            _bitfield: u32,
        },
        value: u32,
    },
    specializationType: Guid,
    specializationSubType: Guid,
    specializationApplicationName: [128]u16,
};

pub const PHYSICAL_MONITOR = extern struct {
    hPhysicalMonitor: ?HANDLE align(1),
    szPhysicalMonitorDescription: [128]u16 align(1),
};

pub const MC_TIMING_REPORT = extern struct {
    dwHorizontalFrequencyInHZ: u32 align(1),
    dwVerticalFrequencyInHZ: u32 align(1),
    bTimingStatusByte: u8 align(1),
};

pub const MC_VCP_CODE_TYPE = enum(i32) {
    MOMENTARY = 0,
    SET_PARAMETER = 1,
};
pub const MC_MOMENTARY = MC_VCP_CODE_TYPE.MOMENTARY;
pub const MC_SET_PARAMETER = MC_VCP_CODE_TYPE.SET_PARAMETER;

pub const MC_DISPLAY_TECHNOLOGY_TYPE = enum(i32) {
    SHADOW_MASK_CATHODE_RAY_TUBE = 0,
    APERTURE_GRILL_CATHODE_RAY_TUBE = 1,
    THIN_FILM_TRANSISTOR = 2,
    LIQUID_CRYSTAL_ON_SILICON = 3,
    PLASMA = 4,
    ORGANIC_LIGHT_EMITTING_DIODE = 5,
    ELECTROLUMINESCENT = 6,
    MICROELECTROMECHANICAL = 7,
    FIELD_EMISSION_DEVICE = 8,
};
pub const MC_SHADOW_MASK_CATHODE_RAY_TUBE = MC_DISPLAY_TECHNOLOGY_TYPE.SHADOW_MASK_CATHODE_RAY_TUBE;
pub const MC_APERTURE_GRILL_CATHODE_RAY_TUBE = MC_DISPLAY_TECHNOLOGY_TYPE.APERTURE_GRILL_CATHODE_RAY_TUBE;
pub const MC_THIN_FILM_TRANSISTOR = MC_DISPLAY_TECHNOLOGY_TYPE.THIN_FILM_TRANSISTOR;
pub const MC_LIQUID_CRYSTAL_ON_SILICON = MC_DISPLAY_TECHNOLOGY_TYPE.LIQUID_CRYSTAL_ON_SILICON;
pub const MC_PLASMA = MC_DISPLAY_TECHNOLOGY_TYPE.PLASMA;
pub const MC_ORGANIC_LIGHT_EMITTING_DIODE = MC_DISPLAY_TECHNOLOGY_TYPE.ORGANIC_LIGHT_EMITTING_DIODE;
pub const MC_ELECTROLUMINESCENT = MC_DISPLAY_TECHNOLOGY_TYPE.ELECTROLUMINESCENT;
pub const MC_MICROELECTROMECHANICAL = MC_DISPLAY_TECHNOLOGY_TYPE.MICROELECTROMECHANICAL;
pub const MC_FIELD_EMISSION_DEVICE = MC_DISPLAY_TECHNOLOGY_TYPE.FIELD_EMISSION_DEVICE;

pub const MC_DRIVE_TYPE = enum(i32) {
    RED_DRIVE = 0,
    GREEN_DRIVE = 1,
    BLUE_DRIVE = 2,
};
pub const MC_RED_DRIVE = MC_DRIVE_TYPE.RED_DRIVE;
pub const MC_GREEN_DRIVE = MC_DRIVE_TYPE.GREEN_DRIVE;
pub const MC_BLUE_DRIVE = MC_DRIVE_TYPE.BLUE_DRIVE;

pub const MC_GAIN_TYPE = enum(i32) {
    RED_GAIN = 0,
    GREEN_GAIN = 1,
    BLUE_GAIN = 2,
};
pub const MC_RED_GAIN = MC_GAIN_TYPE.RED_GAIN;
pub const MC_GREEN_GAIN = MC_GAIN_TYPE.GREEN_GAIN;
pub const MC_BLUE_GAIN = MC_GAIN_TYPE.BLUE_GAIN;

pub const MC_POSITION_TYPE = enum(i32) {
    HORIZONTAL_POSITION = 0,
    VERTICAL_POSITION = 1,
};
pub const MC_HORIZONTAL_POSITION = MC_POSITION_TYPE.HORIZONTAL_POSITION;
pub const MC_VERTICAL_POSITION = MC_POSITION_TYPE.VERTICAL_POSITION;

pub const MC_SIZE_TYPE = enum(i32) {
    WIDTH = 0,
    HEIGHT = 1,
};
pub const MC_WIDTH = MC_SIZE_TYPE.WIDTH;
pub const MC_HEIGHT = MC_SIZE_TYPE.HEIGHT;

pub const MC_COLOR_TEMPERATURE = enum(i32) {
    UNKNOWN = 0,
    @"4000K" = 1,
    @"5000K" = 2,
    @"6500K" = 3,
    @"7500K" = 4,
    @"8200K" = 5,
    @"9300K" = 6,
    @"10000K" = 7,
    @"11500K" = 8,
};
pub const MC_COLOR_TEMPERATURE_UNKNOWN = MC_COLOR_TEMPERATURE.UNKNOWN;
pub const MC_COLOR_TEMPERATURE_4000K = MC_COLOR_TEMPERATURE.@"4000K";
pub const MC_COLOR_TEMPERATURE_5000K = MC_COLOR_TEMPERATURE.@"5000K";
pub const MC_COLOR_TEMPERATURE_6500K = MC_COLOR_TEMPERATURE.@"6500K";
pub const MC_COLOR_TEMPERATURE_7500K = MC_COLOR_TEMPERATURE.@"7500K";
pub const MC_COLOR_TEMPERATURE_8200K = MC_COLOR_TEMPERATURE.@"8200K";
pub const MC_COLOR_TEMPERATURE_9300K = MC_COLOR_TEMPERATURE.@"9300K";
pub const MC_COLOR_TEMPERATURE_10000K = MC_COLOR_TEMPERATURE.@"10000K";
pub const MC_COLOR_TEMPERATURE_11500K = MC_COLOR_TEMPERATURE.@"11500K";

pub const Sources = extern struct {
    sourceId: u32,
    numTargets: i32,
    aTargets: [1]u32,
};

pub const Adapter = extern struct {
    AdapterName: [128]u16,
    numSources: i32,
    sources: [1]Sources,
};

pub const Adapters = extern struct {
    numAdapters: i32,
    adapter: [1]Adapter,
};

pub const DisplayMode = extern struct {
    DeviceName: [32]u16,
    devMode: DEVMODEW,
};

pub const DisplayModes = extern struct {
    numDisplayModes: i32,
    displayMode: [1]DisplayMode,
};

const IID_ICloneViewHelper_Value = Guid.initString("f6a3d4c4-5632-4d83-b0a1-fb88712b1eb7");
pub const IID_ICloneViewHelper = &IID_ICloneViewHelper_Value;
pub const ICloneViewHelper = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        GetConnectedIDs: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICloneViewHelper,
                wszAdaptorName: ?[*:0]const u16,
                pulCount: ?*u32,
                pulID: ?*u32,
                ulFlags: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICloneViewHelper,
                wszAdaptorName: ?[*:0]const u16,
                pulCount: ?*u32,
                pulID: ?*u32,
                ulFlags: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetActiveTopology: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICloneViewHelper,
                wszAdaptorName: ?[*:0]const u16,
                ulSourceID: u32,
                pulCount: ?*u32,
                pulTargetID: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICloneViewHelper,
                wszAdaptorName: ?[*:0]const u16,
                ulSourceID: u32,
                pulCount: ?*u32,
                pulTargetID: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetActiveTopology: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICloneViewHelper,
                wszAdaptorName: ?[*:0]const u16,
                ulSourceID: u32,
                ulCount: u32,
                pulTargetID: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICloneViewHelper,
                wszAdaptorName: ?[*:0]const u16,
                ulSourceID: u32,
                ulCount: u32,
                pulTargetID: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Commit: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const ICloneViewHelper,
                fFinalCall: BOOL,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const ICloneViewHelper,
                fFinalCall: BOOL,
            ) 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 ICloneViewHelper_GetConnectedIDs(self: *const T, wszAdaptorName: ?[*:0]const u16, pulCount: ?*u32, pulID: ?*u32, ulFlags: u32) HRESULT {
                return @as(*const ICloneViewHelper.VTable, @ptrCast(self.vtable)).GetConnectedIDs(@as(*const ICloneViewHelper, @ptrCast(self)), wszAdaptorName, pulCount, pulID, ulFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICloneViewHelper_GetActiveTopology(self: *const T, wszAdaptorName: ?[*:0]const u16, ulSourceID: u32, pulCount: ?*u32, pulTargetID: ?*u32) HRESULT {
                return @as(*const ICloneViewHelper.VTable, @ptrCast(self.vtable)).GetActiveTopology(@as(*const ICloneViewHelper, @ptrCast(self)), wszAdaptorName, ulSourceID, pulCount, pulTargetID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICloneViewHelper_SetActiveTopology(self: *const T, wszAdaptorName: ?[*:0]const u16, ulSourceID: u32, ulCount: u32, pulTargetID: ?*u32) HRESULT {
                return @as(*const ICloneViewHelper.VTable, @ptrCast(self.vtable)).SetActiveTopology(@as(*const ICloneViewHelper, @ptrCast(self)), wszAdaptorName, ulSourceID, ulCount, pulTargetID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn ICloneViewHelper_Commit(self: *const T, fFinalCall: BOOL) HRESULT {
                return @as(*const ICloneViewHelper.VTable, @ptrCast(self.vtable)).Commit(@as(*const ICloneViewHelper, @ptrCast(self)), fFinalCall);
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

const IID_IViewHelper_Value = Guid.initString("e85ccef5-aaaa-47f0-b5e3-61f7aecdc4c1");
pub const IID_IViewHelper = &IID_IViewHelper_Value;
pub const IViewHelper = extern struct {
    pub const VTable = extern struct {
        base: IUnknown.VTable,
        GetConnectedIDs: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IViewHelper,
                wszAdaptorName: ?[*:0]const u16,
                pulCount: ?*u32,
                pulID: ?*u32,
                ulFlags: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IViewHelper,
                wszAdaptorName: ?[*:0]const u16,
                pulCount: ?*u32,
                pulID: ?*u32,
                ulFlags: u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetActiveTopology: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IViewHelper,
                wszAdaptorName: ?[*:0]const u16,
                ulSourceID: u32,
                pulCount: ?*u32,
                pulTargetID: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IViewHelper,
                wszAdaptorName: ?[*:0]const u16,
                ulSourceID: u32,
                pulCount: ?*u32,
                pulTargetID: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetActiveTopology: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IViewHelper,
                wszAdaptorName: ?[*:0]const u16,
                ulSourceID: u32,
                ulCount: u32,
                pulTargetID: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IViewHelper,
                wszAdaptorName: ?[*:0]const u16,
                ulSourceID: u32,
                ulCount: u32,
                pulTargetID: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        Commit: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IViewHelper,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IViewHelper,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        SetConfiguration: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IViewHelper,
                pIStream: ?*IStream,
                pulStatus: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IViewHelper,
                pIStream: ?*IStream,
                pulStatus: ?*u32,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
        },
        GetProceedOnNewConfiguration: switch (@import("builtin").zig_backend) {
            .stage1 => fn (
                self: *const IViewHelper,
            ) callconv(@import("std").os.windows.WINAPI) HRESULT,
            else => *const fn (
                self: *const IViewHelper,
            ) 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 IViewHelper_GetConnectedIDs(self: *const T, wszAdaptorName: ?[*:0]const u16, pulCount: ?*u32, pulID: ?*u32, ulFlags: u32) HRESULT {
                return @as(*const IViewHelper.VTable, @ptrCast(self.vtable)).GetConnectedIDs(@as(*const IViewHelper, @ptrCast(self)), wszAdaptorName, pulCount, pulID, ulFlags);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IViewHelper_GetActiveTopology(self: *const T, wszAdaptorName: ?[*:0]const u16, ulSourceID: u32, pulCount: ?*u32, pulTargetID: ?*u32) HRESULT {
                return @as(*const IViewHelper.VTable, @ptrCast(self.vtable)).GetActiveTopology(@as(*const IViewHelper, @ptrCast(self)), wszAdaptorName, ulSourceID, pulCount, pulTargetID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IViewHelper_SetActiveTopology(self: *const T, wszAdaptorName: ?[*:0]const u16, ulSourceID: u32, ulCount: u32, pulTargetID: ?*u32) HRESULT {
                return @as(*const IViewHelper.VTable, @ptrCast(self.vtable)).SetActiveTopology(@as(*const IViewHelper, @ptrCast(self)), wszAdaptorName, ulSourceID, ulCount, pulTargetID);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IViewHelper_Commit(self: *const T) HRESULT {
                return @as(*const IViewHelper.VTable, @ptrCast(self.vtable)).Commit(@as(*const IViewHelper, @ptrCast(self)));
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IViewHelper_SetConfiguration(self: *const T, pIStream: ?*IStream, pulStatus: ?*u32) HRESULT {
                return @as(*const IViewHelper.VTable, @ptrCast(self.vtable)).SetConfiguration(@as(*const IViewHelper, @ptrCast(self)), pIStream, pulStatus);
            }
            // NOTE: method is namespaced with interface name to avoid conflicts for now
            pub inline fn IViewHelper_GetProceedOnNewConfiguration(self: *const T) HRESULT {
                return @as(*const IViewHelper.VTable, @ptrCast(self.vtable)).GetProceedOnNewConfiguration(@as(*const IViewHelper, @ptrCast(self)));
            }
        };
    }
    pub usingnamespace MethodMixin(@This());
};

pub const VIDEOPARAMETERS = extern struct {
    Guid: Guid,
    dwOffset: u32,
    dwCommand: u32,
    dwFlags: u32,
    dwMode: u32,
    dwTVStandard: u32,
    dwAvailableModes: u32,
    dwAvailableTVStandard: u32,
    dwFlickerFilter: u32,
    dwOverScanX: u32,
    dwOverScanY: u32,
    dwMaxUnscaledX: u32,
    dwMaxUnscaledY: u32,
    dwPositionX: u32,
    dwPositionY: u32,
    dwBrightness: u32,
    dwContrast: u32,
    dwCPType: u32,
    dwCPCommand: u32,
    dwCPStandard: u32,
    dwCPKey: u32,
    bCP_APSTriggerBits: u32,
    bOEMCopyProtection: [256]u8,
};

pub const POINTFIX = extern struct {
    x: i32,
    y: i32,
};

pub const RECTFX = extern struct {
    xLeft: i32,
    yTop: i32,
    xRight: i32,
    yBottom: i32,
};

pub const FD_DEVICEMETRICS = extern struct {
    flRealizedType: u32,
    pteBase: POINTE,
    pteSide: POINTE,
    lD: i32,
    fxMaxAscender: i32,
    fxMaxDescender: i32,
    ptlUnderline1: POINTL,
    ptlStrikeOut: POINTL,
    ptlULThickness: POINTL,
    ptlSOThickness: POINTL,
    cxMax: u32,
    cyMax: u32,
    cjGlyphMax: u32,
    fdxQuantized: FD_XFORM,
    lNonLinearExtLeading: i32,
    lNonLinearIntLeading: i32,
    lNonLinearMaxCharWidth: i32,
    lNonLinearAvgCharWidth: i32,
    lMinA: i32,
    lMinC: i32,
    lMinD: i32,
    alReserved: [1]i32,
};

pub const LIGATURE = extern struct {
    culSize: u32,
    pwsz: ?PWSTR,
    chglyph: u32,
    ahglyph: [1]u32,
};

pub const FD_LIGATURE = extern struct {
    culThis: u32,
    ulType: u32,
    cLigatures: u32,
    alig: [1]LIGATURE,
};

pub const POINTQF = extern struct {
    x: LARGE_INTEGER,
    y: LARGE_INTEGER,
};

pub const WCRUN = extern struct {
    wcLow: u16,
    cGlyphs: u16,
    phg: ?*u32,
};

pub const FD_GLYPHSET = extern struct {
    cjThis: u32,
    flAccel: u32,
    cGlyphsSupported: u32,
    cRuns: u32,
    awcrun: [1]WCRUN,
};

pub const FD_GLYPHATTR = extern struct {
    cjThis: u32,
    cGlyphs: u32,
    iMode: u32,
    aGlyphAttr: [1]u8,
};

pub const FD_KERNINGPAIR = extern struct {
    wcFirst: u16,
    wcSecond: u16,
    fwdKern: i16,
};

pub const FONTDIFF = extern struct {
    jReserved1: u8,
    jReserved2: u8,
    jReserved3: u8,
    bWeight: u8,
    usWinWeight: u16,
    fsSelection: u16,
    fwdAveCharWidth: i16,
    fwdMaxCharInc: i16,
    ptlCaret: POINTL,
};

pub const FONTSIM = extern struct {
    dpBold: i32,
    dpItalic: i32,
    dpBoldItalic: i32,
};

pub const IFIEXTRA = extern struct {
    ulIdentifier: u32,
    dpFontSig: i32,
    cig: u32,
    dpDesignVector: i32,
    dpAxesInfoW: i32,
    aulReserved: [1]u32,
};

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

pub const DRVFN = extern struct {
    iFunc: u32,
    pfn: ?PFN,
};

pub const DRVENABLEDATA = extern struct {
    iDriverVersion: u32,
    c: u32,
    pdrvfn: ?*DRVFN,
};

pub const DEVINFO = extern struct {
    flGraphicsCaps: u32,
    lfDefaultFont: LOGFONTW,
    lfAnsiVarFont: LOGFONTW,
    lfAnsiFixFont: LOGFONTW,
    cFonts: u32,
    iDitherFormat: u32,
    cxDither: u16,
    cyDither: u16,
    hpalDefault: ?HPALETTE,
    flGraphicsCaps2: u32,
};

pub const CIECHROMA = extern struct {
    x: i32,
    y: i32,
    Y: i32,
};

pub const COLORINFO = extern struct {
    Red: CIECHROMA,
    Green: CIECHROMA,
    Blue: CIECHROMA,
    Cyan: CIECHROMA,
    Magenta: CIECHROMA,
    Yellow: CIECHROMA,
    AlignmentWhite: CIECHROMA,
    RedGamma: i32,
    GreenGamma: i32,
    BlueGamma: i32,
    MagentaInCyanDye: i32,
    YellowInCyanDye: i32,
    CyanInMagentaDye: i32,
    YellowInMagentaDye: i32,
    CyanInYellowDye: i32,
    MagentaInYellowDye: i32,
};

pub const CDDDXGK_REDIRBITMAPPRESENTINFO = extern struct {
    NumDirtyRects: u32,
    DirtyRect: ?*RECT,
    NumContexts: u32,
    hContext: [65]?HANDLE,
    bDoNotSynchronizeWithDxContent: BOOLEAN,
};

pub const GDIINFO = extern struct {
    ulVersion: u32,
    ulTechnology: u32,
    ulHorzSize: u32,
    ulVertSize: u32,
    ulHorzRes: u32,
    ulVertRes: u32,
    cBitsPixel: u32,
    cPlanes: u32,
    ulNumColors: u32,
    flRaster: u32,
    ulLogPixelsX: u32,
    ulLogPixelsY: u32,
    flTextCaps: u32,
    ulDACRed: u32,
    ulDACGreen: u32,
    ulDACBlue: u32,
    ulAspectX: u32,
    ulAspectY: u32,
    ulAspectXY: u32,
    xStyleStep: i32,
    yStyleStep: i32,
    denStyleStep: i32,
    ptlPhysOffset: POINTL,
    szlPhysSize: SIZE,
    ulNumPalReg: u32,
    ciDevice: COLORINFO,
    ulDevicePelsDPI: u32,
    ulPrimaryOrder: u32,
    ulHTPatternSize: u32,
    ulHTOutputFormat: u32,
    flHTFlags: u32,
    ulVRefresh: u32,
    ulBltAlignment: u32,
    ulPanningHorzRes: u32,
    ulPanningVertRes: u32,
    xPanningAlignment: u32,
    yPanningAlignment: u32,
    cxHTPat: u32,
    cyHTPat: u32,
    pHTPatA: ?*u8,
    pHTPatB: ?*u8,
    pHTPatC: ?*u8,
    flShadeBlend: u32,
    ulPhysicalPixelCharacteristics: u32,
    ulPhysicalPixelGamma: u32,
};

pub const BRUSHOBJ = extern struct {
    iSolidColor: u32,
    pvRbrush: ?*anyopaque,
    flColorType: u32,
};

pub const CLIPOBJ = extern struct {
    iUniq: u32,
    rclBounds: RECTL,
    iDComplexity: u8,
    iFComplexity: u8,
    iMode: u8,
    fjOptions: u8,
};

// TODO: this function pointer causes dependency loop problems, so it's stubbed out
pub const FREEOBJPROC = switch (@import("builtin").zig_backend) {
    .stage1 => fn () callconv(@import("std").os.windows.WINAPI) void,
    else => *const fn () callconv(@import("std").os.windows.WINAPI) void,
};

pub const DRIVEROBJ = extern struct {
    pvObj: ?*anyopaque,
    pFreeProc: ?FREEOBJPROC,
    hdev: ?HDEV,
    dhpdev: DHPDEV,
};

pub const FONTOBJ = extern struct {
    iUniq: u32,
    iFace: u32,
    cxMax: u32,
    flFontType: u32,
    iTTUniq: usize,
    iFile: usize,
    sizLogResPpi: SIZE,
    ulStyleSize: u32,
    pvConsumer: ?*anyopaque,
    pvProducer: ?*anyopaque,
};

pub const BLENDOBJ = extern struct {
    BlendFunction: BLENDFUNCTION,
};

pub const PALOBJ = extern struct {
    ulReserved: u32,
};

pub const PATHOBJ = extern struct {
    fl: u32,
    cCurves: u32,
};

pub const SURFOBJ = extern struct {
    dhsurf: DHSURF,
    hsurf: ?HSURF,
    dhpdev: DHPDEV,
    hdev: ?HDEV,
    sizlBitmap: SIZE,
    cjBits: u32,
    pvBits: ?*anyopaque,
    pvScan0: ?*anyopaque,
    lDelta: i32,
    iUniq: u32,
    iBitmapFormat: u32,
    iType: u16,
    fjBitmap: u16,
};

pub const WNDOBJ = extern struct {
    coClient: CLIPOBJ,
    pvConsumer: ?*anyopaque,
    rclClient: RECTL,
    psoOwner: ?*SURFOBJ,
};

pub const XFORMOBJ = extern struct {
    ulReserved: u32,
};

pub const XLATEOBJ = extern struct {
    iUniq: u32,
    flXlate: u32,
    iSrcType: u16,
    iDstType: u16,
    cEntries: u32,
    pulXlate: ?*u32,
};

pub const ENUMRECTS = extern struct {
    c: u32,
    arcl: [1]RECTL,
};

pub const GLYPHBITS = extern struct {
    ptlOrigin: POINTL,
    sizlBitmap: SIZE,
    aj: [1]u8,
};

pub const GLYPHDEF = extern union {
    pgb: ?*GLYPHBITS,
    ppo: ?*PATHOBJ,
};

pub const GLYPHPOS = extern struct {
    hg: u32,
    pgdf: ?*GLYPHDEF,
    ptl: POINTL,
};

pub const GLYPHDATA = extern struct {
    gdf: GLYPHDEF,
    hg: u32,
    fxD: i32,
    fxA: i32,
    fxAB: i32,
    fxInkTop: i32,
    fxInkBottom: i32,
    rclInk: RECTL,
    ptqD: POINTQF,
};

pub const STROBJ = extern struct {
    cGlyphs: u32,
    flAccel: u32,
    ulCharInc: u32,
    rclBkGround: RECTL,
    pgp: ?*GLYPHPOS,
    pwszOrg: ?PWSTR,
};

pub const FONTINFO = extern struct {
    cjThis: u32,
    flCaps: u32,
    cGlyphsSupported: u32,
    cjMaxGlyph1: u32,
    cjMaxGlyph4: u32,
    cjMaxGlyph8: u32,
    cjMaxGlyph32: u32,
};

pub const PATHDATA = extern struct {
    flags: u32,
    count: u32,
    pptfx: ?*POINTFIX,
};

pub const RUN = extern struct {
    iStart: i32,
    iStop: i32,
};

pub const CLIPLINE = extern struct {
    ptfxA: POINTFIX,
    ptfxB: POINTFIX,
    lStyleState: i32,
    c: u32,
    arun: [1]RUN,
};

pub const PERBANDINFO = extern struct {
    bRepeatThisBand: BOOL,
    szlBand: SIZE,
    ulHorzRes: u32,
    ulVertRes: u32,
};

pub const GAMMARAMP = extern struct {
    Red: [256]u16,
    Green: [256]u16,
    Blue: [256]u16,
};

pub const WNDOBJCHANGEPROC = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        pwo: ?*WNDOBJ,
        fl: u32,
    ) callconv(@import("std").os.windows.WINAPI) void,
    else => *const fn (
        pwo: ?*WNDOBJ,
        fl: u32,
    ) callconv(@import("std").os.windows.WINAPI) void,
};

pub const DEVHTINFO = extern struct {
    HTFlags: u32,
    HTPatternSize: u32,
    DevPelsDPI: u32,
    ColorInfo: COLORINFO,
};

pub const DEVHTADJDATA = extern struct {
    DeviceFlags: u32,
    DeviceXDPI: u32,
    DeviceYDPI: u32,
    pDefHTInfo: ?*DEVHTINFO,
    pAdjHTInfo: ?*DEVHTINFO,
};

pub const TYPE1_FONT = extern struct {
    hPFM: ?HANDLE,
    hPFB: ?HANDLE,
    ulIdentifier: u32,
};

pub const ENGSAFESEMAPHORE = extern struct {
    hsem: ?HSEMAPHORE,
    lCount: i32,
};

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

pub const ENG_TIME_FIELDS = extern struct {
    usYear: u16,
    usMonth: u16,
    usDay: u16,
    usHour: u16,
    usMinute: u16,
    usSecond: u16,
    usMilliseconds: u16,
    usWeekday: u16,
};

pub const ENG_SYSTEM_ATTRIBUTE = enum(i32) {
    ProcessorFeature = 1,
    NumberOfProcessors = 2,
    OptimumAvailableUserMemory = 3,
    OptimumAvailableSystemMemory = 4,
};
pub const EngProcessorFeature = ENG_SYSTEM_ATTRIBUTE.ProcessorFeature;
pub const EngNumberOfProcessors = ENG_SYSTEM_ATTRIBUTE.NumberOfProcessors;
pub const EngOptimumAvailableUserMemory = ENG_SYSTEM_ATTRIBUTE.OptimumAvailableUserMemory;
pub const EngOptimumAvailableSystemMemory = ENG_SYSTEM_ATTRIBUTE.OptimumAvailableSystemMemory;

pub const ENG_DEVICE_ATTRIBUTE = enum(i32) {
    RESERVED = 0,
    ACCELERATION_LEVEL = 1,
};
pub const QDA_RESERVED = ENG_DEVICE_ATTRIBUTE.RESERVED;
pub const QDA_ACCELERATION_LEVEL = ENG_DEVICE_ATTRIBUTE.ACCELERATION_LEVEL;

pub const EMFINFO = extern struct {
    nSize: u32,
    hdc: ?HDC,
    pvEMF: ?*u8,
    pvCurrentRecord: ?*u8,
};

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

pub const PFN_DrvEnablePDEV = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*DEVMODEW,
        param1: ?PWSTR,
        param2: u32,
        param3: ?*?HSURF,
        param4: u32,
        param5: ?*GDIINFO,
        param6: u32,
        param7: ?*DEVINFO,
        param8: ?HDEV,
        param9: ?PWSTR,
        param10: ?HANDLE,
    ) callconv(@import("std").os.windows.WINAPI) DHPDEV,
    else => *const fn (
        param0: ?*DEVMODEW,
        param1: ?PWSTR,
        param2: u32,
        param3: ?*?HSURF,
        param4: u32,
        param5: ?*GDIINFO,
        param6: u32,
        param7: ?*DEVINFO,
        param8: ?HDEV,
        param9: ?PWSTR,
        param10: ?HANDLE,
    ) callconv(@import("std").os.windows.WINAPI) DHPDEV,
};

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

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

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

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

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

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

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

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

pub const PFN_DrvTextOut = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*SURFOBJ,
        param1: ?*STROBJ,
        param2: ?*FONTOBJ,
        param3: ?*CLIPOBJ,
        param4: ?*RECTL,
        param5: ?*RECTL,
        param6: ?*BRUSHOBJ,
        param7: ?*BRUSHOBJ,
        param8: ?*POINTL,
        param9: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: ?*SURFOBJ,
        param1: ?*STROBJ,
        param2: ?*FONTOBJ,
        param3: ?*CLIPOBJ,
        param4: ?*RECTL,
        param5: ?*RECTL,
        param6: ?*BRUSHOBJ,
        param7: ?*BRUSHOBJ,
        param8: ?*POINTL,
        param9: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFN_DrvStretchBlt = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*SURFOBJ,
        param1: ?*SURFOBJ,
        param2: ?*SURFOBJ,
        param3: ?*CLIPOBJ,
        param4: ?*XLATEOBJ,
        param5: ?*COLORADJUSTMENT,
        param6: ?*POINTL,
        param7: ?*RECTL,
        param8: ?*RECTL,
        param9: ?*POINTL,
        param10: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: ?*SURFOBJ,
        param1: ?*SURFOBJ,
        param2: ?*SURFOBJ,
        param3: ?*CLIPOBJ,
        param4: ?*XLATEOBJ,
        param5: ?*COLORADJUSTMENT,
        param6: ?*POINTL,
        param7: ?*RECTL,
        param8: ?*RECTL,
        param9: ?*POINTL,
        param10: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFN_DrvStretchBltROP = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*SURFOBJ,
        param1: ?*SURFOBJ,
        param2: ?*SURFOBJ,
        param3: ?*CLIPOBJ,
        param4: ?*XLATEOBJ,
        param5: ?*COLORADJUSTMENT,
        param6: ?*POINTL,
        param7: ?*RECTL,
        param8: ?*RECTL,
        param9: ?*POINTL,
        param10: u32,
        param11: ?*BRUSHOBJ,
        param12: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: ?*SURFOBJ,
        param1: ?*SURFOBJ,
        param2: ?*SURFOBJ,
        param3: ?*CLIPOBJ,
        param4: ?*XLATEOBJ,
        param5: ?*COLORADJUSTMENT,
        param6: ?*POINTL,
        param7: ?*RECTL,
        param8: ?*RECTL,
        param9: ?*POINTL,
        param10: u32,
        param11: ?*BRUSHOBJ,
        param12: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFN_DrvTransparentBlt = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*SURFOBJ,
        param1: ?*SURFOBJ,
        param2: ?*CLIPOBJ,
        param3: ?*XLATEOBJ,
        param4: ?*RECTL,
        param5: ?*RECTL,
        param6: u32,
        param7: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: ?*SURFOBJ,
        param1: ?*SURFOBJ,
        param2: ?*CLIPOBJ,
        param3: ?*XLATEOBJ,
        param4: ?*RECTL,
        param5: ?*RECTL,
        param6: u32,
        param7: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFN_DrvPlgBlt = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*SURFOBJ,
        param1: ?*SURFOBJ,
        param2: ?*SURFOBJ,
        param3: ?*CLIPOBJ,
        param4: ?*XLATEOBJ,
        param5: ?*COLORADJUSTMENT,
        param6: ?*POINTL,
        param7: ?*POINTFIX,
        param8: ?*RECTL,
        param9: ?*POINTL,
        param10: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: ?*SURFOBJ,
        param1: ?*SURFOBJ,
        param2: ?*SURFOBJ,
        param3: ?*CLIPOBJ,
        param4: ?*XLATEOBJ,
        param5: ?*COLORADJUSTMENT,
        param6: ?*POINTL,
        param7: ?*POINTFIX,
        param8: ?*RECTL,
        param9: ?*POINTL,
        param10: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFN_DrvBitBlt = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*SURFOBJ,
        param1: ?*SURFOBJ,
        param2: ?*SURFOBJ,
        param3: ?*CLIPOBJ,
        param4: ?*XLATEOBJ,
        param5: ?*RECTL,
        param6: ?*POINTL,
        param7: ?*POINTL,
        param8: ?*BRUSHOBJ,
        param9: ?*POINTL,
        param10: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: ?*SURFOBJ,
        param1: ?*SURFOBJ,
        param2: ?*SURFOBJ,
        param3: ?*CLIPOBJ,
        param4: ?*XLATEOBJ,
        param5: ?*RECTL,
        param6: ?*POINTL,
        param7: ?*POINTL,
        param8: ?*BRUSHOBJ,
        param9: ?*POINTL,
        param10: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

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

pub const PFN_DrvCopyBits = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*SURFOBJ,
        param1: ?*SURFOBJ,
        param2: ?*CLIPOBJ,
        param3: ?*XLATEOBJ,
        param4: ?*RECTL,
        param5: ?*POINTL,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: ?*SURFOBJ,
        param1: ?*SURFOBJ,
        param2: ?*CLIPOBJ,
        param3: ?*XLATEOBJ,
        param4: ?*RECTL,
        param5: ?*POINTL,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

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

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

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

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

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

pub const PFN_DrvDrawEscape = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*SURFOBJ,
        param1: u32,
        param2: ?*CLIPOBJ,
        param3: ?*RECTL,
        param4: u32,
        param5: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        param0: ?*SURFOBJ,
        param1: u32,
        param2: ?*CLIPOBJ,
        param3: ?*RECTL,
        param4: u32,
        param5: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

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

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

pub const PFN_DrvQueryFontData = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: DHPDEV,
        param1: ?*FONTOBJ,
        param2: u32,
        param3: u32,
        param4: ?*GLYPHDATA,
        param5: ?*anyopaque,
        param6: u32,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        param0: DHPDEV,
        param1: ?*FONTOBJ,
        param2: u32,
        param3: u32,
        param4: ?*GLYPHDATA,
        param5: ?*anyopaque,
        param6: u32,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

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

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

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

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

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

pub const PFN_DrvSetPointerShape = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*SURFOBJ,
        param1: ?*SURFOBJ,
        param2: ?*SURFOBJ,
        param3: ?*XLATEOBJ,
        param4: i32,
        param5: i32,
        param6: i32,
        param7: i32,
        param8: ?*RECTL,
        param9: u32,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        param0: ?*SURFOBJ,
        param1: ?*SURFOBJ,
        param2: ?*SURFOBJ,
        param3: ?*XLATEOBJ,
        param4: i32,
        param5: i32,
        param6: i32,
        param7: i32,
        param8: ?*RECTL,
        param9: u32,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

pub const PFN_DrvMovePointer = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        pso: ?*SURFOBJ,
        x: i32,
        y: i32,
        prcl: ?*RECTL,
    ) callconv(@import("std").os.windows.WINAPI) void,
    else => *const fn (
        pso: ?*SURFOBJ,
        x: i32,
        y: i32,
        prcl: ?*RECTL,
    ) callconv(@import("std").os.windows.WINAPI) void,
};

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

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

pub const PFN_DrvStartDoc = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        pso: ?*SURFOBJ,
        pwszDocName: ?PWSTR,
        dwJobId: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        pso: ?*SURFOBJ,
        pwszDocName: ?PWSTR,
        dwJobId: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFN_DrvEndDoc = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        pso: ?*SURFOBJ,
        fl: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        pso: ?*SURFOBJ,
        fl: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFN_DrvQuerySpoolType = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        dhpdev: DHPDEV,
        pwchType: ?PWSTR,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        dhpdev: DHPDEV,
        pwchType: ?PWSTR,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFN_DrvLineTo = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*SURFOBJ,
        param1: ?*CLIPOBJ,
        param2: ?*BRUSHOBJ,
        param3: i32,
        param4: i32,
        param5: i32,
        param6: i32,
        param7: ?*RECTL,
        param8: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: ?*SURFOBJ,
        param1: ?*CLIPOBJ,
        param2: ?*BRUSHOBJ,
        param3: i32,
        param4: i32,
        param5: i32,
        param6: i32,
        param7: ?*RECTL,
        param8: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFN_DrvStrokePath = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*SURFOBJ,
        param1: ?*PATHOBJ,
        param2: ?*CLIPOBJ,
        param3: ?*XFORMOBJ,
        param4: ?*BRUSHOBJ,
        param5: ?*POINTL,
        param6: ?*LINEATTRS,
        param7: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: ?*SURFOBJ,
        param1: ?*PATHOBJ,
        param2: ?*CLIPOBJ,
        param3: ?*XFORMOBJ,
        param4: ?*BRUSHOBJ,
        param5: ?*POINTL,
        param6: ?*LINEATTRS,
        param7: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFN_DrvFillPath = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*SURFOBJ,
        param1: ?*PATHOBJ,
        param2: ?*CLIPOBJ,
        param3: ?*BRUSHOBJ,
        param4: ?*POINTL,
        param5: u32,
        param6: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: ?*SURFOBJ,
        param1: ?*PATHOBJ,
        param2: ?*CLIPOBJ,
        param3: ?*BRUSHOBJ,
        param4: ?*POINTL,
        param5: u32,
        param6: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFN_DrvStrokeAndFillPath = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*SURFOBJ,
        param1: ?*PATHOBJ,
        param2: ?*CLIPOBJ,
        param3: ?*XFORMOBJ,
        param4: ?*BRUSHOBJ,
        param5: ?*LINEATTRS,
        param6: ?*BRUSHOBJ,
        param7: ?*POINTL,
        param8: u32,
        param9: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: ?*SURFOBJ,
        param1: ?*PATHOBJ,
        param2: ?*CLIPOBJ,
        param3: ?*XFORMOBJ,
        param4: ?*BRUSHOBJ,
        param5: ?*LINEATTRS,
        param6: ?*BRUSHOBJ,
        param7: ?*POINTL,
        param8: u32,
        param9: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

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

pub const PFN_DrvGetGlyphMode = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        dhpdev: DHPDEV,
        pfo: ?*FONTOBJ,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        dhpdev: DHPDEV,
        pfo: ?*FONTOBJ,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

pub const PFN_DrvResetPDEV = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        dhpdevOld: DHPDEV,
        dhpdevNew: DHPDEV,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        dhpdevOld: DHPDEV,
        dhpdevNew: DHPDEV,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

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

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

pub const PFN_DrvQueryTrueTypeTable = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: usize,
        param1: u32,
        param2: u32,
        param3: i32,
        param4: u32,
        param5: ?*u8,
        param6: ?*?*u8,
        param7: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        param0: usize,
        param1: u32,
        param2: u32,
        param3: i32,
        param4: u32,
        param5: ?*u8,
        param6: ?*?*u8,
        param7: ?*u32,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

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

pub const PFN_DrvQueryTrueTypeOutline = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: DHPDEV,
        param1: ?*FONTOBJ,
        param2: u32,
        param3: BOOL,
        param4: ?*GLYPHDATA,
        param5: u32,
        param6: ?*TTPOLYGONHEADER,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        param0: DHPDEV,
        param1: ?*FONTOBJ,
        param2: u32,
        param3: BOOL,
        param4: ?*GLYPHDATA,
        param5: u32,
        param6: ?*TTPOLYGONHEADER,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

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

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

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

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

pub const PFN_DrvFontManagement = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*SURFOBJ,
        param1: ?*FONTOBJ,
        param2: u32,
        param3: u32,
        param4: ?*anyopaque,
        param5: u32,
        param6: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) u32,
    else => *const fn (
        param0: ?*SURFOBJ,
        param1: ?*FONTOBJ,
        param2: u32,
        param3: u32,
        param4: ?*anyopaque,
        param5: u32,
        param6: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) u32,
};

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

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

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

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

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

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

pub const PFN_DrvEnableDirectDraw = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: DHPDEV,
        param1: ?*DD_CALLBACKS,
        param2: ?*DD_SURFACECALLBACKS,
        param3: ?*DD_PALETTECALLBACKS,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: DHPDEV,
        param1: ?*DD_CALLBACKS,
        param2: ?*DD_SURFACECALLBACKS,
        param3: ?*DD_PALETTECALLBACKS,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

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

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

pub const PFN_DrvIcmCreateColorTransform = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: DHPDEV,
        param1: ?*LOGCOLORSPACEW,
        param2: ?*anyopaque,
        param3: u32,
        param4: ?*anyopaque,
        param5: u32,
        param6: ?*anyopaque,
        param7: u32,
        param8: u32,
    ) callconv(@import("std").os.windows.WINAPI) ?HANDLE,
    else => *const fn (
        param0: DHPDEV,
        param1: ?*LOGCOLORSPACEW,
        param2: ?*anyopaque,
        param3: u32,
        param4: ?*anyopaque,
        param5: u32,
        param6: ?*anyopaque,
        param7: u32,
        param8: u32,
    ) callconv(@import("std").os.windows.WINAPI) ?HANDLE,
};

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

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

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

pub const PFN_DrvAlphaBlend = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*SURFOBJ,
        param1: ?*SURFOBJ,
        param2: ?*CLIPOBJ,
        param3: ?*XLATEOBJ,
        param4: ?*RECTL,
        param5: ?*RECTL,
        param6: ?*BLENDOBJ,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: ?*SURFOBJ,
        param1: ?*SURFOBJ,
        param2: ?*CLIPOBJ,
        param3: ?*XLATEOBJ,
        param4: ?*RECTL,
        param5: ?*RECTL,
        param6: ?*BLENDOBJ,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFN_DrvGradientFill = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*SURFOBJ,
        param1: ?*CLIPOBJ,
        param2: ?*XLATEOBJ,
        param3: ?*TRIVERTEX,
        param4: u32,
        param5: ?*anyopaque,
        param6: u32,
        param7: ?*RECTL,
        param8: ?*POINTL,
        param9: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: ?*SURFOBJ,
        param1: ?*CLIPOBJ,
        param2: ?*XLATEOBJ,
        param3: ?*TRIVERTEX,
        param4: u32,
        param5: ?*anyopaque,
        param6: u32,
        param7: ?*RECTL,
        param8: ?*POINTL,
        param9: u32,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFN_DrvQueryDeviceSupport = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*SURFOBJ,
        param1: ?*XLATEOBJ,
        param2: ?*XFORMOBJ,
        param3: u32,
        param4: u32,
        param5: ?*anyopaque,
        param6: u32,
        param7: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
    else => *const fn (
        param0: ?*SURFOBJ,
        param1: ?*XLATEOBJ,
        param2: ?*XFORMOBJ,
        param3: u32,
        param4: u32,
        param5: ?*anyopaque,
        param6: u32,
        param7: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) BOOL,
};

pub const PFN_DrvDeriveSurface = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: ?*DD_DIRECTDRAW_GLOBAL,
        param1: ?*DD_SURFACE_LOCAL,
    ) callconv(@import("std").os.windows.WINAPI) ?HBITMAP,
    else => *const fn (
        param0: ?*DD_DIRECTDRAW_GLOBAL,
        param1: ?*DD_SURFACE_LOCAL,
    ) callconv(@import("std").os.windows.WINAPI) ?HBITMAP,
};

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

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

pub const PFN_DrvRenderHint = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        dhpdev: DHPDEV,
        NotifyCode: u32,
        Length: usize,
        // TODO: what to do with BytesParamIndex 2?
        Data: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        dhpdev: DHPDEV,
        NotifyCode: u32,
        Length: usize,
        // TODO: what to do with BytesParamIndex 2?
        Data: ?*anyopaque,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

pub const DRH_APIBITMAPDATA = extern struct {
    pso: ?*SURFOBJ,
    b: BOOL,
};

pub const PFN_EngCreateRectRgn = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        left: i32,
        top: i32,
        right: i32,
        bottom: i32,
    ) callconv(@import("std").os.windows.WINAPI) ?HANDLE,
    else => *const fn (
        left: i32,
        top: i32,
        right: i32,
        bottom: i32,
    ) callconv(@import("std").os.windows.WINAPI) ?HANDLE,
};

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

pub const PFN_EngCombineRgn = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hrgnTrg: ?HANDLE,
        hrgnSrc1: ?HANDLE,
        hrgnSrc2: ?HANDLE,
        imode: i32,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        hrgnTrg: ?HANDLE,
        hrgnSrc1: ?HANDLE,
        hrgnSrc2: ?HANDLE,
        imode: i32,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

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

pub const PFN_EngIntersectRgn = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hrgnResult: ?HANDLE,
        hRgnA: ?HANDLE,
        hRgnB: ?HANDLE,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        hrgnResult: ?HANDLE,
        hRgnA: ?HANDLE,
        hRgnB: ?HANDLE,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

pub const PFN_EngSubtractRgn = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hrgnResult: ?HANDLE,
        hRgnA: ?HANDLE,
        hRgnB: ?HANDLE,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        hrgnResult: ?HANDLE,
        hRgnA: ?HANDLE,
        hRgnB: ?HANDLE,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

pub const PFN_EngUnionRgn = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hrgnResult: ?HANDLE,
        hRgnA: ?HANDLE,
        hRgnB: ?HANDLE,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        hrgnResult: ?HANDLE,
        hRgnA: ?HANDLE,
        hRgnB: ?HANDLE,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

pub const PFN_EngXorRgn = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        hrgnResult: ?HANDLE,
        hRgnA: ?HANDLE,
        hRgnB: ?HANDLE,
    ) callconv(@import("std").os.windows.WINAPI) i32,
    else => *const fn (
        hrgnResult: ?HANDLE,
        hRgnA: ?HANDLE,
        hRgnB: ?HANDLE,
    ) callconv(@import("std").os.windows.WINAPI) i32,
};

pub const PFN_DrvCreateDeviceBitmapEx = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: DHPDEV,
        param1: SIZE,
        param2: u32,
        param3: u32,
        param4: DHSURF,
        param5: u32,
        param6: u32,
        param7: ?*?HANDLE,
    ) callconv(@import("std").os.windows.WINAPI) ?HBITMAP,
    else => *const fn (
        param0: DHPDEV,
        param1: SIZE,
        param2: u32,
        param3: u32,
        param4: DHSURF,
        param5: u32,
        param6: u32,
        param7: ?*?HANDLE,
    ) callconv(@import("std").os.windows.WINAPI) ?HBITMAP,
};

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

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

pub const PFN_DrvSynchronizeRedirectionBitmaps = switch (@import("builtin").zig_backend) {
    .stage1 => fn (
        param0: DHPDEV,
        param1: ?*u64,
    ) callconv(@import("std").os.windows.WINAPI) NTSTATUS,
    else => *const fn (
        param0: DHPDEV,
        param1: ?*u64,
    ) callconv(@import("std").os.windows.WINAPI) NTSTATUS,
};

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

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

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

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

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

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

pub const INDIRECT_DISPLAY_INFO = extern struct {
    DisplayAdapterLuid: LUID,
    Flags: u32,
    NumMonitors: u32,
    DisplayAdapterTargetBase: u32,
};

pub const VIDEO_VDM = extern struct {
    ProcessHandle: ?HANDLE,
};

pub const VIDEO_REGISTER_VDM = extern struct {
    MinimumStateSize: u32,
};

pub const VIDEO_MONITOR_DESCRIPTOR = extern struct {
    DescriptorSize: u32,
    Descriptor: [1]u8,
};

pub const VIDEO_WIN32K_CALLBACKS_PARAMS_TYPE = enum(i32) {
    PowerNotifyCallout = 1,
    EnumChildPdoNotifyCallout = 3,
    FindAdapterCallout = 4,
    PnpNotifyCallout = 7,
    DxgkDisplaySwitchCallout = 8,
    DxgkFindAdapterTdrCallout = 10,
    DxgkHardwareProtectionTeardown = 11,
    RepaintDesktop = 12,
    UpdateCursor = 13,
    DisableMultiPlaneOverlay = 14,
    DesktopDuplicationChange = 15,
    BlackScreenDiagnostics = 16,
};
pub const VideoPowerNotifyCallout = VIDEO_WIN32K_CALLBACKS_PARAMS_TYPE.PowerNotifyCallout;
pub const VideoEnumChildPdoNotifyCallout = VIDEO_WIN32K_CALLBACKS_PARAMS_TYPE.EnumChildPdoNotifyCallout;
pub const VideoFindAdapterCallout = VIDEO_WIN32K_CALLBACKS_PARAMS_TYPE.FindAdapterCallout;
pub const VideoPnpNotifyCallout = VIDEO_WIN32K_CALLBACKS_PARAMS_TYPE.PnpNotifyCallout;
pub const VideoDxgkDisplaySwitchCallout = VIDEO_WIN32K_CALLBACKS_PARAMS_TYPE.DxgkDisplaySwitchCallout;
pub const VideoDxgkFindAdapterTdrCallout = VIDEO_WIN32K_CALLBACKS_PARAMS_TYPE.DxgkFindAdapterTdrCallout;
pub const VideoDxgkHardwareProtectionTeardown = VIDEO_WIN32K_CALLBACKS_PARAMS_TYPE.DxgkHardwareProtectionTeardown;
pub const VideoRepaintDesktop = VIDEO_WIN32K_CALLBACKS_PARAMS_TYPE.RepaintDesktop;
pub const VideoUpdateCursor = VIDEO_WIN32K_CALLBACKS_PARAMS_TYPE.UpdateCursor;
pub const VideoDisableMultiPlaneOverlay = VIDEO_WIN32K_CALLBACKS_PARAMS_TYPE.DisableMultiPlaneOverlay;
pub const VideoDesktopDuplicationChange = VIDEO_WIN32K_CALLBACKS_PARAMS_TYPE.DesktopDuplicationChange;
pub const VideoBlackScreenDiagnostics = VIDEO_WIN32K_CALLBACKS_PARAMS_TYPE.BlackScreenDiagnostics;

pub const BlackScreenDiagnosticsCalloutParam = enum(i32) {
    agnosticsData = 1,
    splayRecovery = 2,
};
pub const BlackScreenDiagnosticsData = BlackScreenDiagnosticsCalloutParam.agnosticsData;
pub const BlackScreenDisplayRecovery = BlackScreenDiagnosticsCalloutParam.splayRecovery;

pub const DXGK_WIN32K_PARAM_DATA = extern struct {
    PathsArray: ?*anyopaque,
    ModesArray: ?*anyopaque,
    NumPathArrayElements: u32,
    NumModeArrayElements: u32,
    SDCFlags: u32,
};

pub const VIDEO_WIN32K_CALLBACKS_PARAMS = extern struct {
    CalloutType: VIDEO_WIN32K_CALLBACKS_PARAMS_TYPE,
    PhysDisp: ?*anyopaque,
    Param: usize,
    Status: i32,
    LockUserSession: BOOLEAN,
    IsPostDevice: BOOLEAN,
    SurpriseRemoval: BOOLEAN,
    WaitForQueueReady: BOOLEAN,
};

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

pub const VIDEO_WIN32K_CALLBACKS = extern struct {
    PhysDisp: ?*anyopaque,
    Callout: ?PVIDEO_WIN32K_CALLOUT,
    bACPI: u32,
    pPhysDeviceObject: ?HANDLE,
    DualviewFlags: u32,
};

pub const VIDEO_DEVICE_SESSION_STATUS = extern struct {
    bEnable: u32,
    bSuccess: u32,
};

pub const VIDEO_HARDWARE_STATE_HEADER = extern struct {
    Length: u32,
    PortValue: [48]u8,
    AttribIndexDataState: u32,
    BasicSequencerOffset: u32,
    BasicCrtContOffset: u32,
    BasicGraphContOffset: u32,
    BasicAttribContOffset: u32,
    BasicDacOffset: u32,
    BasicLatchesOffset: u32,
    ExtendedSequencerOffset: u32,
    ExtendedCrtContOffset: u32,
    ExtendedGraphContOffset: u32,
    ExtendedAttribContOffset: u32,
    ExtendedDacOffset: u32,
    ExtendedValidatorStateOffset: u32,
    ExtendedMiscDataOffset: u32,
    PlaneLength: u32,
    Plane1Offset: u32,
    Plane2Offset: u32,
    Plane3Offset: u32,
    Plane4Offset: u32,
    VGAStateFlags: u32,
    DIBOffset: u32,
    DIBBitsPerPixel: u32,
    DIBXResolution: u32,
    DIBYResolution: u32,
    DIBXlatOffset: u32,
    DIBXlatLength: u32,
    VesaInfoOffset: u32,
    FrameBufferData: ?*anyopaque,
};

pub const VIDEO_HARDWARE_STATE = extern struct {
    StateHeader: ?*VIDEO_HARDWARE_STATE_HEADER,
    StateLength: u32,
};

pub const VIDEO_NUM_MODES = extern struct {
    NumModes: u32,
    ModeInformationLength: u32,
};

pub const VIDEO_MODE = extern struct {
    RequestedMode: u32,
};

pub const VIDEO_MODE_INFORMATION = extern struct {
    Length: u32,
    ModeIndex: u32,
    VisScreenWidth: u32,
    VisScreenHeight: u32,
    ScreenStride: u32,
    NumberOfPlanes: u32,
    BitsPerPlane: u32,
    Frequency: u32,
    XMillimeter: u32,
    YMillimeter: u32,
    NumberRedBits: u32,
    NumberGreenBits: u32,
    NumberBlueBits: u32,
    RedMask: u32,
    GreenMask: u32,
    BlueMask: u32,
    AttributeFlags: u32,
    VideoMemoryBitmapWidth: u32,
    VideoMemoryBitmapHeight: u32,
    DriverSpecificAttributeFlags: u32,
};

pub const VIDEO_LOAD_FONT_INFORMATION = extern struct {
    WidthInPixels: u16,
    HeightInPixels: u16,
    FontSize: u32,
    Font: [1]u8,
};

pub const VIDEO_PALETTE_DATA = extern struct {
    NumEntries: u16,
    FirstEntry: u16,
    Colors: [1]u16,
};

pub const VIDEO_CLUTDATA = extern struct {
    Red: u8,
    Green: u8,
    Blue: u8,
    Unused: u8,
};

pub const VIDEO_CLUT = extern struct {
    NumEntries: u16,
    FirstEntry: u16,
    LookupTable: [1]extern union {
        RgbArray: VIDEO_CLUTDATA,
        RgbLong: u32,
    },
};

pub const VIDEO_CURSOR_POSITION = extern struct {
    Column: i16,
    Row: i16,
};

pub const VIDEO_CURSOR_ATTRIBUTES = extern struct {
    Width: u16,
    Height: u16,
    Column: i16,
    Row: i16,
    Rate: u8,
    Enable: u8,
};

pub const VIDEO_POINTER_POSITION = extern struct {
    Column: i16,
    Row: i16,
};

pub const VIDEO_POINTER_ATTRIBUTES = extern struct {
    Flags: u32,
    Width: u32,
    Height: u32,
    WidthInBytes: u32,
    Enable: u32,
    Column: i16,
    Row: i16,
    Pixels: [1]u8,
};

pub const VIDEO_POINTER_CAPABILITIES = extern struct {
    Flags: u32,
    MaxWidth: u32,
    MaxHeight: u32,
    HWPtrBitmapStart: u32,
    HWPtrBitmapEnd: u32,
};

pub const VIDEO_BANK_SELECT = extern struct {
    Length: u32,
    Size: u32,
    BankingFlags: u32,
    BankingType: u32,
    PlanarHCBankingType: u32,
    BitmapWidthInBytes: u32,
    BitmapSize: u32,
    Granularity: u32,
    PlanarHCGranularity: u32,
    CodeOffset: u32,
    PlanarHCBankCodeOffset: u32,
    PlanarHCEnableCodeOffset: u32,
    PlanarHCDisableCodeOffset: u32,
};

pub const VIDEO_BANK_TYPE = enum(i32) {
    VideoNotBanked = 0,
    VideoBanked1RW = 1,
    VideoBanked1R1W = 2,
    VideoBanked2RW = 3,
    NumVideoBankTypes = 4,
};
pub const VideoNotBanked = VIDEO_BANK_TYPE.VideoNotBanked;
pub const VideoBanked1RW = VIDEO_BANK_TYPE.VideoBanked1RW;
pub const VideoBanked1R1W = VIDEO_BANK_TYPE.VideoBanked1R1W;
pub const VideoBanked2RW = VIDEO_BANK_TYPE.VideoBanked2RW;
pub const NumVideoBankTypes = VIDEO_BANK_TYPE.NumVideoBankTypes;

pub const VIDEO_MEMORY = extern struct {
    RequestedVirtualAddress: ?*anyopaque,
};

pub const VIDEO_SHARE_MEMORY = extern struct {
    ProcessHandle: ?HANDLE,
    ViewOffset: u32,
    ViewSize: u32,
    RequestedVirtualAddress: ?*anyopaque,
};

pub const VIDEO_SHARE_MEMORY_INFORMATION = extern struct {
    SharedViewOffset: u32,
    SharedViewSize: u32,
    VirtualAddress: ?*anyopaque,
};

pub const VIDEO_MEMORY_INFORMATION = extern struct {
    VideoRamBase: ?*anyopaque,
    VideoRamLength: u32,
    FrameBufferBase: ?*anyopaque,
    FrameBufferLength: u32,
};

pub const VIDEO_PUBLIC_ACCESS_RANGES = extern struct {
    InIoSpace: u32,
    MappedInIoSpace: u32,
    VirtualAddress: ?*anyopaque,
};

pub const VIDEO_COLOR_CAPABILITIES = extern struct {
    Length: u32,
    AttributeFlags: u32,
    RedPhosphoreDecay: i32,
    GreenPhosphoreDecay: i32,
    BluePhosphoreDecay: i32,
    WhiteChromaticity_x: i32,
    WhiteChromaticity_y: i32,
    WhiteChromaticity_Y: i32,
    RedChromaticity_x: i32,
    RedChromaticity_y: i32,
    GreenChromaticity_x: i32,
    GreenChromaticity_y: i32,
    BlueChromaticity_x: i32,
    BlueChromaticity_y: i32,
    WhiteGamma: i32,
    RedGamma: i32,
    GreenGamma: i32,
    BlueGamma: i32,
};

pub const VIDEO_POWER_STATE = enum(i32) {
    Unspecified = 0,
    On = 1,
    StandBy = 2,
    Suspend = 3,
    Off = 4,
    Hibernate = 5,
    Shutdown = 6,
    Maximum = 7,
};
pub const VideoPowerUnspecified = VIDEO_POWER_STATE.Unspecified;
pub const VideoPowerOn = VIDEO_POWER_STATE.On;
pub const VideoPowerStandBy = VIDEO_POWER_STATE.StandBy;
pub const VideoPowerSuspend = VIDEO_POWER_STATE.Suspend;
pub const VideoPowerOff = VIDEO_POWER_STATE.Off;
pub const VideoPowerHibernate = VIDEO_POWER_STATE.Hibernate;
pub const VideoPowerShutdown = VIDEO_POWER_STATE.Shutdown;
pub const VideoPowerMaximum = VIDEO_POWER_STATE.Maximum;

pub const VIDEO_POWER_MANAGEMENT = extern struct {
    Length: u32,
    DPMSVersion: u32,
    PowerState: u32,
};

pub const VIDEO_COLOR_LUT_DATA = extern struct {
    Length: u32,
    LutDataFormat: u32,
    LutData: [1]u8,
};

pub const VIDEO_LUT_RGB256WORDS = extern struct {
    Red: [256]u16,
    Green: [256]u16,
    Blue: [256]u16,
};

pub const BANK_POSITION = extern struct {
    ReadBankPosition: u32,
    WriteBankPosition: u32,
};

pub const DISPLAY_BRIGHTNESS = extern struct {
    ucDisplayPolicy: u8,
    ucACBrightness: u8,
    ucDCBrightness: u8,
};

pub const VIDEO_BRIGHTNESS_POLICY = extern struct {
    DefaultToBiosPolicy: BOOLEAN,
    LevelCount: u8,
    Level: [1]extern struct {
        BatteryLevel: u8,
        Brightness: u8,
    },
};

pub const FSCNTL_SCREEN_INFO = extern struct {
    Position: COORD,
    ScreenSize: COORD,
    nNumberOfChars: u32,
};

pub const FONT_IMAGE_INFO = extern struct {
    FontSize: COORD,
    ImageBits: ?*u8,
};

pub const CHAR_IMAGE_INFO = extern struct {
    CharInfo: CHAR_INFO,
    FontImageInfo: FONT_IMAGE_INFO,
};

pub const VGA_CHAR = extern struct {
    Char: CHAR,
    Attributes: CHAR,
};

pub const FSVIDEO_COPY_FRAME_BUFFER = extern struct {
    SrcScreen: FSCNTL_SCREEN_INFO,
    DestScreen: FSCNTL_SCREEN_INFO,
};

pub const FSVIDEO_WRITE_TO_FRAME_BUFFER = extern struct {
    SrcBuffer: ?*CHAR_IMAGE_INFO,
    DestScreen: FSCNTL_SCREEN_INFO,
};

pub const FSVIDEO_REVERSE_MOUSE_POINTER = extern struct {
    Screen: FSCNTL_SCREEN_INFO,
    dwType: u32,
};

pub const FSVIDEO_MODE_INFORMATION = extern struct {
    VideoMode: VIDEO_MODE_INFORMATION,
    VideoMemory: VIDEO_MEMORY_INFORMATION,
};

pub const FSVIDEO_SCREEN_INFORMATION = extern struct {
    ScreenSize: COORD,
    FontSize: COORD,
};

pub const FSVIDEO_CURSOR_POSITION = extern struct {
    Coord: VIDEO_CURSOR_POSITION,
    dwType: u32,
};

pub const ENG_EVENT = extern struct {
    pKEvent: ?*anyopaque,
    fFlags: u32,
};

pub const VIDEO_PERFORMANCE_COUNTER = extern struct {
    NbOfAllocationEvicted: [10]u64,
    NbOfAllocationMarked: [10]u64,
    NbOfAllocationRestored: [10]u64,
    KBytesEvicted: [10]u64,
    KBytesMarked: [10]u64,
    KBytesRestored: [10]u64,
    NbProcessCommited: u64,
    NbAllocationCommited: u64,
    NbAllocationMarked: u64,
    KBytesAllocated: u64,
    KBytesAvailable: u64,
    KBytesCurMarked: u64,
    Reference: u64,
    Unreference: u64,
    TrueReference: u64,
    NbOfPageIn: u64,
    KBytesPageIn: u64,
    NbOfPageOut: u64,
    KBytesPageOut: u64,
    NbOfRotateOut: u64,
    KBytesRotateOut: u64,
};

pub const VIDEO_QUERY_PERFORMANCE_COUNTER = extern struct {
    BufferSize: u32,
    Buffer: ?*VIDEO_PERFORMANCE_COUNTER,
};

pub const BRIGHTNESS_INTERFACE_VERSION = enum(i32) {
    @"1" = 1,
    @"2" = 2,
    @"3" = 3,
};
pub const BRIGHTNESS_INTERFACE_VERSION_1 = BRIGHTNESS_INTERFACE_VERSION.@"1";
pub const BRIGHTNESS_INTERFACE_VERSION_2 = BRIGHTNESS_INTERFACE_VERSION.@"2";
pub const BRIGHTNESS_INTERFACE_VERSION_3 = BRIGHTNESS_INTERFACE_VERSION.@"3";

pub const PANEL_QUERY_BRIGHTNESS_CAPS = extern struct {
    Version: BRIGHTNESS_INTERFACE_VERSION,
    Anonymous: extern union {
        Anonymous: extern struct {
            _bitfield: u32,
        },
        Value: u32,
    },
};

pub const BRIGHTNESS_LEVEL = extern struct {
    Count: u8,
    Level: [103]u8,
};

pub const BRIGHTNESS_NIT_RANGE = extern struct {
    MinLevelInMillinit: u32,
    MaxLevelInMillinit: u32,
    StepSizeInMillinit: u32,
};

pub const BRIGHTNESS_NIT_RANGES = extern struct {
    NormalRangeCount: u32,
    RangeCount: u32,
    PreferredMaximumBrightness: u32,
    SupportedRanges: [16]BRIGHTNESS_NIT_RANGE,
};

pub const PANEL_QUERY_BRIGHTNESS_RANGES = extern struct {
    Version: BRIGHTNESS_INTERFACE_VERSION,
    Anonymous: extern union {
        BrightnessLevel: BRIGHTNESS_LEVEL,
        NitRanges: BRIGHTNESS_NIT_RANGES,
    },
};

pub const PANEL_GET_BRIGHTNESS = extern struct {
    Version: BRIGHTNESS_INTERFACE_VERSION,
    Anonymous: extern union {
        Level: u8,
        Anonymous: extern struct {
            CurrentInMillinits: u32,
            TargetInMillinits: u32,
        },
    },
};

pub const CHROMATICITY_COORDINATE = extern struct {
    x: f32,
    y: f32,
};

pub const PANEL_BRIGHTNESS_SENSOR_DATA = extern struct {
    Anonymous: extern union {
        Anonymous: extern struct {
            _bitfield: u32,
        },
        Value: u32,
    },
    AlsReading: f32,
    ChromaticityCoordinate: CHROMATICITY_COORDINATE,
    ColorTemperature: f32,
};

pub const PANEL_SET_BRIGHTNESS = extern struct {
    Version: BRIGHTNESS_INTERFACE_VERSION,
    Anonymous: extern union {
        Level: u8,
        Anonymous: extern struct {
            Millinits: u32,
            TransitionTimeInMs: u32,
            SensorData: PANEL_BRIGHTNESS_SENSOR_DATA,
        },
    },
};

pub const PANEL_SET_BRIGHTNESS_STATE = extern struct {
    Anonymous: extern union {
        Anonymous: extern struct {
            _bitfield: u32,
        },
        Value: u32,
    },
};

pub const BACKLIGHT_OPTIMIZATION_LEVEL = enum(i32) {
    Disable = 0,
    Desktop = 1,
    Dynamic = 2,
    Dimmed = 3,
    EDR = 4,
};
pub const BacklightOptimizationDisable = BACKLIGHT_OPTIMIZATION_LEVEL.Disable;
pub const BacklightOptimizationDesktop = BACKLIGHT_OPTIMIZATION_LEVEL.Desktop;
pub const BacklightOptimizationDynamic = BACKLIGHT_OPTIMIZATION_LEVEL.Dynamic;
pub const BacklightOptimizationDimmed = BACKLIGHT_OPTIMIZATION_LEVEL.Dimmed;
pub const BacklightOptimizationEDR = BACKLIGHT_OPTIMIZATION_LEVEL.EDR;

pub const PANEL_SET_BACKLIGHT_OPTIMIZATION = extern struct {
    Level: BACKLIGHT_OPTIMIZATION_LEVEL,
};

pub const BACKLIGHT_REDUCTION_GAMMA_RAMP = extern struct {
    R: [256]u16,
    G: [256]u16,
    B: [256]u16,
};

pub const PANEL_GET_BACKLIGHT_REDUCTION = extern struct {
    BacklightUsersetting: u16,
    BacklightEffective: u16,
    GammaRamp: BACKLIGHT_REDUCTION_GAMMA_RAMP,
};

pub const COLORSPACE_TRANSFORM_DATA_TYPE = enum(i32) {
    IXED_POINT = 0,
    LOAT = 1,
};
pub const COLORSPACE_TRANSFORM_DATA_TYPE_FIXED_POINT = COLORSPACE_TRANSFORM_DATA_TYPE.IXED_POINT;
pub const COLORSPACE_TRANSFORM_DATA_TYPE_FLOAT = COLORSPACE_TRANSFORM_DATA_TYPE.LOAT;

pub const COLORSPACE_TRANSFORM_DATA_CAP = extern struct {
    DataType: COLORSPACE_TRANSFORM_DATA_TYPE,
    Anonymous: extern union {
        Anonymous1: extern struct {
            _bitfield: u32,
        },
        Anonymous2: extern struct {
            _bitfield: u32,
        },
        Value: u32,
    },
    NumericRangeMin: f32,
    NumericRangeMax: f32,
};

pub const COLORSPACE_TRANSFORM_1DLUT_CAP = extern struct {
    NumberOfLUTEntries: u32,
    DataCap: COLORSPACE_TRANSFORM_DATA_CAP,
};

pub const COLORSPACE_TRANSFORM_MATRIX_CAP = extern struct {
    Anonymous: extern union {
        Anonymous: extern struct {
            _bitfield: u32,
        },
        Value: u32,
    },
    DataCap: COLORSPACE_TRANSFORM_DATA_CAP,
};

pub const COLORSPACE_TRANSFORM_TARGET_CAPS_VERSION = enum(i32) {
    DEFAULT = 0,
    @"1" = 1,
    // NOT_SUPPORTED = 0, this enum value conflicts with DEFAULT
};
pub const COLORSPACE_TRANSFORM_VERSION_DEFAULT = COLORSPACE_TRANSFORM_TARGET_CAPS_VERSION.DEFAULT;
pub const COLORSPACE_TRANSFORM_VERSION_1 = COLORSPACE_TRANSFORM_TARGET_CAPS_VERSION.@"1";
pub const COLORSPACE_TRANSFORM_VERSION_NOT_SUPPORTED = COLORSPACE_TRANSFORM_TARGET_CAPS_VERSION.DEFAULT;

pub const COLORSPACE_TRANSFORM_TARGET_CAPS = extern struct {
    Version: COLORSPACE_TRANSFORM_TARGET_CAPS_VERSION,
    LookupTable1DDegammaCap: COLORSPACE_TRANSFORM_1DLUT_CAP,
    ColorMatrix3x3Cap: COLORSPACE_TRANSFORM_MATRIX_CAP,
    LookupTable1DRegammaCap: COLORSPACE_TRANSFORM_1DLUT_CAP,
};

pub const COLORSPACE_TRANSFORM_TYPE = enum(i32) {
    UNINITIALIZED = 0,
    DEFAULT = 1,
    RGB256x3x16 = 2,
    DXGI_1 = 3,
    MATRIX_3x4 = 4,
    MATRIX_V2 = 5,
};
pub const COLORSPACE_TRANSFORM_TYPE_UNINITIALIZED = COLORSPACE_TRANSFORM_TYPE.UNINITIALIZED;
pub const COLORSPACE_TRANSFORM_TYPE_DEFAULT = COLORSPACE_TRANSFORM_TYPE.DEFAULT;
pub const COLORSPACE_TRANSFORM_TYPE_RGB256x3x16 = COLORSPACE_TRANSFORM_TYPE.RGB256x3x16;
pub const COLORSPACE_TRANSFORM_TYPE_DXGI_1 = COLORSPACE_TRANSFORM_TYPE.DXGI_1;
pub const COLORSPACE_TRANSFORM_TYPE_MATRIX_3x4 = COLORSPACE_TRANSFORM_TYPE.MATRIX_3x4;
pub const COLORSPACE_TRANSFORM_TYPE_MATRIX_V2 = COLORSPACE_TRANSFORM_TYPE.MATRIX_V2;

pub const GAMMA_RAMP_RGB256x3x16 = extern struct {
    Red: [256]u16,
    Green: [256]u16,
    Blue: [256]u16,
};

pub const GAMMA_RAMP_RGB = extern struct {
    Red: f32,
    Green: f32,
    Blue: f32,
};

pub const GAMMA_RAMP_DXGI_1 = extern struct {
    Scale: GAMMA_RAMP_RGB,
    Offset: GAMMA_RAMP_RGB,
    GammaCurve: [1025]GAMMA_RAMP_RGB,
};

pub const COLORSPACE_TRANSFORM_3x4 = extern struct {
    ColorMatrix3x4: [12]f32,
    ScalarMultiplier: f32,
    LookupTable1D: [4096]GAMMA_RAMP_RGB,
};

pub const OUTPUT_WIRE_COLOR_SPACE_TYPE = enum(i32) {
    G22_P709 = 0,
    RESERVED = 4,
    G2084_P2020 = 12,
    G22_P709_WCG = 30,
    G22_P2020 = 31,
    G2084_P2020_HDR10PLUS = 32,
    G2084_P2020_DVLL = 33,
};
pub const OUTPUT_WIRE_COLOR_SPACE_G22_P709 = OUTPUT_WIRE_COLOR_SPACE_TYPE.G22_P709;
pub const OUTPUT_WIRE_COLOR_SPACE_RESERVED = OUTPUT_WIRE_COLOR_SPACE_TYPE.RESERVED;
pub const OUTPUT_WIRE_COLOR_SPACE_G2084_P2020 = OUTPUT_WIRE_COLOR_SPACE_TYPE.G2084_P2020;
pub const OUTPUT_WIRE_COLOR_SPACE_G22_P709_WCG = OUTPUT_WIRE_COLOR_SPACE_TYPE.G22_P709_WCG;
pub const OUTPUT_WIRE_COLOR_SPACE_G22_P2020 = OUTPUT_WIRE_COLOR_SPACE_TYPE.G22_P2020;
pub const OUTPUT_WIRE_COLOR_SPACE_G2084_P2020_HDR10PLUS = OUTPUT_WIRE_COLOR_SPACE_TYPE.G2084_P2020_HDR10PLUS;
pub const OUTPUT_WIRE_COLOR_SPACE_G2084_P2020_DVLL = OUTPUT_WIRE_COLOR_SPACE_TYPE.G2084_P2020_DVLL;

pub const OUTPUT_COLOR_ENCODING = enum(i32) {
    RGB = 0,
    YCBCR444 = 1,
    YCBCR422 = 2,
    YCBCR420 = 3,
    INTENSITY = 4,
    FORCE_UINT32 = -1,
};
pub const OUTPUT_COLOR_ENCODING_RGB = OUTPUT_COLOR_ENCODING.RGB;
pub const OUTPUT_COLOR_ENCODING_YCBCR444 = OUTPUT_COLOR_ENCODING.YCBCR444;
pub const OUTPUT_COLOR_ENCODING_YCBCR422 = OUTPUT_COLOR_ENCODING.YCBCR422;
pub const OUTPUT_COLOR_ENCODING_YCBCR420 = OUTPUT_COLOR_ENCODING.YCBCR420;
pub const OUTPUT_COLOR_ENCODING_INTENSITY = OUTPUT_COLOR_ENCODING.INTENSITY;
pub const OUTPUT_COLOR_ENCODING_FORCE_UINT32 = OUTPUT_COLOR_ENCODING.FORCE_UINT32;

pub const OUTPUT_WIRE_FORMAT = extern struct {
    ColorEncoding: OUTPUT_COLOR_ENCODING,
    BitsPerPixel: u32,
};

pub const COLORSPACE_TRANSFORM_STAGE_CONTROL = enum(i32) {
    No_Change = 0,
    Enable = 1,
    Bypass = 2,
};
pub const ColorSpaceTransformStageControl_No_Change = COLORSPACE_TRANSFORM_STAGE_CONTROL.No_Change;
pub const ColorSpaceTransformStageControl_Enable = COLORSPACE_TRANSFORM_STAGE_CONTROL.Enable;
pub const ColorSpaceTransformStageControl_Bypass = COLORSPACE_TRANSFORM_STAGE_CONTROL.Bypass;

pub const COLORSPACE_TRANSFORM_MATRIX_V2 = extern struct {
    StageControlLookupTable1DDegamma: COLORSPACE_TRANSFORM_STAGE_CONTROL,
    LookupTable1DDegamma: [4096]GAMMA_RAMP_RGB,
    StageControlColorMatrix3x3: COLORSPACE_TRANSFORM_STAGE_CONTROL,
    ColorMatrix3x3: [9]f32,
    StageControlLookupTable1DRegamma: COLORSPACE_TRANSFORM_STAGE_CONTROL,
    LookupTable1DRegamma: [4096]GAMMA_RAMP_RGB,
};

pub const COLORSPACE_TRANSFORM = extern struct {
    Type: COLORSPACE_TRANSFORM_TYPE,
    Data: extern union {
        Rgb256x3x16: GAMMA_RAMP_RGB256x3x16,
        Dxgi1: GAMMA_RAMP_DXGI_1,
        T3x4: COLORSPACE_TRANSFORM_3x4,
        MatrixV2: COLORSPACE_TRANSFORM_MATRIX_V2,
    },
};

pub const COLORSPACE_TRANSFORM_SET_INPUT = extern struct {
    OutputWireColorSpaceExpected: OUTPUT_WIRE_COLOR_SPACE_TYPE,
    OutputWireFormatExpected: OUTPUT_WIRE_FORMAT,
    ColorSpaceTransform: COLORSPACE_TRANSFORM,
};

pub const SET_ACTIVE_COLOR_PROFILE_NAME = extern struct {
    ColorProfileName: [1]u16,
};

pub const MIPI_DSI_CAPS = extern struct {
    DSITypeMajor: u8,
    DSITypeMinor: u8,
    SpecVersionMajor: u8,
    SpecVersionMinor: u8,
    SpecVersionPatch: u8,
    TargetMaximumReturnPacketSize: u16,
    ResultCodeFlags: u8,
    ResultCodeStatus: u8,
    Revision: u8,
    Level: u8,
    DeviceClassHi: u8,
    DeviceClassLo: u8,
    ManufacturerHi: u8,
    ManufacturerLo: u8,
    ProductHi: u8,
    ProductLo: u8,
    LengthHi: u8,
    LengthLo: u8,
};

pub const DSI_CONTROL_TRANSMISSION_MODE = enum(i32) {
    DEFAULT = 0,
    FORCE_LOW_POWER = 1,
    FORCE_HIGH_PERFORMANCE = 2,
};
pub const DCT_DEFAULT = DSI_CONTROL_TRANSMISSION_MODE.DEFAULT;
pub const DCT_FORCE_LOW_POWER = DSI_CONTROL_TRANSMISSION_MODE.FORCE_LOW_POWER;
pub const DCT_FORCE_HIGH_PERFORMANCE = DSI_CONTROL_TRANSMISSION_MODE.FORCE_HIGH_PERFORMANCE;

pub const MIPI_DSI_PACKET = extern struct {
    Anonymous1: extern union {
        DataId: u8,
        Anonymous: extern struct {
            _bitfield: u8,
        },
    },
    Anonymous2: extern union {
        Anonymous: extern struct {
            Data0: u8,
            Data1: u8,
        },
        LongWriteWordCount: u16,
    },
    EccFiller: u8,
    Payload: [8]u8,
};

pub const MIPI_DSI_TRANSMISSION = extern struct {
    TotalBufferSize: u32,
    PacketCount: u8,
    FailedPacket: u8,
    Anonymous: extern struct {
        _bitfield: u16,
    },
    ReadWordCount: u16,
    FinalCommandExtraPayload: u16,
    MipiErrors: u16,
    HostErrors: u16,
    Packets: [1]MIPI_DSI_PACKET,
};

pub const MIPI_DSI_RESET = extern struct {
    Flags: u32,
    Anonymous: extern union {
        Anonymous: extern struct {
            _bitfield: u32,
        },
        Results: u32,
    },
};

pub const AR_STATE = enum(i32) {
    ENABLED = 0,
    DISABLED = 1,
    SUPPRESSED = 2,
    REMOTESESSION = 4,
    MULTIMON = 8,
    NOSENSOR = 16,
    NOT_SUPPORTED = 32,
    DOCKED = 64,
    LAPTOP = 128,
};
pub const AR_ENABLED = AR_STATE.ENABLED;
pub const AR_DISABLED = AR_STATE.DISABLED;
pub const AR_SUPPRESSED = AR_STATE.SUPPRESSED;
pub const AR_REMOTESESSION = AR_STATE.REMOTESESSION;
pub const AR_MULTIMON = AR_STATE.MULTIMON;
pub const AR_NOSENSOR = AR_STATE.NOSENSOR;
pub const AR_NOT_SUPPORTED = AR_STATE.NOT_SUPPORTED;
pub const AR_DOCKED = AR_STATE.DOCKED;
pub const AR_LAPTOP = AR_STATE.LAPTOP;

pub const ORIENTATION_PREFERENCE = enum(i32) {
    NONE = 0,
    LANDSCAPE = 1,
    PORTRAIT = 2,
    LANDSCAPE_FLIPPED = 4,
    PORTRAIT_FLIPPED = 8,
};
pub const ORIENTATION_PREFERENCE_NONE = ORIENTATION_PREFERENCE.NONE;
pub const ORIENTATION_PREFERENCE_LANDSCAPE = ORIENTATION_PREFERENCE.LANDSCAPE;
pub const ORIENTATION_PREFERENCE_PORTRAIT = ORIENTATION_PREFERENCE.PORTRAIT;
pub const ORIENTATION_PREFERENCE_LANDSCAPE_FLIPPED = ORIENTATION_PREFERENCE.LANDSCAPE_FLIPPED;
pub const ORIENTATION_PREFERENCE_PORTRAIT_FLIPPED = ORIENTATION_PREFERENCE.PORTRAIT_FLIPPED;

pub const POINTE = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        x: f32,
        y: f32,
    },
    .X86 => extern struct {
        x: u32,
        y: u32,
    },
};
pub const FLOAT_LONG = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern union {
        e: f32,
        l: i32,
    },
    .X86 => extern union {
        e: u32,
        l: i32,
    },
};
pub const FD_XFORM = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        eXX: f32,
        eXY: f32,
        eYX: f32,
        eYY: f32,
    },
    .X86 => extern struct {
        eXX: u32,
        eXY: u32,
        eYX: u32,
        eYY: u32,
    },
};
pub const IFIMETRICS = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        cjThis: u32,
        cjIfiExtra: u32,
        dpwszFamilyName: i32,
        dpwszStyleName: i32,
        dpwszFaceName: i32,
        dpwszUniqueName: i32,
        dpFontSim: i32,
        lEmbedId: i32,
        lItalicAngle: i32,
        lCharBias: i32,
        dpCharSets: i32,
        jWinCharSet: u8,
        jWinPitchAndFamily: u8,
        usWinWeight: u16,
        flInfo: u32,
        fsSelection: u16,
        fsType: u16,
        fwdUnitsPerEm: i16,
        fwdLowestPPEm: i16,
        fwdWinAscender: i16,
        fwdWinDescender: i16,
        fwdMacAscender: i16,
        fwdMacDescender: i16,
        fwdMacLineGap: i16,
        fwdTypoAscender: i16,
        fwdTypoDescender: i16,
        fwdTypoLineGap: i16,
        fwdAveCharWidth: i16,
        fwdMaxCharInc: i16,
        fwdCapHeight: i16,
        fwdXHeight: i16,
        fwdSubscriptXSize: i16,
        fwdSubscriptYSize: i16,
        fwdSubscriptXOffset: i16,
        fwdSubscriptYOffset: i16,
        fwdSuperscriptXSize: i16,
        fwdSuperscriptYSize: i16,
        fwdSuperscriptXOffset: i16,
        fwdSuperscriptYOffset: i16,
        fwdUnderscoreSize: i16,
        fwdUnderscorePosition: i16,
        fwdStrikeoutSize: i16,
        fwdStrikeoutPosition: i16,
        chFirstChar: u8,
        chLastChar: u8,
        chDefaultChar: u8,
        chBreakChar: u8,
        wcFirstChar: u16,
        wcLastChar: u16,
        wcDefaultChar: u16,
        wcBreakChar: u16,
        ptlBaseline: POINTL,
        ptlAspect: POINTL,
        ptlCaret: POINTL,
        rclFontBox: RECTL,
        achVendId: [4]u8,
        cKerningPairs: u32,
        ulPanoseCulture: u32,
        panose: PANOSE,
        Align: ?*anyopaque,
    },
    .X86 => extern struct {
        cjThis: u32,
        cjIfiExtra: u32,
        dpwszFamilyName: i32,
        dpwszStyleName: i32,
        dpwszFaceName: i32,
        dpwszUniqueName: i32,
        dpFontSim: i32,
        lEmbedId: i32,
        lItalicAngle: i32,
        lCharBias: i32,
        dpCharSets: i32,
        jWinCharSet: u8,
        jWinPitchAndFamily: u8,
        usWinWeight: u16,
        flInfo: u32,
        fsSelection: u16,
        fsType: u16,
        fwdUnitsPerEm: i16,
        fwdLowestPPEm: i16,
        fwdWinAscender: i16,
        fwdWinDescender: i16,
        fwdMacAscender: i16,
        fwdMacDescender: i16,
        fwdMacLineGap: i16,
        fwdTypoAscender: i16,
        fwdTypoDescender: i16,
        fwdTypoLineGap: i16,
        fwdAveCharWidth: i16,
        fwdMaxCharInc: i16,
        fwdCapHeight: i16,
        fwdXHeight: i16,
        fwdSubscriptXSize: i16,
        fwdSubscriptYSize: i16,
        fwdSubscriptXOffset: i16,
        fwdSubscriptYOffset: i16,
        fwdSuperscriptXSize: i16,
        fwdSuperscriptYSize: i16,
        fwdSuperscriptXOffset: i16,
        fwdSuperscriptYOffset: i16,
        fwdUnderscoreSize: i16,
        fwdUnderscorePosition: i16,
        fwdStrikeoutSize: i16,
        fwdStrikeoutPosition: i16,
        chFirstChar: u8,
        chLastChar: u8,
        chDefaultChar: u8,
        chBreakChar: u8,
        wcFirstChar: u16,
        wcLastChar: u16,
        wcDefaultChar: u16,
        wcBreakChar: u16,
        ptlBaseline: POINTL,
        ptlAspect: POINTL,
        ptlCaret: POINTL,
        rclFontBox: RECTL,
        achVendId: [4]u8,
        cKerningPairs: u32,
        ulPanoseCulture: u32,
        panose: PANOSE,
    },
};
pub const LINEATTRS = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        fl: u32,
        iJoin: u32,
        iEndCap: u32,
        elWidth: FLOAT_LONG,
        eMiterLimit: f32,
        cstyle: u32,
        pstyle: ?*FLOAT_LONG,
        elStyleState: FLOAT_LONG,
    },
    .X86 => extern struct {
        fl: u32,
        iJoin: u32,
        iEndCap: u32,
        elWidth: FLOAT_LONG,
        eMiterLimit: u32,
        cstyle: u32,
        pstyle: ?*FLOAT_LONG,
        elStyleState: FLOAT_LONG,
    },
};
pub const XFORML = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        eM11: f32,
        eM12: f32,
        eM21: f32,
        eM22: f32,
        eDx: f32,
        eDy: f32,
    },
    .X86 => extern struct {
        eM11: u32,
        eM12: u32,
        eM21: u32,
        eM22: u32,
        eDx: u32,
        eDy: u32,
    },
};
pub const FLOATOBJ_XFORM = switch (@import("../zig.zig").arch) {
    .X64, .Arm64 => extern struct {
        eM11: f32,
        eM12: f32,
        eM21: f32,
        eM22: f32,
        eDx: f32,
        eDy: f32,
    },
    .X86 => extern struct {
        eM11: FLOATOBJ,
        eM12: FLOATOBJ,
        eM21: FLOATOBJ,
        eM22: FLOATOBJ,
        eDx: FLOATOBJ,
        eDy: FLOATOBJ,
    },
};
pub const FLOATOBJ = switch (@import("../zig.zig").arch) {
    .X86 => extern struct {
        ul1: u32,
        ul2: u32,
    },
    else => usize, // NOTE: this should be a @compileError but can't because of https://github.com/ziglang/zig/issues/9682
};

//--------------------------------------------------------------------------------
// Section: Functions (119)
//--------------------------------------------------------------------------------
// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn GetNumberOfPhysicalMonitorsFromHMONITOR(
    hMonitor: ?HMONITOR,
    pdwNumberOfPhysicalMonitors: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn GetNumberOfPhysicalMonitorsFromIDirect3DDevice9(
    pDirect3DDevice9: ?*IDirect3DDevice9,
    pdwNumberOfPhysicalMonitors: ?*u32,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn GetPhysicalMonitorsFromHMONITOR(
    hMonitor: ?HMONITOR,
    dwPhysicalMonitorArraySize: u32,
    pPhysicalMonitorArray: [*]PHYSICAL_MONITOR,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn GetPhysicalMonitorsFromIDirect3DDevice9(
    pDirect3DDevice9: ?*IDirect3DDevice9,
    dwPhysicalMonitorArraySize: u32,
    pPhysicalMonitorArray: [*]PHYSICAL_MONITOR,
) callconv(@import("std").os.windows.WINAPI) HRESULT;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn DestroyPhysicalMonitor(
    hMonitor: ?HANDLE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn DestroyPhysicalMonitors(
    dwPhysicalMonitorArraySize: u32,
    pPhysicalMonitorArray: [*]PHYSICAL_MONITOR,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn GetVCPFeatureAndVCPFeatureReply(
    hMonitor: ?HANDLE,
    bVCPCode: u8,
    pvct: ?*MC_VCP_CODE_TYPE,
    pdwCurrentValue: ?*u32,
    pdwMaximumValue: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn SetVCPFeature(
    hMonitor: ?HANDLE,
    bVCPCode: u8,
    dwNewValue: u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn SaveCurrentSettings(
    hMonitor: ?HANDLE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn GetCapabilitiesStringLength(
    hMonitor: ?HANDLE,
    pdwCapabilitiesStringLengthInCharacters: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn CapabilitiesRequestAndCapabilitiesReply(
    hMonitor: ?HANDLE,
    pszASCIICapabilitiesString: [*:0]u8,
    dwCapabilitiesStringLengthInCharacters: u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn GetTimingReport(
    hMonitor: ?HANDLE,
    pmtrMonitorTimingReport: ?*MC_TIMING_REPORT,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn GetMonitorCapabilities(
    hMonitor: ?HANDLE,
    pdwMonitorCapabilities: ?*u32,
    pdwSupportedColorTemperatures: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn SaveCurrentMonitorSettings(
    hMonitor: ?HANDLE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn GetMonitorTechnologyType(
    hMonitor: ?HANDLE,
    pdtyDisplayTechnologyType: ?*MC_DISPLAY_TECHNOLOGY_TYPE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn GetMonitorBrightness(
    hMonitor: ?HANDLE,
    pdwMinimumBrightness: ?*u32,
    pdwCurrentBrightness: ?*u32,
    pdwMaximumBrightness: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn GetMonitorContrast(
    hMonitor: ?HANDLE,
    pdwMinimumContrast: ?*u32,
    pdwCurrentContrast: ?*u32,
    pdwMaximumContrast: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn GetMonitorColorTemperature(
    hMonitor: ?HANDLE,
    pctCurrentColorTemperature: ?*MC_COLOR_TEMPERATURE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn GetMonitorRedGreenOrBlueDrive(
    hMonitor: ?HANDLE,
    dtDriveType: MC_DRIVE_TYPE,
    pdwMinimumDrive: ?*u32,
    pdwCurrentDrive: ?*u32,
    pdwMaximumDrive: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn GetMonitorRedGreenOrBlueGain(
    hMonitor: ?HANDLE,
    gtGainType: MC_GAIN_TYPE,
    pdwMinimumGain: ?*u32,
    pdwCurrentGain: ?*u32,
    pdwMaximumGain: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn SetMonitorBrightness(
    hMonitor: ?HANDLE,
    dwNewBrightness: u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn SetMonitorContrast(
    hMonitor: ?HANDLE,
    dwNewContrast: u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn SetMonitorColorTemperature(
    hMonitor: ?HANDLE,
    ctCurrentColorTemperature: MC_COLOR_TEMPERATURE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn SetMonitorRedGreenOrBlueDrive(
    hMonitor: ?HANDLE,
    dtDriveType: MC_DRIVE_TYPE,
    dwNewDrive: u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn SetMonitorRedGreenOrBlueGain(
    hMonitor: ?HANDLE,
    gtGainType: MC_GAIN_TYPE,
    dwNewGain: u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn DegaussMonitor(
    hMonitor: ?HANDLE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn GetMonitorDisplayAreaSize(
    hMonitor: ?HANDLE,
    stSizeType: MC_SIZE_TYPE,
    pdwMinimumWidthOrHeight: ?*u32,
    pdwCurrentWidthOrHeight: ?*u32,
    pdwMaximumWidthOrHeight: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn GetMonitorDisplayAreaPosition(
    hMonitor: ?HANDLE,
    ptPositionType: MC_POSITION_TYPE,
    pdwMinimumPosition: ?*u32,
    pdwCurrentPosition: ?*u32,
    pdwMaximumPosition: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn SetMonitorDisplayAreaSize(
    hMonitor: ?HANDLE,
    stSizeType: MC_SIZE_TYPE,
    dwNewDisplayAreaWidthOrHeight: u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn SetMonitorDisplayAreaPosition(
    hMonitor: ?HANDLE,
    ptPositionType: MC_POSITION_TYPE,
    dwNewPosition: u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn RestoreMonitorFactoryColorDefaults(
    hMonitor: ?HANDLE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "dxva2" fn RestoreMonitorFactoryDefaults(
    hMonitor: ?HANDLE,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn BRUSHOBJ_pvAllocRbrush(
    pbo: ?*BRUSHOBJ,
    cj: u32,
) callconv(@import("std").os.windows.WINAPI) ?*anyopaque;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn BRUSHOBJ_pvGetRbrush(
    pbo: ?*BRUSHOBJ,
) callconv(@import("std").os.windows.WINAPI) ?*anyopaque;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn BRUSHOBJ_ulGetBrushColor(
    pbo: ?*BRUSHOBJ,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn BRUSHOBJ_hGetColorTransform(
    pbo: ?*BRUSHOBJ,
) callconv(@import("std").os.windows.WINAPI) ?HANDLE;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CLIPOBJ_cEnumStart(
    pco: ?*CLIPOBJ,
    bAll: BOOL,
    iType: u32,
    iDirection: u32,
    cLimit: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CLIPOBJ_bEnum(
    pco: ?*CLIPOBJ,
    cj: u32,
    pul: ?*u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn CLIPOBJ_ppoGetPath(
    pco: ?*CLIPOBJ,
) callconv(@import("std").os.windows.WINAPI) ?*PATHOBJ;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn FONTOBJ_cGetAllGlyphHandles(
    pfo: ?*FONTOBJ,
    phg: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn FONTOBJ_vGetInfo(
    pfo: ?*FONTOBJ,
    cjSize: u32,
    pfi: ?*FONTINFO,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn FONTOBJ_cGetGlyphs(
    pfo: ?*FONTOBJ,
    iMode: u32,
    cGlyph: u32,
    phg: ?*u32,
    ppvGlyph: ?*?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn FONTOBJ_pxoGetXform(
    pfo: ?*FONTOBJ,
) callconv(@import("std").os.windows.WINAPI) ?*XFORMOBJ;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn FONTOBJ_pifi(
    pfo: ?*FONTOBJ,
) callconv(@import("std").os.windows.WINAPI) ?*IFIMETRICS;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn FONTOBJ_pfdg(
    pfo: ?*FONTOBJ,
) callconv(@import("std").os.windows.WINAPI) ?*FD_GLYPHSET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn FONTOBJ_pvTrueTypeFontFile(
    pfo: ?*FONTOBJ,
    pcjFile: ?*u32,
) callconv(@import("std").os.windows.WINAPI) ?*anyopaque;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn FONTOBJ_pQueryGlyphAttrs(
    pfo: ?*FONTOBJ,
    iMode: u32,
) callconv(@import("std").os.windows.WINAPI) ?*FD_GLYPHATTR;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn PATHOBJ_vEnumStart(
    ppo: ?*PATHOBJ,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn PATHOBJ_bEnum(
    ppo: ?*PATHOBJ,
    ppd: ?*PATHDATA,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn PATHOBJ_vEnumStartClipLines(
    ppo: ?*PATHOBJ,
    pco: ?*CLIPOBJ,
    pso: ?*SURFOBJ,
    pla: ?*LINEATTRS,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn PATHOBJ_bEnumClipLines(
    ppo: ?*PATHOBJ,
    cb: u32,
    pcl: ?*CLIPLINE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn PATHOBJ_vGetBounds(
    ppo: ?*PATHOBJ,
    prectfx: ?*RECTFX,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn STROBJ_vEnumStart(
    pstro: ?*STROBJ,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn STROBJ_bEnum(
    pstro: ?*STROBJ,
    pc: ?*u32,
    ppgpos: ?*?*GLYPHPOS,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn STROBJ_bEnumPositionsOnly(
    pstro: ?*STROBJ,
    pc: ?*u32,
    ppgpos: ?*?*GLYPHPOS,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn STROBJ_dwGetCodePage(
    pstro: ?*STROBJ,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn STROBJ_bGetAdvanceWidths(
    pso: ?*STROBJ,
    iFirst: u32,
    c: u32,
    pptqD: ?*POINTQF,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn XFORMOBJ_iGetXform(
    pxo: ?*XFORMOBJ,
    pxform: ?*XFORML,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn XFORMOBJ_bApplyXform(
    pxo: ?*XFORMOBJ,
    iMode: u32,
    cPoints: u32,
    pvIn: ?*anyopaque,
    pvOut: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn XLATEOBJ_iXlate(
    pxlo: ?*XLATEOBJ,
    iColor: u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn XLATEOBJ_piVector(
    pxlo: ?*XLATEOBJ,
) callconv(@import("std").os.windows.WINAPI) ?*u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn XLATEOBJ_cGetPalette(
    pxlo: ?*XLATEOBJ,
    iPal: u32,
    cPal: u32,
    pPal: ?*u32,
) callconv(@import("std").os.windows.WINAPI) u32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn XLATEOBJ_hGetColorTransform(
    pxlo: ?*XLATEOBJ,
) callconv(@import("std").os.windows.WINAPI) ?HANDLE;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngCreateBitmap(
    sizl: SIZE,
    lWidth: i32,
    iFormat: u32,
    fl: u32,
    pvBits: ?*anyopaque,
) callconv(@import("std").os.windows.WINAPI) ?HBITMAP;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngCreateDeviceSurface(
    dhsurf: DHSURF,
    sizl: SIZE,
    iFormatCompat: u32,
) callconv(@import("std").os.windows.WINAPI) ?HSURF;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngCreateDeviceBitmap(
    dhsurf: DHSURF,
    sizl: SIZE,
    iFormatCompat: u32,
) callconv(@import("std").os.windows.WINAPI) ?HBITMAP;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngDeleteSurface(
    hsurf: ?HSURF,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngLockSurface(
    hsurf: ?HSURF,
) callconv(@import("std").os.windows.WINAPI) ?*SURFOBJ;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngUnlockSurface(
    pso: ?*SURFOBJ,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngEraseSurface(
    pso: ?*SURFOBJ,
    prcl: ?*RECTL,
    iColor: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngAssociateSurface(
    hsurf: ?HSURF,
    hdev: ?HDEV,
    flHooks: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngMarkBandingSurface(
    hsurf: ?HSURF,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngCheckAbort(
    pso: ?*SURFOBJ,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngDeletePath(
    ppo: ?*PATHOBJ,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngCreatePalette(
    iMode: u32,
    cColors: u32,
    pulColors: ?*u32,
    flRed: u32,
    flGreen: u32,
    flBlue: u32,
) callconv(@import("std").os.windows.WINAPI) ?HPALETTE;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngDeletePalette(
    hpal: ?HPALETTE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngCreateClip() callconv(@import("std").os.windows.WINAPI) ?*CLIPOBJ;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngDeleteClip(
    pco: ?*CLIPOBJ,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngBitBlt(
    psoTrg: ?*SURFOBJ,
    psoSrc: ?*SURFOBJ,
    psoMask: ?*SURFOBJ,
    pco: ?*CLIPOBJ,
    pxlo: ?*XLATEOBJ,
    prclTrg: ?*RECTL,
    pptlSrc: ?*POINTL,
    pptlMask: ?*POINTL,
    pbo: ?*BRUSHOBJ,
    pptlBrush: ?*POINTL,
    rop4: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngLineTo(
    pso: ?*SURFOBJ,
    pco: ?*CLIPOBJ,
    pbo: ?*BRUSHOBJ,
    x1: i32,
    y1: i32,
    x2: i32,
    y2: i32,
    prclBounds: ?*RECTL,
    mix: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngStretchBlt(
    psoDest: ?*SURFOBJ,
    psoSrc: ?*SURFOBJ,
    psoMask: ?*SURFOBJ,
    pco: ?*CLIPOBJ,
    pxlo: ?*XLATEOBJ,
    pca: ?*COLORADJUSTMENT,
    pptlHTOrg: ?*POINTL,
    prclDest: ?*RECTL,
    prclSrc: ?*RECTL,
    pptlMask: ?*POINTL,
    iMode: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngStretchBltROP(
    psoDest: ?*SURFOBJ,
    psoSrc: ?*SURFOBJ,
    psoMask: ?*SURFOBJ,
    pco: ?*CLIPOBJ,
    pxlo: ?*XLATEOBJ,
    pca: ?*COLORADJUSTMENT,
    pptlHTOrg: ?*POINTL,
    prclDest: ?*RECTL,
    prclSrc: ?*RECTL,
    pptlMask: ?*POINTL,
    iMode: u32,
    pbo: ?*BRUSHOBJ,
    rop4: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngAlphaBlend(
    psoDest: ?*SURFOBJ,
    psoSrc: ?*SURFOBJ,
    pco: ?*CLIPOBJ,
    pxlo: ?*XLATEOBJ,
    prclDest: ?*RECTL,
    prclSrc: ?*RECTL,
    pBlendObj: ?*BLENDOBJ,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngGradientFill(
    psoDest: ?*SURFOBJ,
    pco: ?*CLIPOBJ,
    pxlo: ?*XLATEOBJ,
    pVertex: ?*TRIVERTEX,
    nVertex: u32,
    pMesh: ?*anyopaque,
    nMesh: u32,
    prclExtents: ?*RECTL,
    pptlDitherOrg: ?*POINTL,
    ulMode: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngTransparentBlt(
    psoDst: ?*SURFOBJ,
    psoSrc: ?*SURFOBJ,
    pco: ?*CLIPOBJ,
    pxlo: ?*XLATEOBJ,
    prclDst: ?*RECTL,
    prclSrc: ?*RECTL,
    TransColor: u32,
    bCalledFromBitBlt: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngTextOut(
    pso: ?*SURFOBJ,
    pstro: ?*STROBJ,
    pfo: ?*FONTOBJ,
    pco: ?*CLIPOBJ,
    prclExtra: ?*RECTL,
    prclOpaque: ?*RECTL,
    pboFore: ?*BRUSHOBJ,
    pboOpaque: ?*BRUSHOBJ,
    pptlOrg: ?*POINTL,
    mix: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngStrokePath(
    pso: ?*SURFOBJ,
    ppo: ?*PATHOBJ,
    pco: ?*CLIPOBJ,
    pxo: ?*XFORMOBJ,
    pbo: ?*BRUSHOBJ,
    pptlBrushOrg: ?*POINTL,
    plineattrs: ?*LINEATTRS,
    mix: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngFillPath(
    pso: ?*SURFOBJ,
    ppo: ?*PATHOBJ,
    pco: ?*CLIPOBJ,
    pbo: ?*BRUSHOBJ,
    pptlBrushOrg: ?*POINTL,
    mix: u32,
    flOptions: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngStrokeAndFillPath(
    pso: ?*SURFOBJ,
    ppo: ?*PATHOBJ,
    pco: ?*CLIPOBJ,
    pxo: ?*XFORMOBJ,
    pboStroke: ?*BRUSHOBJ,
    plineattrs: ?*LINEATTRS,
    pboFill: ?*BRUSHOBJ,
    pptlBrushOrg: ?*POINTL,
    mixFill: u32,
    flOptions: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngPaint(
    pso: ?*SURFOBJ,
    pco: ?*CLIPOBJ,
    pbo: ?*BRUSHOBJ,
    pptlBrushOrg: ?*POINTL,
    mix: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngCopyBits(
    psoDest: ?*SURFOBJ,
    psoSrc: ?*SURFOBJ,
    pco: ?*CLIPOBJ,
    pxlo: ?*XLATEOBJ,
    prclDest: ?*RECTL,
    pptlSrc: ?*POINTL,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngPlgBlt(
    psoTrg: ?*SURFOBJ,
    psoSrc: ?*SURFOBJ,
    psoMsk: ?*SURFOBJ,
    pco: ?*CLIPOBJ,
    pxlo: ?*XLATEOBJ,
    pca: ?*COLORADJUSTMENT,
    pptlBrushOrg: ?*POINTL,
    pptfx: ?*POINTFIX,
    prcl: ?*RECTL,
    pptl: ?*POINTL,
    iMode: u32,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn HT_Get8BPPFormatPalette(
    pPaletteEntry: ?*PALETTEENTRY,
    RedGamma: u16,
    GreenGamma: u16,
    BlueGamma: u16,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn HT_Get8BPPMaskPalette(
    pPaletteEntry: ?*PALETTEENTRY,
    Use8BPPMaskPal: BOOL,
    CMYMask: u8,
    RedGamma: u16,
    GreenGamma: u16,
    BlueGamma: u16,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngGetPrinterDataFileName(
    hdev: ?HDEV,
) callconv(@import("std").os.windows.WINAPI) ?PWSTR;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngGetDriverName(
    hdev: ?HDEV,
) callconv(@import("std").os.windows.WINAPI) ?PWSTR;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngLoadModule(
    pwsz: ?PWSTR,
) callconv(@import("std").os.windows.WINAPI) ?HANDLE;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngFindResource(
    h: ?HANDLE,
    iName: i32,
    iType: i32,
    pulSize: ?*u32,
) callconv(@import("std").os.windows.WINAPI) ?*anyopaque;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngFreeModule(
    h: ?HANDLE,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngCreateSemaphore() callconv(@import("std").os.windows.WINAPI) ?HSEMAPHORE;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngAcquireSemaphore(
    hsem: ?HSEMAPHORE,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngReleaseSemaphore(
    hsem: ?HSEMAPHORE,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngDeleteSemaphore(
    hsem: ?HSEMAPHORE,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngMultiByteToUnicodeN(
    // TODO: what to do with BytesParamIndex 1?
    UnicodeString: ?PWSTR,
    MaxBytesInUnicodeString: u32,
    BytesInUnicodeString: ?*u32,
    // TODO: what to do with BytesParamIndex 4?
    MultiByteString: ?[*]u8,
    BytesInMultiByteString: u32,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngUnicodeToMultiByteN(
    // TODO: what to do with BytesParamIndex 1?
    MultiByteString: ?[*]u8,
    MaxBytesInMultiByteString: u32,
    BytesInMultiByteString: ?*u32,
    // TODO: what to do with BytesParamIndex 4?
    UnicodeString: ?PWSTR,
    BytesInUnicodeString: u32,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngQueryLocalTime(
    param0: ?*ENG_TIME_FIELDS,
) callconv(@import("std").os.windows.WINAPI) void;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngComputeGlyphSet(
    nCodePage: i32,
    nFirstChar: i32,
    cChars: i32,
) callconv(@import("std").os.windows.WINAPI) ?*FD_GLYPHSET;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngMultiByteToWideChar(
    CodePage: u32,
    // TODO: what to do with BytesParamIndex 2?
    WideCharString: ?PWSTR,
    BytesInWideCharString: i32,
    // TODO: what to do with BytesParamIndex 4?
    MultiByteString: ?PSTR,
    BytesInMultiByteString: i32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngWideCharToMultiByte(
    CodePage: u32,
    // TODO: what to do with BytesParamIndex 2?
    WideCharString: ?PWSTR,
    BytesInWideCharString: i32,
    // TODO: what to do with BytesParamIndex 4?
    MultiByteString: ?PSTR,
    BytesInMultiByteString: i32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows5.0'
pub extern "gdi32" fn EngGetCurrentCodePage(
    OemCodePage: ?*u16,
    AnsiCodePage: ?*u16,
) callconv(@import("std").os.windows.WINAPI) void;

pub extern "gdi32" fn EngQueryEMFInfo(
    hdev: ?HDEV,
    pEMFInfo: ?*EMFINFO,
) callconv(@import("std").os.windows.WINAPI) BOOL;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "user32" fn GetDisplayConfigBufferSizes(
    flags: u32,
    numPathArrayElements: ?*u32,
    numModeInfoArrayElements: ?*u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.1'
pub extern "user32" fn SetDisplayConfig(
    numPathArrayElements: u32,
    pathArray: ?[*]DISPLAYCONFIG_PATH_INFO,
    numModeInfoArrayElements: u32,
    modeInfoArray: ?[*]DISPLAYCONFIG_MODE_INFO,
    flags: u32,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.1'
pub extern "user32" fn QueryDisplayConfig(
    flags: u32,
    numPathArrayElements: ?*u32,
    pathArray: [*]DISPLAYCONFIG_PATH_INFO,
    numModeInfoArrayElements: ?*u32,
    modeInfoArray: [*]DISPLAYCONFIG_MODE_INFO,
    currentTopologyId: ?*DISPLAYCONFIG_TOPOLOGY_ID,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "user32" fn DisplayConfigGetDeviceInfo(
    requestPacket: ?*DISPLAYCONFIG_DEVICE_INFO_HEADER,
) callconv(@import("std").os.windows.WINAPI) i32;

// TODO: this type is limited to platform 'windows6.0.6000'
pub extern "user32" fn DisplayConfigSetDeviceInfo(
    setPacket: ?*DISPLAYCONFIG_DEVICE_INFO_HEADER,
) callconv(@import("std").os.windows.WINAPI) i32;

pub extern "user32" fn GetAutoRotationState(
    pState: ?*AR_STATE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

pub extern "user32" fn GetDisplayAutoRotationPreferences(
    pOrientation: ?*ORIENTATION_PREFERENCE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

pub extern "user32" fn SetDisplayAutoRotationPreferences(
    orientation: ORIENTATION_PREFERENCE,
) callconv(@import("std").os.windows.WINAPI) BOOL;

//--------------------------------------------------------------------------------
// 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 (45)
//--------------------------------------------------------------------------------
const Guid = @import("../zig.zig").Guid;
const BLENDFUNCTION = @import("../graphics/gdi.zig").BLENDFUNCTION;
const BOOL = @import("../foundation.zig").BOOL;
const BOOLEAN = @import("../foundation.zig").BOOLEAN;
const CHAR = @import("../foundation.zig").CHAR;
const CHAR_INFO = @import("../system/console.zig").CHAR_INFO;
const COLORADJUSTMENT = @import("../graphics/gdi.zig").COLORADJUSTMENT;
const COORD = @import("../system/console.zig").COORD;
const DD_CALLBACKS = @import("../graphics/direct_draw.zig").DD_CALLBACKS;
const DD_DIRECTDRAW_GLOBAL = @import("../graphics/direct_draw.zig").DD_DIRECTDRAW_GLOBAL;
const DD_HALINFO = @import("../graphics/direct_draw.zig").DD_HALINFO;
const DD_PALETTECALLBACKS = @import("../graphics/direct_draw.zig").DD_PALETTECALLBACKS;
const DD_SURFACE_LOCAL = @import("../graphics/direct_draw.zig").DD_SURFACE_LOCAL;
const DD_SURFACECALLBACKS = @import("../graphics/direct_draw.zig").DD_SURFACECALLBACKS;
const DESIGNVECTOR = @import("../graphics/gdi.zig").DESIGNVECTOR;
const DEVMODEW = @import("../graphics/gdi.zig").DEVMODEW;
const DISPLAYCONFIG_COLOR_ENCODING = @import("../graphics/gdi.zig").DISPLAYCONFIG_COLOR_ENCODING;
const HANDLE = @import("../foundation.zig").HANDLE;
const HBITMAP = @import("../graphics/gdi.zig").HBITMAP;
const HDC = @import("../graphics/gdi.zig").HDC;
const HMONITOR = @import("../graphics/gdi.zig").HMONITOR;
const HPALETTE = @import("../graphics/gdi.zig").HPALETTE;
const HRESULT = @import("../foundation.zig").HRESULT;
const HWND = @import("../foundation.zig").HWND;
const IDirect3DDevice9 = @import("../graphics/direct3d9.zig").IDirect3DDevice9;
const IStream = @import("../system/com.zig").IStream;
const IUnknown = @import("../system/com.zig").IUnknown;
const LARGE_INTEGER = @import("../foundation.zig").LARGE_INTEGER;
const LOGCOLORSPACEW = @import("../ui/color_system.zig").LOGCOLORSPACEW;
const LOGFONTW = @import("../graphics/gdi.zig").LOGFONTW;
const LUID = @import("../foundation.zig").LUID;
const NTSTATUS = @import("../foundation.zig").NTSTATUS;
const PALETTEENTRY = @import("../graphics/gdi.zig").PALETTEENTRY;
const PANOSE = @import("../graphics/gdi.zig").PANOSE;
const PIXELFORMATDESCRIPTOR = @import("../graphics/open_gl.zig").PIXELFORMATDESCRIPTOR;
const POINTL = @import("../foundation.zig").POINTL;
const PROPERTYKEY = @import("../ui/shell/properties_system.zig").PROPERTYKEY;
const PSTR = @import("../foundation.zig").PSTR;
const PWSTR = @import("../foundation.zig").PWSTR;
const RECT = @import("../foundation.zig").RECT;
const RECTL = @import("../foundation.zig").RECTL;
const SIZE = @import("../foundation.zig").SIZE;
const TRIVERTEX = @import("../graphics/gdi.zig").TRIVERTEX;
const TTPOLYGONHEADER = @import("../graphics/gdi.zig").TTPOLYGONHEADER;
const VIDEOMEMORY = @import("../graphics/direct_draw.zig").VIDEOMEMORY;

test {
    // The following '_ = <FuncPtrType>' lines are a workaround for https://github.com/ziglang/zig/issues/4476
    if (@hasDecl(@This(), "PFN")) {
        _ = PFN;
    }
    if (@hasDecl(@This(), "WNDOBJCHANGEPROC")) {
        _ = WNDOBJCHANGEPROC;
    }
    if (@hasDecl(@This(), "SORTCOMP")) {
        _ = SORTCOMP;
    }
    if (@hasDecl(@This(), "PFN_DrvEnableDriver")) {
        _ = PFN_DrvEnableDriver;
    }
    if (@hasDecl(@This(), "PFN_DrvEnablePDEV")) {
        _ = PFN_DrvEnablePDEV;
    }
    if (@hasDecl(@This(), "PFN_DrvCompletePDEV")) {
        _ = PFN_DrvCompletePDEV;
    }
    if (@hasDecl(@This(), "PFN_DrvResetDevice")) {
        _ = PFN_DrvResetDevice;
    }
    if (@hasDecl(@This(), "PFN_DrvDisablePDEV")) {
        _ = PFN_DrvDisablePDEV;
    }
    if (@hasDecl(@This(), "PFN_DrvSynchronize")) {
        _ = PFN_DrvSynchronize;
    }
    if (@hasDecl(@This(), "PFN_DrvEnableSurface")) {
        _ = PFN_DrvEnableSurface;
    }
    if (@hasDecl(@This(), "PFN_DrvDisableDriver")) {
        _ = PFN_DrvDisableDriver;
    }
    if (@hasDecl(@This(), "PFN_DrvDisableSurface")) {
        _ = PFN_DrvDisableSurface;
    }
    if (@hasDecl(@This(), "PFN_DrvAssertMode")) {
        _ = PFN_DrvAssertMode;
    }
    if (@hasDecl(@This(), "PFN_DrvTextOut")) {
        _ = PFN_DrvTextOut;
    }
    if (@hasDecl(@This(), "PFN_DrvStretchBlt")) {
        _ = PFN_DrvStretchBlt;
    }
    if (@hasDecl(@This(), "PFN_DrvStretchBltROP")) {
        _ = PFN_DrvStretchBltROP;
    }
    if (@hasDecl(@This(), "PFN_DrvTransparentBlt")) {
        _ = PFN_DrvTransparentBlt;
    }
    if (@hasDecl(@This(), "PFN_DrvPlgBlt")) {
        _ = PFN_DrvPlgBlt;
    }
    if (@hasDecl(@This(), "PFN_DrvBitBlt")) {
        _ = PFN_DrvBitBlt;
    }
    if (@hasDecl(@This(), "PFN_DrvRealizeBrush")) {
        _ = PFN_DrvRealizeBrush;
    }
    if (@hasDecl(@This(), "PFN_DrvCopyBits")) {
        _ = PFN_DrvCopyBits;
    }
    if (@hasDecl(@This(), "PFN_DrvDitherColor")) {
        _ = PFN_DrvDitherColor;
    }
    if (@hasDecl(@This(), "PFN_DrvCreateDeviceBitmap")) {
        _ = PFN_DrvCreateDeviceBitmap;
    }
    if (@hasDecl(@This(), "PFN_DrvDeleteDeviceBitmap")) {
        _ = PFN_DrvDeleteDeviceBitmap;
    }
    if (@hasDecl(@This(), "PFN_DrvSetPalette")) {
        _ = PFN_DrvSetPalette;
    }
    if (@hasDecl(@This(), "PFN_DrvEscape")) {
        _ = PFN_DrvEscape;
    }
    if (@hasDecl(@This(), "PFN_DrvDrawEscape")) {
        _ = PFN_DrvDrawEscape;
    }
    if (@hasDecl(@This(), "PFN_DrvQueryFont")) {
        _ = PFN_DrvQueryFont;
    }
    if (@hasDecl(@This(), "PFN_DrvQueryFontTree")) {
        _ = PFN_DrvQueryFontTree;
    }
    if (@hasDecl(@This(), "PFN_DrvQueryFontData")) {
        _ = PFN_DrvQueryFontData;
    }
    if (@hasDecl(@This(), "PFN_DrvFree")) {
        _ = PFN_DrvFree;
    }
    if (@hasDecl(@This(), "PFN_DrvDestroyFont")) {
        _ = PFN_DrvDestroyFont;
    }
    if (@hasDecl(@This(), "PFN_DrvQueryFontCaps")) {
        _ = PFN_DrvQueryFontCaps;
    }
    if (@hasDecl(@This(), "PFN_DrvLoadFontFile")) {
        _ = PFN_DrvLoadFontFile;
    }
    if (@hasDecl(@This(), "PFN_DrvUnloadFontFile")) {
        _ = PFN_DrvUnloadFontFile;
    }
    if (@hasDecl(@This(), "PFN_DrvSetPointerShape")) {
        _ = PFN_DrvSetPointerShape;
    }
    if (@hasDecl(@This(), "PFN_DrvMovePointer")) {
        _ = PFN_DrvMovePointer;
    }
    if (@hasDecl(@This(), "PFN_DrvSendPage")) {
        _ = PFN_DrvSendPage;
    }
    if (@hasDecl(@This(), "PFN_DrvStartPage")) {
        _ = PFN_DrvStartPage;
    }
    if (@hasDecl(@This(), "PFN_DrvStartDoc")) {
        _ = PFN_DrvStartDoc;
    }
    if (@hasDecl(@This(), "PFN_DrvEndDoc")) {
        _ = PFN_DrvEndDoc;
    }
    if (@hasDecl(@This(), "PFN_DrvQuerySpoolType")) {
        _ = PFN_DrvQuerySpoolType;
    }
    if (@hasDecl(@This(), "PFN_DrvLineTo")) {
        _ = PFN_DrvLineTo;
    }
    if (@hasDecl(@This(), "PFN_DrvStrokePath")) {
        _ = PFN_DrvStrokePath;
    }
    if (@hasDecl(@This(), "PFN_DrvFillPath")) {
        _ = PFN_DrvFillPath;
    }
    if (@hasDecl(@This(), "PFN_DrvStrokeAndFillPath")) {
        _ = PFN_DrvStrokeAndFillPath;
    }
    if (@hasDecl(@This(), "PFN_DrvPaint")) {
        _ = PFN_DrvPaint;
    }
    if (@hasDecl(@This(), "PFN_DrvGetGlyphMode")) {
        _ = PFN_DrvGetGlyphMode;
    }
    if (@hasDecl(@This(), "PFN_DrvResetPDEV")) {
        _ = PFN_DrvResetPDEV;
    }
    if (@hasDecl(@This(), "PFN_DrvSaveScreenBits")) {
        _ = PFN_DrvSaveScreenBits;
    }
    if (@hasDecl(@This(), "PFN_DrvGetModes")) {
        _ = PFN_DrvGetModes;
    }
    if (@hasDecl(@This(), "PFN_DrvQueryTrueTypeTable")) {
        _ = PFN_DrvQueryTrueTypeTable;
    }
    if (@hasDecl(@This(), "PFN_DrvQueryTrueTypeSection")) {
        _ = PFN_DrvQueryTrueTypeSection;
    }
    if (@hasDecl(@This(), "PFN_DrvQueryTrueTypeOutline")) {
        _ = PFN_DrvQueryTrueTypeOutline;
    }
    if (@hasDecl(@This(), "PFN_DrvGetTrueTypeFile")) {
        _ = PFN_DrvGetTrueTypeFile;
    }
    if (@hasDecl(@This(), "PFN_DrvQueryFontFile")) {
        _ = PFN_DrvQueryFontFile;
    }
    if (@hasDecl(@This(), "PFN_DrvQueryGlyphAttrs")) {
        _ = PFN_DrvQueryGlyphAttrs;
    }
    if (@hasDecl(@This(), "PFN_DrvQueryAdvanceWidths")) {
        _ = PFN_DrvQueryAdvanceWidths;
    }
    if (@hasDecl(@This(), "PFN_DrvFontManagement")) {
        _ = PFN_DrvFontManagement;
    }
    if (@hasDecl(@This(), "PFN_DrvSetPixelFormat")) {
        _ = PFN_DrvSetPixelFormat;
    }
    if (@hasDecl(@This(), "PFN_DrvDescribePixelFormat")) {
        _ = PFN_DrvDescribePixelFormat;
    }
    if (@hasDecl(@This(), "PFN_DrvSwapBuffers")) {
        _ = PFN_DrvSwapBuffers;
    }
    if (@hasDecl(@This(), "PFN_DrvStartBanding")) {
        _ = PFN_DrvStartBanding;
    }
    if (@hasDecl(@This(), "PFN_DrvNextBand")) {
        _ = PFN_DrvNextBand;
    }
    if (@hasDecl(@This(), "PFN_DrvQueryPerBandInfo")) {
        _ = PFN_DrvQueryPerBandInfo;
    }
    if (@hasDecl(@This(), "PFN_DrvEnableDirectDraw")) {
        _ = PFN_DrvEnableDirectDraw;
    }
    if (@hasDecl(@This(), "PFN_DrvDisableDirectDraw")) {
        _ = PFN_DrvDisableDirectDraw;
    }
    if (@hasDecl(@This(), "PFN_DrvGetDirectDrawInfo")) {
        _ = PFN_DrvGetDirectDrawInfo;
    }
    if (@hasDecl(@This(), "PFN_DrvIcmCreateColorTransform")) {
        _ = PFN_DrvIcmCreateColorTransform;
    }
    if (@hasDecl(@This(), "PFN_DrvIcmDeleteColorTransform")) {
        _ = PFN_DrvIcmDeleteColorTransform;
    }
    if (@hasDecl(@This(), "PFN_DrvIcmCheckBitmapBits")) {
        _ = PFN_DrvIcmCheckBitmapBits;
    }
    if (@hasDecl(@This(), "PFN_DrvIcmSetDeviceGammaRamp")) {
        _ = PFN_DrvIcmSetDeviceGammaRamp;
    }
    if (@hasDecl(@This(), "PFN_DrvAlphaBlend")) {
        _ = PFN_DrvAlphaBlend;
    }
    if (@hasDecl(@This(), "PFN_DrvGradientFill")) {
        _ = PFN_DrvGradientFill;
    }
    if (@hasDecl(@This(), "PFN_DrvQueryDeviceSupport")) {
        _ = PFN_DrvQueryDeviceSupport;
    }
    if (@hasDecl(@This(), "PFN_DrvDeriveSurface")) {
        _ = PFN_DrvDeriveSurface;
    }
    if (@hasDecl(@This(), "PFN_DrvSynchronizeSurface")) {
        _ = PFN_DrvSynchronizeSurface;
    }
    if (@hasDecl(@This(), "PFN_DrvNotify")) {
        _ = PFN_DrvNotify;
    }
    if (@hasDecl(@This(), "PFN_DrvRenderHint")) {
        _ = PFN_DrvRenderHint;
    }
    if (@hasDecl(@This(), "PFN_EngCreateRectRgn")) {
        _ = PFN_EngCreateRectRgn;
    }
    if (@hasDecl(@This(), "PFN_EngDeleteRgn")) {
        _ = PFN_EngDeleteRgn;
    }
    if (@hasDecl(@This(), "PFN_EngCombineRgn")) {
        _ = PFN_EngCombineRgn;
    }
    if (@hasDecl(@This(), "PFN_EngCopyRgn")) {
        _ = PFN_EngCopyRgn;
    }
    if (@hasDecl(@This(), "PFN_EngIntersectRgn")) {
        _ = PFN_EngIntersectRgn;
    }
    if (@hasDecl(@This(), "PFN_EngSubtractRgn")) {
        _ = PFN_EngSubtractRgn;
    }
    if (@hasDecl(@This(), "PFN_EngUnionRgn")) {
        _ = PFN_EngUnionRgn;
    }
    if (@hasDecl(@This(), "PFN_EngXorRgn")) {
        _ = PFN_EngXorRgn;
    }
    if (@hasDecl(@This(), "PFN_DrvCreateDeviceBitmapEx")) {
        _ = PFN_DrvCreateDeviceBitmapEx;
    }
    if (@hasDecl(@This(), "PFN_DrvDeleteDeviceBitmapEx")) {
        _ = PFN_DrvDeleteDeviceBitmapEx;
    }
    if (@hasDecl(@This(), "PFN_DrvAssociateSharedSurface")) {
        _ = PFN_DrvAssociateSharedSurface;
    }
    if (@hasDecl(@This(), "PFN_DrvSynchronizeRedirectionBitmaps")) {
        _ = PFN_DrvSynchronizeRedirectionBitmaps;
    }
    if (@hasDecl(@This(), "PFN_DrvAccumulateD3DDirtyRect")) {
        _ = PFN_DrvAccumulateD3DDirtyRect;
    }
    if (@hasDecl(@This(), "PFN_DrvStartDxInterop")) {
        _ = PFN_DrvStartDxInterop;
    }
    if (@hasDecl(@This(), "PFN_DrvEndDxInterop")) {
        _ = PFN_DrvEndDxInterop;
    }
    if (@hasDecl(@This(), "PFN_DrvLockDisplayArea")) {
        _ = PFN_DrvLockDisplayArea;
    }
    if (@hasDecl(@This(), "PFN_DrvUnlockDisplayArea")) {
        _ = PFN_DrvUnlockDisplayArea;
    }
    if (@hasDecl(@This(), "PFN_DrvSurfaceComplete")) {
        _ = PFN_DrvSurfaceComplete;
    }
    if (@hasDecl(@This(), "PVIDEO_WIN32K_CALLOUT")) {
        _ = PVIDEO_WIN32K_CALLOUT;
    }

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