package core:sys/windows

Warning: This was generated for -target:windows_amd64 and might not represet every target this package supports.

⌘K
Ctrl+K
or
/

    Index

    Types (743)
    Constants (4719)
    Procedures (853)
    Procedure Groups (0)

    This section is empty.

    Types

    ACCEL ¶

    ACCEL :: struct {
    	// Also called the flags field 
    	fVirt: BYTE,
    	key:   u16,
    	cmd:   u16,
    }
    Related Procedures With Parameters

    ACCESS_MASK ¶

    ACCESS_MASK :: u32

    ACL ¶

    ACL :: struct {
    	AclRevision: BYTE,
    	Sbz1:        BYTE,
    	AclSize:     u16,
    	AceCount:    u16,
    	Sbz2:        u16,
    }

    AC_Line_Status ¶

    AC_Line_Status :: enum BYTE {
    	Offline = 0, 
    	Online  = 1, 
    	Unknown = 255, 
    }

    ADDRESS_FAMILY ¶

    ADDRESS_FAMILY :: u16

    ADDRESS_MODE ¶

    ADDRESS_MODE :: enum i32 {
    	AddrMode1616, 
    	AddrMode1632, 
    	AddrModeReal, 
    	AddrModeFlat, 
    }

    ADDRINFOA ¶

    ADDRINFOA :: struct {
    	ai_flags:     i32,
    	ai_family:    i32,
    	ai_socktype:  i32,
    	ai_protocol:  i32,
    	ai_addrlen:   uint,
    	ai_canonname: ^u8,
    	ai_addr:      ^SOCKADDR,
    	ai_next:      ^ADDRINFOA,
    }
    Related Procedures With Parameters

    ADDRINFOEXW ¶

    ADDRINFOEXW :: struct {
    	ai_flags:     i32,
    	ai_family:    i32,
    	ai_socktype:  i32,
    	ai_protocol:  i32,
    	ai_addrlen:   uint,
    	ai_canonname: [^]u16,
    	ai_addr:      ^sockaddr,
    	ai_blob:      rawptr,
    	ai_bloblen:   uint,
    	ai_provider:  ^GUID,
    	ai_next:      ^ADDRINFOEXW,
    }
    Related Procedures With Parameters

    APPBARDATA ¶

    APPBARDATA :: struct {
    	cbSize:           u32,
    	hWnd:             HWND,
    	uCallbackMessage: u32,
    	uEdge:            u32,
    	rc:               RECT,
    	lParam:           int,
    }
    Related Procedures With Parameters

    ATOM ¶

    ATOM :: distinct u16
    Related Procedures With Returns

    Address_Family ¶

    Address_Family :: enum u32 {
    	Unspecified = 0,  // Return both IPv4 and IPv6 addresses associated with adapters with them enabled.
    	IPv4        = 2,  // Return only IPv4 addresses associated with adapters with it enabled.
    	IPv6        = 23, // Return only IPv6 addresses associated with adapters with it enabled.
    }
    Related Procedures With Parameters

    BIND_OPTS ¶

    BIND_OPTS :: struct {
    	cbStruct:            u32,
    	grfFlags:            u32,
    	grfMode:             u32,
    	dwTickCountDeadline: u32,
    }

    BITMAP ¶

    BITMAP :: struct {
    	bmType:       i32,
    	bmWidth:      i32,
    	bmHeight:     i32,
    	bmWidthBytes: i32,
    	bmPlanes:     u16,
    	bmBitsPixel:  u16,
    	bmBits:       rawptr,
    }

    BITMAPINFO ¶

    BITMAPINFO :: struct {
    	bmiHeader: BITMAPINFOHEADER,
    	bmiColors: [1]RGBQUAD,
    }
    Related Procedures With Parameters

    BITMAPINFOHEADER ¶

    BITMAPINFOHEADER :: struct {
    	biSize:          u32,
    	biWidth:         i32,
    	biHeight:        i32,
    	biPlanes:        u16,
    	biBitCount:      u16,
    	biCompression:   u32,
    	biSizeImage:     u32,
    	biXPelsPerMeter: i32,
    	biYPelsPerMeter: i32,
    	biClrUsed:       u32,
    	biClrImportant:  u32,
    }
    Related Procedures With Parameters

    BITMAPV5HEADER ¶

    BITMAPV5HEADER :: struct {
    	bV5Size:          u32,
    	bV5Width:         i32,
    	bV5Height:        i32,
    	bV5Planes:        u16,
    	bV5BitCount:      u16,
    	bV5Compression:   u32,
    	bV5SizeImage:     u32,
    	bV5XPelsPerMeter: i32,
    	bV5YPelsPerMeter: i32,
    	bV5ClrUsed:       u32,
    	bV5ClrImportant:  u32,
    	bV5RedMask:       u32,
    	bV5GreenMask:     u32,
    	bV5BlueMask:      u32,
    	bV5AlphaMask:     u32,
    	bV5CSType:        u32,
    	bV5Endpoints:     CIEXYZTRIPLE,
    	bV5GammaRed:      u32,
    	bV5GammaGreen:    u32,
    	bV5GammaBlue:     u32,
    	bV5Intent:        u32,
    	bV5ProfileData:   u32,
    	bV5ProfileSize:   u32,
    	bV5Reserved:      u32,
    }
     

    https://learn.microsoft.com/en-us/windows/win32/api/wingdi/ns-wingdi-bitmapv5header

    BKMODE ¶

    BKMODE :: enum int {
    	TRANSPARENT = 1, 
    	OPAQUE      = 2, 
    }
    Related Procedures With Parameters

    BLENDFUNCTION ¶

    BLENDFUNCTION :: struct {
    	BlendOp:             BYTE,
    	BlendFlags:          BYTE,
    	SourceConstantAlpha: BYTE,
    	AlphaFormat:         BYTE,
    }
    Related Procedures With Parameters

    BLUETOOTH_ADDRESS ¶

    BLUETOOTH_ADDRESS :: struct #raw_union {
    	addr: u64,
    	val:  [6]u8,
    }

    BLUETOOTH_DEVICE_INFO ¶

    BLUETOOTH_DEVICE_INFO :: struct {
    	dw_size:       u32,
    	//  Size in bytes of this structure - must be the size_of(BLUETOOTH_DEVICE_INFO)
    	address:       BLUETOOTH_ADDRESS,
    	//  Bluetooth address
    	device_class:  u32,
    	//  Bluetooth "Class of Device". See: https://btprodspecificationrefs.blob.core.windows.net/assigned-numbers/Assigned%20Number%20Types/Baseband.pdf
    	connected:     BOOL,
    	//  Device connected/in use
    	remembered:    BOOL,
    	//  Device remembered
    	authenticated: BOOL,
    	//  Device authenticated/paired/bonded
    	last_seen:     SYSTEMTIME,
    	//  Last time the device was seen
    	last_used:     SYSTEMTIME,
    	//  Last time the device was used for other than RNR, inquiry, or SDP
    	name:          [248]u16,
    }
    Related Procedures With Parameters

    BLUETOOTH_DEVICE_SEARCH_PARAMS ¶

    BLUETOOTH_DEVICE_SEARCH_PARAMS :: struct {
    	dw_size:              u32,
    	// Size of this structure
    	return_authenticated: BOOL,
    	// Return authenticated devices
    	return_remembered:    BOOL,
    	// Return remembered devices
    	return_unknown:       BOOL,
    	// Return unknown devices
    	return_connected:     BOOL,
    	// Return connected devices
    	issue_inquiry:        BOOL,
    	// Issue a new inquiry
    	timeout_multiplier:   BYTE,
    	// Timeout for the inquiry, expressed in increments of 1.28 seconds
    	radio:                HANDLE,
    }
    Related Procedures With Parameters

    BLUETOOTH_FIND_RADIO_PARAMS ¶

    BLUETOOTH_FIND_RADIO_PARAMS :: struct {
    	dw_size: u32,
    }
    Related Procedures With Parameters

    BLUETOOTH_RADIO_INFO ¶

    BLUETOOTH_RADIO_INFO :: struct {
    	dw_size:           u32,
    	// Size of this structure
    	address:           BLUETOOTH_ADDRESS,
    	// Address of radio
    	name:              [248]u16,
    	// Name of the radio
    	device_class:      u32,
    	// Bluetooth "Class of Device". See: https://btprodspecificationrefs.blob.core.windows.net/assigned-numbers/Assigned%20Number%20Types/Baseband.pdf
    	lmp_minor_version: u16,
    	// This member contains data specific to individual Bluetooth device manufacturers.
    	manufacturer:      u16,
    }
    Related Procedures With Parameters

    BOOL ¶

    BOOL :: distinct b32
    Related Procedures With Parameters
    Related Procedures With Returns
    Related Constants

    BSMINFO ¶

    BSMINFO :: struct {
    	cbSize: u32,
    	hdesk:  HDESK,
    	hwnd:   HWND,
    	luid:   LUID,
    }
    Related Procedures With Parameters

    BY_HANDLE_FILE_INFORMATION ¶

    BY_HANDLE_FILE_INFORMATION :: struct {
    	dwFileAttributes:     u32,
    	ftCreationTime:       FILETIME,
    	ftLastAccessTime:     FILETIME,
    	ftLastWriteTime:      FILETIME,
    	dwVolumeSerialNumber: u32,
    	nFileSizeHigh:        u32,
    	nFileSizeLow:         u32,
    	nNumberOfLinks:       u32,
    	nFileIndexHigh:       u32,
    	nFileIndexLow:        u32,
    }
    Related Procedures With Parameters

    Battery_Flag ¶

    Battery_Flag :: enum BYTE {
    	High       = 0, 
    	Low        = 1, 
    	Critical   = 2, 
    	Charging   = 3, 
    	No_Battery = 7, 
    }

    Battery_Flags ¶

    Battery_Flags :: bit_set[Battery_Flag; BYTE]

    CACHE_DESCRIPTOR ¶

    CACHE_DESCRIPTOR :: struct {
    	Level:         BYTE,
    	Associativity: BYTE,
    	LineSize:      u16,
    	Size:          u32,
    	Type:          PROCESSOR_CACHE_TYPE,
    }

    CHAR ¶

    CHAR :: u8

    CIEXYZ ¶

    CIEXYZ :: struct {
    	ciexyzX: FXPT2DOT30,
    	ciexyzY: FXPT2DOT30,
    	ciexyzZ: FXPT2DOT30,
    }

    CIEXYZTRIPLE ¶

    CIEXYZTRIPLE :: struct {
    	ciexyzRed:   CIEXYZ,
    	ciexyzGreen: CIEXYZ,
    	ciexyzBlue:  CIEXYZ,
    }

    CLSID ¶

    CLSID :: GUID
    Related Constants

    CODEPAGE ¶

    CODEPAGE :: enum u32 {
    	// Default to ANSI code page
    	ACP                     = 0, 
    	// Default to OEM  code page
    	OEMCP                   = 1, 
    	// Default to MAC  code page
    	MACCP                   = 2, 
    	// Current thread's ANSI code page
    	THREAD_ACP              = 3, 
    	// Symbol translations
    	SYMBOL                  = 42, 
    	// IBM EBCDIC US-Canada
    	IBM037                  = 37, 
    	// OEM United States
    	IBM437                  = 437, 
    	// IBM EBCDIC International
    	IBM500                  = 500, 
    	// Arabic (ASMO 708)
    	ASMO_708                = 708, 
    	// Arabic (Transparent ASMO); Arabic (DOS)
    	DOS_720                 = 720, 
    	// OEM Greek (formerly 437G); Greek (DOS)
    	IBM737                  = 737, 
    	// OEM Baltic; Baltic (DOS)
    	IBM775                  = 775, 
    	// OEM Multilingual Latin 1; Western European (DOS)
    	IBM850                  = 850, 
    	// OEM Latin 2; Central European (DOS)
    	IBM852                  = 852, 
    	// OEM Cyrillic (primarily Russian)
    	IBM855                  = 855, 
    	// OEM Turkish; Turkish (DOS)
    	IBM857                  = 857, 
    	// OEM Multilingual Latin 1 + Euro symbol
    	IBM00858                = 858, 
    	// OEM Portuguese; Portuguese (DOS)
    	IBM860                  = 860, 
    	// OEM Icelandic; Icelandic (DOS)
    	IBM861                  = 861, 
    	// OEM Hebrew; Hebrew (DOS)
    	DOS_862                 = 862, 
    	// OEM French Canadian; French Canadian (DOS)
    	IBM863                  = 863, 
    	// OEM Arabic; Arabic (864)
    	IBM864                  = 864, 
    	// OEM Nordic; Nordic (DOS)
    	IBM865                  = 865, 
    	// OEM Russian; Cyrillic (DOS)
    	CP866                   = 866, 
    	// OEM Modern Greek; Greek, Modern (DOS)
    	IBM869                  = 869, 
    	// IBM EBCDIC Multilingual/ROECE (Latin 2); IBM EBCDIC Multilingual Latin 2
    	IBM870                  = 870, 
    	// Thai (Windows)
    	WINDOWS_874             = 874, 
    	// IBM EBCDIC Greek Modern
    	CP875                   = 875, 
    	// ANSI/OEM Japanese; Japanese (Shift-JIS)
    	SHIFT_JIS               = 932, 
    	// ANSI/OEM Simplified Chinese (PRC, Singapore); Chinese Simplified (GB2312)
    	GB2312                  = 936, 
    	// ANSI/OEM Korean (Unified Hangul Code)
    	KS_C_5601_1987          = 949, 
    	// ANSI/OEM Traditional Chinese (Taiwan; Hong Kong SAR, PRC); Chinese Traditional (Big5)
    	BIG5                    = 950, 
    	// IBM EBCDIC Turkish (Latin 5)
    	IBM1026                 = 1026, 
    	// IBM EBCDIC Latin 1/Open System
    	IBM01047                = 1047, 
    	// IBM EBCDIC US-Canada (037 + Euro symbol); IBM EBCDIC (US-Canada-Euro)
    	IBM01140                = 1140, 
    	// IBM EBCDIC Germany (20273 + Euro symbol); IBM EBCDIC (Germany-Euro)
    	IBM01141                = 1141, 
    	// IBM EBCDIC Denmark-Norway (20277 + Euro symbol); IBM EBCDIC (Denmark-Norway-Euro)
    	IBM01142                = 1142, 
    	// IBM EBCDIC Finland-Sweden (20278 + Euro symbol); IBM EBCDIC (Finland-Sweden-Euro)
    	IBM01143                = 1143, 
    	// IBM EBCDIC Italy (20280 + Euro symbol); IBM EBCDIC (Italy-Euro)
    	IBM01144                = 1144, 
    	// IBM EBCDIC Latin America-Spain (20284 + Euro symbol); IBM EBCDIC (Spain-Euro)
    	IBM01145                = 1145, 
    	// IBM EBCDIC United Kingdom (20285 + Euro symbol); IBM EBCDIC (UK-Euro)
    	IBM01146                = 1146, 
    	// IBM EBCDIC France (20297 + Euro symbol); IBM EBCDIC (France-Euro)
    	IBM01147                = 1147, 
    	// IBM EBCDIC International (500 + Euro symbol); IBM EBCDIC (International-Euro)
    	IBM01148                = 1148, 
    	// IBM EBCDIC Icelandic (20871 + Euro symbol); IBM EBCDIC (Icelandic-Euro)
    	IBM01149                = 1149, 
    	// Unicode UTF-16, little endian byte order (BMP of ISO 10646); available only to managed applications
    	UTF16                   = 1200, 
    	// Unicode UTF-16, big endian byte order; available only to managed applications
    	UNICODEFFFE             = 1201, 
    	// ANSI Central European; Central European (Windows)
    	WINDOWS_1250            = 1250, 
    	// ANSI Cyrillic; Cyrillic (Windows)
    	WINDOWS_1251            = 1251, 
    	// ANSI Latin 1; Western European (Windows)
    	WINDOWS_1252            = 1252, 
    	// ANSI Greek; Greek (Windows)
    	WINDOWS_1253            = 1253, 
    	// ANSI Turkish; Turkish (Windows)
    	WINDOWS_1254            = 1254, 
    	// ANSI Hebrew; Hebrew (Windows)
    	WINDOWS_1255            = 1255, 
    	// ANSI Arabic; Arabic (Windows)
    	WINDOWS_1256            = 1256, 
    	// ANSI Baltic; Baltic (Windows)
    	WINDOWS_1257            = 1257, 
    	// ANSI/OEM Vietnamese; Vietnamese (Windows)
    	WINDOWS_1258            = 1258, 
    	// Korean (Johab)
    	JOHAB                   = 1361, 
    	// MAC Roman; Western European (Mac)
    	MACINTOSH               = 10000, 
    	// Japanese (Mac)
    	X_MAC_JAPANESE          = 10001, 
    	// MAC Traditional Chinese (Big5); Chinese Traditional (Mac)
    	X_MAC_CHINESETRAD       = 10002, 
    	// Korean (Mac)
    	X_MAC_KOREAN            = 10003, 
    	// Arabic (Mac)
    	X_MAC_ARABIC            = 10004, 
    	// Hebrew (Mac)
    	X_MAC_HEBREW            = 10005, 
    	// Greek (Mac)
    	X_MAC_GREEK             = 10006, 
    	// Cyrillic (Mac)
    	X_MAC_CYRILLIC          = 10007, 
    	// MAC Simplified Chinese (GB 2312); Chinese Simplified (Mac)
    	X_MAC_CHINESESIMP       = 10008, 
    	// Romanian (Mac)
    	X_MAC_ROMANIAN          = 10010, 
    	// Ukrainian (Mac)
    	X_MAC_UKRAINIAN         = 10017, 
    	// Thai (Mac)
    	X_MAC_THAI              = 10021, 
    	// MAC Latin 2; Central European (Mac)
    	X_MAC_CE                = 10029, 
    	// Icelandic (Mac)
    	X_MAC_ICELANDIC         = 10079, 
    	// Turkish (Mac)
    	X_MAC_TURKISH           = 10081, 
    	// Croatian (Mac)
    	X_MAC_CROATIAN          = 10082, 
    	// Unicode UTF-32, little endian byte order; available only to managed applications
    	UTF32                   = 12000, 
    	// Unicode UTF-32, big endian byte order; available only to managed applications
    	UTF32BE                 = 12001, 
    	// CNS Taiwan; Chinese Traditional (CNS)
    	X_CHINESE_CNS           = 20000, 
    	// TCA Taiwan
    	X_CP20001               = 20001, 
    	// Eten Taiwan; Chinese Traditional (Eten)
    	X_CHINESE_ETEN          = 20002, 
    	// IBM5550 Taiwan
    	X_CP20003               = 20003, 
    	// TeleText Taiwan
    	X_CP20004               = 20004, 
    	// Wang Taiwan
    	X_CP20005               = 20005, 
    	// IA5 (IRV International Alphabet No. 5, 7-bit); Western European (IA5)
    	X_IA5                   = 20105, 
    	// IA5 German (7-bit)
    	X_IA5_GERMAN            = 20106, 
    	// IA5 Swedish (7-bit)
    	X_IA5_SWEDISH           = 20107, 
    	// IA5 Norwegian (7-bit)
    	X_IA5_NORWEGIAN         = 20108, 
    	// US-ASCII (7-bit)
    	US_ASCII                = 20127, 
    	// T.61
    	X_CP20261               = 20261, 
    	// ISO 6937 Non-Spacing Accent
    	X_CP20269               = 20269, 
    	// IBM EBCDIC Germany
    	IBM273                  = 20273, 
    	// IBM EBCDIC Denmark-Norway
    	IBM277                  = 20277, 
    	// IBM EBCDIC Finland-Sweden
    	IBM278                  = 20278, 
    	// IBM EBCDIC Italy
    	IBM280                  = 20280, 
    	// IBM EBCDIC Latin America-Spain
    	IBM284                  = 20284, 
    	// IBM EBCDIC United Kingdom
    	IBM285                  = 20285, 
    	// IBM EBCDIC Japanese Katakana Extended
    	IBM290                  = 20290, 
    	// IBM EBCDIC France
    	IBM297                  = 20297, 
    	// IBM EBCDIC Arabic
    	IBM420                  = 20420, 
    	// IBM EBCDIC Greek
    	IBM423                  = 20423, 
    	// IBM EBCDIC Hebrew
    	IBM424                  = 20424, 
    	// IBM EBCDIC Korean Extended
    	X_EBCDIC_KOREANEXTENDED = 20833, 
    	// IBM EBCDIC Thai
    	IBM_THAI                = 20838, 
    	// Russian (KOI8-R); Cyrillic (KOI8-R)
    	KOI8_R                  = 20866, 
    	// IBM EBCDIC Icelandic
    	IBM871                  = 20871, 
    	// IBM EBCDIC Cyrillic Russian
    	IBM880                  = 20880, 
    	// IBM EBCDIC Turkish
    	IBM905                  = 20905, 
    	// IBM EBCDIC Latin 1/Open System (1047 + Euro symbol)
    	IBM00924                = 20924, 
    	// Japanese (JIS 0208-1990 and 0212-1990)
    	EUC_JP                  = 20932, 
    	// Simplified Chinese (GB2312); Chinese Simplified (GB2312-80)
    	X_CP20936               = 20936, 
    	// Korean Wansung
    	X_CP20949               = 20949, 
    	// IBM EBCDIC Cyrillic Serbian-Bulgarian
    	CP1025                  = 21025, 
    	// Ukrainian (KOI8-U); Cyrillic (KOI8-U)
    	KOI8_U                  = 21866, 
    	// ISO 8859-1 Latin 1; Western European (ISO)
    	ISO_8859_1              = 28591, 
    	// ISO 8859-2 Central European; Central European (ISO)
    	ISO_8859_2              = 28592, 
    	// ISO 8859-3 Latin 3
    	ISO_8859_3              = 28593, 
    	// ISO 8859-4 Baltic
    	ISO_8859_4              = 28594, 
    	// ISO 8859-5 Cyrillic
    	ISO_8859_5              = 28595, 
    	// ISO 8859-6 Arabic
    	ISO_8859_6              = 28596, 
    	// ISO 8859-7 Greek
    	ISO_8859_7              = 28597, 
    	// ISO 8859-8 Hebrew; Hebrew (ISO-Visual)
    	ISO_8859_8              = 28598, 
    	// ISO 8859-9 Turkish
    	ISO_8859_9              = 28599, 
    	// ISO 8859-13 Estonian
    	ISO_8859_13             = 28603, 
    	// ISO 8859-15 Latin 9
    	ISO_8859_15             = 28605, 
    	// Europa 3
    	X_EUROPA                = 29001, 
    	// ISO 8859-8 Hebrew; Hebrew (ISO-Logical)
    	ISO_8859_8_I            = 38598, 
    	// ISO 2022 Japanese with no halfwidth Katakana; Japanese (JIS)
    	ISO_2022_JP             = 50220, 
    	// ISO 2022 Japanese with halfwidth Katakana; Japanese (JIS-Allow 1 byte Kana)
    	CSISO2022JP             = 50221, 
    	// ISO 2022 Japanese JIS X 0201-1989; Japanese (JIS-Allow 1 byte Kana - SO/SI)
    	ISO_2022_2_JP           = 50222, 
    	// ISO 2022 Korean
    	ISO_2022_KR             = 50225, 
    	// ISO 2022 Simplified Chinese; Chinese Simplified (ISO 2022)
    	X_CP50227               = 50227, 
    	// EUC Japanese
    	EUC_JP_2                = 51932, 
    	// EUC Simplified Chinese; Chinese Simplified (EUC)
    	EUC_CN                  = 51936, 
    	// EUC Korean
    	EUC_KR                  = 51949, 
    	// HZ-GB2312 Simplified Chinese; Chinese Simplified (HZ)
    	HZ_GB_2312              = 52936, 
    	// **Windows XP and later:** GB18030 Simplified Chinese (4 byte); Chinese Simplified (GB18030)
    	GB18030                 = 54936, 
    	// ISCII Devanagari
    	X_ISCII_DE              = 57002, 
    	// ISCII Bangla
    	X_ISCII_BE              = 57003, 
    	// ISCII Tamil
    	X_ISCII_TA              = 57004, 
    	// ISCII Telugu
    	X_ISCII_TE              = 57005, 
    	// ISCII Assamese
    	X_ISCII_AS              = 57006, 
    	// ISCII Odia
    	X_ISCII_OR              = 57007, 
    	// ISCII Kannada
    	X_ISCII_KA              = 57008, 
    	// ISCII Malayalam
    	X_ISCII_MA              = 57009, 
    	// ISCII Gujarati
    	X_ISCII_GU              = 57010, 
    	// ISCII Punjabi
    	X_ISCII_PA              = 57011, 
    	// Unicode (UTF-7)
    	UTF7                    = 65000, // 65000
    	// Unicode (UTF-8)
    	UTF8                    = 65001, // 65001
    }
     

    https://learn.microsoft.com/en-us/windows/win32/intl/code-page-identifiers

    Related Procedures With Parameters
    Related Procedures With Returns

    COINIT ¶

    COINIT :: enum u32 {
    	APARTMENTTHREADED = 2, 
    	MULTITHREADED     = 0, 
    	DISABLE_OLE1DDE   = 4, 
    	SPEED_OVER_MEMORY = 8, 
    }
     

    objbase.h Note(Dragos): https://learn.microsoft.com/en-us/windows/win32/api/objbase/ne-objbase-coinit makes you believe that MULTITHREADED == 3. That is wrong. See definition of objbase.h

    typedef enum tagCOINIT {

    COINIT_APARTMENTTHREADED  = 0x2,      // Apartment model
    
    

    #if (_WIN32_WINNT >= 0x0400 ) || defined(_WIN32_DCOM) // DCOM

    // These constants are only valid on Windows NT 4.0
    COINIT_MULTITHREADED      = COINITBASE_MULTITHREADED,
    COINIT_DISABLE_OLE1DDE    = 0x4,      // Don't use DDE for Ole1 support.
    COINIT_SPEED_OVER_MEMORY  = 0x8,      // Trade memory for speed.
    

    #endif // DCOM } COINIT; Where COINITBASE_MULTITHREADED == 0x00

    Related Procedures With Parameters

    COLOR16 ¶

    COLOR16 :: u16

    COLORREF ¶

    COLORREF :: u32

    COMDLG_FILTERSPEC ¶

    COMDLG_FILTERSPEC :: struct {
    	pszName: [^]u16,
    	pszSpec: [^]u16,
    }

    COMMTIMEOUTS ¶

    COMMTIMEOUTS :: struct {
    	ReadIntervalTimeout:         u32,
    	ReadTotalTimeoutMultiplier:  u32,
    	ReadTotalTimeoutConstant:    u32,
    	WriteTotalTimeoutMultiplier: u32,
    	WriteTotalTimeoutConstant:   u32,
    }
    Related Procedures With Parameters

    COMSTAT ¶

    COMSTAT :: struct {
    	bits:     bit_set[Com_Stat_Bits; u32],
    	cbInQue:  u32,
    	cbOutQue: u32,
    }
    Related Procedures With Parameters

    CONSOLE_CURSOR_INFO ¶

    CONSOLE_CURSOR_INFO :: struct {
    	dwSize:   u32,
    	bVisible: BOOL,
    }
    Related Procedures With Parameters

    CONSOLE_READCONSOLE_CONTROL ¶

    CONSOLE_READCONSOLE_CONTROL :: struct {
    	nLength:           u32,
    	nInitialChars:     u32,
    	dwCtrlWakeupMask:  u32,
    	dwControlKeyState: u32,
    }
    Related Procedures With Parameters

    CONSOLE_SCREEN_BUFFER_INFO ¶

    CONSOLE_SCREEN_BUFFER_INFO :: struct {
    	dwSize:              COORD,
    	dwCursorPosition:    COORD,
    	wAttributes:         u16,
    	srWindow:            SMALL_RECT,
    	dwMaximumWindowSize: COORD,
    }
    Related Procedures With Parameters

    CONTEXT ¶

    CONTEXT :: struct {
    	P1Home:               u64,
    	P2Home:               u64,
    	P3Home:               u64,
    	P4Home:               u64,
    	P5Home:               u64,
    	P6Home:               u64,
    	ContextFlags:         u32,
    	MxCsr:                u32,
    	SegCs:                u16,
    	SegDs:                u16,
    	SegEs:                u16,
    	SegFs:                u16,
    	SegGs:                u16,
    	SegSs:                u16,
    	EFlags:               u32,
    	Dr0:                  u64,
    	Dr1:                  u64,
    	Dr2:                  u64,
    	Dr3:                  u64,
    	Dr6:                  u64,
    	Dr7:                  u64,
    	Rax:                  u64,
    	Rcx:                  u64,
    	Rdx:                  u64,
    	Rbx:                  u64,
    	Rsp:                  u64,
    	Rbp:                  u64,
    	Rsi:                  u64,
    	Rdi:                  u64,
    	R8:                   u64,
    	R9:                   u64,
    	R10:                  u64,
    	R11:                  u64,
    	R12:                  u64,
    	R13:                  u64,
    	R14:                  u64,
    	R15:                  u64,
    	Rip:                  u64,
    	_:                    struct #raw_union {
    		FltSave: XSAVE_FORMAT,
    		Q:       [16]NEON128,
    		D:       [32]u64,
    		_:       struct {
    			Header: [2]M128A,
    			Legacy: [8]M128A,
    			Xmm0:   M128A,
    			Xmm1:   M128A,
    			Xmm2:   M128A,
    			Xmm3:   M128A,
    			Xmm4:   M128A,
    			Xmm5:   M128A,
    			Xmm6:   M128A,
    			Xmm7:   M128A,
    			Xmm8:   M128A,
    			Xmm9:   M128A,
    			Xmm10:  M128A,
    			Xmm11:  M128A,
    			Xmm12:  M128A,
    			Xmm13:  M128A,
    			Xmm14:  M128A,
    			Xmm15:  M128A,
    		},
    		S:       [32]u32,
    	},
    	VectorRegister:       [26]M128A,
    	VectorControl:        u64,
    	DebugControl:         u64,
    	LastBranchToRip:      u64,
    	LastBranchFromRip:    u64,
    	LastExceptionToRip:   u64,
    	LastExceptionFromRip: u64,
    }
    Related Procedures With Parameters

    COORD ¶

    COORD :: struct {
    	X: i16,
    	Y: i16,
    }
    Related Procedures With Parameters

    CPINFOEXW ¶

    CPINFOEXW :: struct {
    	// Maximum length, in bytes, of a character in the code page.
    	MaxCharSize:        u32,
    	// The default is usually the "?" character for the code page.
    	DefaultChar:        [2]BYTE,
    	// A fixed-length array of lead byte ranges, for which the number of lead byte ranges is variable.
    	LeadByte:           [12]BYTE,
    	// The default is usually the "?" character or the katakana middle dot character.
    	UnicodeDefaultChar: u16,
    	// Code page value. This value reflects the code page passed to the GetCPInfoEx function.
    	CodePage:           CODEPAGE,
    	// Full name of the code page.
    	CodePageName:       [260]u16,
    }
    Related Procedures With Parameters

    CREATESTRUCTA ¶

    CREATESTRUCTA :: struct {
    	lpCreateParams: rawptr,
    	hInstance:      HANDLE,
    	hMenu:          HMENU,
    	hwndParent:     HWND,
    	cy:             i32,
    	cx:             i32,
    	y:              i32,
    	x:              i32,
    	style:          i32,
    	lpszName:       cstring,
    	lpszClass:      cstring,
    	dwExStyle:      u32,
    }

    CREATESTRUCTW ¶

    CREATESTRUCTW :: struct {
    	lpCreateParams: rawptr,
    	hInstance:      HANDLE,
    	hMenu:          HMENU,
    	hwndParent:     HWND,
    	cy:             i32,
    	cx:             i32,
    	y:              i32,
    	x:              i32,
    	style:          i32,
    	lpszName:       [^]u16,
    	lpszClass:      [^]u16,
    	dwExStyle:      u32,
    }

    CRITICAL_SECTION ¶

    CRITICAL_SECTION :: struct {
    	CriticalSectionDebug: rawptr,
    	LockCount:            i32,
    	RecursionCount:       i32,
    	OwningThread:         HANDLE,
    	LockSemaphore:        HANDLE,
    	SpinCount:            uint,
    }
    Related Procedures With Parameters

    CURSORINFO ¶

    CURSORINFO :: struct {
    	cbSize:      u32,
    	flags:       u32,
    	hCursor:     HCURSOR,
    	ptScreenPos: POINT,
    }
    Related Procedures With Parameters

    CWPRETSTRUCT ¶

    CWPRETSTRUCT :: struct {
    	lResult: int,
    	lParam:  int,
    	wParam:  uintptr,
    	message: u32,
    	hwnd:    HWND,
    }

    ChoosePixelFormatARBType ¶

    ChoosePixelFormatARBType :: proc "c" (hdc: HDC, attribIList: [^]i32, attribFList: [^]f32, maxFormats: u32, formats: [^]i32, numFormats: [^]u32) -> BOOL

    Com_Error ¶

    Com_Error :: bit_set[Com_Error_Bits; u32]

    Com_Error_Bits ¶

    Com_Error_Bits :: enum int {
    	RXOVER, 
    	OVERRUN, 
    	RXPARITY, 
    	FRAME, 
    	BREAK, 
    }

    Com_Stat_Bits ¶

    Com_Stat_Bits :: enum int {
    	fCtsHold, 
    	fDsrHold, 
    	fRlsdHold, 
    	fXoffHold, 
    	fXoffSent, 
    	fEof, 
    	fTxim, 
    }

    Control_Key_State ¶

    Control_Key_State :: bit_set[Control_Key_State_Bits; u32]

    Control_Key_State_Bits ¶

    Control_Key_State_Bits :: enum int {
    	RIGHT_ALT_PRESSED, 
    	LEFT_ALT_PRESSED, 
    	RIGHT_CTRL_PRESSED, 
    	LEFT_CTRL_PRESSED, 
    	SHIFT_PRESSED, 
    	NUMLOCK_ON, 
    	SCROLLLOCK_ON, 
    	CAPSLOCK_ON, 
    	ENHANCED_KEY, 
    }

    CreateContextAttribsARBType ¶

    CreateContextAttribsARBType :: proc "c" (hdc: HDC, hShareContext: rawptr, attribList: [^]i32) -> HGLRC

    DCB ¶

    DCB :: struct {
    	DCBlength:  u32,
    	BaudRate:   u32,
    	using _:    bit_field u32 {
    		fBinary:           bool | 1,
    		fParity:           bool | 1,
    		fOutxCtsFlow:      bool | 1,
    		fOutxDsrFlow:      bool | 1,
    		fDtrControl:       DTR_Control | 2,
    		fDsrSensitivity:   bool | 1,
    		fTXContinueOnXoff: bool | 1,
    		fOutX:             bool | 1,
    		fInX:              bool | 1,
    		fErrorChar:        bool | 1,
    		fNull:             bool | 1,
    		fRtsControl:       RTS_Control | 2,
    		fAbortOnError:     bool | 1,
    	},
    	wReserved:  u16,
    	XOnLim:     u16,
    	XOffLim:    u16,
    	ByteSize:   BYTE,
    	Parity:     Parity,
    	StopBits:   Stop_Bits,
    	XonChar:    u8,
    	XoffChar:   u8,
    	ErrorChar:  u8,
    	EofChar:    u8,
    	EvtChar:    u8,
    	wReserved1: u16,
    }
    Related Procedures With Parameters

    DECIMAL ¶

    DECIMAL :: struct {
    	wReserved: u16,
    	_:         struct #raw_union {
    		_:         struct {
    			scale: BYTE,
    			sign:  BYTE,
    		},
    		signscale: u16,
    	},
    	Hi32:      u32,
    	_:         struct #raw_union {
    		_:    struct {
    			Lo32:  u32,
    			Mid32: u32,
    		},
    		Lo64: u64,
    	},
    }

    DESIGNVECTOR ¶

    DESIGNVECTOR :: struct {
    	dvReserved: u32,
    	dvNumAxes:  u32,
    	dvValues:   [16]i32,
    }

    DEVMODEW ¶

    DEVMODEW :: struct {
    	dmDeviceName:       [32]u16,
    	dmSpecVersion:      u16,
    	dmDriverVersion:    u16,
    	dmSize:             u16,
    	dmDriverExtra:      u16,
    	dmFields:           u32,
    	using _:            struct #raw_union {
    		// Printer only fields.
    		using _: struct {
    			dmOrientation:   i16,
    			dmPaperSize:     i16,
    			dmPaperLength:   i16,
    			dmPaperWidth:    i16,
    			dmScale:         i16,
    			dmCopies:        i16,
    			dmDefaultSource: i16,
    			dmPrintQuality:  i16,
    		},
    		// Display only fields.
    		using _: struct {
    			dmPosition:           POINT,
    			dmDisplayOrientation: u32,
    			dmDisplayFixedOutput: u32,
    		},
    	},
    	dmColor:            i16,
    	dmDuplex:           i16,
    	dmYResolution:      i16,
    	dmTTOption:         i16,
    	dmCollate:          i16,
    	dmFormName:         [32]u16,
    	dmLogPixels:        u16,
    	dmBitsPerPel:       u32,
    	dmPelsWidth:        u32,
    	dmPelsHeight:       u32,
    	using _:            struct #raw_union {
    		dmDisplayFlags: u32,
    		dmNup:          u32,
    	},
    	dmDisplayFrequency: u32,
    	dmICMMethod:        u32,
    	dmICMIntent:        u32,
    	dmMediaType:        u32,
    	dmDitherType:       u32,
    	dmReserved1:        u32,
    	dmReserved2:        u32,
    	dmPanningWidth:     u32,
    	dmPanningHeight:    u32,
    }
    Related Procedures With Parameters

    DISPLAY_DEVICEW ¶

    DISPLAY_DEVICEW :: struct {
    	cb:           u32,
    	DeviceName:   [32]u16,
    	DeviceString: [128]u16,
    	StateFlags:   u32,
    	DeviceID:     [128]u16,
    	DeviceKey:    [128]u16,
    }
    Related Procedures With Parameters

    DNS_MX_DATAA ¶

    DNS_MX_DATAA :: struct {
    	pNameExchange: cstring,
    	// the hostname
    	wPreference:   u16,
    	// lower values preferred
    	_:             u16,
    }

    DNS_PTR_DATAA ¶

    DNS_PTR_DATAA :: cstring

    DNS_RECORD ¶

    DNS_RECORD :: struct {
    	// aka DNS_RECORDA
    	pNext:       ^DNS_RECORD,
    	pName:       cstring,
    	wType:       u16,
    	wDataLength: u16,
    	Flags:       u32,
    	dwTtl:       u32,
    	_:           u32,
    	Data:        struct #raw_union {
    		CNAME: cstring,
    		A:     u32be,
    		// Ipv4 Address
    		AAAA:  u128be,
    		// Ipv6 Address
    		TXT:   DNS_TXT_DATAA,
    		NS:    cstring,
    		MX:    DNS_MX_DATAA,
    		SRV:   DNS_SRV_DATAA,
    	},
    }
    Related Procedures With Parameters

    DNS_SRV_DATAA ¶

    DNS_SRV_DATAA :: struct {
    	pNameTarget: cstring,
    	wPriority:   u16,
    	wWeight:     u16,
    	wPort:       u16,
    	_:           u16,
    }

    DNS_STATUS ¶

    DNS_STATUS :: distinct u32
     

    zero is success

    Related Procedures With Returns

    DNS_TXT_DATAA ¶

    DNS_TXT_DATAA :: struct {
    	dwStringCount: u32,
    	pStringArray:  cstring,
    }

    DRAWTEXTPARAMS ¶

    DRAWTEXTPARAMS :: struct {
    	cbSize:        u32,
    	iTabLength:    i32,
    	iLeftMargin:   i32,
    	iRightMargin:  i32,
    	uiLengthDrawn: u32,
    }
    Related Procedures With Parameters

    DTR_Control ¶

    DTR_Control :: enum u8 {
    	Disable   = 0, 
    	Enable    = 1, 
    	Handshake = 2, 
    }

    DUMMYUNIONNAME_u ¶

    DUMMYUNIONNAME_u :: struct #raw_union {
    	Core:     ProcessorCore,
    	Node:     NumaNode,
    	Cache:    CACHE_DESCRIPTOR,
    	Reserved: [2]u64,
    }

    DWMNCRENDERINGPOLICY ¶

    DWMNCRENDERINGPOLICY :: enum int {
    	DWMNCRP_USEWINDOWSTYLE, 
    	DWMNCRP_DISABLED, 
    	DWMNCRP_ENABLED, 
    	DWMNCRP_LAST, 
    }

    DWMWINDOWATTRIBUTE ¶

    DWMWINDOWATTRIBUTE :: enum int {
    	DWMWA_NCRENDERING_ENABLED            = 1, 
    	DWMWA_NCRENDERING_POLICY, 
    	DWMWA_TRANSITIONS_FORCEDISABLED, 
    	DWMWA_ALLOW_NCPAINT, 
    	DWMWA_CAPTION_BUTTON_BOUNDS, 
    	DWMWA_NONCLIENT_RTL_LAYOUT, 
    	DWMWA_FORCE_ICONIC_REPRESENTATION, 
    	DWMWA_FLIP3D_POLICY, 
    	DWMWA_EXTENDED_FRAME_BOUNDS, 
    	DWMWA_HAS_ICONIC_BITMAP, 
    	DWMWA_DISALLOW_PEEK, 
    	DWMWA_EXCLUDED_FROM_PEEK, 
    	DWMWA_CLOAK, 
    	DWMWA_CLOAKED, 
    	DWMWA_FREEZE_REPRESENTATION, 
    	DWMWA_PASSIVE_UPDATE_MODE, 
    	DWMWA_USE_HOSTBACKDROPBRUSH, 
    	DWMWA_USE_IMMERSIVE_DARK_MODE        = 20, 
    	DWMWA_WINDOW_CORNER_PREFERENCE       = 33, 
    	DWMWA_BORDER_COLOR, 
    	DWMWA_CAPTION_COLOR, 
    	DWMWA_TEXT_COLOR, 
    	DWMWA_VISIBLE_FRAME_BORDER_THICKNESS, 
    	DWMWA_SYSTEMBACKDROP_TYPE, 
    	DWMWA_LAST, 
    }

    DWORD ¶

    DWORD :: u32

    DWORD64 ¶

    DWORD64 :: u64

    DWORDLONG ¶

    DWORDLONG :: u64

    DWORD_PTR ¶

    DWORD_PTR :: uint

    DrawTextFormat ¶

    DrawTextFormat :: enum u32 {
    	DT_TOP                  = 0, 
    	DT_LEFT                 = 0, 
    	DT_CENTER               = 1, 
    	DT_RIGHT                = 2, 
    	DT_VCENTER              = 4, 
    	DT_BOTTOM               = 8, 
    	DT_WORDBREAK            = 16, 
    	DT_SINGLELINE           = 32, 
    	DT_EXPANDTABS           = 64, 
    	DT_TABSTOP              = 128, 
    	DT_NOCLIP               = 256, 
    	DT_EXTERNALLEADING      = 512, 
    	DT_CALCRECT             = 1024, 
    	DT_NOPREFIX             = 2048, 
    	DT_INTERNAL             = 4096, 
    	DT_EDITCONTROL          = 8192, 
    	DT_PATH_ELLIPSIS        = 16384, 
    	DT_END_ELLIPSIS         = 32768, 
    	DT_MODIFYSTRING         = 65536, 
    	DT_RTLREADING           = 131072, 
    	DT_WORD_ELLIPSIS        = 262144, 
    	DT_NOFULLWIDTHCHARBREAK = 524288, 
    	DT_HIDEPREFIX           = 1048576, 
    	DT_PREFIXONLY           = 2097152, 
    }
    Related Procedures With Parameters

    ENUMLOGFONTEXDVW ¶

    ENUMLOGFONTEXDVW :: struct {
    	elfEnumLogfontEx: ENUMLOGFONTEXW,
    	elfDesignVector:  DESIGNVECTOR,
    }
    Related Procedures With Parameters

    ENUMLOGFONTEXW ¶

    ENUMLOGFONTEXW :: struct {
    	elfLogFont:  LOGFONTW,
    	elfFullName: [64]u16,
    	elfStyle:    [32]u16,
    	elfScript:   [32]u16,
    }

    ENUMLOGFONTW ¶

    ENUMLOGFONTW :: struct {
    	elfLogFont:  LOGFONTW,
    	elfFullName: [64]u16,
    	elfStyle:    [32]u16,
    }

    ENUMRESLANGPROCW ¶

    ENUMRESLANGPROCW :: proc(hModule: HMODULE, lpType: [^]u16, lpName: ^u16, wIDLanguage: u16, lParam: int) -> BOOL
    Related Procedures With Parameters

    ENUMRESNAMEPROCW ¶

    ENUMRESNAMEPROCW :: proc(hModule: HMODULE, lpType: [^]u16, lpName: ^u16, lParam: int) -> BOOL
    Related Procedures With Parameters

    ENUMRESTYPEPROCW ¶

    ENUMRESTYPEPROCW :: proc(hModule: HMODULE, lpType: [^]u16, lParam: int) -> BOOL
    Related Procedures With Parameters

    EXCEPTION_DISPOSITION ¶

    EXCEPTION_DISPOSITION :: enum i32 {
    	ExceptionContinueExecution, 
    	ExceptionContinueSearch, 
    	ExceptionNestedException, 
    	ExceptionCollidedUnwind, 
    }

    EXCEPTION_POINTERS ¶

    EXCEPTION_POINTERS :: struct {
    	ExceptionRecord: ^EXCEPTION_RECORD,
    	ContextRecord:   ^CONTEXT,
    }

    EXCEPTION_RECORD ¶

    EXCEPTION_RECORD :: struct {
    	ExceptionCode:        u32,
    	ExceptionFlags:       u32,
    	ExceptionRecord:      ^EXCEPTION_RECORD,
    	ExceptionAddress:     rawptr,
    	NumberParameters:     u32,
    	ExceptionInformation: [15]rawptr,
    }

    Event_Type ¶

    Event_Type :: enum u16 {
    	KEY_EVENT                = 1, 
    	MOUSE_EVENT              = 2, 
    	WINDOW_BUFFER_SIZE_EVENT = 4, 
    	MENU_EVENT               = 8, 
    	FOCUS_EVENT              = 16, 
    }

    FACILITY ¶

    FACILITY :: enum u32 {
    	NULL                                     = 0, 
    	RPC                                      = 1, 
    	DISPATCH                                 = 2, 
    	STORAGE                                  = 3, 
    	ITF                                      = 4, 
    	WIN32                                    = 7, 
    	WINDOWS                                  = 8, 
    	SSPI                                     = 9, 
    	SECURITY                                 = 9, 
    	CONTROL                                  = 10, 
    	CERT                                     = 11, 
    	INTERNET                                 = 12, 
    	MEDIASERVER                              = 13, 
    	MSMQ                                     = 14, 
    	SETUPAPI                                 = 15, 
    	SCARD                                    = 16, 
    	COMPLUS                                  = 17, 
    	AAF                                      = 18, 
    	URT                                      = 19, 
    	ACS                                      = 20, 
    	DPLAY                                    = 21, 
    	UMI                                      = 22, 
    	SXS                                      = 23, 
    	WINDOWS_CE                               = 24, 
    	HTTP                                     = 25, 
    	USERMODE_COMMONLOG                       = 26, 
    	WER                                      = 27, 
    	USERMODE_FILTER_MANAGER                  = 31, 
    	BACKGROUNDCOPY                           = 32, 
    	CONFIGURATION                            = 33, 
    	WIA                                      = 33, 
    	STATE_MANAGEMENT                         = 34, 
    	METADIRECTORY                            = 35, 
    	WINDOWSUPDATE                            = 36, 
    	DIRECTORYSERVICE                         = 37, 
    	GRAPHICS                                 = 38, 
    	SHELL                                    = 39, 
    	NAP                                      = 39, 
    	TPM_SERVICES                             = 40, 
    	TPM_SOFTWARE                             = 41, 
    	UI                                       = 42, 
    	XAML                                     = 43, 
    	ACTION_QUEUE                             = 44, 
    	PLA                                      = 48, 
    	WINDOWS_SETUP                            = 48, 
    	FVE                                      = 49, 
    	FWP                                      = 50, 
    	WINRM                                    = 51, 
    	NDIS                                     = 52, 
    	USERMODE_HYPERVISOR                      = 53, 
    	CMI                                      = 54, 
    	USERMODE_VIRTUALIZATION                  = 55, 
    	USERMODE_VOLMGR                          = 56, 
    	BCD                                      = 57, 
    	USERMODE_VHD                             = 58, 
    	USERMODE_HNS                             = 59, 
    	SDIAG                                    = 60, 
    	WEBSERVICES                              = 61, 
    	WINPE                                    = 61, 
    	WPN                                      = 62, 
    	WINDOWS_STORE                            = 63, 
    	INPUT                                    = 64, 
    	QUIC                                     = 65, 
    	EAP                                      = 66, 
    	IORING                                   = 70, 
    	WINDOWS_DEFENDER                         = 80, 
    	OPC                                      = 81, 
    	XPS                                      = 82, 
    	MBN                                      = 84, 
    	POWERSHELL                               = 84, 
    	RAS                                      = 83, 
    	P2P_INT                                  = 98, 
    	P2P                                      = 99, 
    	DAF                                      = 100, 
    	BLUETOOTH_ATT                            = 101, 
    	AUDIO                                    = 102, 
    	STATEREPOSITORY                          = 103, 
    	VISUALCPP                                = 109, 
    	SCRIPT                                   = 112, 
    	PARSE                                    = 113, 
    	BLB                                      = 120, 
    	BLB_CLI                                  = 121, 
    	WSBAPP                                   = 122, 
    	BLBUI                                    = 128, 
    	USN                                      = 129, 
    	USERMODE_VOLSNAP                         = 130, 
    	TIERING                                  = 131, 
    	WSB_ONLINE                               = 133, 
    	ONLINE_ID                                = 134, 
    	DEVICE_UPDATE_AGENT                      = 135, 
    	DRVSERVICING                             = 136, 
    	DLS                                      = 153, 
    	DELIVERY_OPTIMIZATION                    = 208, 
    	USERMODE_SPACES                          = 231, 
    	USER_MODE_SECURITY_CORE                  = 232, 
    	USERMODE_LICENSING                       = 234, 
    	SOS                                      = 160, 
    	OCP_UPDATE_AGENT                         = 173, 
    	DEBUGGERS                                = 176, 
    	SPP                                      = 256, 
    	RESTORE                                  = 256, 
    	DMSERVER                                 = 256, 
    	DEPLOYMENT_SERVICES_SERVER               = 257, 
    	DEPLOYMENT_SERVICES_IMAGING              = 258, 
    	DEPLOYMENT_SERVICES_MANAGEMENT           = 259, 
    	DEPLOYMENT_SERVICES_UTIL                 = 260, 
    	DEPLOYMENT_SERVICES_BINLSVC              = 261, 
    	DEPLOYMENT_SERVICES_PXE                  = 263, 
    	DEPLOYMENT_SERVICES_TFTP                 = 264, 
    	DEPLOYMENT_SERVICES_TRANSPORT_MANAGEMENT = 272, 
    	DEPLOYMENT_SERVICES_DRIVER_PROVISIONING  = 278, 
    	DEPLOYMENT_SERVICES_MULTICAST_SERVER     = 289, 
    	DEPLOYMENT_SERVICES_MULTICAST_CLIENT     = 290, 
    	DEPLOYMENT_SERVICES_CONTENT_PROVIDER     = 293, 
    	HSP_SERVICES                             = 296, 
    	HSP_SOFTWARE                             = 297, 
    	LINGUISTIC_SERVICES                      = 305, 
    	AUDIOSTREAMING                           = 1094, 
    	TTD                                      = 1490, 
    	ACCELERATOR                              = 1536, 
    	WMAAECMA                                 = 1996, 
    	DIRECTMUSIC                              = 2168, 
    	DIRECT3D10                               = 2169, 
    	DXGI                                     = 2170, 
    	DXGI_DDI                                 = 2171, 
    	DIRECT3D11                               = 2172, 
    	DIRECT3D11_DEBUG                         = 2173, 
    	DIRECT3D12                               = 2174, 
    	DIRECT3D12_DEBUG                         = 2175, 
    	DXCORE                                   = 2176, 
    	PRESENTATION                             = 2177, 
    	LEAP                                     = 2184, 
    	AUDCLNT                                  = 2185, 
    	WINCODEC_DWRITE_DWM                      = 2200, 
    	WINML                                    = 2192, 
    	DIRECT2D                                 = 2201, 
    	DEFRAG                                   = 2304, 
    	USERMODE_SDBUS                           = 2305, 
    	JSCRIPT                                  = 2306, 
    	PIDGENX                                  = 2561, 
    	EAS                                      = 85, 
    	WEB                                      = 885, 
    	WEB_SOCKET                               = 886, 
    	MOBILE                                   = 1793, 
    	SQLITE                                   = 1967, 
    	SERVICE_FABRIC                           = 1968, 
    	UTC                                      = 1989, 
    	WEP                                      = 2049, 
    	SYNCENGINE                               = 2050, 
    	XBOX                                     = 2339, 
    	GAME                                     = 2340, 
    	PIX                                      = 2748, 
    }
     

    Define the facility codes

    Related Procedures With Returns

    FDAP ¶

    FDAP :: enum i32 {
    	BOTTOM = 0, 
    	TOP    = 1, 
    }

    FDE_SHAREVIOLATION_RESPONSE ¶

    FDE_SHAREVIOLATION_RESPONSE :: enum i32 {
    	DEFAULT = 0, 
    	ACCEPT  = 1, 
    	REFUSE  = 2, 
    }

    FILEOPENDIALOGOPTIONS ¶

    FILEOPENDIALOGOPTIONS :: u32

    FILEOP_FLAGS ¶

    FILEOP_FLAGS :: u16

    FILE_ATTRIBUTE_TAG_INFO ¶

    FILE_ATTRIBUTE_TAG_INFO :: struct {
    	FileAttributes: u32,
    	ReparseTag:     u32,
    }

    FILE_BASIC_INFO ¶

    FILE_BASIC_INFO :: struct {
    	CreationTime:   LARGE_INTEGER,
    	LastAccessTime: LARGE_INTEGER,
    	LastWriteTime:  LARGE_INTEGER,
    	ChangeTime:     LARGE_INTEGER,
    	FileAttributes: u32,
    }

    FILE_END_OF_FILE_INFO ¶

    FILE_END_OF_FILE_INFO :: struct {
    	EndOfFile: LARGE_INTEGER,
    }

    FILE_ID_128 ¶

    FILE_ID_128 :: struct {
    	Identifier: [16]BYTE,
    }

    FILE_ID_FULL_DIR_INFORMATION ¶

    FILE_ID_FULL_DIR_INFORMATION :: struct {
    	NextEntryOffset: u32,
    	FileIndex:       u32,
    	CreationTime:    LARGE_INTEGER,
    	LastAccessTime:  LARGE_INTEGER,
    	LastWriteTime:   LARGE_INTEGER,
    	ChangeTime:      LARGE_INTEGER,
    	EndOfFile:       LARGE_INTEGER,
    	AllocationSize:  LARGE_INTEGER,
    	FileAttributes:  u32,
    	FileNameLength:  u32,
    	EaSize:          u32,
    	FileId:          LARGE_INTEGER,
    	FileName:        [1]u16,
    }

    FILE_ID_INFO ¶

    FILE_ID_INFO :: struct {
    	VolumeSerialNumber: u64,
    	FileId:             FILE_ID_128,
    }

    FILE_INFORMATION_CLASS ¶

    FILE_INFORMATION_CLASS :: enum i32 {
    	FileDirectoryInformation                     = 1, 
    	FileFullDirectoryInformation                 = 2, 
    	FileBothDirectoryInformation                 = 3, 
    	FileBasicInformation                         = 4, 
    	FileStandardInformation                      = 5, 
    	FileInternalInformation                      = 6, 
    	FileEaInformation                            = 7, 
    	FileAccessInformation                        = 8, 
    	FileNameInformation                          = 9, 
    	FileRenameInformation                        = 10, 
    	FileLinkInformation                          = 11, 
    	FileNamesInformation                         = 12, 
    	FileDispositionInformation                   = 13, 
    	FilePositionInformation                      = 14, 
    	FileFullEaInformation                        = 15, 
    	FileModeInformation                          = 16, 
    	FileAlignmentInformation                     = 17, 
    	FileAllInformation                           = 18, 
    	FileAllocationInformation                    = 19, 
    	FileEndOfFileInformation                     = 20, 
    	FileAlternateNameInformation                 = 21, 
    	FileStreamInformation                        = 22, 
    	FilePipeInformation                          = 23, 
    	FilePipeLocalInformation                     = 24, 
    	FilePipeRemoteInformation                    = 25, 
    	FileMailslotQueryInformation                 = 26, 
    	FileMailslotSetInformation                   = 27, 
    	FileCompressionInformation                   = 28, 
    	FileObjectIdInformation                      = 29, 
    	FileCompletionInformation                    = 30, 
    	FileMoveClusterInformation                   = 31, 
    	FileQuotaInformation                         = 32, 
    	FileReparsePointInformation                  = 33, 
    	FileNetworkOpenInformation                   = 34, 
    	FileAttributeTagInformation                  = 35, 
    	FileTrackingInformation                      = 36, 
    	FileIdBothDirectoryInformation               = 37, 
    	FileIdFullDirectoryInformation               = 38, 
    	FileValidDataLengthInformation               = 39, 
    	FileShortNameInformation                     = 40, 
    	FileIoCompletionNotificationInformation      = 41, 
    	FileIoStatusBlockRangeInformation            = 42, 
    	FileIoPriorityHintInformation                = 43, 
    	FileSfioReserveInformation                   = 44, 
    	FileSfioVolumeInformation                    = 45, 
    	FileHardLinkInformation                      = 46, 
    	FileProcessIdsUsingFileInformation           = 47, 
    	FileNormalizedNameInformation                = 48, 
    	FileNetworkPhysicalNameInformation           = 49, 
    	FileIdGlobalTxDirectoryInformation           = 50, 
    	FileIsRemoteDeviceInformation                = 51, 
    	FileUnusedInformation                        = 52, 
    	FileNumaNodeInformation                      = 53, 
    	FileStandardLinkInformation                  = 54, 
    	FileRemoteProtocolInformation                = 55, 
    	FileRenameInformationBypassAccessCheck       = 56, 
    	FileLinkInformationBypassAccessCheck         = 57, 
    	FileVolumeNameInformation                    = 58, 
    	FileIdInformation                            = 59, 
    	FileIdExtdDirectoryInformation               = 60, 
    	FileReplaceCompletionInformation             = 61, 
    	FileHardLinkFullIdInformation                = 62, 
    	FileIdExtdBothDirectoryInformation           = 63, 
    	FileDispositionInformationEx                 = 64, 
    	FileRenameInformationEx                      = 65, 
    	FileRenameInformationExBypassAccessCheck     = 66, 
    	FileDesiredStorageClassInformation           = 67, 
    	FileStatInformation                          = 68, 
    	FileMemoryPartitionInformation               = 69, 
    	FileStatLxInformation                        = 70, 
    	FileCaseSensitiveInformation                 = 71, 
    	FileLinkInformationEx                        = 72, 
    	FileLinkInformationExBypassAccessCheck       = 73, 
    	FileStorageReserveIdInformation              = 74, 
    	FileCaseSensitiveInformationForceAccessCheck = 75, 
    	FileKnownFolderInformation                   = 76, 
    	FileStatBasicInformation                     = 77, 
    	FileId64ExtdDirectoryInformation             = 78, 
    	FileId64ExtdBothDirectoryInformation         = 79, 
    	FileIdAllExtdDirectoryInformation            = 80, 
    	FileIdAllExtdBothDirectoryInformation        = 81, 
    	FileStreamReservationInformation, 
    	FileMupProviderInfo, 
    	FileMaximumInformation, 
    }
    Related Procedures With Parameters

    FILE_INFO_BY_HANDLE_CLASS ¶

    FILE_INFO_BY_HANDLE_CLASS :: enum i32 {
    	FileBasicInfo                  = 0, 
    	FileStandardInfo               = 1, 
    	FileNameInfo                   = 2, 
    	FileRenameInfo                 = 3, 
    	FileDispositionInfo            = 4, 
    	FileAllocationInfo             = 5, 
    	FileEndOfFileInfo              = 6, 
    	FileStreamInfo                 = 7, 
    	FileCompressionInfo            = 8, 
    	FileAttributeTagInfo           = 9, 
    	FileIdBothDirectoryInfo        = 10, // 0xA
    	FileIdBothDirectoryRestartInfo = 11, // 0xB
    	FileIoPriorityHintInfo         = 12, // 0xC
    	FileRemoteProtocolInfo         = 13, // 0xD
    	FileFullDirectoryInfo          = 14, // 0xE
    	FileFullDirectoryRestartInfo   = 15, // 0xF
    	FileStorageInfo                = 16, // 0x10
    	FileAlignmentInfo              = 17, // 0x11
    	FileIdInfo                     = 18, // 0x12
    	FileIdExtdDirectoryInfo        = 19, // 0x13
    	FileIdExtdDirectoryRestartInfo = 20, // 0x14
    	MaximumFileInfoByHandlesClass, 
    }
    Related Procedures With Parameters

    FILE_NOTIFY_INFORMATION ¶

    FILE_NOTIFY_INFORMATION :: struct {
    	next_entry_offset: u32,
    	action:            u32,
    	file_name_length:  u32,
    	file_name:         [1]u16,
    }

    FILE_STANDARD_INFO ¶

    FILE_STANDARD_INFO :: struct {
    	AllocationSize: LARGE_INTEGER,
    	EndOfFile:      LARGE_INTEGER,
    	NumberOfLinks:  u32,
    	DeletePending:  BOOLEAN,
    	Directory:      BOOLEAN,
    }

    FILE_VER_GET ¶

    FILE_VER_GET :: enum u32 {
    	LOCALISED, 
    	NEUTRAL, 
    	PREFETCHED, 
    }

    FILE_VER_GET_FLAGS ¶

    FILE_VER_GET_FLAGS :: bit_set[FILE_VER_GET; u32]

    FOCUS_EVENT_RECORD ¶

    FOCUS_EVENT_RECORD :: struct {
    	bSetFocus: BOOL,
    }

    FONTENUMPROCW ¶

    FONTENUMPROCW :: proc(lpelf: ^ENUMLOGFONTW, lpntm: ^NEWTEXTMETRICW, FontType: u32, lParam: int) -> i32
    Related Procedures With Parameters

    FXPT2DOT30 ¶

    FXPT2DOT30 :: struct($Backing: i32, $Fraction_Width: uint = 30) where intrinsics.type_is_integer(Backing), 0 <= Fraction_Width, Fraction_Width <= 8 * size_of(Backing) {
    	i: i32,
    }

    GAA_Flag ¶

    GAA_Flag :: enum u32 {
    	Skip_Unicast                 = 0,  // Do not return unicast addresses.
    	Skip_Anycast                 = 1,  // Do not return IPv6 anycast addresses.
    	Skip_Multicast               = 2,  // Do not return multicast addresses.
    	Skip_DNS_Server              = 3,  // Do not return addresses of DNS servers.
    	Include_Prefix               = 4,  // (XP SP1+) Return a list of IP address prefixes on this adapter. When this flag is set, IP address prefixes are returned for both IPv6 and IPv4 addresses.
    	Skip_Friendly_Name           = 5,  // Do not return the adapter friendly name.
    	Include_WINS_info            = 6,  // (Vista+) Return addresses of Windows Internet Name Service (WINS) servers.
    	Include_Gateways             = 7,  // (Vista+) Return the addresses of default gateways.
    	Include_All_Interfaces       = 8,  // (Vista+) Return addresses for all NDIS interfaces.
    	Include_All_Compartments     = 9,  // (Reserved, Unsupported) Return addresses in all routing compartments.
    	Include_Tunnel_Binding_Order = 10, // (Vista+) Return the adapter addresses sorted in tunnel binding order.
    }

    GAA_Flags ¶

    GAA_Flags :: bit_set[GAA_Flag; u32]

    GENERIC_MAPPING ¶

    GENERIC_MAPPING :: struct {
    	GenericRead:    u32,
    	GenericWrite:   u32,
    	GenericExecute: u32,
    	GenericAll:     u32,
    }
    Related Procedures With Parameters

    GETPROPERTYSTOREFLAGS ¶

    GETPROPERTYSTOREFLAGS :: enum i32 {
    	DEFAULT                 = 0, 
    	HANDLERPROPERTIESONLY   = 1, 
    	READWRITE               = 2, 
    	TEMPORARY               = 4, 
    	FASTPROPERTIESONLY      = 8, 
    	OPENSLOWITEM            = 16, 
    	DELAYCREATION           = 32, 
    	BESTEFFORT              = 64, 
    	NO_OPLOCK               = 128, 
    	PREFERQUERYPROPERTIES   = 256, 
    	EXTRINSICPROPERTIES     = 512, 
    	EXTRINSICPROPERTIESONLY = 1024, 
    	VOLATILEPROPERTIES      = 2048, 
    	VOLATILEPROPERTIESONLY  = 4096, 
    	MASK_VALID              = 8191, 
    }

    GET_FILEEX_INFO_LEVELS ¶

    GET_FILEEX_INFO_LEVELS :: distinct i32
    Related Procedures With Parameters
    Related Constants

    GLYPHMETRICSFLOAT ¶

    GLYPHMETRICSFLOAT :: struct {
    	gmfBlackBoxX:     f32,
    	gmfBlackBoxY:     f32,
    	gmfptGlyphOrigin: POINTFLOAT,
    	gmfCellIncX:      f32,
    	gmfCellIncY:      f32,
    }
    Related Procedures With Parameters

    GRADIENT_RECT ¶

    GRADIENT_RECT :: struct {
    	UpperLeft:  u32,
    	LowerRight: u32,
    }

    GRADIENT_TRIANGLE ¶

    GRADIENT_TRIANGLE :: struct {
    	Vertex1: u32,
    	Vertex2: u32,
    	Vertex3: u32,
    }

    GROUP ¶

    GROUP :: distinct u32
    Related Procedures With Parameters

    GUID ¶

    GUID :: struct {
    	Data1: u32,
    	Data2: u16,
    	Data3: u16,
    	Data4: [8]BYTE,
    }
    Related Procedures With Parameters
    Related Constants

    GetExtensionsStringARBType ¶

    GetExtensionsStringARBType :: proc "c" (HDC) -> cstring

    GetUserObjectInformationFlags ¶

    GetUserObjectInformationFlags :: enum i32 {
    	UOI_FLAGS                           = 1, 
    	UOI_NAME                            = 2, 
    	UOI_TYPE                            = 3, 
    	UOI_USER_SID                        = 4, 
    	UOI_HEAPSIZE                        = 5, 
    	UOI_IO                              = 6, 
    	UOI_TIMERPROC_EXCEPTION_SUPPRESSION = 7, 
    }
    Related Procedures With Parameters

    HACCEL ¶

    HACCEL :: distinct rawptr
    Related Procedures With Parameters
    Related Procedures With Returns

    HANDLE ¶

    HANDLE :: distinct rawptr
    Related Procedures With Parameters
    Related Procedures With Returns
    Related Constants

    HARDWAREINPUT ¶

    HARDWAREINPUT :: struct {
    	uMsg:    u32,
    	wParamL: u16,
    	wParamH: u16,
    }

    HBITMAP ¶

    HBITMAP :: distinct rawptr
    Related Procedures With Parameters
    Related Procedures With Returns

    HBLUETOOTH_DEVICE_FIND ¶

    HBLUETOOTH_DEVICE_FIND :: distinct rawptr
    Related Procedures With Parameters
    Related Procedures With Returns

    HBLUETOOTH_RADIO_FIND ¶

    HBLUETOOTH_RADIO_FIND :: distinct rawptr
    Related Procedures With Parameters
    Related Procedures With Returns

    HBRUSH ¶

    HBRUSH :: distinct rawptr
    Related Procedures With Parameters
    Related Procedures With Returns

    HCRYPTPROV ¶

    HCRYPTPROV :: distinct rawptr
    Related Procedures With Parameters

    HCURSOR ¶

    HCURSOR :: distinct rawptr
    Related Procedures With Parameters
    Related Procedures With Returns

    HDESK ¶

    HDESK :: distinct rawptr

    HEAPENTRY32 ¶

    HEAPENTRY32 :: struct {
    	dwSize:        uint,
    	hHandle:       HANDLE,
    	dwAddress:     uint,
    	dwBlockSize:   uint,
    	dwFlags:       u32,
    	dwLockCount:   u32,
    	dwResvd:       u32,
    	th32ProcessID: u32,
    	th32HeapID:    uint,
    }
    Related Procedures With Parameters

    HEAPLIST32 ¶

    HEAPLIST32 :: struct {
    	dwSize:        uint,
    	th32ProcessID: u32,
    	th32HeapID:    uint,
    	dwFlags:       u32,
    }
    Related Procedures With Parameters

    HFONT ¶

    HFONT :: distinct rawptr
    Related Procedures With Returns

    HGDIOBJ ¶

    HGDIOBJ :: distinct rawptr
    Related Procedures With Parameters
    Related Procedures With Returns

    HGLOBAL ¶

    HGLOBAL :: distinct rawptr
    Related Procedures With Parameters
    Related Procedures With Returns

    HGLRC ¶

    HGLRC :: distinct rawptr
    Related Procedures With Parameters
    Related Procedures With Returns

    HHOOK ¶

    HHOOK :: distinct rawptr
    Related Procedures With Parameters
    Related Procedures With Returns

    HIDD_ATTRIBUTES ¶

    HIDD_ATTRIBUTES :: struct {
    	Size:          u32,
    	VendorID:      u16,
    	ProductID:     u16,
    	VersionNumber: u16,
    }
    Related Procedures With Parameters

    HIDD_CONFIGURATION ¶

    HIDD_CONFIGURATION :: struct {
    	cookie:         rawptr,
    	size:           u32,
    	RingBufferSize: u32,
    }
    Related Procedures With Parameters

    HIDP_BUTTON_CAPS ¶

    HIDP_BUTTON_CAPS :: struct {
    	UsagePage:         USAGE,
    	ReportID:          BYTE,
    	IsAlias:           BOOLEAN,
    	BitField:          u16,
    	LinkCollection:    u16,
    	LinkUsage:         USAGE,
    	LinkUsagePage:     USAGE,
    	IsRange:           BOOLEAN,
    	IsStringRange:     BOOLEAN,
    	IsDesignatorRange: BOOLEAN,
    	IsAbsolute:        BOOLEAN,
    	ReportCount:       u16,
    	Reserved2:         u16,
    	Reserved:          [9]u32,
    	using _:           struct #raw_union {
    		Range:    struct {
    			UsageMin:      USAGE,
    			UsageMax:      USAGE,
    			StringMin:     u16,
    			StringMax:     u16,
    			DesignatorMin: u16,
    			DesignatorMax: u16,
    			DataIndexMin:  u16,
    			DataIndexMax:  u16,
    		},
    		NotRange: struct {
    			Usage:           USAGE,
    			Reserved1:       USAGE,
    			StringIndex:     u16,
    			Reserved2:       u16,
    			DesignatorIndex: u16,
    			Reserved3:       u16,
    			DataIndex:       u16,
    			Reserved4:       u16,
    		},
    	},
    }
    Related Procedures With Parameters

    HIDP_CAPS ¶

    HIDP_CAPS :: struct {
    	Usage:                     USAGE,
    	UsagePage:                 USAGE,
    	InputReportByteLength:     u16,
    	OutputReportByteLength:    u16,
    	FeatureReportByteLength:   u16,
    	Reserved:                  [17]u16,
    	NumberLinkCollectionNodes: u16,
    	NumberInputButtonCaps:     u16,
    	NumberInputValueCaps:      u16,
    	NumberInputDataIndices:    u16,
    	NumberOutputButtonCaps:    u16,
    	NumberOutputValueCaps:     u16,
    	NumberOutputDataIndices:   u16,
    	NumberFeatureButtonCaps:   u16,
    	NumberFeatureValueCaps:    u16,
    	NumberFeatureDataIndices:  u16,
    }
    Related Procedures With Parameters

    HIDP_DATA ¶

    HIDP_DATA :: struct {
    	DataIndex: u16,
    	Reserved:  u16,
    	using _:   struct #raw_union {
    		RawValue: u32,
    		On:       BOOLEAN,
    	},
    }
    Related Procedures With Parameters
    HIDP_LINK_COLLECTION_NODE :: struct {
    	LinkUsage:        USAGE,
    	LinkUsagePage:    USAGE,
    	Parent:           u16,
    	NumberOfChildren: u16,
    	NextSibling:      u16,
    	FirstChild:       u16,
    	CollectionType:   [8]u32,
    	IsAlias:          [1]u32,
    	Reserved:         [23]u32,
    	UserContext:      rawptr,
    }
    Related Procedures With Parameters

    HIDP_PREPARSED_DATA ¶

    HIDP_PREPARSED_DATA :: rawptr

    HIDP_REPORT_TYPE ¶

    HIDP_REPORT_TYPE :: enum i32 {
    	Input, 
    	Output, 
    	Feature, 
    }
    Related Procedures With Parameters

    HIDP_VALUE_CAPS ¶

    HIDP_VALUE_CAPS :: struct {
    	UsagePage:         USAGE,
    	ReportID:          BYTE,
    	IsAlias:           BOOLEAN,
    	BitField:          u16,
    	LinkCollection:    u16,
    	LinkUsage:         USAGE,
    	LinkUsagePage:     USAGE,
    	IsRange:           BOOLEAN,
    	IsStringRange:     BOOLEAN,
    	IsDesignatorRange: BOOLEAN,
    	IsAbsolute:        BOOLEAN,
    	HasNull:           BOOLEAN,
    	Reserved:          BYTE,
    	BitSize:           u16,
    	ReportCount:       u16,
    	Reserved2:         [5]u16,
    	UnitsExp:          u32,
    	Units:             u32,
    	LogicalMin:        i32,
    	LogicalMax:        i32,
    	PhysicalMin:       i32,
    	PhysicalMax:       i32,
    	using _:           struct #raw_union {
    		Range:    struct {
    			UsageMin:      USAGE,
    			UsageMax:      USAGE,
    			StringMin:     u16,
    			StringMax:     u16,
    			DesignatorMin: u16,
    			DesignatorMax: u16,
    			DataIndexMin:  u16,
    			DataIndexMax:  u16,
    		},
    		NotRange: struct {
    			Usage:           USAGE,
    			Reserved1:       USAGE,
    			StringIndex:     u16,
    			Reserved2:       u16,
    			DesignatorIndex: u16,
    			Reserved3:       u16,
    			DataIndex:       u16,
    			Reserved4:       u16,
    		},
    	},
    }
    Related Procedures With Parameters

    HMONITOR ¶

    HMONITOR :: distinct rawptr
    Related Procedures With Parameters
    Related Procedures With Returns

    HOOKPROC ¶

    HOOKPROC :: proc "stdcall" (code: i32, wParam: uintptr, lParam: int) -> int
    Related Procedures With Parameters

    HPALETTE ¶

    HPALETTE :: distinct rawptr
    Related Procedures With Parameters
    Related Procedures With Returns

    HPBUFFERARB ¶

    HPBUFFERARB :: distinct rawptr
     

    WGL_ARB_pbuffer

    HPEN ¶

    HPEN :: distinct rawptr
    Related Procedures With Returns

    HRAWINPUT ¶

    HRAWINPUT :: distinct int
    Related Procedures With Parameters

    HRGN ¶

    HRGN :: distinct rawptr
    Related Procedures With Parameters
    Related Procedures With Returns

    HRSRC ¶

    HRSRC :: distinct rawptr
    Related Procedures With Parameters
    Related Procedures With Returns

    HWAVE ¶

    HWAVE :: distinct rawptr

    HWAVEIN ¶

    HWAVEIN :: distinct rawptr

    HWINEVENTHOOK ¶

    HWINEVENTHOOK :: distinct rawptr
    Related Procedures With Returns

    HWINSTA ¶

    HWINSTA :: distinct rawptr
    Related Procedures With Returns

    HWND ¶

    HWND :: distinct rawptr
    Related Procedures With Parameters
    Related Procedures With Returns
    Related Constants

    HandlerRoutine ¶

    HandlerRoutine :: proc "stdcall" (dwCtrlType: u32) -> BOOL
    Related Procedures With Parameters

    IBindCtx ¶

    IBindCtx :: struct #raw_union {
    	IUnknown: IUnknown,
    	using Vtbl: ^IBindCtxVtbl,
    }

    IBindCtxVtbl ¶

    IBindCtxVtbl :: struct {
    	using IUnknownVtbl:    IUnknown_VTable,
    	RegisterObjectBound:   proc "stdcall" (this: ^IBindCtx, punk: ^IUnknown) -> HRESULT,
    	RevokeObjectBound:     proc "stdcall" (this: ^IBindCtx, punk: ^IUnknown) -> HRESULT,
    	ReleaseBoundObjects:   proc "stdcall" (this: ^IBindCtx) -> HRESULT,
    	SetBindOptions:        proc "stdcall" (this: ^IBindCtx, pbindopts: ^BIND_OPTS) -> HRESULT,
    	GetBindOptions:        proc "stdcall" (this: ^IBindCtx, pbindopts: ^BIND_OPTS) -> HRESULT,
    	GetRunningObjectTable: proc "stdcall" (this: ^IBindCtx, pprot: ^^IRunningObjectTable) -> HRESULT,
    	RegisterObjectParam:   proc "stdcall" (this: ^IBindCtx, pszKey: ^u16, punk: ^IUnknown) -> HRESULT,
    	GetObjectParam:        proc "stdcall" (this: ^IBindCtx, pszKey: ^u16, ppunk: ^^IUnknown) -> HRESULT,
    	EnumObjectParam:       proc "stdcall" (this: ^IBindCtx, ppenum: ^^IEnumString) -> HRESULT,
    	RevokeObjectParam:     proc "stdcall" (this: ^IBindCtx, pszKey: ^u16) -> HRESULT,
    }

    ICONINFOEXW ¶

    ICONINFOEXW :: struct {
    	cbSize:    u32,
    	fIcon:     BOOL,
    	xHotspot:  u32,
    	yHotspot:  u32,
    	hbmMask:   HBITMAP,
    	hbmColor:  HBITMAP,
    	wResID:    u16,
    	szModName: [260]u16,
    	szResName: [260]u16,
    }
    Related Procedures With Parameters

    IEnumMoniker ¶

    IEnumMoniker :: struct #raw_union {
    	IUnknown: IUnknown,
    	using Vtbl: ^IEnumMonikerVtbl,
    }

    IEnumMonikerVtbl ¶

    IEnumMonikerVtbl :: struct {
    	using IUnknownVtbl: IUnknown_VTable,
    	Next:         proc "stdcall" (this: ^IEnumMoniker, celt: u32, rgelt: ^^IMoniker, pceltFetched: ^u32) -> HRESULT,
    	Skip:         proc "stdcall" (this: ^IEnumMoniker, celt: u32) -> HRESULT,
    	Reset:        proc "stdcall" (this: ^IEnumMoniker) -> HRESULT,
    	Clone:        proc "stdcall" (this: ^IEnumMoniker, ppenum: ^^IEnumMoniker) -> HRESULT,
    }

    IEnumShellItems ¶

    IEnumShellItems :: struct #raw_union {
    	IUnknown: IUnknown,
    	using Vtbl: ^IEnumShellItemsVtbl,
    }

    IEnumShellItemsVtbl ¶

    IEnumShellItemsVtbl :: struct {
    	using IUnknownVtbl: IUnknown_VTable,
    	Next:         proc "stdcall" (this: ^IEnumShellItems, celt: u32, rgelt: ^^IShellItem, pceltFetched: ^u32) -> HRESULT,
    	Skip:         proc "stdcall" (this: ^IEnumShellItems, celt: u32) -> HRESULT,
    	Reset:        proc "stdcall" (this: ^IEnumShellItems) -> HRESULT,
    	Clone:        proc "stdcall" (this: ^IEnumShellItems, ppenum: ^^IEnumShellItems) -> HRESULT,
    }

    IEnumString ¶

    IEnumString :: struct #raw_union {
    	IUnknown: IUnknown,
    	using Vtbl: ^IEnumStringVtbl,
    }

    IEnumStringVtbl ¶

    IEnumStringVtbl :: struct {
    	using IUnknownVtbl: IUnknown_VTable,
    	Next:         proc "stdcall" (this: ^IEnumString, celt: u32, rgelt: ^^u16, pceltFetched: ^u32) -> HRESULT,
    	Skip:         proc "stdcall" (this: ^IEnumString, celt: u32) -> HRESULT,
    	Reset:        proc "stdcall" (this: ^IEnumString) -> HRESULT,
    	Clone:        proc "stdcall" (this: ^IEnumString, ppenum: ^^IEnumString) -> HRESULT,
    }

    IF_OPER_STATUS ¶

    IF_OPER_STATUS :: enum i32 {
    	Up             = 1, 
    	Down           = 2, 
    	Testing        = 3, 
    	Unknown        = 4, 
    	Dormant        = 5, 
    	NotPresent     = 6, 
    	LowerLayerDown = 7, 
    }

    IFileDialog ¶

    IFileDialog :: struct #raw_union {
    	IModalWindow: IModalWindow,
    	using Vtbl:   ^IFileDialogVtbl,
    }

    IFileDialogEvents ¶

    IFileDialogEvents :: struct #raw_union {
    	IUnknown: IUnknown,
    	using Vtbl: ^IFileDialogEventsVtbl,
    }

    IFileDialogEventsVtbl ¶

    IFileDialogEventsVtbl :: struct {
    	using IUnknownVtbl: IUnknown_VTable,
    	OnFileOk:          proc "stdcall" (this: ^IFileDialogEvents, pfd: ^IFileDialog) -> HRESULT,
    	OnFolderChanging:  proc "stdcall" (this: ^IFileDialogEvents, pfd: ^IFileDialog, psiFolder: ^IShellItem) -> HRESULT,
    	OnFolderChange:    proc "stdcall" (this: ^IFileDialogEvents, pfd: ^IFileDialog) -> HRESULT,
    	OnSelectionChange: proc "stdcall" (this: ^IFileDialogEvents, pfd: ^IFileDialog) -> HRESULT,
    	OnShareViolation:  proc "stdcall" (this: ^IFileDialogEvents, pfd: ^IFileDialog, psi: ^IShellItem, pResponse: ^FDE_SHAREVIOLATION_RESPONSE) -> HRESULT,
    	OnTypeChange:      proc "stdcall" (this: ^IFileDialogEvents, pfd: ^IFileDialog) -> HRESULT,
    	OnOverwrite:       proc "stdcall" (this: ^IFileDialogEvents, pfd: ^IFileDialog, psi: ^IShellItem, pResponse: ^FDE_SHAREVIOLATION_RESPONSE) -> HRESULT,
    }

    IFileDialogVtbl ¶

    IFileDialogVtbl :: struct {
    	using IModalWindowVtbl: IModalWindowVtbl,
    	SetFileTypes:        proc "stdcall" (this: ^IFileDialog, cFileTypes: u32, rgFilterSpec: ^COMDLG_FILTERSPEC) -> HRESULT,
    	SetFileTypeIndex:    proc "stdcall" (this: ^IFileDialog, iFileType: u32) -> HRESULT,
    	GetFileTypeIndex:    proc "stdcall" (this: ^IFileDialog, piFileType: ^u32) -> HRESULT,
    	Advise:              proc "stdcall" (this: ^IFileDialog, pfde: ^IFileDialogEvents, pdwCookie: ^u32) -> HRESULT,
    	Unadvise:            proc "stdcall" (this: ^IFileDialog, dwCookie: u32) -> HRESULT,
    	SetOptions:          proc "stdcall" (this: ^IFileDialog, fos: u32) -> HRESULT,
    	GetOptions:          proc "stdcall" (this: ^IFileDialog, pfos: ^u32) -> HRESULT,
    	SetDefaultFolder:    proc "stdcall" (this: ^IFileDialog, psi: ^IShellItem) -> HRESULT,
    	SetFolder:           proc "stdcall" (this: ^IFileDialog, psi: ^IShellItem) -> HRESULT,
    	GetFolder:           proc "stdcall" (this: ^IFileDialog, ppsi: ^^IShellItem) -> HRESULT,
    	GetCurrentSelection: proc "stdcall" (this: ^IFileDialog, ppsi: ^^IShellItem) -> HRESULT,
    	SetFileName:         proc "stdcall" (this: ^IFileDialog, pszName: [^]u16) -> HRESULT,
    	GetFileName:         proc "stdcall" (this: ^IFileDialog, pszName: ^[^]u16) -> HRESULT,
    	SetTitle:            proc "stdcall" (this: ^IFileDialog, pszTitle: [^]u16) -> HRESULT,
    	SetOkButtonLabel:    proc "stdcall" (this: ^IFileDialog, pszText: [^]u16) -> HRESULT,
    	SetFileNameLabel:    proc "stdcall" (this: ^IFileDialog, pszLabel: [^]u16) -> HRESULT,
    	GetResult:           proc "stdcall" (this: ^IFileDialog, ppsi: ^^IShellItem) -> HRESULT,
    	AddPlace:            proc "stdcall" (this: ^IFileDialog, psi: ^IShellItem, fdap: FDAP) -> HRESULT,
    	SetDefaultExtension: proc "stdcall" (this: ^IFileDialog, pszDefaultExtension: [^]u16) -> HRESULT,
    	Close:               proc "stdcall" (this: ^IFileDialog, hr: HRESULT) -> HRESULT,
    	SetClientGuid:       proc "stdcall" (this: ^IFileDialog, guid: GUID) -> HRESULT,
    	ClearClientData:     proc "stdcall" (this: ^IFileDialog) -> HRESULT,
    	SetFilter:           proc "stdcall" (this: ^IFileDialog, pFilter: ^IShellItemFilter) -> HRESULT,
    }

    IFileOpenDialog ¶

    IFileOpenDialog :: struct #raw_union {
    	IFileDialog: IFileDialog,
    	using Vtbl:  ^IFileOpenDialogVtbl,
    }

    IFileOpenDialogVtbl ¶

    IFileOpenDialogVtbl :: struct {
    	using IFileDialogVtbl: IFileDialogVtbl,
    	GetResults:       proc "stdcall" (this: ^IFileOpenDialog, ppenum: ^^IShellItemArray) -> HRESULT,
    	GetSelectedItems: proc "stdcall" (this: ^IFileOpenDialog, ppsai: ^^IShellItemArray) -> HRESULT,
    }

    IFileOperationProgressSink ¶

    IFileOperationProgressSink :: struct #raw_union {
    	IUnknown: IUnknown,
    	using Vtbl: ^IFileOperationProgressSinkVtbl,
    }

    IFileOperationProgressSinkVtbl ¶

    IFileOperationProgressSinkVtbl :: struct {
    	using IUnknownVtbl: IUnknown_VTable,
    	StartOperations:  proc "stdcall" (this: ^IFileOperationProgressSink) -> HRESULT,
    	FinishOperations: proc "stdcall" (this: ^IFileOperationProgressSink, hrResult: HRESULT) -> HRESULT,
    	PreRenameItem:    proc "stdcall" (this: ^IFileOperationProgressSink, dwFlags: u32, psiItem: ^IShellItem, pszNewName: [^]u16) -> HRESULT,
    	PostRenameItem:   proc "stdcall" (this: ^IFileOperationProgressSink, dwFlags: u32, psiItem: ^IShellItem, pszNewName: [^]u16, hrRename: HRESULT, psiNewlyCreated: ^IShellItem) -> HRESULT,
    	PreMoveItem:      proc "stdcall" (this: ^IFileOperationProgressSink, dwFlags: u32, psiItem: ^IShellItem, psiDestinationFolder: ^IShellItem, pszNewName: [^]u16) -> HRESULT,
    	PostMoveItem:     proc "stdcall" (this: ^IFileOperationProgressSink, dwFlags: u32, psiItem: ^IShellItem, psiDestinationFolder: ^IShellItem, pszNewName: [^]u16, hrMove: HRESULT, psiNewlyCreated: ^IShellItem) -> HRESULT,
    	PreCopyItem:      proc "stdcall" (this: ^IFileOperationProgressSink, dwFlags: u32, psiItem: ^IShellItem, psiDestinationFolder: ^IShellItem, pszNewName: [^]u16) -> HRESULT,
    	PostCopyItem:     proc "stdcall" (this: ^IFileOperationProgressSink, dwFlags: u32, psiItem: ^IShellItem, psiDestinationFolder: ^IShellItem, pszNewName: [^]u16, hrMove: HRESULT, psiNewlyCreated: ^IShellItem) -> HRESULT,
    	PreDeleteItem:    proc "stdcall" (this: ^IFileOperationProgressSink, dwFlags: u32, psiItem: ^IShellItem) -> HRESULT,
    	PostDeleteItem:   proc "stdcall" (this: ^IFileOperationProgressSink, dwFlags: u32, psiItem: ^IShellItem, hrDelete: HRESULT, psiNewlyCreated: ^IShellItem) -> HRESULT,
    	PreNewItem:       proc "stdcall" (this: ^IFileOperationProgressSink, dwFlags: u32, psiDestinationFolder: ^IShellItem, pszNewName: [^]u16) -> HRESULT,
    	PostNewItem:      proc "stdcall" (this: ^IFileOperationProgressSink, dwFlags: u32, psiDestinationFolder: ^IShellItem, pszNewName: [^]u16, pszTemplateName: [^]u16, dwFileAttributes: u32, hrNew: HRESULT, psiNewItem: ^IShellItem) -> HRESULT,
    	UpdateProgress:   proc "stdcall" (this: ^IFileOperationProgressSink, iWorkTotal: u32, iWorkSoFar: u32) -> HRESULT,
    	ResetTimer:       proc "stdcall" (this: ^IFileOperationProgressSink) -> HRESULT,
    	PauseTimer:       proc "stdcall" (this: ^IFileOperationProgressSink) -> HRESULT,
    	ResumeTimer:      proc "stdcall" (this: ^IFileOperationProgressSink) -> HRESULT,
    }

    IFileSaveDialog ¶

    IFileSaveDialog :: struct #raw_union {
    	IFileDialog: IFileDialog,
    	using Vtbl:  ^IFileSaveDialogVtbl,
    }

    IFileSaveDialogVtbl ¶

    IFileSaveDialogVtbl :: struct {
    	using IFileDialogVtbl:  IFileDialogVtbl,
    	SetSaveAsItem:          proc "stdcall" (this: ^IFileSaveDialog, psi: ^IShellItem) -> HRESULT,
    	SetProperties:          proc "stdcall" (this: ^IFileSaveDialog, pStore: ^IPropertyStore) -> HRESULT,
    	SetCollectedProperties: proc "stdcall" (this: ^IFileSaveDialog, pList: ^IPropertyDescriptionList, fAppendDefault: BOOL) -> HRESULT,
    	GetProperties:          proc "stdcall" (this: ^IFileSaveDialog, ppStore: ^^IPropertyStore) -> HRESULT,
    	ApplyProperties:        proc "stdcall" (this: ^IFileSaveDialog, psi: ^IShellItem, pStore: ^IPropertyStore, hwnd: HWND, pSink: ^IFileOperationProgressSink) -> HRESULT,
    }

    IID ¶

    IID :: GUID
    Related Constants

    IMAGEHLP_LINE64 ¶

    IMAGEHLP_LINE64 :: struct {
    	SizeOfStruct: u32,
    	Key:          rawptr,
    	LineNumber:   u32,
    	FileName:     [^]u16,
    	Address:      u64,
    }
    Related Procedures With Parameters

    IMAGE_DATA_DIRECTORY ¶

    IMAGE_DATA_DIRECTORY :: struct {
    	VirtualAddress: u32,
    	Size:           u32,
    }

    IMAGE_EXPORT_DIRECTORY ¶

    IMAGE_EXPORT_DIRECTORY :: struct {
    	Characteristics:       u32,
    	TimeDateStamp:         u32,
    	MajorVersion:          u16,
    	MinorVersion:          u16,
    	Name:                  u32,
    	Base:                  u32,
    	NumberOfFunctions:     u32,
    	NumberOfNames:         u32,
    	AddressOfFunctions:    u32,
    	// RVA from base of image
    	AddressOfNames:        u32,
    	// RVA from base of image
    	AddressOfNameOrdinals: u32,
    }

    IMAGE_FILE_HEADER ¶

    IMAGE_FILE_HEADER :: struct {
    	Machine:              u16,
    	NumberOfSections:     u16,
    	TimeDateStamp:        u32,
    	PointerToSymbolTable: u32,
    	NumberOfSymbols:      u32,
    	SizeOfOptionalHeader: u16,
    	Characteristics:      u16,
    }

    IMAGE_NT_HEADERS64 ¶

    IMAGE_NT_HEADERS64 :: struct {
    	Signature:      u32,
    	FileHeader:     IMAGE_FILE_HEADER,
    	OptionalHeader: IMAGE_OPTIONAL_HEADER64,
    }

    IMAGE_OPTIONAL_HEADER64 ¶

    IMAGE_OPTIONAL_HEADER64 :: struct {
    	Magic:                       u16,
    	MajorLinkerVersion:          BYTE,
    	MinorLinkerVersion:          BYTE,
    	SizeOfCode:                  u32,
    	SizeOfInitializedData:       u32,
    	SizeOfUninitializedData:     u32,
    	AddressOfEntryPoint:         u32,
    	BaseOfCode:                  u32,
    	ImageBase:                   u64,
    	SectionAlignment:            u32,
    	FileAlignment:               u32,
    	MajorOperatingSystemVersion: u16,
    	MinorOperatingSystemVersion: u16,
    	MajorImageVersion:           u16,
    	MinorImageVersion:           u16,
    	MajorSubsystemVersion:       u16,
    	MinorSubsystemVersion:       u16,
    	Win32VersionValue:           u32,
    	SizeOfImage:                 u32,
    	SizeOfHeaders:               u32,
    	CheckSum:                    u32,
    	Subsystem:                   u16,
    	DllCharacteristics:          u16,
    	SizeOfStackReserve:          u64,
    	SizeOfStackCommit:           u64,
    	SizeOfHeapReserve:           u64,
    	SizeOfHeapCommit:            u64,
    	LoaderFlags:                 u32,
    	NumberOfRvaAndSizes:         u32,
    	ExportTable:                 IMAGE_DATA_DIRECTORY,
    	ImportTable:                 IMAGE_DATA_DIRECTORY,
    	ResourceTable:               IMAGE_DATA_DIRECTORY,
    	ExceptionTable:              IMAGE_DATA_DIRECTORY,
    	CertificateTable:            IMAGE_DATA_DIRECTORY,
    	BaseRelocationTable:         IMAGE_DATA_DIRECTORY,
    	Debug:                       IMAGE_DATA_DIRECTORY,
    	Architecture:                IMAGE_DATA_DIRECTORY,
    	GlobalPtr:                   IMAGE_DATA_DIRECTORY,
    	TLSTable:                    IMAGE_DATA_DIRECTORY,
    	LoadConfigTable:             IMAGE_DATA_DIRECTORY,
    	BoundImport:                 IMAGE_DATA_DIRECTORY,
    	IAT:                         IMAGE_DATA_DIRECTORY,
    	DelayImportDescriptor:       IMAGE_DATA_DIRECTORY,
    	CLRRuntimeHeader:            IMAGE_DATA_DIRECTORY,
    	Reserved:                    IMAGE_DATA_DIRECTORY,
    }

    IModalWindow ¶

    IModalWindow :: struct #raw_union {
    	IUnknown: IUnknown,
    	using Vtbl: ^IModalWindowVtbl,
    }

    IModalWindowVtbl ¶

    IModalWindowVtbl :: struct {
    	using IUnknownVtbl: IUnknown_VTable,
    	Show:         proc "stdcall" (this: ^IModalWindow, hwndOwner: HWND) -> HRESULT,
    }

    IMoniker ¶

    IMoniker :: struct #raw_union {
    	IPersistStream: IPersistStream,
    	using Vtbl:     ^IMonikerVtbl,
    }

    IMonikerVtbl ¶

    IMonikerVtbl :: struct {
    	using IPersistStreamVtbl: IPersistStreamVtbl,
    	BindToObject:        proc "stdcall" (this: ^IMoniker, pbc: ^IBindCtx, pmkToLeft: ^IMoniker, riidResult: ^GUID, ppvResult: ^rawptr) -> HRESULT,
    	BindToStorage:       proc "stdcall" (this: ^IMoniker, pbc: ^IBindCtx, pmkToLeft: ^IMoniker, riid: ^GUID, ppvObj: ^rawptr) -> HRESULT,
    	Reduce:              proc "stdcall" (this: ^IMoniker, pbc: ^IBindCtx, dwReduceHowFar: u32, ppmkToLeft: ^^IMoniker, ppmkReduced: ^^IMoniker) -> HRESULT,
    	ComposeWith:         proc "stdcall" (this: ^IMoniker, pmkRight: ^IMoniker, fOnlyIfNotGeneric: BOOL, ppmkComposite: ^^IMoniker) -> HRESULT,
    	Enum:                proc "stdcall" (this: ^IMoniker, fForward: BOOL, ppenumMoniker: ^^IEnumMoniker) -> HRESULT,
    	IsEqual:             proc "stdcall" (this: ^IMoniker, pmkOtherMoniker: ^IMoniker) -> HRESULT,
    	Hash:                proc "stdcall" (this: ^IMoniker, pdwHash: ^u32) -> HRESULT,
    	IsRunning:           proc "stdcall" (this: ^IMoniker, pbc: ^IBindCtx, pmkToLeft: ^IMoniker, pmkNewlyRunning: ^IMoniker) -> HRESULT,
    	GetTimeOfLastChange: proc "stdcall" (this: ^IMoniker, pbc: ^IBindCtx, pmkToLeft: ^IMoniker, pFileTime: ^FILETIME) -> HRESULT,
    	Inverse:             proc "stdcall" (this: ^IMoniker, ppmk: ^^IMoniker) -> HRESULT,
    	CommonPrefixWith:    proc "stdcall" (this: ^IMoniker, pmkOther: ^IMoniker, ppmkPrefix: ^^IMoniker) -> HRESULT,
    	RelativePathTo:      proc "stdcall" (this: ^IMoniker, pmkOther: ^IMoniker, ppmkRelPath: ^^IMoniker) -> HRESULT,
    	GetDisplayName:      proc "stdcall" (this: ^IMoniker, pbc: ^IBindCtx, pmkToLeft: ^IMoniker, ppszDisplayName: ^^u16) -> HRESULT,
    	ParseDisplayName:    proc "stdcall" (this: ^IMoniker, pbc: ^IBindCtx, pmkToLeft: ^IMoniker, pszDisplayName: ^u16, pchEaten: ^u32, ppmkOut: ^^IMoniker) -> HRESULT,
    	IsSystemMoniker:     proc "stdcall" (this: ^IMoniker, pdwMksys: ^u32) -> HRESULT,
    }

    INPUT ¶

    INPUT :: struct {
    	type: INPUT_TYPE,
    	using _: struct #raw_union {
    		mi: MOUSEINPUT,
    		ki: KEYBDINPUT,
    		hi: HARDWAREINPUT,
    	},
    }
    Related Procedures With Parameters

    INPUT_RECORD ¶

    INPUT_RECORD :: struct {
    	EventType: Event_Type,
    	Event:     struct #raw_union {
    		KeyEvent:              KEY_EVENT_RECORD,
    		MouseEvent:            MOUSE_EVENT_RECORD,
    		WindowBufferSizeEvent: WINDOW_BUFFER_SIZE_RECORD,
    		MenuEvent:             MENU_EVENT_RECORD,
    		FocusEvent:            FOCUS_EVENT_RECORD,
    	},
    }
    Related Procedures With Parameters

    INPUT_TYPE ¶

    INPUT_TYPE :: enum u32 {
    	MOUSE    = 0, 
    	KEYBOARD = 1, 
    	HARDWARE = 2, 
    }

    INT16 ¶

    INT16 :: i16

    INT32 ¶

    INT32 :: i32

    INT64 ¶

    INT64 :: i64

    INT8 ¶

    INT8 :: i8

    IO_STATUS_BLOCK ¶

    IO_STATUS_BLOCK :: struct {
    	using _:     struct #raw_union {
    		Status:  i32,
    		Pointer: rawptr,
    	},
    	Information: uint,
    }
    Related Procedures With Parameters

    IP_ADAPTER_ANYCAST_ADDRESS_XP ¶

    IP_ADAPTER_ANYCAST_ADDRESS_XP :: struct {
    	Anonymous: struct #raw_union {
    		Alignment: u64,
    		Anonymous: struct {
    			Length: u32,
    			Flags:  u32,
    		},
    	},
    	Next:      ^IP_ADAPTER_ANYCAST_ADDRESS_XP,
    	Address:   SOCKET_ADDRESS,
    }

    IP_ADAPTER_DNS_SERVER_ADDRESS_XP ¶

    IP_ADAPTER_DNS_SERVER_ADDRESS_XP :: struct {
    	Anonymous: struct #raw_union {
    		Alignment: u64,
    		Anonymous: struct {
    			Length:   u32,
    			Reserved: u32,
    		},
    	},
    	Next:      ^IP_ADAPTER_DNS_SERVER_ADDRESS_XP,
    	Address:   SOCKET_ADDRESS,
    }

    IP_ADAPTER_GATEWAY_ADDRESS_LH ¶

    IP_ADAPTER_GATEWAY_ADDRESS_LH :: struct {
    	Anonymous: struct #raw_union {
    		Alignment: u64,
    		Anonymous: struct {
    			Length:   u32,
    			Reserved: u32,
    		},
    	},
    	Next:      ^IP_ADAPTER_GATEWAY_ADDRESS_LH,
    	Address:   SOCKET_ADDRESS,
    }

    IP_ADAPTER_MULTICAST_ADDRESS_XP ¶

    IP_ADAPTER_MULTICAST_ADDRESS_XP :: struct {
    	Anonymous: struct #raw_union {
    		Alignment: u64,
    		Anonymous: struct {
    			Length: u32,
    			Flags:  u32,
    		},
    	},
    	Next:      ^IP_ADAPTER_MULTICAST_ADDRESS_XP,
    	Address:   SOCKET_ADDRESS,
    }

    IP_ADAPTER_UNICAST_ADDRESS_LH ¶

    IP_ADAPTER_UNICAST_ADDRESS_LH :: struct {
    	Anonymous:          struct #raw_union {
    		Alignment: u64,
    		Anonymous: struct {
    			Length: u32,
    			Flags:  u32,
    		},
    	},
    	Next:               ^IP_ADAPTER_UNICAST_ADDRESS_LH,
    	Address:            SOCKET_ADDRESS,
    	PrefixOrigin:       NL_PREFIX_ORIGIN,
    	SuffixOrigin:       NL_SUFFIX_ORIGIN,
    	DadState:           NL_DAD_STATE,
    	ValidLifetime:      u32,
    	PreferredLifetime:  u32,
    	LeaseLifetime:      u32,
    	OnLinkPrefixLength: u8,
    }

    IP_Adapter_Addresses ¶

    IP_Adapter_Addresses :: struct {
    	Raw:                    struct #raw_union {
    		Alignment: u64,
    		Anonymous: struct {
    			Length:  u32,
    			IfIndex: u32,
    		},
    	},
    	Next:                   ^IP_Adapter_Addresses,
    	AdapterName:            cstring,
    	FirstUnicastAddress:    ^IP_ADAPTER_UNICAST_ADDRESS_LH,
    	FirstAnycastAddress:    ^IP_ADAPTER_ANYCAST_ADDRESS_XP,
    	FirstMulticastAddress:  ^IP_ADAPTER_MULTICAST_ADDRESS_XP,
    	FirstDnsServerAddress:  ^IP_ADAPTER_DNS_SERVER_ADDRESS_XP,
    	DnsSuffix:              ^u16,
    	Description:            ^u16,
    	FriendlyName:           ^u16,
    	PhysicalAddress:        [8]u8,
    	PhysicalAddressLength:  u32,
    	Anonymous2:             struct #raw_union {
    		Flags:     u32,
    		Anonymous: struct {
    			_bitfield: u32,
    		},
    	},
    	MTU:                    u32,
    	IfType:                 u32,
    	OperStatus:             IF_OPER_STATUS,
    	Ipv6IfIndex:            u32,
    	ZoneIndices:            [16]u32,
    	FirstPrefix:            rawptr,
    	// ^IP_ADAPTER_PREFIX_XP,
    	TransmitLinkSpeed:      u64,
    	ReceiveLinkSpeed:       u64,
    	FirstWinsServerAddress: rawptr,
    	// ^IP_ADAPTER_WINS_SERVER_ADDRESS_LH,
    	FirstGatewayAddress:    ^IP_ADAPTER_GATEWAY_ADDRESS_LH,
    	Ipv4Metric:             u32,
    	Ipv6Metric:             u32,
    	Luid:                   NET_LUID_LH,
    	Dhcpv4Server:           SOCKET_ADDRESS,
    	CompartmentId:          u32,
    	NetworkGuid:            GUID,
    	ConnectionType:         NET_IF_CONNECTION_TYPE,
    	TunnelType:             TUNNEL_TYPE,
    	Dhcpv6Server:           SOCKET_ADDRESS,
    	Dhcpv6ClientDuid:       [130]u8,
    	Dhcpv6ClientDuidLength: u32,
    	Dhcpv6Iaid:             u32,
    	FirstDnsSuffix:         rawptr,
    }
    Related Procedures With Parameters

    IPersist ¶

    IPersist :: struct #raw_union {
    	IUnknown: IUnknown,
    	using Vtbl: ^IPersistVtbl,
    }

    IPersistStream ¶

    IPersistStream :: struct #raw_union {
    	IPersist: IPersist,
    	using Vtbl: ^IPersistStreamVtbl,
    }

    IPersistStreamVtbl ¶

    IPersistStreamVtbl :: struct {
    	using IPersistVtbl: IPersistVtbl,
    	IsDirty:      proc "stdcall" (this: ^IPersistStream) -> HRESULT,
    	Load:         proc "stdcall" (this: ^IPersistStream, pStm: ^IStream) -> HRESULT,
    	Save:         proc "stdcall" (this: ^IPersistStream, pStm: ^IStream, fClearDirty: BOOL) -> HRESULT,
    	GetSizeMax:   proc "stdcall" (this: ^IPersistStream, pcbSize: ^ULARGE_INTEGER) -> HRESULT,
    }

    IPersistVtbl ¶

    IPersistVtbl :: struct {
    	using IUnknownVtbl: IUnknown_VTable,
    	GetClassID:   proc "stdcall" (this: ^IPersist, pClassID: ^GUID) -> HRESULT,
    }

    IPropertyDescriptionList ¶

    IPropertyDescriptionList :: struct #raw_union {
    	IUnknown: IUnknown,
    	using Vtbl: ^IPropertyDescriptionListVtbl,
    }

    IPropertyDescriptionListVtbl ¶

    IPropertyDescriptionListVtbl :: struct {
    	using IUnknownVtbl: IUnknown_VTable,
    	GetCount:     proc "stdcall" (this: ^IPropertyDescriptionList, pcElem: ^u32) -> HRESULT,
    	GetAt:        proc "stdcall" (this: ^IPropertyDescriptionList, iElem: u32, riid: ^GUID, ppv: ^rawptr) -> HRESULT,
    }

    IPropertyStore ¶

    IPropertyStore :: struct #raw_union {
    	IUnknown: IUnknown,
    	using Vtbl: ^IPropertyStoreVtbl,
    }

    IPropertyStoreVtbl ¶

    IPropertyStoreVtbl :: struct {
    	using IUnknownVtbl: IUnknown_VTable,
    	GetCount:     proc "stdcall" (this: ^IPropertyStore, cProps: ^u32) -> HRESULT,
    	GetAt:        proc "stdcall" (this: ^IPropertyStore, iProp: u32, pkey: ^PROPERTYKEY) -> HRESULT,
    	GetValue:     proc "stdcall" (this: ^IPropertyStore, key: ^PROPERTYKEY, pv: ^PROPVARIANT) -> HRESULT,
    	SetValue:     proc "stdcall" (this: ^IPropertyStore, key: ^PROPERTYKEY, propvar: ^PROPVARIANT) -> HRESULT,
    	Commit:       proc "stdcall" (this: ^IPropertyStore) -> HRESULT,
    }

    IRunningObjectTable ¶

    IRunningObjectTable :: struct #raw_union {
    	IUnknown: IUnknown,
    	using Vtbl: ^IRunningObjectTableVtbl,
    }

    IRunningObjectTableVtbl ¶

    IRunningObjectTableVtbl :: struct {
    	using IUnknownVtbl:  IUnknown_VTable,
    	Register:            proc "stdcall" (this: ^IRunningObjectTable, grfFlags: u32, punkObject: ^IUnknown, pmkObjectName: ^IMoniker, pdwRegister: ^u32) -> HRESULT,
    	Revoke:              proc "stdcall" (this: ^IRunningObjectTable, dwRegister: u32) -> HRESULT,
    	IsRunning:           proc "stdcall" (this: ^IRunningObjectTable, pmkObjectName: ^IMoniker) -> HRESULT,
    	GetObject:           proc "stdcall" (this: ^IRunningObjectTable, pmkObjectName: ^IMoniker, ppunkObject: ^^IUnknown) -> HRESULT,
    	NoteChangeTime:      proc "stdcall" (this: ^IRunningObjectTable, dwRegister: u32, pfiletime: ^FILETIME) -> HRESULT,
    	GetTimeOfLastChange: proc "stdcall" (this: ^IRunningObjectTable, pmkObjectName: ^IMoniker, pfiletime: ^FILETIME) -> HRESULT,
    	EnumRunning:         proc "stdcall" (this: ^IRunningObjectTable, ppenumMoniker: ^^IEnumMoniker) -> HRESULT,
    }

    ISequentialStream ¶

    ISequentialStream :: struct #raw_union {
    	IUnknown: IUnknown,
    	using Vtbl: ^ISequentialStreamVtbl,
    }

    ISequentialStreamVtbl ¶

    ISequentialStreamVtbl :: struct {
    	using IUnknownVtbl: IUnknown_VTable,
    	Read:         proc "stdcall" (this: ^ISequentialStream, pv: rawptr, cb: u32, pcbRead: ^u32) -> HRESULT,
    	Write:        proc "stdcall" (this: ^ISequentialStream, pv: rawptr, cb: u32, pcbWritten: ^u32) -> HRESULT,
    }

    IShellItem ¶

    IShellItem :: struct #raw_union {
    	IUnknown: IUnknown,
    	using Vtbl: ^IShellItemVtbl,
    }

    IShellItemArray ¶

    IShellItemArray :: struct #raw_union {
    	IUnknown: IUnknown,
    	using Vtbl: ^IShellItemArrayVtbl,
    }

    IShellItemArrayVtbl ¶

    IShellItemArrayVtbl :: struct {
    	using IUnknownVtbl:         IUnknown_VTable,
    	BindToHandler:              proc "stdcall" (this: ^IShellItemArray, pbc: ^IBindCtx, bhid: GUID, riid: ^GUID, ppvOut: ^rawptr) -> HRESULT,
    	GetPropertyStore:           proc "stdcall" (this: ^IShellItemArray, flags: GETPROPERTYSTOREFLAGS, riid: ^GUID, ppv: ^rawptr) -> HRESULT,
    	GetPropertyDescriptionList: proc "stdcall" (this: ^IShellItemArray, keyType: ^PROPERTYKEY, riid: ^GUID, ppv: ^rawptr) -> HRESULT,
    	GetAttributes:              proc "stdcall" (this: ^IShellItemArray, AttribFlags: SIATTRIBFLAGS, sfgaoMask: u32, psfgaoAttribs: ^u32) -> HRESULT,
    	GetCount:                   proc "stdcall" (this: ^IShellItemArray, pdwNumItems: ^u32) -> HRESULT,
    	GetItemAt:                  proc "stdcall" (this: ^IShellItemArray, dwIndex: u32, ppsi: ^^IShellItem) -> HRESULT,
    	EnumItems:                  proc "stdcall" (this: ^IShellItemArray, ppenumShellItems: ^^IEnumShellItems) -> HRESULT,
    }

    IShellItemFilter ¶

    IShellItemFilter :: struct #raw_union {
    	IUnknown: IUnknown,
    	using Vtbl: ^IShellItemFilterVtbl,
    }

    IShellItemFilterVtbl ¶

    IShellItemFilterVtbl :: struct {
    	using IUnknownVtbl:  IUnknown_VTable,
    	IncludeItem:         proc "stdcall" (this: ^IShellItemFilter, psi: ^IShellItem) -> HRESULT,
    	GetEnumFlagsForItem: proc "stdcall" (this: ^IShellItemFilter, psi: ^IShellItem, pgrfFlags: ^u32) -> HRESULT,
    }

    IShellItemVtbl ¶

    IShellItemVtbl :: struct {
    	using IUnknownVtbl: IUnknown_VTable,
    	BindToHandler:  proc "stdcall" (this: ^IShellItem, pbc: ^IBindCtx, bhid: GUID, riid: ^GUID, ppv: ^rawptr) -> HRESULT,
    	GetParent:      proc "stdcall" (this: ^IShellItem, ppsiFolder: ^^IShellItem) -> HRESULT,
    	GetDisplayName: proc "stdcall" (this: ^IShellItem, sigdnName: SIGDN, ppszName: ^^u16) -> HRESULT,
    	GetAttributes:  proc "stdcall" (this: ^IShellItem, sfgaoMask: u32, psfgaoAttribs: ^u32) -> HRESULT,
    	Compare:        proc "stdcall" (this: ^IShellItem, psi: ^IShellItem, hint: u32, piOrder: ^i32) -> HRESULT,
    }

    IStream ¶

    IStream :: struct #raw_union {
    	ISequentialStream: ISequentialStream,
    	using Vtbl:        ^IStreamVtbl,
    }

    IStreamVtbl ¶

    IStreamVtbl :: struct {
    	using ISequentialStreamVtbl: ISequentialStreamVtbl,
    	Seek:                  proc "stdcall" (this: ^IStream, dlibMove: LARGE_INTEGER, dwOrigin: u32, plibNewPosition: ^ULARGE_INTEGER) -> HRESULT,
    	SetSize:               proc "stdcall" (this: ^IStream, libNewSize: ULARGE_INTEGER) -> HRESULT,
    	CopyTo:                proc "stdcall" (this: ^IStream, pstm: ^IStream, cb: ULARGE_INTEGER, pcbRead: ^ULARGE_INTEGER, pcbWritten: ^ULARGE_INTEGER) -> HRESULT,
    	Commit:                proc "stdcall" (this: ^IStream, grfCommitFlags: u32) -> HRESULT,
    	Revert:                proc "stdcall" (this: ^IStream) -> HRESULT,
    	LockRegion:            proc "stdcall" (this: ^IStream, libOffset: ULARGE_INTEGER, cb: ULARGE_INTEGER, dwLockType: u32) -> HRESULT,
    	UnlockRegion:          proc "stdcall" (this: ^IStream, libOffset: ULARGE_INTEGER, cb: ULARGE_INTEGER, dwLockType: u32) -> HRESULT,
    	Stat:                  proc "stdcall" (this: ^IStream, pstatstg: ^STATSTG, grfStatFlag: u32) -> HRESULT,
    	Clone:                 proc "stdcall" (this: ^IStream, ppstm: ^^IStream) -> HRESULT,
    }

    ITaskbarList ¶

    ITaskbarList :: struct #raw_union {
    	IUnknown: IUnknown,
    	using Vtbl: ^ITaskbarListVtbl,
    }

    ITaskbarList2 ¶

    ITaskbarList2 :: struct #raw_union {
    	ITaskbarList: ITaskbarList,
    	using Vtbl:   ^ITaskbarList2Vtbl,
    }

    ITaskbarList2Vtbl ¶

    ITaskbarList2Vtbl :: struct {
    	using ITaskbarListVtbl: ITaskbarListVtbl,
    	MarkFullscreenWindow: proc "stdcall" (this: ^ITaskbarList2, hwnd: HWND, fFullscreen: BOOL) -> HRESULT,
    }

    ITaskbarList3 ¶

    ITaskbarList3 :: struct #raw_union {
    	ITaskbarList2: ITaskbarList2,
    	using Vtbl:    ^ITaskbarList3Vtbl,
    }

    ITaskbarList3Vtbl ¶

    ITaskbarList3Vtbl :: struct {
    	using ITaskbarList2Vtbl: ITaskbarList2Vtbl,
    	SetProgressValue:      proc "stdcall" (this: ^ITaskbarList3, hwnd: HWND, ullCompleted: u64, ullTotal: u64) -> HRESULT,
    	SetProgressState:      proc "stdcall" (this: ^ITaskbarList3, hwnd: HWND, tbpFlags: TBPFLAG) -> HRESULT,
    	RegisterTab:           proc "stdcall" (this: ^ITaskbarList3, hwndTab: HWND, hwndMDI: HWND) -> HRESULT,
    	UnregisterTab:         proc "stdcall" (this: ^ITaskbarList3, hwndTab: HWND) -> HRESULT,
    	SetTabOrder:           proc "stdcall" (this: ^ITaskbarList3, hwndTab: HWND, hwndInsertBefore: HWND) -> HRESULT,
    	SetTabActive:          proc "stdcall" (this: ^ITaskbarList3, hwndTab: HWND, hwndMDI: HWND, dwReserved: u32) -> HRESULT,
    	ThumbBarAddButtons:    proc "stdcall" (this: ^ITaskbarList3, hwnd: HWND, cButtons: u32, pButton: ^THUMBBUTTON) -> HRESULT,
    	ThumbBarUpdateButtons: proc "stdcall" (this: ^ITaskbarList3, hwnd: HWND, cButtons: u32, pButton: ^THUMBBUTTON) -> HRESULT,
    	ThumbBarSetImageList:  proc "stdcall" (this: ^ITaskbarList3, hwnd: HWND, himl: ^IUnknown) -> HRESULT,
    	SetOverlayIcon:        proc "stdcall" (this: ^ITaskbarList3, hwnd: HWND, hIcon: HICON, pszDescription: [^]u16) -> HRESULT,
    	SetThumbnailTooltip:   proc "stdcall" (this: ^ITaskbarList3, hwnd: HWND, pszTip: [^]u16) -> HRESULT,
    	SetThumbnailClip:      proc "stdcall" (this: ^ITaskbarList3, hwnd: HWND, prcClip: ^RECT) -> HRESULT,
    }

    ITaskbarListVtbl ¶

    ITaskbarListVtbl :: struct {
    	using IUnknownVtbl: IUnknown_VTable,
    	HrInit:       proc "stdcall" (this: ^ITaskbarList) -> HRESULT,
    	AddTab:       proc "stdcall" (this: ^ITaskbarList, hwnd: HWND) -> HRESULT,
    	DeleteTab:    proc "stdcall" (this: ^ITaskbarList, hwnd: HWND) -> HRESULT,
    	ActivateTab:  proc "stdcall" (this: ^ITaskbarList, hwnd: HWND) -> HRESULT,
    	SetActiveAlt: proc "stdcall" (this: ^ITaskbarList, hwnd: HWND) -> HRESULT,
    }

    IUnknown ¶

    IUnknown :: struct {
    	using _iunknown_vtable: ^IUnknown_VTable,
    }
    Related Procedures With Parameters

    IUnknown_VTable ¶

    IUnknown_VTable :: struct {
    	QueryInterface: proc "stdcall" (This: ^IUnknown, riid: ^GUID, ppvObject: ^rawptr) -> HRESULT,
    	AddRef:         proc "stdcall" (This: ^IUnknown) -> u32,
    	Release:        proc "stdcall" (This: ^IUnknown) -> u32,
    }

    KBDLLHOOKSTRUCT ¶

    KBDLLHOOKSTRUCT :: struct {
    	vkCode:      u32,
    	scanCode:    u32,
    	flags:       u32,
    	time:        u32,
    	dwExtraInfo: uint,
    }

    KEYBDINPUT ¶

    KEYBDINPUT :: struct {
    	wVk:         u16,
    	wScan:       u16,
    	dwFlags:     u32,
    	time:        u32,
    	dwExtraInfo: uint,
    }

    KEY_EVENT_RECORD ¶

    KEY_EVENT_RECORD :: struct {
    	bKeyDown:          BOOL,
    	wRepeatCount:      u16,
    	wVirtualKeyCode:   u16,
    	wVirtualScanCode:  u16,
    	uChar:             struct #raw_union {
    		UnicodeChar: u16,
    		AsciiChar:   u8,
    	},
    	dwControlKeyState: bit_set[Control_Key_State_Bits; u32],
    }

    KNOWNFOLDERID ¶

    KNOWNFOLDERID :: GUID
    Related Constants

    KNOWN_FOLDER_FLAG ¶

    KNOWN_FOLDER_FLAG :: enum u32 {
    	DEFAULT                          = 0, 
    	// if NTDDI_VERSION >= NTDDI_WIN10_RS3
    	FORCE_APP_DATA_REDIRECTION       = 524288, 
    	// if NTDDI_VERSION >= NTDDI_WIN10_RS2
    	RETURN_FILTER_REDIRECTION_TARGET = 262144, 
    	FORCE_PACKAGE_REDIRECTION        = 131072, 
    	NO_PACKAGE_REDIRECTION           = 65536, 
    	FORCE_APPCONTAINER_REDIRECTION   = 131072, 
    	// if NTDDI_VERSION >= NTDDI_WIN7
    	NO_APPCONTAINER_REDIRECTION      = 65536, 
    	CREATE                           = 32768, 
    	DONT_VERIFY                      = 16384, 
    	DONT_UNEXPAND                    = 8192, 
    	NO_ALIAS                         = 4096, 
    	INIT                             = 2048, 
    	DEFAULT_PATH                     = 1024, 
    	NOT_PARENT_RELATIVE              = 512, 
    	SIMPLE_IDLIST                    = 256, 
    	ALIAS_ONLY                       = 2147483648, 
    }

    LANGID ¶

    LANGID :: u16

    LAYERPLANEDESCRIPTOR ¶

    LAYERPLANEDESCRIPTOR :: struct {
    	nSize:           u16,
    	nVersion:        u16,
    	dwFlags:         u32,
    	iPixelType:      BYTE,
    	cColorBits:      BYTE,
    	cRedBits:        BYTE,
    	cRedShift:       BYTE,
    	cGreenBits:      BYTE,
    	cGreenShift:     BYTE,
    	cBlueBits:       BYTE,
    	cBlueShift:      BYTE,
    	cAlphaBits:      BYTE,
    	cAlphaShift:     BYTE,
    	cAccumBits:      BYTE,
    	cAccumRedBits:   BYTE,
    	cAccumGreenBits: BYTE,
    	cAccumBlueBits:  BYTE,
    	cAccumAlphaBits: BYTE,
    	cDepthBits:      BYTE,
    	cStencilBits:    BYTE,
    	cAuxBuffers:     BYTE,
    	iLayerPlane:     BYTE,
    	bReserved:       BYTE,
    	crTransparent:   u32,
    }
    Related Procedures With Parameters

    LCTYPE ¶

    LCTYPE :: distinct u32
    Related Procedures With Parameters

    LINGER ¶

    LINGER :: struct {
    	l_onoff:  u16,
    	l_linger: u16,
    }
     

    Used with the SO_LINGER socket option to setsockopt().

    LIST_ENTRY ¶

    LIST_ENTRY :: struct {
    	Flink: ^LIST_ENTRY,
    	Blink: ^LIST_ENTRY,
    }

    LITEM ¶

    LITEM :: struct {
    	mask:      u32,
    	iLink:     i32,
    	state:     u32,
    	stateMask: u32,
    	szID:      [48]u16,
    	szUrl:     [2083]u16,
    }

    LOCALGROUP_MEMBERS_INFO_0 ¶

    LOCALGROUP_MEMBERS_INFO_0 :: struct #packed {
    	sid: ^SID,
    }
    Related Procedures With Parameters

    LOGBRUSH ¶

    LOGBRUSH :: struct {
    	lbStyle: u32,
    	lbColor: u32,
    	lbHatch: uint,
    }
    Related Procedures With Parameters

    LOGFONTW ¶

    LOGFONTW :: struct {
    	lfHeight:         i32,
    	lfWidth:          i32,
    	lfEscapement:     i32,
    	lfOrientation:    i32,
    	lfWeight:         i32,
    	lfItalic:         BYTE,
    	lfUnderline:      BYTE,
    	lfStrikeOut:      BYTE,
    	lfCharSet:        BYTE,
    	lfOutPrecision:   BYTE,
    	lfClipPrecision:  BYTE,
    	lfQuality:        BYTE,
    	lfPitchAndFamily: BYTE,
    	lfFaceName:       [32]u16,
    }
    Related Procedures With Parameters

    LOGICAL_PROCESSOR_RELATIONSHIP ¶

    LOGICAL_PROCESSOR_RELATIONSHIP :: enum i32 {
    	RelationProcessorCore, 
    	RelationNumaNode, 
    	RelationCache, 
    	RelationProcessorPackage, 
    	RelationGroup, 
    	RelationProcessorDie, 
    	RelationNumaNodeEx, 
    	RelationProcessorModule, 
    	RelationAll              = 65535, 
    }

    LOGPALETTE ¶

    LOGPALETTE :: struct {
    	palVersion:    u16,
    	palNumEntries: u16,
    	palPalEntry:   []PALETTEENTRY,
    }
    Related Procedures With Parameters

    LONG32 ¶

    LONG32 :: i32

    LONG64 ¶

    LONG64 :: i64

    LONGLONG ¶

    LONGLONG :: i64

    LONG_PTR ¶

    LONG_PTR :: int

    LPACCEL ¶

    LPACCEL :: ^ACCEL

    LPARAM ¶

    LPARAM :: int

    LPBOOL ¶

    LPBOOL :: ^BOOL

    LPBYTE ¶

    LPBYTE :: ^BYTE

    LPCGUID ¶

    LPCGUID :: ^GUID

    LPCLSID ¶

    LPCLSID :: ^GUID

    LPCOLORREF ¶

    LPCOLORREF :: ^u32

    LPCTSTR ¶

    LPCTSTR :: [^]u16

    LPCWSTR ¶

    LPCWSTR :: [^]u16

    LPDWORD ¶

    LPDWORD :: ^u32

    LPFIBER_START_ROUTINE ¶

    LPFIBER_START_ROUTINE :: proc "stdcall" (lpFiberParameter: rawptr)
    Related Procedures With Parameters

    LPFN_ACCEPTEX ¶

    LPFN_ACCEPTEX :: proc "stdcall" (sListenSocket: SOCKET, sAcceptSocket: SOCKET, lpOutputBuffer: rawptr, dwReceiveDataLength: u32, dwLocalAddressLength: u32, dwRemoteAddressLength: u32, lpdwBytesReceived: ^u32, lpOverlapped: ^OVERLAPPED) -> BOOL

    LPFN_CONNECTEX ¶

    LPFN_CONNECTEX :: proc "stdcall" (s: SOCKET, sockaddr: ^SOCKADDR_STORAGE_LH, namelen: i32, lpSendBuffer: rawptr, dwSendDataLength: u32, lpdwBytesSent: ^u32, lpOverlapped: ^OVERLAPPED) -> BOOL

    LPGUID ¶

    LPGUID :: ^GUID

    LPHANDLE ¶

    LPHANDLE :: ^HANDLE

    LPIID ¶

    LPIID :: ^GUID

    LPINT ¶

    LPINT :: ^i32

    LPLOOKUPSERVICE_COMPLETION_ROUTINE ¶

    LPLOOKUPSERVICE_COMPLETION_ROUTINE :: proc "stdcall" (dwErrorCode: u32, dwNumberOfBytesTransfered: u32, lpOverlapped: ^OVERLAPPED)
    Related Procedures With Parameters

    LPMMTIME ¶

    LPMMTIME :: ^MMTIME

    LPMSG ¶

    LPMSG :: ^MSG

    LPOFNHOOKPROC ¶

    LPOFNHOOKPROC :: proc "stdcall" (hdlg: HWND, msg: u32, wparam: uintptr, lparam: int) -> uintptr

    LPOVERLAPPED_COMPLETION_ROUTINE ¶

    LPOVERLAPPED_COMPLETION_ROUTINE :: proc "stdcall" (dwErrorCode: u32, dwNumberOfBytesTransfered: u32, lpOverlapped: ^OVERLAPPED)
    Related Procedures With Parameters

    LPPOINT ¶

    LPPOINT :: ^POINT

    LPPROGRESS_ROUTINE ¶

    LPPROGRESS_ROUTINE :: proc "stdcall" (TotalFileSize: LARGE_INTEGER, TotalBytesTransferred: LARGE_INTEGER, StreamSize: LARGE_INTEGER, StreamBytesTransferred: LARGE_INTEGER, dwStreamNumber: u32, dwCallbackReason: u32, hSourceFile: HANDLE, hDestinationFile: HANDLE, lpData: rawptr) -> u32
    Related Procedures With Parameters

    LPRECT ¶

    LPRECT :: ^RECT

    LPSIZE ¶

    LPSIZE :: ^SIZE

    LPSTR ¶

    LPSTR :: ^u8

    LPUINT ¶

    LPUINT :: ^u32

    LPULONG_PTR ¶

    LPULONG_PTR :: ^uint

    LPWSABUF ¶

    LPWSABUF :: ^WSABUF

    LPWSAOVERLAPPED ¶

    LPWSAOVERLAPPED :: distinct rawptr
    Related Procedures With Parameters

    LPWSAOVERLAPPED_COMPLETION_ROUTINE ¶

    LPWSAOVERLAPPED_COMPLETION_ROUTINE :: distinct rawptr
    Related Procedures With Parameters

    LRESULT ¶

    LRESULT :: int

    LSTATUS ¶

    LSTATUS :: i32

    LUID ¶

    LUID :: struct {
    	LowPart:  u32,
    	HighPart: i32,
    }

    LUID_AND_ATTRIBUTES ¶

    LUID_AND_ATTRIBUTES :: struct {
    	Luid:       LUID,
    	Attributes: u32,
    }

    LWSTDAPI ¶

    LWSTDAPI :: HRESULT
    Related Constants

    LoadLibraryEx_Flag ¶

    LoadLibraryEx_Flag :: enum u32 {
    	LOAD_LIBRARY_AS_DATAFILE            = 1,  // 1 <<  1: 0x0002,
    	LOAD_WITH_ALTERED_SEARCH_PATH       = 3,  // 1 <<  3: 0x0008,
    	LOAD_IGNORE_CODE_AUTHZ_LEVEL        = 4,  // 1 <<  4: 0x0010,
    	LOAD_LIBRARY_AS_IMAGE_RESOURCE      = 5,  // 1 <<  5: 0x0020,
    	LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE  = 6,  // 1 <<  6: 0x0040,
    	LOAD_LIBRARY_REQUIRE_SIGNED_TARGET  = 7,  // 1 <<  7: 0x0080,
    	LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR    = 8,  // 1 <<  8: 0x0100,
    	LOAD_LIBRARY_SEARCH_APPLICATION_DIR = 9,  // 1 <<  9: 0x0200,
    	LOAD_LIBRARY_SEARCH_USER_DIRS       = 10, // 1 << 10: 0x0400,
    	LOAD_LIBRARY_SEARCH_SYSTEM32        = 11, // 1 << 11: 0x0800,
    	LOAD_LIBRARY_SEARCH_DEFAULT_DIRS    = 12, // 1 << 12: 0x1000,
    	LOAD_LIBRARY_SAFE_CURRENT_DIRS      = 13, // 1 << 13: 0x2000,
    }

    LoadLibraryEx_Flags ¶

    LoadLibraryEx_Flags :: distinct bit_set[LoadLibraryEx_Flag]
    Related Procedures With Parameters

    Logon32_Provider ¶

    Logon32_Provider :: enum u32 {
    	DEFAULT = 0, 
    	WINNT35 = 1, 
    	WINNT40 = 2, 
    	WINNT50 = 3, 
    	VIRTUAL = 4, 
    }
    Related Procedures With Parameters

    Logon32_Type ¶

    Logon32_Type :: enum u32 {
    	INTERACTIVE       = 2, 
    	NETWORK           = 3, 
    	BATCH             = 4, 
    	SERVICE           = 5, 
    	UNLOCK            = 7, 
    	NETWORK_CLEARTEXT = 8, 
    	NEW_CREDENTIALS   = 9, 
    }
    Related Procedures With Parameters

    M128A ¶

    M128A :: struct {
    	Low:  u64,
    	High: i64,
    }

    MARGINS ¶

    MARGINS :: distinct [4]int
    Related Procedures With Parameters

    MEMORYSTATUSEX ¶

    MEMORYSTATUSEX :: struct {
    	dwLength:                u32,
    	dwMemoryLoad:            u32,
    	ullTotalPhys:            u64,
    	ullAvailPhys:            u64,
    	ullTotalPageFil:         u64,
    	ullAvailPageFil:         u64,
    	ullTotalVirtual:         u64,
    	ullAvailVirtual:         u64,
    	ullAvailExtendedVirtual: u64,
    }
    Related Procedures With Parameters

    MEMORY_BASIC_INFORMATION ¶

    MEMORY_BASIC_INFORMATION :: struct {
    	BaseAddress:       rawptr,
    	AllocationBase:    rawptr,
    	AllocationProtect: u32,
    	PartitionId:       u16,
    	RegionSize:        uint,
    	State:             u32,
    	Protect:           u32,
    	Type:              u32,
    }
    Related Procedures With Parameters

    MEMORY_RESOURCE_NOTIFICATION_TYPE ¶

    MEMORY_RESOURCE_NOTIFICATION_TYPE :: enum i32 {
    	LowMemoryResourceNotification, 
    	HighMemoryResourceNotification, 
    }
    Related Procedures With Parameters
    Related Constants
    MENUITEMINFOW :: struct {
    	cbSize:        u32,
    	fMask:         u32,
    	fType:         u32,
    	// used if MIIM_TYPE (4.0) or MIIM_FTYPE (>4.0)
    	fState:        u32,
    	// used if MIIM_STATE
    	wID:           u32,
    	// used if MIIM_ID
    	hSubMenu:      HMENU,
    	// used if MIIM_SUBMENU
    	hbmpChecked:   HBITMAP,
    	// used if MIIM_CHECKMARKS
    	hbmpUnchecked: HBITMAP,
    	// used if MIIM_CHECKMARKS
    	dwItemData:    uint,
    	// used if MIIM_DATA
    	dwTypeData:    ^u16,
    	// used if MIIM_TYPE (4.0) or MIIM_STRING (>4.0)
    	cch:           u32,
    	// used if MIIM_TYPE (4.0) or MIIM_STRING (>4.0)
    	hbmpItem:      HBITMAP,
    }
    Related Procedures With Parameters
    MENU_EVENT_RECORD :: struct {
    	dwCommandId: u32,
    }

    MINIDUMP_CALLBACK_INFORMATION ¶

    MINIDUMP_CALLBACK_INFORMATION :: struct {
    	CallbackRoutine: MINIDUMP_CALLBACK_ROUTINE,
    	CallbackParam:   rawptr,
    }
    Related Procedures With Parameters

    MINIDUMP_CALLBACK_INPUT ¶

    MINIDUMP_CALLBACK_INPUT :: struct {
    	ProcessId:     u32,
    	ProcessHandle: HANDLE,
    	CallbackType:  u32,
    	using _:       struct #raw_union {
    		Status:            HRESULT,
    		Thread:            MINIDUMP_THREAD_CALLBACK,
    		ThreadEx:          MINIDUMP_THREAD_EX_CALLBACK,
    		Module:            MINIDUMP_MODULE_CALLBACK,
    		IncludeThread:     MINIDUMP_INCLUDE_THREAD_CALLBACK,
    		IncludeModule:     MINIDUMP_INCLUDE_MODULE_CALLBACK,
    		Io:                MINIDUMP_IO_CALLBACK,
    		ReadMemoryFailure: MINIDUMP_READ_MEMORY_FAILURE_CALLBACK,
    		SecondaryFlags:    u32,
    		VmQuery:           MINIDUMP_VM_QUERY_CALLBACK,
    		VmPreRead:         MINIDUMP_VM_PRE_READ_CALLBACK,
    		VmPostRead:        MINIDUMP_VM_POST_READ_CALLBACK,
    	},
    }

    MINIDUMP_CALLBACK_OUTPUT ¶

    MINIDUMP_CALLBACK_OUTPUT :: struct {
    	using _: struct #raw_union {
    		ModuleWriteFlags: u32,
    		ThreadWriteFlags: u32,
    		SecondaryFlags:   u32,
    		using _:          struct {
    			MemoryBase: u64,
    			MemorySize: u32,
    		},
    		using _:          struct {
    			CheckCancel: BOOL,
    			Cancel:      BOOL,
    		},
    		Handle:           HANDLE,
    		using _:          struct {
    			VmRegion: MINIDUMP_MEMORY_INFO,
    			Continue: BOOL,
    		},
    		using _:          struct {
    			VmQueryStatus: HRESULT,
    			VmQueryResult: MINIDUMP_MEMORY_INFO,
    		},
    		using _:          struct {
    			VmReadStatus:         HRESULT,
    			VmReadBytesCompleted: u32,
    		},
    		Status:           HRESULT,
    	},
    }

    MINIDUMP_CALLBACK_ROUTINE ¶

    MINIDUMP_CALLBACK_ROUTINE :: proc "stdcall" (CallbackParam: rawptr, CallbackInput: ^MINIDUMP_CALLBACK_INPUT, CallbackOutpu: ^MINIDUMP_CALLBACK_OUTPUT) -> BOOL

    MINIDUMP_DIRECTORY ¶

    MINIDUMP_DIRECTORY :: struct {
    	StreamType: u32,
    	Location:   MINIDUMP_LOCATION_DESCRIPTOR,
    }

    MINIDUMP_EXCEPTION_INFORMATION ¶

    MINIDUMP_EXCEPTION_INFORMATION :: struct {
    	ThreadId:          u32,
    	ExceptionPointers: ^EXCEPTION_POINTERS,
    	ClientPointers:    BOOL,
    }
    Related Procedures With Parameters

    MINIDUMP_INCLUDE_MODULE_CALLBACK ¶

    MINIDUMP_INCLUDE_MODULE_CALLBACK :: struct {
    	BaseOfImage: u64,
    }

    MINIDUMP_INCLUDE_THREAD_CALLBACK ¶

    MINIDUMP_INCLUDE_THREAD_CALLBACK :: struct {
    	ThreadId: u32,
    }

    MINIDUMP_IO_CALLBACK ¶

    MINIDUMP_IO_CALLBACK :: struct {
    	Handle:      HANDLE,
    	Offset:      u64,
    	Buffer:      rawptr,
    	BufferBytes: u32,
    }

    MINIDUMP_LOCATION_DESCRIPTOR ¶

    MINIDUMP_LOCATION_DESCRIPTOR :: struct {
    	DataSize: u32,
    	Rva:      u32,
    }

    MINIDUMP_MEMORY_INFO ¶

    MINIDUMP_MEMORY_INFO :: struct {
    	BaseAddress:       u64,
    	AllocationBase:    u64,
    	AllocationProtect: u32,
    	__alignment1:      u32,
    	RegionSize:        u64,
    	State:             u32,
    	Protect:           u32,
    	Type:              u32,
    	__alignment2:      u32,
    }

    MINIDUMP_MODULE_CALLBACK ¶

    MINIDUMP_MODULE_CALLBACK :: struct {
    	FullPath:         ^u16,
    	BaseOfImage:      u64,
    	SizeOfImage:      u32,
    	CheckSum:         u32,
    	TimeDateStamp:    u32,
    	VersionInfo:      VS_FIXEDFILEINFO,
    	CvRecord:         rawptr,
    	SizeOfCvRecord:   u32,
    	MiscRecord:       rawptr,
    	SizeOfMiscRecord: u32,
    }

    MINIDUMP_READ_MEMORY_FAILURE_CALLBACK ¶

    MINIDUMP_READ_MEMORY_FAILURE_CALLBACK :: struct {
    	Offset:        u64,
    	Bytes:         u32,
    	FailureStatus: HRESULT,
    }

    MINIDUMP_THREAD_CALLBACK ¶

    MINIDUMP_THREAD_CALLBACK :: struct {
    	ThreadId:      u32,
    	ThreadHandle:  HANDLE,
    	Pad:           struct {},
    	Context:       CONTEXT,
    	SizeOfContext: u32,
    	StackBase:     u64,
    	StackEnd:      u64,
    }

    MINIDUMP_THREAD_EX_CALLBACK ¶

    MINIDUMP_THREAD_EX_CALLBACK :: struct {
    	ThreadId:         u32,
    	ThreadHandle:     HANDLE,
    	Pad:              struct {},
    	Context:          CONTEXT,
    	SizeOfContext:    u32,
    	StackBase:        u64,
    	StackEnd:         u64,
    	BackingStoreBase: u64,
    	BackingStoreEnd:  u64,
    }

    MINIDUMP_TYPE ¶

    MINIDUMP_TYPE :: enum u32 {
    	Normal                         = 0, 
    	WithDataSegs                   = 1, 
    	WithFullMemory                 = 2, 
    	WithHandleData                 = 4, 
    	FilterMemory                   = 8, 
    	ScanMemory                     = 16, 
    	WithUnloadedModules            = 32, 
    	WithIndirectlyReferencedMemory = 64, 
    	FilterModulePaths              = 128, 
    	WithProcessThreadData          = 256, 
    	WithPrivateReadWriteMemory     = 512, 
    	WithoutOptionalData            = 1024, 
    	WithFullMemoryInfo             = 2048, 
    	WithThreadInfo                 = 4096, 
    	WithCodeSegs                   = 8192, 
    	WithoutAuxiliaryState          = 16384, 
    	WithFullAuxiliaryState         = 32768, 
    	WithPrivateWriteCopyMemory     = 65536, 
    	IgnoreInaccessibleMemory       = 131072, 
    	WithTokenInformation           = 262144, 
    	WithModuleHeaders              = 524288, 
    	FilterTriage                   = 1048576, 
    	WithAvxXStateContext           = 2097152, 
    	WithIptTrace                   = 4194304, 
    	ScanInaccessiblePartialPages   = 8388608, 
    	FilterWriteCombinedMemory      = 16777216, 
    	ValidTypeFlags                 = 33554431, 
    }
    Related Procedures With Parameters

    MINIDUMP_USER_STREAM ¶

    MINIDUMP_USER_STREAM :: struct {
    	Type:       u32,
    	BufferSize: u32,
    	Buffer:     rawptr,
    }

    MINIDUMP_USER_STREAM_INFORMATION ¶

    MINIDUMP_USER_STREAM_INFORMATION :: struct {
    	UserStreamCount: u32,
    	UserStreamArray: ^MINIDUMP_USER_STREAM,
    }
    Related Procedures With Parameters

    MINIDUMP_VM_POST_READ_CALLBACK ¶

    MINIDUMP_VM_POST_READ_CALLBACK :: struct {
    	Offset:    u64,
    	Buffer:    rawptr,
    	Size:      u32,
    	Completed: u32,
    	Status:    HRESULT,
    }

    MINIDUMP_VM_PRE_READ_CALLBACK ¶

    MINIDUMP_VM_PRE_READ_CALLBACK :: struct {
    	Offset: u64,
    	Buffer: rawptr,
    	Size:   u32,
    }

    MINIDUMP_VM_QUERY_CALLBACK ¶

    MINIDUMP_VM_QUERY_CALLBACK :: struct {
    	Offset: u64,
    }

    MINMAXINFO ¶

    MINMAXINFO :: struct {
    	ptReserved:     POINT,
    	ptMaxSize:      POINT,
    	ptMaxPosition:  POINT,
    	ptMinTrackSize: POINT,
    	ptMaxTrackSize: POINT,
    }
     

    Struct pointed to by WM_GETMINMAXINFO lParam

    MMRESULT ¶

    MMRESULT :: u32

    MMTIME ¶

    MMTIME :: struct {
    	wType: MMTIME_TYPE,
    	u:     struct #raw_union {
    		ms:     u32,
    		sample: u32,
    		cb:     u32,
    		ticks:  u32,
    		smpte:  struct {
    			hour:  BYTE,
    			min:   BYTE,
    			sec:   BYTE,
    			frame: BYTE,
    			fps:   BYTE,
    			dummy: BYTE,
    			pad:   [2]BYTE,
    		},
    		midi:   struct {
    			songptrpos: u32,
    		},
    	},
    }
     

    https://learn.microsoft.com/en-us/windows/win32/multimedia/multimedia-timer-structures

    Related Procedures With Parameters

    MMTIME_TYPE ¶

    MMTIME_TYPE :: enum u32 {
    	// time in milliseconds 
    	TIME_MS      = 1, 
    	// number of wave samples 
    	TIME_SAMPLES = 2, 
    	// current byte offset 
    	TIME_BYTES   = 4, 
    	// SMPTE time 
    	TIME_SMPTE   = 8, 
    	// MIDI time 
    	TIME_MIDI    = 16, 
    	// Ticks within MIDI stream 
    	TIME_TICKS   = 32, 
    }

    MMVERSION ¶

    MMVERSION :: u32

    MODULEENTRY32W ¶

    MODULEENTRY32W :: struct {
    	dwSize:        u32,
    	th32ModuleID:  u32,
    	th32ProcessID: u32,
    	GlblcntUsage:  u32,
    	ProccntUsage:  u32,
    	modBaseAddr:   ^BYTE,
    	modBaseSize:   u32,
    	hModule:       HMODULE,
    	szModule:      [256]u16,
    	szExePath:     [260]u16,
    }
    Related Procedures With Parameters

    MONITORINFO ¶

    MONITORINFO :: struct {
    	cbSize:    u32,
    	rcMonitor: RECT,
    	rcWork:    RECT,
    	dwFlags:   u32,
    }
    Related Procedures With Parameters

    MONITORINFOEXW ¶

    MONITORINFOEXW :: struct {
    	using _:  MONITORINFO,
    	szDevice: [32]u16,
    }
    Procedures Through `using` From MONITORINFO

    MONITOR_DPI_TYPE ¶

    MONITOR_DPI_TYPE :: enum u32 {
    	MDT_EFFECTIVE_DPI = 0, 
    	MDT_ANGULAR_DPI   = 1, 
    	MDT_RAW_DPI       = 2, 
    	MDT_DEFAULT, 
    }
    Related Procedures With Parameters

    MOUNT_POINT_REPARSE_BUFFER ¶

    MOUNT_POINT_REPARSE_BUFFER :: struct {
    	SubstituteNameOffset: u16,
    	SubstituteNameLength: u16,
    	PrintNameOffset:      u16,
    	PrintNameLength:      u16,
    	PathBuffer:           u16,
    }

    MOUSEINPUT ¶

    MOUSEINPUT :: struct {
    	dx:          i32,
    	dy:          i32,
    	mouseData:   u32,
    	dwFlags:     u32,
    	time:        u32,
    	dwExtraInfo: uint,
    }

    MOUSE_EVENT_RECORD ¶

    MOUSE_EVENT_RECORD :: struct {
    	dwMousePosition:   COORD,
    	dwButtonState:     u32,
    	dwControlKeyState: u32,
    	dwEventFlags:      u32,
    }

    MSG ¶

    MSG :: struct {
    	hwnd:    HWND,
    	message: u32,
    	wParam:  uintptr,
    	lParam:  int,
    	time:    u32,
    	pt:      POINT,
    }
    Related Procedures With Parameters

    MSLLHOOKSTRUCT ¶

    MSLLHOOKSTRUCT :: struct {
    	pt:          POINT,
    	mouseData:   u32,
    	flags:       u32,
    	time:        u32,
    	dwExtraInfo: uint,
    }

    Monitor_Enum_Proc ¶

    Monitor_Enum_Proc :: proc "stdcall" (HMONITOR, HDC, ^RECT, int) -> BOOL
    Related Procedures With Parameters

    Monitor_From_Flags ¶

    Monitor_From_Flags :: enum u32 {
    	MONITOR_DEFAULTTONULL    = 0, // Returns NULL
    	MONITOR_DEFAULTTOPRIMARY = 1, // Returns a handle to the primary display monitor
    	MONITOR_DEFAULTTONEAREST = 2, // Returns a handle to the display monitor that is nearest to the window
    }
    Related Procedures With Parameters

    NCCALCSIZE_PARAMS ¶

    NCCALCSIZE_PARAMS :: struct {
    	rgrc:  [3]RECT,
    	lppos: ^WINDOWPOS,
    }

    NEON128 ¶

    NEON128 :: struct {
    	Low:  u64,
    	High: i64,
    }

    NET_API_STATUS ¶

    NET_API_STATUS :: enum u32 {
    	Success                      = 0, 
    	ERROR_ACCESS_DENIED          = 5, 
    	MemberInAlias                = 1378, 
    	NetNotStarted                = 2102, 
    	UnknownServer                = 2103, 
    	ShareMem                     = 2104, 
    	NoNetworkResource            = 2105, 
    	RemoteOnly                   = 2106, 
    	DevNotRedirected             = 2107, 
    	ServerNotStarted             = 2114, 
    	ItemNotFound                 = 2115, 
    	UnknownDevDir                = 2116, 
    	RedirectedPath               = 2117, 
    	DuplicateShare               = 2118, 
    	NoRoom                       = 2119, 
    	TooManyItems                 = 2121, 
    	InvalidMaxUsers              = 2122, 
    	BufTooSmall                  = 2123, 
    	RemoteErr                    = 2127, 
    	LanmanIniError               = 2131, 
    	NetworkError                 = 2136, 
    	WkstaInconsistentState       = 2137, 
    	WkstaNotStarted              = 2138, 
    	BrowserNotStarted            = 2139, 
    	InternalError                = 2140, 
    	BadTransactConfig            = 2141, 
    	InvalidAPI                   = 2142, 
    	BadEventName                 = 2143, 
    	DupNameReboot                = 2144, 
    	CfgCompNotFound              = 2146, 
    	CfgParamNotFound             = 2147, 
    	LineTooLong                  = 2149, 
    	QNotFound                    = 2150, 
    	JobNotFound                  = 2151, 
    	DestNotFound                 = 2152, 
    	DestExists                   = 2153, 
    	QExists                      = 2154, 
    	QNoRoom                      = 2155, 
    	JobNoRoom                    = 2156, 
    	DestNoRoom                   = 2157, 
    	DestIdle                     = 2158, 
    	DestInvalidOp                = 2159, 
    	ProcNoRespond                = 2160, 
    	SpoolerNotLoaded             = 2161, 
    	DestInvalidState             = 2162, 
    	QInvalidState                = 2163, 
    	JobInvalidState              = 2164, 
    	SpoolNoMemory                = 2165, 
    	DriverNotFound               = 2166, 
    	DataTypeInvalid              = 2167, 
    	ProcNotFound                 = 2168, 
    	ServiceTableLocked           = 2180, 
    	ServiceTableFull             = 2181, 
    	ServiceInstalled             = 2182, 
    	ServiceEntryLocked           = 2183, 
    	ServiceNotInstalled          = 2184, 
    	BadServiceName               = 2185, 
    	ServiceCtlTimeout            = 2186, 
    	ServiceCtlBusy               = 2187, 
    	BadServiceProgName           = 2188, 
    	ServiceNotCtrl               = 2189, 
    	ServiceKillProc              = 2190, 
    	ServiceCtlNotValid           = 2191, 
    	NotInDispatchTbl             = 2192, 
    	BadControlRecv               = 2193, 
    	ServiceNotStarting           = 2194, 
    	AlreadyLoggedOn              = 2200, 
    	NotLoggedOn                  = 2201, 
    	BadUsername                  = 2202, 
    	BadPassword                  = 2203, 
    	UnableToAddName_W            = 2204, 
    	UnableToAddName_F            = 2205, 
    	UnableToDelName_W            = 2206, 
    	UnableToDelName_F            = 2207, 
    	LogonsPaused                 = 2209, 
    	LogonServerConflict          = 2210, 
    	LogonNoUserPath              = 2211, 
    	LogonScriptError             = 2212, 
    	StandaloneLogon              = 2214, 
    	LogonServerNotFound          = 2215, 
    	LogonDomainExists            = 2216, 
    	NonValidatedLogon            = 2217, 
    	ACFNotFound                  = 2219, 
    	GroupNotFound                = 2220, 
    	UserNotFound                 = 2221, 
    	ResourceNotFound             = 2222, 
    	GroupExists                  = 2223, 
    	UserExists                   = 2224, 
    	ResourceExists               = 2225, 
    	NotPrimary                   = 2226, 
    	ACFNotLoaded                 = 2227, 
    	ACFNoRoom                    = 2228, 
    	ACFFileIOFail                = 2229, 
    	ACFTooManyLists              = 2230, 
    	UserLogon                    = 2231, 
    	ACFNoParent                  = 2232, 
    	CanNotGrowSegment            = 2233, 
    	SpeGroupOp                   = 2234, 
    	NotInCache                   = 2235, 
    	UserInGroup                  = 2236, 
    	UserNotInGroup               = 2237, 
    	AccountUndefined             = 2238, 
    	AccountExpired               = 2239, 
    	InvalidWorkstation           = 2240, 
    	InvalidLogonHours            = 2241, 
    	PasswordExpired              = 2242, 
    	PasswordCantChange           = 2243, 
    	PasswordHistConflict         = 2244, 
    	PasswordTooShort             = 2245, 
    	PasswordTooRecent            = 2246, 
    	InvalidDatabase              = 2247, 
    	DatabaseUpToDate             = 2248, 
    	SyncRequired                 = 2249, 
    	UseNotFound                  = 2250, 
    	BadAsgType                   = 2251, 
    	DeviceIsShared               = 2252, 
    	SameAsComputerName           = 2253, 
    	NoComputerName               = 2270, 
    	MsgAlreadyStarted            = 2271, 
    	MsgInitFailed                = 2272, 
    	NameNotFound                 = 2273, 
    	AlreadyForwarded             = 2274, 
    	AddForwarded                 = 2275, 
    	AlreadyExists                = 2276, 
    	TooManyNames                 = 2277, 
    	DelComputerName              = 2278, 
    	LocalForward                 = 2279, 
    	GrpMsgProcessor              = 2280, 
    	PausedRemote                 = 2281, 
    	BadReceive                   = 2282, 
    	NameInUse                    = 2283, 
    	MsgNotStarted                = 2284, 
    	NotLocalName                 = 2285, 
    	NoForwardName                = 2286, 
    	RemoteFull                   = 2287, 
    	NameNotForwarded             = 2288, 
    	TruncatedBroadcast           = 2289, 
    	InvalidDevice                = 2294, 
    	WriteFault                   = 2295, 
    	DuplicateName                = 2297, 
    	DeleteLater                  = 2298, 
    	IncompleteDel                = 2299, 
    	MultipleNets                 = 2300, 
    	NetNameNotFound              = 2310, 
    	DeviceNotShared              = 2311, 
    	ClientNameNotFound           = 2312, 
    	FileIdNotFound               = 2314, 
    	ExecFailure                  = 2315, 
    	TmpFile                      = 2316, 
    	TooMuchData                  = 2317, 
    	DeviceShareConflict          = 2318, 
    	BrowserTableIncomplete       = 2319, 
    	NotLocalDomain               = 2320, 
    	IsDfsShare                   = 2321, 
    	DevInvalidOpCode             = 2331, 
    	DevNotFound                  = 2332, 
    	DevNotOpen                   = 2333, 
    	BadQueueDevString            = 2334, 
    	BadQueuePriority             = 2335, 
    	NoCommDevs                   = 2337, 
    	QueueNotFound                = 2338, 
    	BadDevString                 = 2340, 
    	BadDev                       = 2341, 
    	InUseBySpooler               = 2342, 
    	CommDevInUse                 = 2343, 
    	InvalidComputer              = 2351, 
    	MaxLenExceeded               = 2354, 
    	BadComponent                 = 2356, 
    	CantType                     = 2357, 
    	TooManyEntries               = 2362, 
    	ProfileFileTooBig            = 2370, 
    	ProfileOffset                = 2371, 
    	ProfileCleanup               = 2372, 
    	ProfileUnknownCmd            = 2373, 
    	ProfileLoadErr               = 2374, 
    	ProfileSaveErr               = 2375, 
    	LogOverflow                  = 2377, 
    	LogFileChanged               = 2378, 
    	LogFileCorrupt               = 2379, 
    	SourceIsDir                  = 2380, 
    	BadSource                    = 2381, 
    	BadDest                      = 2382, 
    	DifferentServers             = 2383, 
    	RunSrvPaused                 = 2385, 
    	ErrCommRunSrv                = 2389, 
    	ErrorExecingGhost            = 2391, 
    	ShareNotFound                = 2392, 
    	InvalidLana                  = 2400, 
    	OpenFiles                    = 2401, 
    	ActiveConns                  = 2402, 
    	BadPasswordCore              = 2403, 
    	DevInUse                     = 2404, 
    	LocalDrive                   = 2405, 
    	AlertExists                  = 2430, 
    	TooManyAlerts                = 2431, 
    	NoSuchAlert                  = 2432, 
    	BadRecipient                 = 2433, 
    	AcctLimitExceeded            = 2434, 
    	InvalidLogSeek               = 2440, 
    	BadUasConfig                 = 2450, 
    	InvalidUASOp                 = 2451, 
    	LastAdmin                    = 2452, 
    	DCNotFound                   = 2453, 
    	LogonTrackingError           = 2454, 
    	NetlogonNotStarted           = 2455, 
    	CanNotGrowUASFile            = 2456, 
    	TimeDiffAtDC                 = 2457, 
    	PasswordMismatch             = 2458, 
    	NoSuchServer                 = 2460, 
    	NoSuchSession                = 2461, 
    	NoSuchConnection             = 2462, 
    	TooManyServers               = 2463, 
    	TooManySessions              = 2464, 
    	TooManyConnections           = 2465, 
    	TooManyFiles                 = 2466, 
    	NoAlternateServers           = 2467, 
    	TryDownLevel                 = 2470, 
    	UPSDriverNotStarted          = 2480, 
    	UPSInvalidConfig             = 2481, 
    	UPSInvalidCommPort           = 2482, 
    	UPSSignalAsserted            = 2483, 
    	UPSShutdownFailed            = 2484, 
    	BadDosRetCode                = 2500, 
    	ProgNeedsExtraMem            = 2501, 
    	BadDosFunction               = 2502, 
    	RemoteBootFailed             = 2503, 
    	BadFileCheckSum              = 2504, 
    	NoRplBootSystem              = 2505, 
    	RplLoadrNetBiosErr           = 2506, 
    	RplLoadrDiskErr              = 2507, 
    	ImageParamErr                = 2508, 
    	TooManyImageParams           = 2509, 
    	NonDosFloppyUsed             = 2510, 
    	RplBootRestart               = 2511, 
    	RplSrvrCallFailed            = 2512, 
    	CantConnectRplSrvr           = 2513, 
    	CantOpenImageFile            = 2514, 
    	CallingRplSrvr               = 2515, 
    	StartingRplBoot              = 2516, 
    	RplBootServiceTerm           = 2517, 
    	RplBootStartFailed           = 2518, 
    	RPL_CONNECTED                = 2519, 
    	BrowserConfiguredToNotRun    = 2550, 
    	RplNoAdaptersStarted         = 2610, 
    	RplBadRegistry               = 2611, 
    	RplBadDatabase               = 2612, 
    	RplRplfilesShare             = 2613, 
    	RplNotRplServer              = 2614, 
    	RplCannotEnum                = 2615, 
    	RplWkstaInfoCorrupted        = 2616, 
    	RplWkstaNotFound             = 2617, 
    	RplWkstaNameUnavailable      = 2618, 
    	RplProfileInfoCorrupted      = 2619, 
    	RplProfileNotFound           = 2620, 
    	RplProfileNameUnavailable    = 2621, 
    	RplProfileNotEmpty           = 2622, 
    	RplConfigInfoCorrupted       = 2623, 
    	RplConfigNotFound            = 2624, 
    	RplAdapterInfoCorrupted      = 2625, 
    	RplInternal                  = 2626, 
    	RplVendorInfoCorrupted       = 2627, 
    	RplBootInfoCorrupted         = 2628, 
    	RplWkstaNeedsUserAcct        = 2629, 
    	RplNeedsRPLUSERAcct          = 2630, 
    	RplBootNotFound              = 2631, 
    	RplIncompatibleProfile       = 2632, 
    	RplAdapterNameUnavailable    = 2633, 
    	RplConfigNotEmpty            = 2634, 
    	RplBootInUse                 = 2635, 
    	RplBackupDatabase            = 2636, 
    	RplAdapterNotFound           = 2637, 
    	RplVendorNotFound            = 2638, 
    	RplVendorNameUnavailable     = 2639, 
    	RplBootNameUnavailable       = 2640, 
    	RplConfigNameUnavailable     = 2641, 
    	DfsInternalCorruption        = 2660, 
    	DfsVolumeDataCorrupt         = 2661, 
    	DfsNoSuchVolume              = 2662, 
    	DfsVolumeAlreadyExists       = 2663, 
    	DfsAlreadyShared             = 2664, 
    	DfsNoSuchShare               = 2665, 
    	DfsNotALeafVolume            = 2666, 
    	DfsLeafVolume                = 2667, 
    	DfsVolumeHasMultipleServers  = 2668, 
    	DfsCantCreateJunctionPoint   = 2669, 
    	DfsServerNotDfsAware         = 2670, 
    	DfsBadRenamePath             = 2671, 
    	DfsVolumeIsOffline           = 2672, 
    	DfsNoSuchServer              = 2673, 
    	DfsCyclicalName              = 2674, 
    	DfsNotSupportedInServerDfs   = 2675, 
    	DfsDuplicateService          = 2676, 
    	DfsCantRemoveLastServerShare = 2677, 
    	DfsVolumeIsInterDfs          = 2678, 
    	DfsInconsistent              = 2679, 
    	DfsServerUpgraded            = 2680, 
    	DfsDataIsIdentical           = 2681, 
    	DfsCantRemoveDfsRoot         = 2682, 
    	DfsChildOrParentInDfs        = 2683, 
    	DfsInternalError             = 2690, 
    	SetupAlreadyJoined           = 2691, 
    	SetupNotJoined               = 2692, 
    	SetupDomainController        = 2693, 
    	DefaultJoinRequired          = 2694, 
    	InvalidWorkgroupName         = 2695, 
    	NameUsesIncompatibleCodePage = 2696, 
    	ComputerAccountNotFound      = 2697, 
    	PersonalSku                  = 2698, 
    	SetupCheckDNSConfig          = 2699, 
    	PasswordMustChange           = 2701, 
    	AccountLockedOut             = 2702, 
    	PasswordTooLong              = 2703, 
    	PasswordNotComplexEnough     = 2704, 
    	PasswordFilterError          = 2705, 
    }
    Related Procedures With Returns

    NET_IF_CONNECTION_TYPE ¶

    NET_IF_CONNECTION_TYPE :: enum i32 {
    	NET_IF_CONNECTION_DEDICATED = 1, 
    	NET_IF_CONNECTION_PASSIVE   = 2, 
    	NET_IF_CONNECTION_DEMAND    = 3, 
    	NET_IF_CONNECTION_MAXIMUM   = 4, 
    }

    NET_LUID_LH ¶

    NET_LUID_LH :: struct #raw_union {
    	Value: u64,
    	Info:  struct {
    		_bitfield: u64,
    	},
    }

    NEWTEXTMETRICW ¶

    NEWTEXTMETRICW :: struct {
    	tmHeight:           i32,
    	tmAscent:           i32,
    	tmDescent:          i32,
    	tmInternalLeading:  i32,
    	tmExternalLeading:  i32,
    	tmAveCharWidth:     i32,
    	tmMaxCharWidth:     i32,
    	tmWeight:           i32,
    	tmOverhang:         i32,
    	tmDigitizedAspectX: i32,
    	tmDigitizedAspectY: i32,
    	tmFirstChar:        u16,
    	tmLastChar:         u16,
    	tmDefaultChar:      u16,
    	tmBreakChar:        u16,
    	tmItalic:           BYTE,
    	tmUnderlined:       BYTE,
    	tmStruckOut:        BYTE,
    	tmPitchAndFamily:   BYTE,
    	tmCharSet:          BYTE,
    	ntmFlags:           u32,
    	ntmSizeEM:          u32,
    	ntmCellHeight:      u32,
    	ntmAvgWidth:        u32,
    }

    NL_DAD_STATE ¶

    NL_DAD_STATE :: enum i32 {
    	NldsInvalid          = 0, 
    	NldsTentative        = 1, 
    	NldsDuplicate        = 2, 
    	NldsDeprecated       = 3, 
    	NldsPreferred        = 4, 
    	IpDadStateInvalid    = 0, 
    	IpDadStateTentative  = 1, 
    	IpDadStateDuplicate  = 2, 
    	IpDadStateDeprecated = 3, 
    	IpDadStatePreferred  = 4, 
    }

    NL_PREFIX_ORIGIN ¶

    NL_PREFIX_ORIGIN :: enum i32 {
    	IpPrefixOriginOther               = 0, 
    	IpPrefixOriginManual              = 1, 
    	IpPrefixOriginWellKnown           = 2, 
    	IpPrefixOriginDhcp                = 3, 
    	IpPrefixOriginRouterAdvertisement = 4, 
    	IpPrefixOriginUnchanged           = 16, 
    }

    NL_SUFFIX_ORIGIN ¶

    NL_SUFFIX_ORIGIN :: enum i32 {
    	NlsoOther                      = 0, 
    	NlsoManual                     = 1, 
    	NlsoWellKnown                  = 2, 
    	NlsoDhcp                       = 3, 
    	NlsoLinkLayerAddress           = 4, 
    	NlsoRandom                     = 5, 
    	IpSuffixOriginOther            = 0, 
    	IpSuffixOriginManual           = 1, 
    	IpSuffixOriginWellKnown        = 2, 
    	IpSuffixOriginDhcp             = 3, 
    	IpSuffixOriginLinkLayerAddress = 4, 
    	IpSuffixOriginRandom           = 5, 
    	IpSuffixOriginUnchanged        = 16, 
    }

    NMHDR ¶

    NMHDR :: struct {
    	hwndFrom: HWND,
    	idFrom:   uintptr,
    	code:     u32,
    }
    NMLINK :: struct {
    	hdr:  NMHDR,
    	item: LITEM,
    }

    NOTIFYICONDATAW ¶

    NOTIFYICONDATAW :: struct {
    	cbSize:           u32,
    	hWnd:             HWND,
    	uID:              u32,
    	uFlags:           u32,
    	uCallbackMessage: u32,
    	hIcon:            HICON,
    	szTip:            [128]u16,
    	dwState:          u32,
    	dwStateMask:      u32,
    	szInfo:           [256]u16,
    	using _:          struct #raw_union {
    		uTimeout: u32,
    		uVersion: u32,
    	},
    	szInfoTitle:      [64]u16,
    	dwInfoFlags:      u32,
    	guidItem:         GUID,
    	hBalloonIcon:     HICON,
    }
    Related Procedures With Parameters

    NTSTATUS ¶

    NTSTATUS :: i32

    NumaNode ¶

    NumaNode :: struct {
    	NodeNumber: u32,
    }

    OBJECT_ATTRIBUTES ¶

    OBJECT_ATTRIBUTES :: struct {
    	Length:                   u32,
    	RootDirectory:            HANDLE,
    	ObjectName:               ^UNICODE_STRING,
    	Attributes:               u32,
    	SecurityDescriptor:       rawptr,
    	SecurityQualityOfService: rawptr,
    }

    OFFER_PRIORITY ¶

    OFFER_PRIORITY :: enum i32 {
    	VmOfferPriorityVeryLow     = 1, 
    	VmOfferPriorityLow, 
    	VmOfferPriorityBelowNormal, 
    	VmOfferPriorityNormal, 
    }
    Related Procedures With Parameters
    Related Constants

    OLECHAR ¶

    OLECHAR :: u16

    OPENFILENAMEW ¶

    OPENFILENAMEW :: struct {
    	lStructSize:       u32,
    	hwndOwner:         HWND,
    	hInstance:         HANDLE,
    	lpstrFilter:       [^]u16,
    	lpstrCustomFilter: [^]u16,
    	nMaxCustFilter:    u32,
    	nFilterIndex:      u32,
    	lpstrFile:         [^]u16,
    	nMaxFile:          u32,
    	lpstrFileTitle:    [^]u16,
    	nMaxFileTitle:     u32,
    	lpstrInitialDir:   [^]u16,
    	lpstrTitle:        [^]u16,
    	Flags:             u32,
    	nFileOffset:       u16,
    	nFileExtension:    u16,
    	lpstrDefExt:       [^]u16,
    	lCustData:         int,
    	lpfnHook:          LPOFNHOOKPROC,
    	lpTemplateName:    [^]u16,
    	pvReserved:        rawptr,
    	dwReserved:        u32,
    	FlagsEx:           u32,
    }
    Related Procedures With Parameters

    OSVERSIONINFOEXW ¶

    OSVERSIONINFOEXW :: struct {
    	dwOSVersionInfoSize: u32,
    	dwMajorVersion:      u32,
    	dwMinorVersion:      u32,
    	dwBuildNumber:       u32,
    	dwPlatformId:        u32,
    	szCSDVersion:        [128]u16,
    	wServicePackMajor:   u16,
    	wServicePackMinor:   u16,
    	wSuiteMask:          u16,
    	wProductType:        BYTE,
    	wReserved:           BYTE,
    }
     

    https://docs.microsoft.com/en-us/windows-hardware/drivers/ddi/wdm/ns-wdm-_osversioninfoexw

    Related Procedures With Parameters

    OVERLAPPED ¶

    OVERLAPPED :: struct {
    	Internal:     ^u32,
    	InternalHigh: ^u32,
    	Offset:       u32,
    	OffsetHigh:   u32,
    	hEvent:       HANDLE,
    }
    Related Procedures With Parameters

    OVERLAPPED_ENTRY ¶

    OVERLAPPED_ENTRY :: struct {
    	lpCompletionKey:            uint,
    	lpOverlapped:               ^OVERLAPPED,
    	Internal:                   uint,
    	dwNumberOfBytesTransferred: u32,
    }
    Related Procedures With Parameters

    PACCESS_MASK ¶

    PACCESS_MASK :: ^u32

    PACCESS_TOKEN ¶

    PACCESS_TOKEN :: rawptr

    PACL ¶

    PACL :: ^ACL

    PAINTSTRUCT ¶

    PAINTSTRUCT :: struct {
    	hdc:         HDC,
    	fErase:      BOOL,
    	rcPaint:     RECT,
    	fRestore:    BOOL,
    	fIncUpdate:  BOOL,
    	rgbReserved: [32]BYTE,
    }
    Related Procedures With Parameters

    PALETTEENTRY ¶

    PALETTEENTRY :: struct {
    	peRed:   BYTE,
    	peGreen: BYTE,
    	peBlue:  BYTE,
    	peFlags: BYTE,
    }

    PBAD_MEMORY_CALLBACK_ROUTINE ¶

    PBAD_MEMORY_CALLBACK_ROUTINE :: proc "stdcall" ()
    Related Procedures With Parameters

    PBOOL ¶

    PBOOL :: ^BOOL

    PBYTE ¶

    PBYTE :: ^BYTE

    PCGUID ¶

    PCGUID :: ^GUID

    PCHAR ¶

    PCHAR :: ^u8

    PCLAIMS_BLOB ¶

    PCLAIMS_BLOB :: rawptr

    PCWSTR ¶

    PCWSTR :: [^]u16

    PDWORD ¶

    PDWORD :: ^u32

    PDWORD64 ¶

    PDWORD64 :: ^u64

    PDWORD_PTR ¶

    PDWORD_PTR :: ^uint

    PEB ¶

    PEB :: struct {
    	_:                      [2]u8,
    	BeingDebugged:          u8,
    	_:                      [1]u8,
    	_:                      [2]rawptr,
    	Ldr:                    ^PEB_LDR_DATA,
    	ProcessParameters:      ^RTL_USER_PROCESS_PARAMETERS,
    	_:                      [104]u8,
    	_:                      [52]rawptr,
    	PostProcessInitRoutine: PPS_POST_PROCESS_INIT_ROUTINE,
    	_:                      [128]u8,
    	_:                      [1]rawptr,
    	SessionId:              u32,
    }

    PEB_LDR_DATA ¶

    PEB_LDR_DATA :: struct {
    	_:                       [8]u8,
    	_:                       [3]rawptr,
    	InMemoryOrderModuleList: LIST_ENTRY,
    }

    PGUID ¶

    PGUID :: ^GUID

    PHIDP_PREPARSED_DATA ¶

    PHIDP_PREPARSED_DATA :: ^rawptr

    PHKEY ¶

    PHKEY :: ^HKEY

    PINT ¶

    PINT :: ^i32

    PIO_APC_ROUTINE ¶

    PIO_APC_ROUTINE :: proc "stdcall" (ApcContext: rawptr, IoStatusBlock: ^IO_STATUS_BLOCK, Reserved: u32)
    Related Procedures With Parameters

    PIXELFORMATDESCRIPTOR ¶

    PIXELFORMATDESCRIPTOR :: struct {
    	nSize:           u16,
    	nVersion:        u16,
    	dwFlags:         u32,
    	iPixelType:      BYTE,
    	cColorBits:      BYTE,
    	cRedBits:        BYTE,
    	cRedShift:       BYTE,
    	cGreenBits:      BYTE,
    	cGreenShift:     BYTE,
    	cBlueBits:       BYTE,
    	cBlueShift:      BYTE,
    	cAlphaBits:      BYTE,
    	cAlphaShift:     BYTE,
    	cAccumBits:      BYTE,
    	cAccumRedBits:   BYTE,
    	cAccumGreenBits: BYTE,
    	cAccumBlueBits:  BYTE,
    	cAccumAlphaBits: BYTE,
    	cDepthBits:      BYTE,
    	cStencilBits:    BYTE,
    	cAuxBuffers:     BYTE,
    	iLayerType:      BYTE,
    	bReserved:       BYTE,
    	dwLayerMask:     u32,
    	dwVisibleMask:   u32,
    	dwDamageMask:    u32,
    }
    Related Procedures With Parameters

    PLUID ¶

    PLUID :: ^LUID

    POINT ¶

    POINT :: struct {
    	x: i32,
    	y: i32,
    }
    Related Procedures With Parameters

    POINTFLOAT ¶

    POINTFLOAT :: struct {
    	x: f32,
    	y: f32,
    }

    PPS_POST_PROCESS_INIT_ROUTINE ¶

    PPS_POST_PROCESS_INIT_ROUTINE :: proc "stdcall" ()

    PQUOTA_LIMITS ¶

    PQUOTA_LIMITS :: struct {
    	PagedPoolLimit:        uint,
    	NonPagedPoolLimit:     uint,
    	MinimumWorkingSetSize: uint,
    	MaximumWorkingSetSize: uint,
    	PagefileLimit:         uint,
    	TimeLimit:             LARGE_INTEGER,
    }
     

    https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-quota_limits Used in LogonUserExW

    PRIVILEGE_SET ¶

    PRIVILEGE_SET :: struct {
    	PrivilegeCount: u32,
    	Control:        u32,
    	Privilege:      [1]LUID_AND_ATTRIBUTES,
    }
    Related Procedures With Parameters

    PROCESSENTRY32W ¶

    PROCESSENTRY32W :: struct {
    	dwSize:              u32,
    	cntUsage:            u32,
    	th32ProcessID:       u32,
    	th32DefaultHeapID:   uint,
    	th32ModuleID:        u32,
    	cntThreads:          u32,
    	th32ParentProcessID: u32,
    	pcPriClassBase:      i32,
    	dwFlags:             u32,
    	szExeFile:           [260]u16,
    }
    Related Procedures With Parameters

    PROCESSOR_CACHE_TYPE ¶

    PROCESSOR_CACHE_TYPE :: enum i32 {
    	CacheUnified, 
    	CacheInstruction, 
    	CacheData, 
    	CacheTrace, 
    }

    PROCESS_BASIC_INFORMATION ¶

    PROCESS_BASIC_INFORMATION :: struct {
    	ExitStatus:                   i32,
    	PebBaseAddress:               ^PEB,
    	AffinityMask:                 uint,
    	BasePriority:                 rawptr,
    	UniqueProcessId:              uint,
    	InheritedFromUniqueProcessId: uint,
    }

    PROCESS_DPI_AWARENESS ¶

    PROCESS_DPI_AWARENESS :: enum u32 {
    	PROCESS_DPI_UNAWARE           = 0, 
    	PROCESS_SYSTEM_DPI_AWARE      = 1, 
    	PROCESS_PER_MONITOR_DPI_AWARE = 2, 
    }
    Related Procedures With Parameters

    PROCESS_INFORMATION ¶

    PROCESS_INFORMATION :: struct {
    	hProcess:    HANDLE,
    	hThread:     HANDLE,
    	dwProcessId: u32,
    	dwThreadId:  u32,
    }
    Related Procedures With Parameters

    PROCESS_INFO_CLASS ¶

    PROCESS_INFO_CLASS :: enum i32 {
    	ProcessBasicInformation       = 0, 
    	ProcessDebugPort              = 7, 
    	ProcessWow64Information       = 26, 
    	ProcessImageFileName          = 27, 
    	ProcessBreakOnTermination     = 29, 
    	ProcessTelemetryIdInformation = 64, 
    	ProcessSubsystemInformation   = 75, 
    }
    Related Procedures With Parameters

    PROFILEINFOW ¶

    PROFILEINFOW :: struct {
    	dwSize:        u32,
    	dwFlags:       u32,
    	lpUserName:    ^u16,
    	lpProfilePath: ^u16,
    	lpDefaultPath: ^u16,
    	lpServerName:  ^u16,
    	lpPolicyPath:  ^u16,
    	hProfile:      HANDLE,
    }
    Related Procedures With Parameters

    PROPENUMPROCEXW ¶

    PROPENUMPROCEXW :: proc(unnamedParam1: HWND, unnamedParam2: [^]u16, unnamedParam3: HANDLE, unnamedParam4: uint) -> BOOL

    PROPENUMPROCW ¶

    PROPENUMPROCW :: proc(unnamedParam1: HWND, unnamedParam2: [^]u16, unnamedParam3: HANDLE) -> BOOL
    Related Procedures With Parameters

    PROPERTYKEY ¶

    PROPERTYKEY :: struct {
    	fmtid: GUID,
    	pid:   u32,
    }

    PROPVARIANT ¶

    PROPVARIANT :: struct {
    	decVal: DECIMAL,
    }
     

    NOTE(ftphikari): bigger definition of this struct is ignored

    Related Procedures With Parameters

    PSCODE ¶

    PSCODE :: ^i32

    PSECURITY_DESCRIPTOR ¶

    PSECURITY_DESCRIPTOR ::