Skip to content

Instantly share code, notes, and snippets.

@terickson001
Created July 29, 2019 19:10
Show Gist options
  • Save terickson001/56bfae5e87aadd9ebc3c1a65b50b5f4b to your computer and use it in GitHub Desktop.
Save terickson001/56bfae5e87aadd9ebc3c1a65b50b5f4b to your computer and use it in GitHub Desktop.
Odin bindings for `Windows.h`
This file has been truncated, but you can view the full file.
package win32
foreign import win32 "system:kernel32.lib";
uintptr_t :: u32;
va_list :: cstring;
size_t :: u32;
ptrdiff_t :: i32;
intptr_t :: i32;
__vcrt_bool :: _Bool;
wchar_t :: u16;
EXCEPTION_DISPOSITION :: enum {
ExceptionContinueExecution,
ExceptionContinueSearch,
ExceptionNestedException,
ExceptionCollidedUnwind,
};
ULONG :: u64;
PULONG :: ^ULONG;
USHORT :: u16;
PUSHORT :: ^USHORT;
UCHAR :: u8;
PUCHAR :: ^UCHAR;
PSZ :: cstring;
DWORD :: u64;
BOOL :: i32;
BYTE :: u8;
WORD :: u16;
FLOAT :: f32;
PFLOAT :: ^FLOAT;
PBOOL :: ^BOOL;
LPBOOL :: ^BOOL;
PBYTE :: ^BYTE;
LPBYTE :: ^BYTE;
PINT :: ^i32;
LPINT :: ^i32;
PWORD :: ^u16;
LPWORD :: ^u16;
LPLONG :: ^i64;
PDWORD :: ^u32;
LPDWORD :: ^u32;
LPVOID :: rawptr;
LPCVOID :: rawptr;
INT :: i32;
UINT :: u32;
PUINT :: ^u32;
__crt_bool :: _Bool;
errno_t :: i32;
wint_t :: u16;
wctype_t :: u16;
__time32_t :: i64;
__time64_t :: i64;
__crt_locale_data_public :: struct {
_locale_pctype : ^u16,
_locale_mb_cur_max : i32,
_locale_lc_codepage : u32,
};
__crt_locale_pointers :: struct {
locinfo : ^__crt_locale_data,
mbcinfo : ^__crt_multibyte_data,
};
_locale_t :: ^__crt_locale_pointers;
_Mbstatet :: struct {
_Wchar : u64,
_Byte : u16,
_State : u16,
};
mbstate_t :: _Mbstatet;
time_t :: __time64_t;
rsize_t :: uint;
POINTER_64_INT :: u64;
INT8 :: i8;
PINT8 :: ^i8;
INT16 :: i16;
PINT16 :: ^i16;
INT32 :: i32;
PINT32 :: ^i32;
INT64 :: i64;
PINT64 :: ^i64;
UINT8 :: u8;
PUINT8 :: cstring;
UINT16 :: u16;
PUINT16 :: ^u16;
UINT32 :: u32;
PUINT32 :: ^u32;
UINT64 :: u64;
PUINT64 :: ^u64;
LONG32 :: i32;
PLONG32 :: ^i32;
ULONG32 :: u32;
PULONG32 :: ^u32;
DWORD32 :: u32;
PDWORD32 :: ^u32;
INT_PTR :: i32;
PINT_PTR :: ^i32;
UINT_PTR :: u32;
PUINT_PTR :: ^u32;
LONG_PTR :: i64;
PLONG_PTR :: ^i64;
ULONG_PTR :: u64;
PULONG_PTR :: ^u64;
UHALF_PTR :: u16;
PUHALF_PTR :: ^u16;
HALF_PTR :: i16;
PHALF_PTR :: ^i16;
SHANDLE_PTR :: i64;
HANDLE_PTR :: u64;
SIZE_T :: ULONG_PTR;
PSIZE_T :: ^ULONG_PTR;
SSIZE_T :: LONG_PTR;
PSSIZE_T :: ^LONG_PTR;
DWORD_PTR :: ULONG_PTR;
PDWORD_PTR :: ^ULONG_PTR;
LONG64 :: i64;
PLONG64 :: ^i64;
ULONG64 :: u64;
PULONG64 :: ^u64;
DWORD64 :: u64;
PDWORD64 :: ^u64;
KAFFINITY :: ULONG_PTR;
PKAFFINITY :: ^KAFFINITY;
PVOID :: rawptr;
PVOID64 :: rawptr;
CHAR :: u8;
SHORT :: i16;
LONG :: i64;
INT :: i32;
WCHAR :: u16;
PWCHAR :: ^WCHAR;
LPWCH :: ^WCHAR;
PWCH :: ^WCHAR;
LPCWCH :: ^WCHAR;
PCWCH :: ^WCHAR;
NWPSTR :: ^WCHAR;
LPWSTR :: ^WCHAR;
PWSTR :: ^WCHAR;
PZPWSTR :: ^PWSTR;
PCZPWSTR :: ^PWSTR;
LPUWSTR :: ^WCHAR;
PUWSTR :: ^WCHAR;
LPCWSTR :: ^WCHAR;
PCWSTR :: ^WCHAR;
PZPCWSTR :: ^PCWSTR;
PCZPCWSTR :: ^PCWSTR;
LPCUWSTR :: ^WCHAR;
PCUWSTR :: ^WCHAR;
PZZWSTR :: ^WCHAR;
PCZZWSTR :: ^WCHAR;
PUZZWSTR :: ^WCHAR;
PCUZZWSTR :: ^WCHAR;
PNZWCH :: ^WCHAR;
PCNZWCH :: ^WCHAR;
PUNZWCH :: ^WCHAR;
PCUNZWCH :: ^WCHAR;
LPCWCHAR :: ^WCHAR;
PCWCHAR :: ^WCHAR;
LPCUWCHAR :: ^WCHAR;
PCUWCHAR :: ^WCHAR;
UCSCHAR :: u64;
PUCSCHAR :: ^UCSCHAR;
PCUCSCHAR :: ^UCSCHAR;
PUCSSTR :: ^UCSCHAR;
PUUCSSTR :: ^UCSCHAR;
PCUCSSTR :: ^UCSCHAR;
PCUUCSSTR :: ^UCSCHAR;
PUUCSCHAR :: ^UCSCHAR;
PCUUCSCHAR :: ^UCSCHAR;
PCHAR :: ^CHAR;
LPCH :: ^CHAR;
PCH :: ^CHAR;
LPCCH :: ^CHAR;
PCCH :: ^CHAR;
NPSTR :: ^CHAR;
LPSTR :: ^CHAR;
PSTR :: ^CHAR;
PZPSTR :: ^PSTR;
PCZPSTR :: ^PSTR;
LPCSTR :: ^CHAR;
PCSTR :: ^CHAR;
PZPCSTR :: ^PCSTR;
PCZPCSTR :: ^PCSTR;
PZZSTR :: ^CHAR;
PCZZSTR :: ^CHAR;
PNZCH :: ^CHAR;
PCNZCH :: ^CHAR;
TCHAR :: u8;
PTCHAR :: cstring;
TBYTE :: u8;
PTBYTE :: cstring;
LPTCH :: LPCH;
PTCH :: LPCH;
LPCTCH :: LPCCH;
PCTCH :: LPCCH;
PTSTR :: LPSTR;
LPTSTR :: LPSTR;
PUTSTR :: LPSTR;
LPUTSTR :: LPSTR;
PCTSTR :: LPCSTR;
LPCTSTR :: LPCSTR;
PCUTSTR :: LPCSTR;
LPCUTSTR :: LPCSTR;
PZZTSTR :: PZZSTR;
PUZZTSTR :: PZZSTR;
PCZZTSTR :: PCZZSTR;
PCUZZTSTR :: PCZZSTR;
PZPTSTR :: PZPSTR;
PNZTCH :: PNZCH;
PUNZTCH :: PNZCH;
PCNZTCH :: PCNZCH;
PCUNZTCH :: PCNZCH;
PSHORT :: ^SHORT;
PLONG :: ^LONG;
PROCESSOR_NUMBER :: struct {
Group : u16,
Number : BYTE,
Reserved : BYTE,
};
PPROCESSOR_NUMBER :: ^struct {
Group : u16,
Number : BYTE,
Reserved : BYTE,
};
GROUP_AFFINITY :: struct {
Mask : KAFFINITY,
Group : u16,
Reserved : [3]u16,
};
PGROUP_AFFINITY :: ^struct {
Mask : KAFFINITY,
Group : u16,
Reserved : [3]u16,
};
HANDLE :: rawptr;
PHANDLE :: ^HANDLE;
FCHAR :: BYTE;
FSHORT :: u16;
FLONG :: u32;
HRESULT :: i64;
CCHAR :: u8;
LCID :: u32;
PLCID :: PDWORD;
LANGID :: u16;
COMPARTMENT_ID :: enum {
UNSPECIFIED_COMPARTMENT_ID = 0,
DEFAULT_COMPARTMENT_ID,
};
PCOMPARTMENT_ID :: ^enum {
UNSPECIFIED_COMPARTMENT_ID = 0,
DEFAULT_COMPARTMENT_ID,
};
FLOAT128 :: struct {
LowPart : i64,
HighPart : i64,
};
PFLOAT128 :: ^FLOAT128;
LONGLONG :: f64;
ULONGLONG :: f64;
PLONGLONG :: ^LONGLONG;
PULONGLONG :: ^ULONGLONG;
USN :: LONGLONG;
LARGE_INTEGER :: struct #raw_union {
s : struct {
LowPart : u32,
HighPart : LONG,
},
u : struct {
LowPart : u32,
HighPart : LONG,
},
QuadPart : LONGLONG,
};
PLARGE_INTEGER :: ^LARGE_INTEGER;
ULARGE_INTEGER :: struct #raw_union {
s : struct {
LowPart : u32,
HighPart : u32,
},
u : struct {
LowPart : u32,
HighPart : u32,
},
QuadPart : ULONGLONG,
};
PULARGE_INTEGER :: ^ULARGE_INTEGER;
RTL_REFERENCE_COUNT :: LONG_PTR;
PRTL_REFERENCE_COUNT :: ^LONG_PTR;
RTL_REFERENCE_COUNT32 :: LONG;
PRTL_REFERENCE_COUNT32 :: ^LONG;
LUID :: struct {
LowPart : u32,
HighPart : LONG,
};
PLUID :: ^struct {
LowPart : u32,
HighPart : LONG,
};
DWORDLONG :: ULONGLONG;
PDWORDLONG :: ^DWORDLONG;
BOOLEAN :: BYTE;
PBOOLEAN :: ^BOOLEAN;
LIST_ENTRY :: struct {
Flink : ^LIST_ENTRY,
Blink : ^LIST_ENTRY,
};
PLIST_ENTRY :: ^struct {
Flink : ^LIST_ENTRY,
Blink : ^LIST_ENTRY,
};
PRLIST_ENTRY :: ^struct {
Flink : ^LIST_ENTRY,
Blink : ^LIST_ENTRY,
};
SINGLE_LIST_ENTRY :: struct {
Next : ^SLIST_ENTRY,
};
PSINGLE_LIST_ENTRY :: ^struct {
Next : ^SLIST_ENTRY,
};
LIST_ENTRY32 :: struct {
Flink : u32,
Blink : u32,
};
PLIST_ENTRY32 :: ^LIST_ENTRY32;
LIST_ENTRY64 :: struct {
Flink : ULONGLONG,
Blink : ULONGLONG,
};
PLIST_ENTRY64 :: ^LIST_ENTRY64;
GUID :: struct {
Data1 : u64,
Data2 : u16,
Data3 : u16,
Data4 : [8]u8,
};
LPGUID :: ^GUID;
LPCGUID :: ^GUID;
IID :: GUID;
LPIID :: ^IID;
CLSID :: GUID;
LPCLSID :: ^CLSID;
FMTID :: GUID;
LPFMTID :: ^FMTID;
OBJECTID :: struct {
Lineage : GUID,
Uniquifier : u32,
};
EXCEPTION_ROUTINE :: #type (proc(ExceptionRecord : ^EXCEPTION_RECORD, EstablisherFrame : PVOID, ContextRecord : ^CONTEXT, DispatcherContext : PVOID) -> EXCEPTION_DISPOSITION);
PEXCEPTION_ROUTINE :: ^EXCEPTION_ROUTINE;
__C_ASSERT__ :: [(((LONG)((LONG_PTR)(&(((^struct {
x : u8,
test : LARGE_INTEGER,
})(0)) - > test)))) == 8) ? 1 : -1]u8;
KSPIN_LOCK :: ULONG_PTR;
PKSPIN_LOCK :: ^KSPIN_LOCK;
M128A :: struct {
Low : ULONGLONG,
High : LONGLONG,
};
PM128A :: ^struct {
Low : ULONGLONG,
High : LONGLONG,
};
XSAVE_FORMAT :: struct {
ControlWord : u16,
StatusWord : u16,
TagWord : BYTE,
Reserved1 : BYTE,
ErrorOpcode : u16,
ErrorOffset : u32,
ErrorSelector : u16,
Reserved2 : u16,
DataOffset : u32,
DataSelector : u16,
Reserved3 : u16,
MxCsr : u32,
MxCsr_Mask : u32,
FloatRegisters : [8]M128A,
XmmRegisters : [8]M128A,
Reserved4 : [224]BYTE,
};
PXSAVE_FORMAT :: ^struct {
ControlWord : u16,
StatusWord : u16,
TagWord : BYTE,
Reserved1 : BYTE,
ErrorOpcode : u16,
ErrorOffset : u32,
ErrorSelector : u16,
Reserved2 : u16,
DataOffset : u32,
DataSelector : u16,
Reserved3 : u16,
MxCsr : u32,
MxCsr_Mask : u32,
FloatRegisters : [8]M128A,
XmmRegisters : [8]M128A,
Reserved4 : [224]BYTE,
};
XSAVE_CET_U_FORMAT :: struct {
Ia32CetUMsr : DWORD64,
Ia32Pl3SspMsr : DWORD64,
};
PXSAVE_CET_U_FORMAT :: ^struct {
Ia32CetUMsr : DWORD64,
Ia32Pl3SspMsr : DWORD64,
};
XSAVE_AREA_HEADER :: struct {
Mask : DWORD64,
CompactionMask : DWORD64,
Reserved2 : [6]DWORD64,
};
PXSAVE_AREA_HEADER :: ^struct {
Mask : DWORD64,
CompactionMask : DWORD64,
Reserved2 : [6]DWORD64,
};
XSAVE_AREA :: struct {
LegacyState : XSAVE_FORMAT,
Header : XSAVE_AREA_HEADER,
};
PXSAVE_AREA :: ^struct {
LegacyState : XSAVE_FORMAT,
Header : XSAVE_AREA_HEADER,
};
XSTATE_CONTEXT :: struct {
Mask : DWORD64,
Length : u32,
Reserved1 : u32,
Area : PXSAVE_AREA,
Reserved2 : u32,
Buffer : PVOID,
Reserved3 : u32,
};
PXSTATE_CONTEXT :: ^struct {
Mask : DWORD64,
Length : u32,
Reserved1 : u32,
Area : PXSAVE_AREA,
Reserved2 : u32,
Buffer : PVOID,
Reserved3 : u32,
};
SCOPE_TABLE_AMD64 :: struct {
Count : u32,
ScopeRecord : [1]struct {
BeginAddress : u32,
EndAddress : u32,
HandlerAddress : u32,
JumpTarget : u32,
},
};
PSCOPE_TABLE_AMD64 :: ^struct {
Count : u32,
ScopeRecord : [1]struct {
BeginAddress : u32,
EndAddress : u32,
HandlerAddress : u32,
JumpTarget : u32,
},
};
SCOPE_TABLE_ARM :: struct {
Count : u32,
ScopeRecord : [1]struct {
BeginAddress : u32,
EndAddress : u32,
HandlerAddress : u32,
JumpTarget : u32,
},
};
PSCOPE_TABLE_ARM :: ^struct {
Count : u32,
ScopeRecord : [1]struct {
BeginAddress : u32,
EndAddress : u32,
HandlerAddress : u32,
JumpTarget : u32,
},
};
SCOPE_TABLE_ARM64 :: struct {
Count : u32,
ScopeRecord : [1]struct {
BeginAddress : u32,
EndAddress : u32,
HandlerAddress : u32,
JumpTarget : u32,
},
};
PSCOPE_TABLE_ARM64 :: ^struct {
Count : u32,
ScopeRecord : [1]struct {
BeginAddress : u32,
EndAddress : u32,
HandlerAddress : u32,
JumpTarget : u32,
},
};
KNONVOLATILE_CONTEXT_POINTERS_ARM64 :: struct {
X19 : PDWORD64,
X20 : PDWORD64,
X21 : PDWORD64,
X22 : PDWORD64,
X23 : PDWORD64,
X24 : PDWORD64,
X25 : PDWORD64,
X26 : PDWORD64,
X27 : PDWORD64,
X28 : PDWORD64,
Fp : PDWORD64,
Lr : PDWORD64,
D8 : PDWORD64,
D9 : PDWORD64,
D10 : PDWORD64,
D11 : PDWORD64,
D12 : PDWORD64,
D13 : PDWORD64,
D14 : PDWORD64,
D15 : PDWORD64,
};
PKNONVOLATILE_CONTEXT_POINTERS_ARM64 :: ^struct {
X19 : PDWORD64,
X20 : PDWORD64,
X21 : PDWORD64,
X22 : PDWORD64,
X23 : PDWORD64,
X24 : PDWORD64,
X25 : PDWORD64,
X26 : PDWORD64,
X27 : PDWORD64,
X28 : PDWORD64,
Fp : PDWORD64,
Lr : PDWORD64,
D8 : PDWORD64,
D9 : PDWORD64,
D10 : PDWORD64,
D11 : PDWORD64,
D12 : PDWORD64,
D13 : PDWORD64,
D14 : PDWORD64,
D15 : PDWORD64,
};
FLOATING_SAVE_AREA :: struct {
ControlWord : u32,
StatusWord : u32,
TagWord : u32,
ErrorOffset : u32,
ErrorSelector : u32,
DataOffset : u32,
DataSelector : u32,
RegisterArea : [80]BYTE,
Spare0 : u32,
};
PFLOATING_SAVE_AREA :: ^FLOATING_SAVE_AREA;
__C_ASSERT__ :: [(size_of(XSAVE_FORMAT) == 512) ? 1 : -1]u8;
CONTEXT :: struct {
ContextFlags : u32,
Dr0 : u32,
Dr1 : u32,
Dr2 : u32,
Dr3 : u32,
Dr6 : u32,
Dr7 : u32,
FloatSave : FLOATING_SAVE_AREA,
SegGs : u32,
SegFs : u32,
SegEs : u32,
SegDs : u32,
Edi : u32,
Esi : u32,
Ebx : u32,
Edx : u32,
Ecx : u32,
Eax : u32,
Ebp : u32,
Eip : u32,
SegCs : u32,
EFlags : u32,
Esp : u32,
SegSs : u32,
ExtendedRegisters : [512]BYTE,
};
PCONTEXT :: ^CONTEXT;
LDT_ENTRY :: struct {
LimitLow : u16,
BaseLow : u16,
HighWord : struct #raw_union {
Bytes : struct {
BaseMid : BYTE,
Flags1 : BYTE,
Flags2 : BYTE,
BaseHi : BYTE,
},
Bits : struct {
BaseMid : ,
Type : ,
Dpl : ,
Pres : ,
LimitHi : ,
Sys : ,
Reserved_0 : ,
Default_Big : ,
Granularity : ,
BaseHi : ,
},
},
};
PLDT_ENTRY :: ^struct {
LimitLow : u16,
BaseLow : u16,
HighWord : struct #raw_union {
Bytes : struct {
BaseMid : BYTE,
Flags1 : BYTE,
Flags2 : BYTE,
BaseHi : BYTE,
},
Bits : struct {
BaseMid : ,
Type : ,
Dpl : ,
Pres : ,
LimitHi : ,
Sys : ,
Reserved_0 : ,
Default_Big : ,
Granularity : ,
BaseHi : ,
},
},
};
WOW64_FLOATING_SAVE_AREA :: struct {
ControlWord : u32,
StatusWord : u32,
TagWord : u32,
ErrorOffset : u32,
ErrorSelector : u32,
DataOffset : u32,
DataSelector : u32,
RegisterArea : [80]BYTE,
Cr0NpxState : u32,
};
PWOW64_FLOATING_SAVE_AREA :: ^WOW64_FLOATING_SAVE_AREA;
WOW64_CONTEXT :: struct {
ContextFlags : u32,
Dr0 : u32,
Dr1 : u32,
Dr2 : u32,
Dr3 : u32,
Dr6 : u32,
Dr7 : u32,
FloatSave : WOW64_FLOATING_SAVE_AREA,
SegGs : u32,
SegFs : u32,
SegEs : u32,
SegDs : u32,
Edi : u32,
Esi : u32,
Ebx : u32,
Edx : u32,
Ecx : u32,
Eax : u32,
Ebp : u32,
Eip : u32,
SegCs : u32,
EFlags : u32,
Esp : u32,
SegSs : u32,
ExtendedRegisters : [512]BYTE,
};
PWOW64_CONTEXT :: ^WOW64_CONTEXT;
WOW64_LDT_ENTRY :: struct {
LimitLow : u16,
BaseLow : u16,
HighWord : struct #raw_union {
Bytes : struct {
BaseMid : BYTE,
Flags1 : BYTE,
Flags2 : BYTE,
BaseHi : BYTE,
},
Bits : struct {
BaseMid : ,
Type : ,
Dpl : ,
Pres : ,
LimitHi : ,
Sys : ,
Reserved_0 : ,
Default_Big : ,
Granularity : ,
BaseHi : ,
},
},
};
PWOW64_LDT_ENTRY :: ^struct {
LimitLow : u16,
BaseLow : u16,
HighWord : struct #raw_union {
Bytes : struct {
BaseMid : BYTE,
Flags1 : BYTE,
Flags2 : BYTE,
BaseHi : BYTE,
},
Bits : struct {
BaseMid : ,
Type : ,
Dpl : ,
Pres : ,
LimitHi : ,
Sys : ,
Reserved_0 : ,
Default_Big : ,
Granularity : ,
BaseHi : ,
},
},
};
WOW64_DESCRIPTOR_TABLE_ENTRY :: struct {
Selector : u32,
Descriptor : WOW64_LDT_ENTRY,
};
PWOW64_DESCRIPTOR_TABLE_ENTRY :: ^struct {
Selector : u32,
Descriptor : WOW64_LDT_ENTRY,
};
EXCEPTION_RECORD :: struct {
ExceptionCode : u32,
ExceptionFlags : u32,
ExceptionRecord : ^EXCEPTION_RECORD,
ExceptionAddress : PVOID,
NumberParameters : u32,
ExceptionInformation : [15]ULONG_PTR,
};
PEXCEPTION_RECORD :: ^EXCEPTION_RECORD;
EXCEPTION_RECORD32 :: struct {
ExceptionCode : u32,
ExceptionFlags : u32,
ExceptionRecord : u32,
ExceptionAddress : u32,
NumberParameters : u32,
ExceptionInformation : [15]u32,
};
PEXCEPTION_RECORD32 :: ^struct {
ExceptionCode : u32,
ExceptionFlags : u32,
ExceptionRecord : u32,
ExceptionAddress : u32,
NumberParameters : u32,
ExceptionInformation : [15]u32,
};
EXCEPTION_RECORD64 :: struct {
ExceptionCode : u32,
ExceptionFlags : u32,
ExceptionRecord : DWORD64,
ExceptionAddress : DWORD64,
NumberParameters : u32,
__unusedAlignment : u32,
ExceptionInformation : [15]DWORD64,
};
PEXCEPTION_RECORD64 :: ^struct {
ExceptionCode : u32,
ExceptionFlags : u32,
ExceptionRecord : DWORD64,
ExceptionAddress : DWORD64,
NumberParameters : u32,
__unusedAlignment : u32,
ExceptionInformation : [15]DWORD64,
};
EXCEPTION_POINTERS :: struct {
ExceptionRecord : PEXCEPTION_RECORD,
ContextRecord : PCONTEXT,
};
PEXCEPTION_POINTERS :: ^struct {
ExceptionRecord : PEXCEPTION_RECORD,
ContextRecord : PCONTEXT,
};
PACCESS_TOKEN :: PVOID;
PSECURITY_DESCRIPTOR :: PVOID;
PSID :: PVOID;
PCLAIMS_BLOB :: PVOID;
ACCESS_MASK :: u32;
PACCESS_MASK :: ^ACCESS_MASK;
GENERIC_MAPPING :: struct {
GenericRead : ACCESS_MASK,
GenericWrite : ACCESS_MASK,
GenericExecute : ACCESS_MASK,
GenericAll : ACCESS_MASK,
};
PGENERIC_MAPPING :: ^GENERIC_MAPPING;
LUID_AND_ATTRIBUTES :: struct {
Luid : LUID,
Attributes : u32,
};
PLUID_AND_ATTRIBUTES :: ^struct {
Luid : LUID,
Attributes : u32,
};
LUID_AND_ATTRIBUTES_ARRAY :: [1]LUID_AND_ATTRIBUTES;
PLUID_AND_ATTRIBUTES_ARRAY :: ^LUID_AND_ATTRIBUTES_ARRAY;
SID_IDENTIFIER_AUTHORITY :: struct {
Value : [6]BYTE,
};
PSID_IDENTIFIER_AUTHORITY :: ^struct {
Value : [6]BYTE,
};
SID :: struct {
Revision : BYTE,
SubAuthorityCount : BYTE,
IdentifierAuthority : SID_IDENTIFIER_AUTHORITY,
SubAuthority : [1]u32,
};
PISID :: ^struct {
Revision : BYTE,
SubAuthorityCount : BYTE,
IdentifierAuthority : SID_IDENTIFIER_AUTHORITY,
SubAuthority : [1]u32,
};
SE_SID :: struct #raw_union {
Sid : SID,
Buffer : [(size_of(SID) - size_of(DWORD) + ((15) * size_of(DWORD)))]BYTE,
};
PSE_SID :: ^struct #raw_union {
Sid : SID,
Buffer : [(size_of(SID) - size_of(DWORD) + ((15) * size_of(DWORD)))]BYTE,
};
SID_NAME_USE :: enum {
SidTypeUser = 1,
SidTypeGroup,
SidTypeDomain,
SidTypeAlias,
SidTypeWellKnownGroup,
SidTypeDeletedAccount,
SidTypeInvalid,
SidTypeUnknown,
SidTypeComputer,
SidTypeLabel,
SidTypeLogonSession,
};
PSID_NAME_USE :: ^enum {
SidTypeUser = 1,
SidTypeGroup,
SidTypeDomain,
SidTypeAlias,
SidTypeWellKnownGroup,
SidTypeDeletedAccount,
SidTypeInvalid,
SidTypeUnknown,
SidTypeComputer,
SidTypeLabel,
SidTypeLogonSession,
};
SID_AND_ATTRIBUTES :: struct {
Sid : PSID,
Attributes : u32,
};
PSID_AND_ATTRIBUTES :: ^struct {
Sid : PSID,
Attributes : u32,
};
SID_AND_ATTRIBUTES_ARRAY :: [1]SID_AND_ATTRIBUTES;
PSID_AND_ATTRIBUTES_ARRAY :: ^SID_AND_ATTRIBUTES_ARRAY;
SID_HASH_ENTRY :: ULONG_PTR;
PSID_HASH_ENTRY :: ^ULONG_PTR;
SID_AND_ATTRIBUTES_HASH :: struct {
SidCount : u32,
SidAttr : PSID_AND_ATTRIBUTES,
Hash : [32]SID_HASH_ENTRY,
};
PSID_AND_ATTRIBUTES_HASH :: ^struct {
SidCount : u32,
SidAttr : PSID_AND_ATTRIBUTES,
Hash : [32]SID_HASH_ENTRY,
};
WELL_KNOWN_SID_TYPE :: enum {
WinNullSid = 0,
WinWorldSid = 1,
WinLocalSid = 2,
WinCreatorOwnerSid = 3,
WinCreatorGroupSid = 4,
WinCreatorOwnerServerSid = 5,
WinCreatorGroupServerSid = 6,
WinNtAuthoritySid = 7,
WinDialupSid = 8,
WinNetworkSid = 9,
WinBatchSid = 10,
WinInteractiveSid = 11,
WinServiceSid = 12,
WinAnonymousSid = 13,
WinProxySid = 14,
WinEnterpriseControllersSid = 15,
WinSelfSid = 16,
WinAuthenticatedUserSid = 17,
WinRestrictedCodeSid = 18,
WinTerminalServerSid = 19,
WinRemoteLogonIdSid = 20,
WinLogonIdsSid = 21,
WinLocalSystemSid = 22,
WinLocalServiceSid = 23,
WinNetworkServiceSid = 24,
WinBuiltinDomainSid = 25,
WinBuiltinAdministratorsSid = 26,
WinBuiltinUsersSid = 27,
WinBuiltinGuestsSid = 28,
WinBuiltinPowerUsersSid = 29,
WinBuiltinAccountOperatorsSid = 30,
WinBuiltinSystemOperatorsSid = 31,
WinBuiltinPrintOperatorsSid = 32,
WinBuiltinBackupOperatorsSid = 33,
WinBuiltinReplicatorSid = 34,
WinBuiltinPreWindows2000CompatibleAccessSid = 35,
WinBuiltinRemoteDesktopUsersSid = 36,
WinBuiltinNetworkConfigurationOperatorsSid = 37,
WinAccountAdministratorSid = 38,
WinAccountGuestSid = 39,
WinAccountKrbtgtSid = 40,
WinAccountDomainAdminsSid = 41,
WinAccountDomainUsersSid = 42,
WinAccountDomainGuestsSid = 43,
WinAccountComputersSid = 44,
WinAccountControllersSid = 45,
WinAccountCertAdminsSid = 46,
WinAccountSchemaAdminsSid = 47,
WinAccountEnterpriseAdminsSid = 48,
WinAccountPolicyAdminsSid = 49,
WinAccountRasAndIasServersSid = 50,
WinNTLMAuthenticationSid = 51,
WinDigestAuthenticationSid = 52,
WinSChannelAuthenticationSid = 53,
WinThisOrganizationSid = 54,
WinOtherOrganizationSid = 55,
WinBuiltinIncomingForestTrustBuildersSid = 56,
WinBuiltinPerfMonitoringUsersSid = 57,
WinBuiltinPerfLoggingUsersSid = 58,
WinBuiltinAuthorizationAccessSid = 59,
WinBuiltinTerminalServerLicenseServersSid = 60,
WinBuiltinDCOMUsersSid = 61,
WinBuiltinIUsersSid = 62,
WinIUserSid = 63,
WinBuiltinCryptoOperatorsSid = 64,
WinUntrustedLabelSid = 65,
WinLowLabelSid = 66,
WinMediumLabelSid = 67,
WinHighLabelSid = 68,
WinSystemLabelSid = 69,
WinWriteRestrictedCodeSid = 70,
WinCreatorOwnerRightsSid = 71,
WinCacheablePrincipalsGroupSid = 72,
WinNonCacheablePrincipalsGroupSid = 73,
WinEnterpriseReadonlyControllersSid = 74,
WinAccountReadonlyControllersSid = 75,
WinBuiltinEventLogReadersGroup = 76,
WinNewEnterpriseReadonlyControllersSid = 77,
WinBuiltinCertSvcDComAccessGroup = 78,
WinMediumPlusLabelSid = 79,
WinLocalLogonSid = 80,
WinConsoleLogonSid = 81,
WinThisOrganizationCertificateSid = 82,
WinApplicationPackageAuthoritySid = 83,
WinBuiltinAnyPackageSid = 84,
WinCapabilityInternetClientSid = 85,
WinCapabilityInternetClientServerSid = 86,
WinCapabilityPrivateNetworkClientServerSid = 87,
WinCapabilityPicturesLibrarySid = 88,
WinCapabilityVideosLibrarySid = 89,
WinCapabilityMusicLibrarySid = 90,
WinCapabilityDocumentsLibrarySid = 91,
WinCapabilitySharedUserCertificatesSid = 92,
WinCapabilityEnterpriseAuthenticationSid = 93,
WinCapabilityRemovableStorageSid = 94,
WinBuiltinRDSRemoteAccessServersSid = 95,
WinBuiltinRDSEndpointServersSid = 96,
WinBuiltinRDSManagementServersSid = 97,
WinUserModeDriversSid = 98,
WinBuiltinHyperVAdminsSid = 99,
WinAccountCloneableControllersSid = 100,
WinBuiltinAccessControlAssistanceOperatorsSid = 101,
WinBuiltinRemoteManagementUsersSid = 102,
WinAuthenticationAuthorityAssertedSid = 103,
WinAuthenticationServiceAssertedSid = 104,
WinLocalAccountSid = 105,
WinLocalAccountAndAdministratorSid = 106,
WinAccountProtectedUsersSid = 107,
WinCapabilityAppointmentsSid = 108,
WinCapabilityContactsSid = 109,
WinAccountDefaultSystemManagedSid = 110,
WinBuiltinDefaultSystemManagedGroupSid = 111,
WinBuiltinStorageReplicaAdminsSid = 112,
WinAccountKeyAdminsSid = 113,
WinAccountEnterpriseKeyAdminsSid = 114,
WinAuthenticationKeyTrustSid = 115,
WinAuthenticationKeyPropertyMFASid = 116,
WinAuthenticationKeyPropertyAttestationSid = 117,
WinAuthenticationFreshKeyAuthSid = 118,
WinBuiltinDeviceOwnersSid = 119,
};
ACL :: struct {
AclRevision : BYTE,
Sbz1 : BYTE,
AclSize : u16,
AceCount : u16,
Sbz2 : u16,
};
PACL :: ^ACL;
ACE_HEADER :: struct {
AceType : BYTE,
AceFlags : BYTE,
AceSize : u16,
};
PACE_HEADER :: ^ACE_HEADER;
ACCESS_ALLOWED_ACE :: struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
SidStart : u32,
};
PACCESS_ALLOWED_ACE :: ^ACCESS_ALLOWED_ACE;
ACCESS_DENIED_ACE :: struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
SidStart : u32,
};
PACCESS_DENIED_ACE :: ^ACCESS_DENIED_ACE;
SYSTEM_AUDIT_ACE :: struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
SidStart : u32,
};
PSYSTEM_AUDIT_ACE :: ^SYSTEM_AUDIT_ACE;
SYSTEM_ALARM_ACE :: struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
SidStart : u32,
};
PSYSTEM_ALARM_ACE :: ^SYSTEM_ALARM_ACE;
SYSTEM_RESOURCE_ATTRIBUTE_ACE :: struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
SidStart : u32,
};
PSYSTEM_RESOURCE_ATTRIBUTE_ACE :: ^struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
SidStart : u32,
};
SYSTEM_SCOPED_POLICY_ID_ACE :: struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
SidStart : u32,
};
PSYSTEM_SCOPED_POLICY_ID_ACE :: ^struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
SidStart : u32,
};
SYSTEM_MANDATORY_LABEL_ACE :: struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
SidStart : u32,
};
PSYSTEM_MANDATORY_LABEL_ACE :: ^struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
SidStart : u32,
};
SYSTEM_PROCESS_TRUST_LABEL_ACE :: struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
SidStart : u32,
};
PSYSTEM_PROCESS_TRUST_LABEL_ACE :: ^struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
SidStart : u32,
};
SYSTEM_ACCESS_FILTER_ACE :: struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
SidStart : u32,
};
PSYSTEM_ACCESS_FILTER_ACE :: ^struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
SidStart : u32,
};
ACCESS_ALLOWED_OBJECT_ACE :: struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
Flags : u32,
ObjectType : GUID,
InheritedObjectType : GUID,
SidStart : u32,
};
PACCESS_ALLOWED_OBJECT_ACE :: ^struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
Flags : u32,
ObjectType : GUID,
InheritedObjectType : GUID,
SidStart : u32,
};
ACCESS_DENIED_OBJECT_ACE :: struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
Flags : u32,
ObjectType : GUID,
InheritedObjectType : GUID,
SidStart : u32,
};
PACCESS_DENIED_OBJECT_ACE :: ^struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
Flags : u32,
ObjectType : GUID,
InheritedObjectType : GUID,
SidStart : u32,
};
SYSTEM_AUDIT_OBJECT_ACE :: struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
Flags : u32,
ObjectType : GUID,
InheritedObjectType : GUID,
SidStart : u32,
};
PSYSTEM_AUDIT_OBJECT_ACE :: ^struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
Flags : u32,
ObjectType : GUID,
InheritedObjectType : GUID,
SidStart : u32,
};
SYSTEM_ALARM_OBJECT_ACE :: struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
Flags : u32,
ObjectType : GUID,
InheritedObjectType : GUID,
SidStart : u32,
};
PSYSTEM_ALARM_OBJECT_ACE :: ^struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
Flags : u32,
ObjectType : GUID,
InheritedObjectType : GUID,
SidStart : u32,
};
ACCESS_ALLOWED_CALLBACK_ACE :: struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
SidStart : u32,
};
PACCESS_ALLOWED_CALLBACK_ACE :: ^struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
SidStart : u32,
};
ACCESS_DENIED_CALLBACK_ACE :: struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
SidStart : u32,
};
PACCESS_DENIED_CALLBACK_ACE :: ^struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
SidStart : u32,
};
SYSTEM_AUDIT_CALLBACK_ACE :: struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
SidStart : u32,
};
PSYSTEM_AUDIT_CALLBACK_ACE :: ^struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
SidStart : u32,
};
SYSTEM_ALARM_CALLBACK_ACE :: struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
SidStart : u32,
};
PSYSTEM_ALARM_CALLBACK_ACE :: ^struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
SidStart : u32,
};
ACCESS_ALLOWED_CALLBACK_OBJECT_ACE :: struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
Flags : u32,
ObjectType : GUID,
InheritedObjectType : GUID,
SidStart : u32,
};
PACCESS_ALLOWED_CALLBACK_OBJECT_ACE :: ^struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
Flags : u32,
ObjectType : GUID,
InheritedObjectType : GUID,
SidStart : u32,
};
ACCESS_DENIED_CALLBACK_OBJECT_ACE :: struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
Flags : u32,
ObjectType : GUID,
InheritedObjectType : GUID,
SidStart : u32,
};
PACCESS_DENIED_CALLBACK_OBJECT_ACE :: ^struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
Flags : u32,
ObjectType : GUID,
InheritedObjectType : GUID,
SidStart : u32,
};
SYSTEM_AUDIT_CALLBACK_OBJECT_ACE :: struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
Flags : u32,
ObjectType : GUID,
InheritedObjectType : GUID,
SidStart : u32,
};
PSYSTEM_AUDIT_CALLBACK_OBJECT_ACE :: ^struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
Flags : u32,
ObjectType : GUID,
InheritedObjectType : GUID,
SidStart : u32,
};
SYSTEM_ALARM_CALLBACK_OBJECT_ACE :: struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
Flags : u32,
ObjectType : GUID,
InheritedObjectType : GUID,
SidStart : u32,
};
PSYSTEM_ALARM_CALLBACK_OBJECT_ACE :: ^struct {
Header : ACE_HEADER,
Mask : ACCESS_MASK,
Flags : u32,
ObjectType : GUID,
InheritedObjectType : GUID,
SidStart : u32,
};
ACL_INFORMATION_CLASS :: enum {
AclRevisionInformation = 1,
AclSizeInformation,
};
ACL_REVISION_INFORMATION :: struct {
AclRevision : u32,
};
PACL_REVISION_INFORMATION :: ^ACL_REVISION_INFORMATION;
ACL_SIZE_INFORMATION :: struct {
AceCount : u32,
AclBytesInUse : u32,
AclBytesFree : u32,
};
PACL_SIZE_INFORMATION :: ^ACL_SIZE_INFORMATION;
SECURITY_DESCRIPTOR_CONTROL :: u16;
PSECURITY_DESCRIPTOR_CONTROL :: ^u16;
SECURITY_DESCRIPTOR_RELATIVE :: struct {
Revision : BYTE,
Sbz1 : BYTE,
Control : SECURITY_DESCRIPTOR_CONTROL,
Owner : u32,
Group : u32,
Sacl : u32,
Dacl : u32,
};
PISECURITY_DESCRIPTOR_RELATIVE :: ^struct {
Revision : BYTE,
Sbz1 : BYTE,
Control : SECURITY_DESCRIPTOR_CONTROL,
Owner : u32,
Group : u32,
Sacl : u32,
Dacl : u32,
};
SECURITY_DESCRIPTOR :: struct {
Revision : BYTE,
Sbz1 : BYTE,
Control : SECURITY_DESCRIPTOR_CONTROL,
Owner : PSID,
Group : PSID,
Sacl : PACL,
Dacl : PACL,
};
PISECURITY_DESCRIPTOR :: ^struct {
Revision : BYTE,
Sbz1 : BYTE,
Control : SECURITY_DESCRIPTOR_CONTROL,
Owner : PSID,
Group : PSID,
Sacl : PACL,
Dacl : PACL,
};
SECURITY_OBJECT_AI_PARAMS :: struct {
Size : u32,
ConstraintMask : u32,
};
PSECURITY_OBJECT_AI_PARAMS :: ^struct {
Size : u32,
ConstraintMask : u32,
};
OBJECT_TYPE_LIST :: struct {
Level : u16,
Sbz : u16,
ObjectType : ^GUID,
};
POBJECT_TYPE_LIST :: ^struct {
Level : u16,
Sbz : u16,
ObjectType : ^GUID,
};
AUDIT_EVENT_TYPE :: enum {
AuditEventObjectAccess,
AuditEventDirectoryServiceAccess,
};
PAUDIT_EVENT_TYPE :: ^enum {
AuditEventObjectAccess,
AuditEventDirectoryServiceAccess,
};
PRIVILEGE_SET :: struct {
PrivilegeCount : u32,
Control : u32,
Privilege : [1]LUID_AND_ATTRIBUTES,
};
PPRIVILEGE_SET :: ^struct {
PrivilegeCount : u32,
Control : u32,
Privilege : [1]LUID_AND_ATTRIBUTES,
};
ACCESS_REASON_TYPE :: enum {
AccessReasonNone = 0x00000000,
AccessReasonAllowedAce = 0x00010000,
AccessReasonDeniedAce = 0x00020000,
AccessReasonAllowedParentAce = 0x00030000,
AccessReasonDeniedParentAce = 0x00040000,
AccessReasonNotGrantedByCape = 0x00050000,
AccessReasonNotGrantedByParentCape = 0x00060000,
AccessReasonNotGrantedToAppContainer = 0x00070000,
AccessReasonMissingPrivilege = 0x00100000,
AccessReasonFromPrivilege = 0x00200000,
AccessReasonIntegrityLevel = 0x00300000,
AccessReasonOwnership = 0x00400000,
AccessReasonNullDacl = 0x00500000,
AccessReasonEmptyDacl = 0x00600000,
AccessReasonNoSD = 0x00700000,
AccessReasonNoGrant = 0x00800000,
AccessReasonTrustLabel = 0x00900000,
AccessReasonFilterAce = 0x00a00000,
};
ACCESS_REASON :: u32;
ACCESS_REASONS :: struct {
Data : [32]ACCESS_REASON,
};
PACCESS_REASONS :: ^struct {
Data : [32]ACCESS_REASON,
};
SE_SECURITY_DESCRIPTOR :: struct {
Size : u32,
Flags : u32,
SecurityDescriptor : PSECURITY_DESCRIPTOR,
};
PSE_SECURITY_DESCRIPTOR :: ^struct {
Size : u32,
Flags : u32,
SecurityDescriptor : PSECURITY_DESCRIPTOR,
};
SE_ACCESS_REQUEST :: struct {
Size : u32,
SeSecurityDescriptor : PSE_SECURITY_DESCRIPTOR,
DesiredAccess : ACCESS_MASK,
PreviouslyGrantedAccess : ACCESS_MASK,
PrincipalSelfSid : PSID,
GenericMapping : PGENERIC_MAPPING,
ObjectTypeListCount : u32,
ObjectTypeList : POBJECT_TYPE_LIST,
};
PSE_ACCESS_REQUEST :: ^struct {
Size : u32,
SeSecurityDescriptor : PSE_SECURITY_DESCRIPTOR,
DesiredAccess : ACCESS_MASK,
PreviouslyGrantedAccess : ACCESS_MASK,
PrincipalSelfSid : PSID,
GenericMapping : PGENERIC_MAPPING,
ObjectTypeListCount : u32,
ObjectTypeList : POBJECT_TYPE_LIST,
};
SE_ACCESS_REPLY :: struct {
Size : u32,
ResultListCount : u32,
GrantedAccess : PACCESS_MASK,
AccessStatus : PDWORD,
AccessReason : PACCESS_REASONS,
Privileges : ^PPRIVILEGE_SET,
};
PSE_ACCESS_REPLY :: ^struct {
Size : u32,
ResultListCount : u32,
GrantedAccess : PACCESS_MASK,
AccessStatus : PDWORD,
AccessReason : PACCESS_REASONS,
Privileges : ^PPRIVILEGE_SET,
};
SECURITY_IMPERSONATION_LEVEL :: enum {
SecurityAnonymous,
SecurityIdentification,
SecurityImpersonation,
SecurityDelegation,
};
PSECURITY_IMPERSONATION_LEVEL :: ^enum {
SecurityAnonymous,
SecurityIdentification,
SecurityImpersonation,
SecurityDelegation,
};
TOKEN_TYPE :: enum {
TokenPrimary = 1,
TokenImpersonation,
};
PTOKEN_TYPE :: ^TOKEN_TYPE;
TOKEN_ELEVATION_TYPE :: enum {
TokenElevationTypeDefault = 1,
TokenElevationTypeFull,
TokenElevationTypeLimited,
};
PTOKEN_ELEVATION_TYPE :: ^enum {
TokenElevationTypeDefault = 1,
TokenElevationTypeFull,
TokenElevationTypeLimited,
};
TOKEN_INFORMATION_CLASS :: enum {
TokenUser = 1,
TokenGroups,
TokenPrivileges,
TokenOwner,
TokenPrimaryGroup,
TokenDefaultDacl,
TokenSource,
TokenType,
TokenImpersonationLevel,
TokenStatistics,
TokenRestrictedSids,
TokenSessionId,
TokenGroupsAndPrivileges,
TokenSessionReference,
TokenSandBoxInert,
TokenAuditPolicy,
TokenOrigin,
TokenElevationType,
TokenLinkedToken,
TokenElevation,
TokenHasRestrictions,
TokenAccessInformation,
TokenVirtualizationAllowed,
TokenVirtualizationEnabled,
TokenIntegrityLevel,
TokenUIAccess,
TokenMandatoryPolicy,
TokenLogonSid,
TokenIsAppContainer,
TokenCapabilities,
TokenAppContainerSid,
TokenAppContainerNumber,
TokenUserClaimAttributes,
TokenDeviceClaimAttributes,
TokenRestrictedUserClaimAttributes,
TokenRestrictedDeviceClaimAttributes,
TokenDeviceGroups,
TokenRestrictedDeviceGroups,
TokenSecurityAttributes,
TokenIsRestricted,
TokenProcessTrustLevel,
TokenPrivateNameSpace,
TokenSingletonAttributes,
TokenBnoIsolation,
TokenChildProcessFlags,
TokenIsLessPrivilegedAppContainer,
TokenIsSandboxed,
TokenOriginatingProcessTrustLevel,
MaxTokenInfoClass,
};
PTOKEN_INFORMATION_CLASS :: ^enum {
TokenUser = 1,
TokenGroups,
TokenPrivileges,
TokenOwner,
TokenPrimaryGroup,
TokenDefaultDacl,
TokenSource,
TokenType,
TokenImpersonationLevel,
TokenStatistics,
TokenRestrictedSids,
TokenSessionId,
TokenGroupsAndPrivileges,
TokenSessionReference,
TokenSandBoxInert,
TokenAuditPolicy,
TokenOrigin,
TokenElevationType,
TokenLinkedToken,
TokenElevation,
TokenHasRestrictions,
TokenAccessInformation,
TokenVirtualizationAllowed,
TokenVirtualizationEnabled,
TokenIntegrityLevel,
TokenUIAccess,
TokenMandatoryPolicy,
TokenLogonSid,
TokenIsAppContainer,
TokenCapabilities,
TokenAppContainerSid,
TokenAppContainerNumber,
TokenUserClaimAttributes,
TokenDeviceClaimAttributes,
TokenRestrictedUserClaimAttributes,
TokenRestrictedDeviceClaimAttributes,
TokenDeviceGroups,
TokenRestrictedDeviceGroups,
TokenSecurityAttributes,
TokenIsRestricted,
TokenProcessTrustLevel,
TokenPrivateNameSpace,
TokenSingletonAttributes,
TokenBnoIsolation,
TokenChildProcessFlags,
TokenIsLessPrivilegedAppContainer,
TokenIsSandboxed,
TokenOriginatingProcessTrustLevel,
MaxTokenInfoClass,
};
TOKEN_USER :: struct {
User : SID_AND_ATTRIBUTES,
};
PTOKEN_USER :: ^struct {
User : SID_AND_ATTRIBUTES,
};
SE_TOKEN_USER :: struct {
u : struct #raw_union {
TokenUser : TOKEN_USER,
User : SID_AND_ATTRIBUTES,
},
u2 : struct #raw_union {
Sid : SID,
Buffer : [(size_of(SID) - size_of(DWORD) + ((15) * size_of(DWORD)))]BYTE,
},
};
PSE_TOKEN_USER :: struct {
u : struct #raw_union {
TokenUser : TOKEN_USER,
User : SID_AND_ATTRIBUTES,
},
u2 : struct #raw_union {
Sid : SID,
Buffer : [(size_of(SID) - size_of(DWORD) + ((15) * size_of(DWORD)))]BYTE,
},
};
TOKEN_GROUPS :: struct {
GroupCount : u32,
Groups : [1]SID_AND_ATTRIBUTES,
};
PTOKEN_GROUPS :: ^struct {
GroupCount : u32,
Groups : [1]SID_AND_ATTRIBUTES,
};
TOKEN_PRIVILEGES :: struct {
PrivilegeCount : u32,
Privileges : [1]LUID_AND_ATTRIBUTES,
};
PTOKEN_PRIVILEGES :: ^struct {
PrivilegeCount : u32,
Privileges : [1]LUID_AND_ATTRIBUTES,
};
TOKEN_OWNER :: struct {
Owner : PSID,
};
PTOKEN_OWNER :: ^struct {
Owner : PSID,
};
TOKEN_PRIMARY_GROUP :: struct {
PrimaryGroup : PSID,
};
PTOKEN_PRIMARY_GROUP :: ^struct {
PrimaryGroup : PSID,
};
TOKEN_DEFAULT_DACL :: struct {
DefaultDacl : PACL,
};
PTOKEN_DEFAULT_DACL :: ^struct {
DefaultDacl : PACL,
};
TOKEN_USER_CLAIMS :: struct {
UserClaims : PCLAIMS_BLOB,
};
PTOKEN_USER_CLAIMS :: ^struct {
UserClaims : PCLAIMS_BLOB,
};
TOKEN_DEVICE_CLAIMS :: struct {
DeviceClaims : PCLAIMS_BLOB,
};
PTOKEN_DEVICE_CLAIMS :: ^struct {
DeviceClaims : PCLAIMS_BLOB,
};
TOKEN_GROUPS_AND_PRIVILEGES :: struct {
SidCount : u32,
SidLength : u32,
Sids : PSID_AND_ATTRIBUTES,
RestrictedSidCount : u32,
RestrictedSidLength : u32,
RestrictedSids : PSID_AND_ATTRIBUTES,
PrivilegeCount : u32,
PrivilegeLength : u32,
Privileges : PLUID_AND_ATTRIBUTES,
AuthenticationId : LUID,
};
PTOKEN_GROUPS_AND_PRIVILEGES :: ^struct {
SidCount : u32,
SidLength : u32,
Sids : PSID_AND_ATTRIBUTES,
RestrictedSidCount : u32,
RestrictedSidLength : u32,
RestrictedSids : PSID_AND_ATTRIBUTES,
PrivilegeCount : u32,
PrivilegeLength : u32,
Privileges : PLUID_AND_ATTRIBUTES,
AuthenticationId : LUID,
};
TOKEN_LINKED_TOKEN :: struct {
LinkedToken : HANDLE,
};
PTOKEN_LINKED_TOKEN :: ^struct {
LinkedToken : HANDLE,
};
TOKEN_ELEVATION :: struct {
TokenIsElevated : u32,
};
PTOKEN_ELEVATION :: ^struct {
TokenIsElevated : u32,
};
TOKEN_MANDATORY_LABEL :: struct {
Label : SID_AND_ATTRIBUTES,
};
PTOKEN_MANDATORY_LABEL :: ^struct {
Label : SID_AND_ATTRIBUTES,
};
TOKEN_MANDATORY_POLICY :: struct {
Policy : u32,
};
PTOKEN_MANDATORY_POLICY :: ^struct {
Policy : u32,
};
PSECURITY_ATTRIBUTES_OPAQUE :: PVOID;
TOKEN_ACCESS_INFORMATION :: struct {
SidHash : PSID_AND_ATTRIBUTES_HASH,
RestrictedSidHash : PSID_AND_ATTRIBUTES_HASH,
Privileges : PTOKEN_PRIVILEGES,
AuthenticationId : LUID,
TokenType : TOKEN_TYPE,
ImpersonationLevel : SECURITY_IMPERSONATION_LEVEL,
MandatoryPolicy : TOKEN_MANDATORY_POLICY,
Flags : u32,
AppContainerNumber : u32,
PackageSid : PSID,
CapabilitiesHash : PSID_AND_ATTRIBUTES_HASH,
TrustLevelSid : PSID,
SecurityAttributes : PSECURITY_ATTRIBUTES_OPAQUE,
};
PTOKEN_ACCESS_INFORMATION :: ^struct {
SidHash : PSID_AND_ATTRIBUTES_HASH,
RestrictedSidHash : PSID_AND_ATTRIBUTES_HASH,
Privileges : PTOKEN_PRIVILEGES,
AuthenticationId : LUID,
TokenType : TOKEN_TYPE,
ImpersonationLevel : SECURITY_IMPERSONATION_LEVEL,
MandatoryPolicy : TOKEN_MANDATORY_POLICY,
Flags : u32,
AppContainerNumber : u32,
PackageSid : PSID,
CapabilitiesHash : PSID_AND_ATTRIBUTES_HASH,
TrustLevelSid : PSID,
SecurityAttributes : PSECURITY_ATTRIBUTES_OPAQUE,
};
TOKEN_AUDIT_POLICY :: struct {
PerUserPolicy : [(((59)) >> 1) + 1]BYTE,
};
PTOKEN_AUDIT_POLICY :: ^struct {
PerUserPolicy : [(((59)) >> 1) + 1]BYTE,
};
TOKEN_SOURCE :: struct {
SourceName : [8]CHAR,
SourceIdentifier : LUID,
};
PTOKEN_SOURCE :: ^struct {
SourceName : [8]CHAR,
SourceIdentifier : LUID,
};
TOKEN_STATISTICS :: struct {
TokenId : LUID,
AuthenticationId : LUID,
ExpirationTime : LARGE_INTEGER,
TokenType : TOKEN_TYPE,
ImpersonationLevel : SECURITY_IMPERSONATION_LEVEL,
DynamicCharged : u32,
DynamicAvailable : u32,
GroupCount : u32,
PrivilegeCount : u32,
ModifiedId : LUID,
};
PTOKEN_STATISTICS :: ^struct {
TokenId : LUID,
AuthenticationId : LUID,
ExpirationTime : LARGE_INTEGER,
TokenType : TOKEN_TYPE,
ImpersonationLevel : SECURITY_IMPERSONATION_LEVEL,
DynamicCharged : u32,
DynamicAvailable : u32,
GroupCount : u32,
PrivilegeCount : u32,
ModifiedId : LUID,
};
TOKEN_CONTROL :: struct {
TokenId : LUID,
AuthenticationId : LUID,
ModifiedId : LUID,
TokenSource : TOKEN_SOURCE,
};
PTOKEN_CONTROL :: ^struct {
TokenId : LUID,
AuthenticationId : LUID,
ModifiedId : LUID,
TokenSource : TOKEN_SOURCE,
};
TOKEN_ORIGIN :: struct {
OriginatingLogonSession : LUID,
};
PTOKEN_ORIGIN :: ^struct {
OriginatingLogonSession : LUID,
};
MANDATORY_LEVEL :: enum {
MandatoryLevelUntrusted = 0,
MandatoryLevelLow,
MandatoryLevelMedium,
MandatoryLevelHigh,
MandatoryLevelSystem,
MandatoryLevelSecureProcess,
MandatoryLevelCount,
};
PMANDATORY_LEVEL :: ^enum {
MandatoryLevelUntrusted = 0,
MandatoryLevelLow,
MandatoryLevelMedium,
MandatoryLevelHigh,
MandatoryLevelSystem,
MandatoryLevelSecureProcess,
MandatoryLevelCount,
};
TOKEN_APPCONTAINER_INFORMATION :: struct {
TokenAppContainer : PSID,
};
PTOKEN_APPCONTAINER_INFORMATION :: ^struct {
TokenAppContainer : PSID,
};
TOKEN_SID_INFORMATION :: struct {
Sid : PSID,
};
PTOKEN_SID_INFORMATION :: ^struct {
Sid : PSID,
};
TOKEN_BNO_ISOLATION_INFORMATION :: struct {
IsolationPrefix : PWSTR,
IsolationEnabled : BOOLEAN,
};
PTOKEN_BNO_ISOLATION_INFORMATION :: ^struct {
IsolationPrefix : PWSTR,
IsolationEnabled : BOOLEAN,
};
CLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE :: struct {
Version : DWORD64,
Name : PWSTR,
};
PCLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE :: ^struct {
Version : DWORD64,
Name : PWSTR,
};
CLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE :: struct {
pValue : PVOID,
ValueLength : u32,
};
PCLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE :: ^struct {
pValue : PVOID,
ValueLength : u32,
};
CLAIM_SECURITY_ATTRIBUTE_V1 :: struct {
Name : PWSTR,
ValueType : u16,
Reserved : u16,
Flags : u32,
ValueCount : u32,
Values : struct #raw_union {
pInt64 : PLONG64,
pUint64 : PDWORD64,
ppString : ^PWSTR,
pFqbn : PCLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE,
pOctetString : PCLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE,
},
};
PCLAIM_SECURITY_ATTRIBUTE_V1 :: ^struct {
Name : PWSTR,
ValueType : u16,
Reserved : u16,
Flags : u32,
ValueCount : u32,
Values : struct #raw_union {
pInt64 : PLONG64,
pUint64 : PDWORD64,
ppString : ^PWSTR,
pFqbn : PCLAIM_SECURITY_ATTRIBUTE_FQBN_VALUE,
pOctetString : PCLAIM_SECURITY_ATTRIBUTE_OCTET_STRING_VALUE,
},
};
CLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1 :: struct {
Name : u32,
ValueType : u16,
Reserved : u16,
Flags : u32,
ValueCount : u32,
Values : struct #raw_union {
pInt64 : [1]u32,
pUint64 : [1]u32,
ppString : [1]u32,
pFqbn : [1]u32,
pOctetString : [1]u32,
},
};
PCLAIM_SECURITY_ATTRIBUTE_RELATIVE_V1 :: ^struct {
Name : u32,
ValueType : u16,
Reserved : u16,
Flags : u32,
ValueCount : u32,
Values : struct #raw_union {
pInt64 : [1]u32,
pUint64 : [1]u32,
ppString : [1]u32,
pFqbn : [1]u32,
pOctetString : [1]u32,
},
};
CLAIM_SECURITY_ATTRIBUTES_INFORMATION :: struct {
Version : u16,
Reserved : u16,
AttributeCount : u32,
Attribute : struct #raw_union {
pAttributeV1 : PCLAIM_SECURITY_ATTRIBUTE_V1,
},
};
PCLAIM_SECURITY_ATTRIBUTES_INFORMATION :: ^struct {
Version : u16,
Reserved : u16,
AttributeCount : u32,
Attribute : struct #raw_union {
pAttributeV1 : PCLAIM_SECURITY_ATTRIBUTE_V1,
},
};
SECURITY_CONTEXT_TRACKING_MODE :: BOOLEAN;
PSECURITY_CONTEXT_TRACKING_MODE :: ^BOOLEAN;
SECURITY_QUALITY_OF_SERVICE :: struct {
Length : u32,
ImpersonationLevel : SECURITY_IMPERSONATION_LEVEL,
ContextTrackingMode : SECURITY_CONTEXT_TRACKING_MODE,
EffectiveOnly : BOOLEAN,
};
PSECURITY_QUALITY_OF_SERVICE :: ^struct {
Length : u32,
ImpersonationLevel : SECURITY_IMPERSONATION_LEVEL,
ContextTrackingMode : SECURITY_CONTEXT_TRACKING_MODE,
EffectiveOnly : BOOLEAN,
};
SE_IMPERSONATION_STATE :: struct {
Token : PACCESS_TOKEN,
CopyOnOpen : BOOLEAN,
EffectiveOnly : BOOLEAN,
Level : SECURITY_IMPERSONATION_LEVEL,
};
PSE_IMPERSONATION_STATE :: ^struct {
Token : PACCESS_TOKEN,
CopyOnOpen : BOOLEAN,
EffectiveOnly : BOOLEAN,
Level : SECURITY_IMPERSONATION_LEVEL,
};
SECURITY_INFORMATION :: u32;
PSECURITY_INFORMATION :: ^u32;
SE_SIGNING_LEVEL :: BYTE;
PSE_SIGNING_LEVEL :: ^BYTE;
SE_IMAGE_SIGNATURE_TYPE :: enum {
SeImageSignatureNone = 0,
SeImageSignatureEmbedded,
SeImageSignatureCache,
SeImageSignatureCatalogCached,
SeImageSignatureCatalogNotCached,
SeImageSignatureCatalogHint,
SeImageSignaturePackageCatalog,
};
PSE_IMAGE_SIGNATURE_TYPE :: ^enum {
SeImageSignatureNone = 0,
SeImageSignatureEmbedded,
SeImageSignatureCache,
SeImageSignatureCatalogCached,
SeImageSignatureCatalogNotCached,
SeImageSignatureCatalogHint,
SeImageSignaturePackageCatalog,
};
SE_LEARNING_MODE_DATA_TYPE :: enum {
SeLearningModeInvalidType = 0,
SeLearningModeSettings,
SeLearningModeMax,
};
SECURITY_CAPABILITIES :: struct {
AppContainerSid : PSID,
Capabilities : PSID_AND_ATTRIBUTES,
CapabilityCount : u32,
Reserved : u32,
};
PSECURITY_CAPABILITIES :: ^struct {
AppContainerSid : PSID,
Capabilities : PSID_AND_ATTRIBUTES,
CapabilityCount : u32,
Reserved : u32,
};
LPSECURITY_CAPABILITIES :: ^struct {
AppContainerSid : PSID,
Capabilities : PSID_AND_ATTRIBUTES,
CapabilityCount : u32,
Reserved : u32,
};
JOB_SET_ARRAY :: struct {
JobHandle : HANDLE,
MemberLevel : u32,
Flags : u32,
};
PJOB_SET_ARRAY :: ^struct {
JobHandle : HANDLE,
MemberLevel : u32,
Flags : u32,
};
EXCEPTION_REGISTRATION_RECORD :: struct {
Next : ^EXCEPTION_REGISTRATION_RECORD,
Handler : PEXCEPTION_ROUTINE,
};
PEXCEPTION_REGISTRATION_RECORD :: ^EXCEPTION_REGISTRATION_RECORD;
NT_TIB :: struct {
ExceptionList : ^EXCEPTION_REGISTRATION_RECORD,
StackBase : PVOID,
StackLimit : PVOID,
SubSystemTib : PVOID,
FiberData : PVOID,
ArbitraryUserPointer : PVOID,
Self : ^NT_TIB,
};
PNT_TIB :: ^NT_TIB;
NT_TIB32 :: struct {
ExceptionList : u32,
StackBase : u32,
StackLimit : u32,
SubSystemTib : u32,
FiberData : u32,
ArbitraryUserPointer : u32,
Self : u32,
};
PNT_TIB32 :: ^struct {
ExceptionList : u32,
StackBase : u32,
StackLimit : u32,
SubSystemTib : u32,
FiberData : u32,
ArbitraryUserPointer : u32,
Self : u32,
};
NT_TIB64 :: struct {
ExceptionList : DWORD64,
StackBase : DWORD64,
StackLimit : DWORD64,
SubSystemTib : DWORD64,
FiberData : DWORD64,
ArbitraryUserPointer : DWORD64,
Self : DWORD64,
};
PNT_TIB64 :: ^struct {
ExceptionList : DWORD64,
StackBase : DWORD64,
StackLimit : DWORD64,
SubSystemTib : DWORD64,
FiberData : DWORD64,
ArbitraryUserPointer : DWORD64,
Self : DWORD64,
};
UMS_CREATE_THREAD_ATTRIBUTES :: struct {
UmsVersion : u32,
UmsContext : PVOID,
UmsCompletionList : PVOID,
};
PUMS_CREATE_THREAD_ATTRIBUTES :: ^struct {
UmsVersion : u32,
UmsContext : PVOID,
UmsCompletionList : PVOID,
};
WOW64_ARCHITECTURE_INFORMATION :: struct {
Machine : ,
KernelMode : ,
UserMode : ,
Native : ,
Process : ,
ReservedZero0 : ,
};
QUOTA_LIMITS :: struct {
PagedPoolLimit : SIZE_T,
NonPagedPoolLimit : SIZE_T,
MinimumWorkingSetSize : SIZE_T,
MaximumWorkingSetSize : SIZE_T,
PagefileLimit : SIZE_T,
TimeLimit : LARGE_INTEGER,
};
PQUOTA_LIMITS :: ^struct {
PagedPoolLimit : SIZE_T,
NonPagedPoolLimit : SIZE_T,
MinimumWorkingSetSize : SIZE_T,
MaximumWorkingSetSize : SIZE_T,
PagefileLimit : SIZE_T,
TimeLimit : LARGE_INTEGER,
};
RATE_QUOTA_LIMIT :: struct #raw_union {
RateData : u32,
s : struct {
RatePercent : ,
Reserved0 : ,
},
};
PRATE_QUOTA_LIMIT :: ^struct #raw_union {
RateData : u32,
s : struct {
RatePercent : ,
Reserved0 : ,
},
};
QUOTA_LIMITS_EX :: struct {
PagedPoolLimit : SIZE_T,
NonPagedPoolLimit : SIZE_T,
MinimumWorkingSetSize : SIZE_T,
MaximumWorkingSetSize : SIZE_T,
PagefileLimit : SIZE_T,
TimeLimit : LARGE_INTEGER,
WorkingSetLimit : SIZE_T,
Reserved2 : SIZE_T,
Reserved3 : SIZE_T,
Reserved4 : SIZE_T,
Flags : u32,
CpuRateLimit : RATE_QUOTA_LIMIT,
};
PQUOTA_LIMITS_EX :: ^struct {
PagedPoolLimit : SIZE_T,
NonPagedPoolLimit : SIZE_T,
MinimumWorkingSetSize : SIZE_T,
MaximumWorkingSetSize : SIZE_T,
PagefileLimit : SIZE_T,
TimeLimit : LARGE_INTEGER,
WorkingSetLimit : SIZE_T,
Reserved2 : SIZE_T,
Reserved3 : SIZE_T,
Reserved4 : SIZE_T,
Flags : u32,
CpuRateLimit : RATE_QUOTA_LIMIT,
};
IO_COUNTERS :: struct {
ReadOperationCount : ULONGLONG,
WriteOperationCount : ULONGLONG,
OtherOperationCount : ULONGLONG,
ReadTransferCount : ULONGLONG,
WriteTransferCount : ULONGLONG,
OtherTransferCount : ULONGLONG,
};
PIO_COUNTERS :: ^IO_COUNTERS;
HARDWARE_COUNTER_TYPE :: enum {
PMCCounter,
MaxHardwareCounterType,
};
PHARDWARE_COUNTER_TYPE :: ^enum {
PMCCounter,
MaxHardwareCounterType,
};
PROCESS_MITIGATION_POLICY :: enum {
ProcessDEPPolicy,
ProcessASLRPolicy,
ProcessDynamicCodePolicy,
ProcessStrictHandleCheckPolicy,
ProcessSystemCallDisablePolicy,
ProcessMitigationOptionsMask,
ProcessExtensionPointDisablePolicy,
ProcessControlFlowGuardPolicy,
ProcessSignaturePolicy,
ProcessFontDisablePolicy,
ProcessImageLoadPolicy,
ProcessSystemCallFilterPolicy,
ProcessPayloadRestrictionPolicy,
ProcessChildProcessPolicy,
ProcessSideChannelIsolationPolicy,
MaxProcessMitigationPolicy,
};
PPROCESS_MITIGATION_POLICY :: ^enum {
ProcessDEPPolicy,
ProcessASLRPolicy,
ProcessDynamicCodePolicy,
ProcessStrictHandleCheckPolicy,
ProcessSystemCallDisablePolicy,
ProcessMitigationOptionsMask,
ProcessExtensionPointDisablePolicy,
ProcessControlFlowGuardPolicy,
ProcessSignaturePolicy,
ProcessFontDisablePolicy,
ProcessImageLoadPolicy,
ProcessSystemCallFilterPolicy,
ProcessPayloadRestrictionPolicy,
ProcessChildProcessPolicy,
ProcessSideChannelIsolationPolicy,
MaxProcessMitigationPolicy,
};
PROCESS_MITIGATION_ASLR_POLICY :: struct {
u : struct #raw_union {
Flags : u32,
s : struct {
EnableBottomUpRandomization : ,
EnableForceRelocateImages : ,
EnableHighEntropy : ,
DisallowStrippedImages : ,
ReservedFlags : ,
},
},
};
PPROCESS_MITIGATION_ASLR_POLICY :: ^struct {
u : struct #raw_union {
Flags : u32,
s : struct {
EnableBottomUpRandomization : ,
EnableForceRelocateImages : ,
EnableHighEntropy : ,
DisallowStrippedImages : ,
ReservedFlags : ,
},
},
};
PROCESS_MITIGATION_DEP_POLICY :: struct {
u : struct #raw_union {
Flags : u32,
s : struct {
Enable : ,
DisableAtlThunkEmulation : ,
ReservedFlags : ,
},
},
Permanent : BOOLEAN,
};
PPROCESS_MITIGATION_DEP_POLICY :: ^struct {
u : struct #raw_union {
Flags : u32,
s : struct {
Enable : ,
DisableAtlThunkEmulation : ,
ReservedFlags : ,
},
},
Permanent : BOOLEAN,
};
PROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY :: struct {
u : struct #raw_union {
Flags : u32,
s : struct {
RaiseExceptionOnInvalidHandleReference : ,
HandleExceptionsPermanentlyEnabled : ,
ReservedFlags : ,
},
},
};
PPROCESS_MITIGATION_STRICT_HANDLE_CHECK_POLICY :: ^struct {
u : struct #raw_union {
Flags : u32,
s : struct {
RaiseExceptionOnInvalidHandleReference : ,
HandleExceptionsPermanentlyEnabled : ,
ReservedFlags : ,
},
},
};
PROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY :: struct {
u : struct #raw_union {
Flags : u32,
s : struct {
DisallowWin32kSystemCalls : ,
AuditDisallowWin32kSystemCalls : ,
ReservedFlags : ,
},
},
};
PPROCESS_MITIGATION_SYSTEM_CALL_DISABLE_POLICY :: ^struct {
u : struct #raw_union {
Flags : u32,
s : struct {
DisallowWin32kSystemCalls : ,
AuditDisallowWin32kSystemCalls : ,
ReservedFlags : ,
},
},
};
PROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY :: struct {
u : struct #raw_union {
Flags : u32,
s : struct {
DisableExtensionPoints : ,
ReservedFlags : ,
},
},
};
PPROCESS_MITIGATION_EXTENSION_POINT_DISABLE_POLICY :: ^struct {
u : struct #raw_union {
Flags : u32,
s : struct {
DisableExtensionPoints : ,
ReservedFlags : ,
},
},
};
PROCESS_MITIGATION_DYNAMIC_CODE_POLICY :: struct {
u : struct #raw_union {
Flags : u32,
s : struct {
ProhibitDynamicCode : ,
AllowThreadOptOut : ,
AllowRemoteDowngrade : ,
AuditProhibitDynamicCode : ,
ReservedFlags : ,
},
},
};
PPROCESS_MITIGATION_DYNAMIC_CODE_POLICY :: ^struct {
u : struct #raw_union {
Flags : u32,
s : struct {
ProhibitDynamicCode : ,
AllowThreadOptOut : ,
AllowRemoteDowngrade : ,
AuditProhibitDynamicCode : ,
ReservedFlags : ,
},
},
};
PROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY :: struct {
u : struct #raw_union {
Flags : u32,
s : struct {
EnableControlFlowGuard : ,
EnableExportSuppression : ,
StrictMode : ,
ReservedFlags : ,
},
},
};
PPROCESS_MITIGATION_CONTROL_FLOW_GUARD_POLICY :: ^struct {
u : struct #raw_union {
Flags : u32,
s : struct {
EnableControlFlowGuard : ,
EnableExportSuppression : ,
StrictMode : ,
ReservedFlags : ,
},
},
};
PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY :: struct {
u : struct #raw_union {
Flags : u32,
s : struct {
MicrosoftSignedOnly : ,
StoreSignedOnly : ,
MitigationOptIn : ,
AuditMicrosoftSignedOnly : ,
AuditStoreSignedOnly : ,
ReservedFlags : ,
},
},
};
PPROCESS_MITIGATION_BINARY_SIGNATURE_POLICY :: ^struct {
u : struct #raw_union {
Flags : u32,
s : struct {
MicrosoftSignedOnly : ,
StoreSignedOnly : ,
MitigationOptIn : ,
AuditMicrosoftSignedOnly : ,
AuditStoreSignedOnly : ,
ReservedFlags : ,
},
},
};
PROCESS_MITIGATION_FONT_DISABLE_POLICY :: struct {
u : struct #raw_union {
Flags : u32,
s : struct {
DisableNonSystemFonts : ,
AuditNonSystemFontLoading : ,
ReservedFlags : ,
},
},
};
PPROCESS_MITIGATION_FONT_DISABLE_POLICY :: ^struct {
u : struct #raw_union {
Flags : u32,
s : struct {
DisableNonSystemFonts : ,
AuditNonSystemFontLoading : ,
ReservedFlags : ,
},
},
};
PROCESS_MITIGATION_IMAGE_LOAD_POLICY :: struct {
u : struct #raw_union {
Flags : u32,
s : struct {
NoRemoteImages : ,
NoLowMandatoryLabelImages : ,
PreferSystem32Images : ,
AuditNoRemoteImages : ,
AuditNoLowMandatoryLabelImages : ,
ReservedFlags : ,
},
},
};
PPROCESS_MITIGATION_IMAGE_LOAD_POLICY :: ^struct {
u : struct #raw_union {
Flags : u32,
s : struct {
NoRemoteImages : ,
NoLowMandatoryLabelImages : ,
PreferSystem32Images : ,
AuditNoRemoteImages : ,
AuditNoLowMandatoryLabelImages : ,
ReservedFlags : ,
},
},
};
PROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY :: struct {
u : struct #raw_union {
Flags : u32,
s : struct {
FilterId : ,
ReservedFlags : ,
},
},
};
PPROCESS_MITIGATION_SYSTEM_CALL_FILTER_POLICY :: ^struct {
u : struct #raw_union {
Flags : u32,
s : struct {
FilterId : ,
ReservedFlags : ,
},
},
};
PROCESS_MITIGATION_PAYLOAD_RESTRICTION_POLICY :: struct {
u : struct #raw_union {
Flags : u32,
s : struct {
EnableExportAddressFilter : ,
AuditExportAddressFilter : ,
EnableExportAddressFilterPlus : ,
AuditExportAddressFilterPlus : ,
EnableImportAddressFilter : ,
AuditImportAddressFilter : ,
EnableRopStackPivot : ,
AuditRopStackPivot : ,
EnableRopCallerCheck : ,
AuditRopCallerCheck : ,
EnableRopSimExec : ,
AuditRopSimExec : ,
ReservedFlags : ,
},
},
};
PPROCESS_MITIGATION_PAYLOAD_RESTRICTION_POLICY :: ^struct {
u : struct #raw_union {
Flags : u32,
s : struct {
EnableExportAddressFilter : ,
AuditExportAddressFilter : ,
EnableExportAddressFilterPlus : ,
AuditExportAddressFilterPlus : ,
EnableImportAddressFilter : ,
AuditImportAddressFilter : ,
EnableRopStackPivot : ,
AuditRopStackPivot : ,
EnableRopCallerCheck : ,
AuditRopCallerCheck : ,
EnableRopSimExec : ,
AuditRopSimExec : ,
ReservedFlags : ,
},
},
};
PROCESS_MITIGATION_CHILD_PROCESS_POLICY :: struct {
u : struct #raw_union {
Flags : u32,
s : struct {
NoChildProcessCreation : ,
AuditNoChildProcessCreation : ,
AllowSecureProcessCreation : ,
ReservedFlags : ,
},
},
};
PPROCESS_MITIGATION_CHILD_PROCESS_POLICY :: ^struct {
u : struct #raw_union {
Flags : u32,
s : struct {
NoChildProcessCreation : ,
AuditNoChildProcessCreation : ,
AllowSecureProcessCreation : ,
ReservedFlags : ,
},
},
};
PROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY :: struct {
u : struct #raw_union {
Flags : u32,
s : struct {
SmtBranchTargetIsolation : ,
IsolateSecurityDomain : ,
DisablePageCombine : ,
SpeculativeStoreBypassDisable : ,
ReservedFlags : ,
},
},
};
PPROCESS_MITIGATION_SIDE_CHANNEL_ISOLATION_POLICY :: ^struct {
u : struct #raw_union {
Flags : u32,
s : struct {
SmtBranchTargetIsolation : ,
IsolateSecurityDomain : ,
DisablePageCombine : ,
SpeculativeStoreBypassDisable : ,
ReservedFlags : ,
},
},
};
JOBOBJECT_BASIC_ACCOUNTING_INFORMATION :: struct {
TotalUserTime : LARGE_INTEGER,
TotalKernelTime : LARGE_INTEGER,
ThisPeriodTotalUserTime : LARGE_INTEGER,
ThisPeriodTotalKernelTime : LARGE_INTEGER,
TotalPageFaultCount : u32,
TotalProcesses : u32,
ActiveProcesses : u32,
TotalTerminatedProcesses : u32,
};
PJOBOBJECT_BASIC_ACCOUNTING_INFORMATION :: ^struct {
TotalUserTime : LARGE_INTEGER,
TotalKernelTime : LARGE_INTEGER,
ThisPeriodTotalUserTime : LARGE_INTEGER,
ThisPeriodTotalKernelTime : LARGE_INTEGER,
TotalPageFaultCount : u32,
TotalProcesses : u32,
ActiveProcesses : u32,
TotalTerminatedProcesses : u32,
};
JOBOBJECT_BASIC_LIMIT_INFORMATION :: struct {
PerProcessUserTimeLimit : LARGE_INTEGER,
PerJobUserTimeLimit : LARGE_INTEGER,
LimitFlags : u32,
MinimumWorkingSetSize : SIZE_T,
MaximumWorkingSetSize : SIZE_T,
ActiveProcessLimit : u32,
Affinity : ULONG_PTR,
PriorityClass : u32,
SchedulingClass : u32,
};
PJOBOBJECT_BASIC_LIMIT_INFORMATION :: ^struct {
PerProcessUserTimeLimit : LARGE_INTEGER,
PerJobUserTimeLimit : LARGE_INTEGER,
LimitFlags : u32,
MinimumWorkingSetSize : SIZE_T,
MaximumWorkingSetSize : SIZE_T,
ActiveProcessLimit : u32,
Affinity : ULONG_PTR,
PriorityClass : u32,
SchedulingClass : u32,
};
JOBOBJECT_EXTENDED_LIMIT_INFORMATION :: struct {
BasicLimitInformation : JOBOBJECT_BASIC_LIMIT_INFORMATION,
IoInfo : IO_COUNTERS,
ProcessMemoryLimit : SIZE_T,
JobMemoryLimit : SIZE_T,
PeakProcessMemoryUsed : SIZE_T,
PeakJobMemoryUsed : SIZE_T,
};
PJOBOBJECT_EXTENDED_LIMIT_INFORMATION :: ^struct {
BasicLimitInformation : JOBOBJECT_BASIC_LIMIT_INFORMATION,
IoInfo : IO_COUNTERS,
ProcessMemoryLimit : SIZE_T,
JobMemoryLimit : SIZE_T,
PeakProcessMemoryUsed : SIZE_T,
PeakJobMemoryUsed : SIZE_T,
};
JOBOBJECT_BASIC_PROCESS_ID_LIST :: struct {
NumberOfAssignedProcesses : u32,
NumberOfProcessIdsInList : u32,
ProcessIdList : [1]ULONG_PTR,
};
PJOBOBJECT_BASIC_PROCESS_ID_LIST :: ^struct {
NumberOfAssignedProcesses : u32,
NumberOfProcessIdsInList : u32,
ProcessIdList : [1]ULONG_PTR,
};
JOBOBJECT_BASIC_UI_RESTRICTIONS :: struct {
UIRestrictionsClass : u32,
};
PJOBOBJECT_BASIC_UI_RESTRICTIONS :: ^struct {
UIRestrictionsClass : u32,
};
JOBOBJECT_SECURITY_LIMIT_INFORMATION :: struct {
SecurityLimitFlags : u32,
JobToken : HANDLE,
SidsToDisable : PTOKEN_GROUPS,
PrivilegesToDelete : PTOKEN_PRIVILEGES,
RestrictedSids : PTOKEN_GROUPS,
};
PJOBOBJECT_SECURITY_LIMIT_INFORMATION :: ^struct {
SecurityLimitFlags : u32,
JobToken : HANDLE,
SidsToDisable : PTOKEN_GROUPS,
PrivilegesToDelete : PTOKEN_PRIVILEGES,
RestrictedSids : PTOKEN_GROUPS,
};
JOBOBJECT_END_OF_JOB_TIME_INFORMATION :: struct {
EndOfJobTimeAction : u32,
};
PJOBOBJECT_END_OF_JOB_TIME_INFORMATION :: ^struct {
EndOfJobTimeAction : u32,
};
JOBOBJECT_ASSOCIATE_COMPLETION_PORT :: struct {
CompletionKey : PVOID,
CompletionPort : HANDLE,
};
PJOBOBJECT_ASSOCIATE_COMPLETION_PORT :: ^struct {
CompletionKey : PVOID,
CompletionPort : HANDLE,
};
JOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION :: struct {
BasicInfo : JOBOBJECT_BASIC_ACCOUNTING_INFORMATION,
IoInfo : IO_COUNTERS,
};
PJOBOBJECT_BASIC_AND_IO_ACCOUNTING_INFORMATION :: ^struct {
BasicInfo : JOBOBJECT_BASIC_ACCOUNTING_INFORMATION,
IoInfo : IO_COUNTERS,
};
JOBOBJECT_JOBSET_INFORMATION :: struct {
MemberLevel : u32,
};
PJOBOBJECT_JOBSET_INFORMATION :: ^struct {
MemberLevel : u32,
};
JOBOBJECT_RATE_CONTROL_TOLERANCE :: enum {
ToleranceLow = 1,
ToleranceMedium,
ToleranceHigh,
};
PJOBOBJECT_RATE_CONTROL_TOLERANCE :: ^enum {
ToleranceLow = 1,
ToleranceMedium,
ToleranceHigh,
};
JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL :: enum {
ToleranceIntervalShort = 1,
ToleranceIntervalMedium,
ToleranceIntervalLong,
};
PJOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL :: ^enum {
ToleranceIntervalShort = 1,
ToleranceIntervalMedium,
ToleranceIntervalLong,
};
JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION :: struct {
IoReadBytesLimit : DWORD64,
IoWriteBytesLimit : DWORD64,
PerJobUserTimeLimit : LARGE_INTEGER,
JobMemoryLimit : DWORD64,
RateControlTolerance : JOBOBJECT_RATE_CONTROL_TOLERANCE,
RateControlToleranceInterval : JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL,
LimitFlags : u32,
};
PJOBOBJECT_NOTIFICATION_LIMIT_INFORMATION :: ^struct {
IoReadBytesLimit : DWORD64,
IoWriteBytesLimit : DWORD64,
PerJobUserTimeLimit : LARGE_INTEGER,
JobMemoryLimit : DWORD64,
RateControlTolerance : JOBOBJECT_RATE_CONTROL_TOLERANCE,
RateControlToleranceInterval : JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL,
LimitFlags : u32,
};
JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 :: struct {
IoReadBytesLimit : DWORD64,
IoWriteBytesLimit : DWORD64,
PerJobUserTimeLimit : LARGE_INTEGER,
u : struct #raw_union {
JobHighMemoryLimit : DWORD64,
JobMemoryLimit : DWORD64,
},
u2 : struct #raw_union {
RateControlTolerance : JOBOBJECT_RATE_CONTROL_TOLERANCE,
CpuRateControlTolerance : JOBOBJECT_RATE_CONTROL_TOLERANCE,
},
u3 : struct #raw_union {
RateControlToleranceInterval : JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL,
CpuRateControlToleranceInterval : JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL,
},
LimitFlags : u32,
IoRateControlTolerance : JOBOBJECT_RATE_CONTROL_TOLERANCE,
JobLowMemoryLimit : DWORD64,
IoRateControlToleranceInterval : JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL,
NetRateControlTolerance : JOBOBJECT_RATE_CONTROL_TOLERANCE,
NetRateControlToleranceInterval : JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL,
};
JOBOBJECT_LIMIT_VIOLATION_INFORMATION :: struct {
LimitFlags : u32,
ViolationLimitFlags : u32,
IoReadBytes : DWORD64,
IoReadBytesLimit : DWORD64,
IoWriteBytes : DWORD64,
IoWriteBytesLimit : DWORD64,
PerJobUserTime : LARGE_INTEGER,
PerJobUserTimeLimit : LARGE_INTEGER,
JobMemory : DWORD64,
JobMemoryLimit : DWORD64,
RateControlTolerance : JOBOBJECT_RATE_CONTROL_TOLERANCE,
RateControlToleranceLimit : JOBOBJECT_RATE_CONTROL_TOLERANCE,
};
PJOBOBJECT_LIMIT_VIOLATION_INFORMATION :: ^struct {
LimitFlags : u32,
ViolationLimitFlags : u32,
IoReadBytes : DWORD64,
IoReadBytesLimit : DWORD64,
IoWriteBytes : DWORD64,
IoWriteBytesLimit : DWORD64,
PerJobUserTime : LARGE_INTEGER,
PerJobUserTimeLimit : LARGE_INTEGER,
JobMemory : DWORD64,
JobMemoryLimit : DWORD64,
RateControlTolerance : JOBOBJECT_RATE_CONTROL_TOLERANCE,
RateControlToleranceLimit : JOBOBJECT_RATE_CONTROL_TOLERANCE,
};
JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2 :: struct {
LimitFlags : u32,
ViolationLimitFlags : u32,
IoReadBytes : DWORD64,
IoReadBytesLimit : DWORD64,
IoWriteBytes : DWORD64,
IoWriteBytesLimit : DWORD64,
PerJobUserTime : LARGE_INTEGER,
PerJobUserTimeLimit : LARGE_INTEGER,
JobMemory : DWORD64,
u : struct #raw_union {
JobHighMemoryLimit : DWORD64,
JobMemoryLimit : DWORD64,
},
u2 : struct #raw_union {
RateControlTolerance : JOBOBJECT_RATE_CONTROL_TOLERANCE,
CpuRateControlTolerance : JOBOBJECT_RATE_CONTROL_TOLERANCE,
},
u3 : struct #raw_union {
RateControlToleranceLimit : JOBOBJECT_RATE_CONTROL_TOLERANCE,
CpuRateControlToleranceLimit : JOBOBJECT_RATE_CONTROL_TOLERANCE,
},
JobLowMemoryLimit : DWORD64,
IoRateControlTolerance : JOBOBJECT_RATE_CONTROL_TOLERANCE,
IoRateControlToleranceLimit : JOBOBJECT_RATE_CONTROL_TOLERANCE,
NetRateControlTolerance : JOBOBJECT_RATE_CONTROL_TOLERANCE,
NetRateControlToleranceLimit : JOBOBJECT_RATE_CONTROL_TOLERANCE,
};
JOBOBJECT_CPU_RATE_CONTROL_INFORMATION :: struct {
ControlFlags : u32,
u : struct #raw_union {
CpuRate : u32,
Weight : u32,
s : struct {
MinRate : u16,
MaxRate : u16,
},
},
};
PJOBOBJECT_CPU_RATE_CONTROL_INFORMATION :: ^struct {
ControlFlags : u32,
u : struct #raw_union {
CpuRate : u32,
Weight : u32,
s : struct {
MinRate : u16,
MaxRate : u16,
},
},
};
JOB_OBJECT_NET_RATE_CONTROL_FLAGS :: enum {
JOB_OBJECT_NET_RATE_CONTROL_ENABLE = 0x1,
JOB_OBJECT_NET_RATE_CONTROL_MAX_BANDWIDTH = 0x2,
JOB_OBJECT_NET_RATE_CONTROL_DSCP_TAG = 0x4,
JOB_OBJECT_NET_RATE_CONTROL_VALID_FLAGS = 0x7,
};
__C_ASSERT__ :: [(JOB_OBJECT_NET_RATE_CONTROL_VALID_FLAGS == (JOB_OBJECT_NET_RATE_CONTROL_ENABLE + JOB_OBJECT_NET_RATE_CONTROL_MAX_BANDWIDTH + JOB_OBJECT_NET_RATE_CONTROL_DSCP_TAG)) ? 1 : -1]u8;
JOBOBJECT_NET_RATE_CONTROL_INFORMATION :: struct {
MaxBandwidth : DWORD64,
ControlFlags : JOB_OBJECT_NET_RATE_CONTROL_FLAGS,
DscpTag : BYTE,
};
JOB_OBJECT_IO_RATE_CONTROL_FLAGS :: enum {
JOB_OBJECT_IO_RATE_CONTROL_ENABLE = 0x1,
JOB_OBJECT_IO_RATE_CONTROL_STANDALONE_VOLUME = 0x2,
JOB_OBJECT_IO_RATE_CONTROL_FORCE_UNIT_ACCESS_ALL = 0x4,
JOB_OBJECT_IO_RATE_CONTROL_FORCE_UNIT_ACCESS_ON_SOFT_CAP = 0x8,
JOB_OBJECT_IO_RATE_CONTROL_VALID_FLAGS = JOB_OBJECT_IO_RATE_CONTROL_ENABLE | JOB_OBJECT_IO_RATE_CONTROL_STANDALONE_VOLUME | JOB_OBJECT_IO_RATE_CONTROL_FORCE_UNIT_ACCESS_ALL | JOB_OBJECT_IO_RATE_CONTROL_FORCE_UNIT_ACCESS_ON_SOFT_CAP,
};
JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE :: struct {
MaxIops : LONG64,
MaxBandwidth : LONG64,
ReservationIops : LONG64,
VolumeName : PWSTR,
BaseIoSize : u32,
ControlFlags : JOB_OBJECT_IO_RATE_CONTROL_FLAGS,
VolumeNameLength : u16,
};
JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V1 :: JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE;
JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V2 :: struct {
MaxIops : LONG64,
MaxBandwidth : LONG64,
ReservationIops : LONG64,
VolumeName : PWSTR,
BaseIoSize : u32,
ControlFlags : JOB_OBJECT_IO_RATE_CONTROL_FLAGS,
VolumeNameLength : u16,
CriticalReservationIops : LONG64,
ReservationBandwidth : LONG64,
CriticalReservationBandwidth : LONG64,
MaxTimePercent : LONG64,
ReservationTimePercent : LONG64,
CriticalReservationTimePercent : LONG64,
};
JOBOBJECT_IO_RATE_CONTROL_INFORMATION_NATIVE_V3 :: struct {
MaxIops : LONG64,
MaxBandwidth : LONG64,
ReservationIops : LONG64,
VolumeName : PWSTR,
BaseIoSize : u32,
ControlFlags : JOB_OBJECT_IO_RATE_CONTROL_FLAGS,
VolumeNameLength : u16,
CriticalReservationIops : LONG64,
ReservationBandwidth : LONG64,
CriticalReservationBandwidth : LONG64,
MaxTimePercent : LONG64,
ReservationTimePercent : LONG64,
CriticalReservationTimePercent : LONG64,
SoftMaxIops : LONG64,
SoftMaxBandwidth : LONG64,
SoftMaxTimePercent : LONG64,
LimitExcessNotifyIops : LONG64,
LimitExcessNotifyBandwidth : LONG64,
LimitExcessNotifyTimePercent : LONG64,
};
JOBOBJECT_IO_ATTRIBUTION_CONTROL_FLAGS :: enum {
JOBOBJECT_IO_ATTRIBUTION_CONTROL_ENABLE = 0x1,
JOBOBJECT_IO_ATTRIBUTION_CONTROL_DISABLE = 0x2,
JOBOBJECT_IO_ATTRIBUTION_CONTROL_VALID_FLAGS = 0x3,
};
JOBOBJECT_IO_ATTRIBUTION_STATS :: struct {
IoCount : ULONG_PTR,
TotalNonOverlappedQueueTime : ULONGLONG,
TotalNonOverlappedServiceTime : ULONGLONG,
TotalSize : ULONGLONG,
};
PJOBOBJECT_IO_ATTRIBUTION_STATS :: ^struct {
IoCount : ULONG_PTR,
TotalNonOverlappedQueueTime : ULONGLONG,
TotalNonOverlappedServiceTime : ULONGLONG,
TotalSize : ULONGLONG,
};
JOBOBJECT_IO_ATTRIBUTION_INFORMATION :: struct {
ControlFlags : u32,
ReadStats : JOBOBJECT_IO_ATTRIBUTION_STATS,
WriteStats : JOBOBJECT_IO_ATTRIBUTION_STATS,
};
PJOBOBJECT_IO_ATTRIBUTION_INFORMATION :: ^struct {
ControlFlags : u32,
ReadStats : JOBOBJECT_IO_ATTRIBUTION_STATS,
WriteStats : JOBOBJECT_IO_ATTRIBUTION_STATS,
};
JOBOBJECTINFOCLASS :: enum {
JobObjectBasicAccountingInformation = 1,
JobObjectBasicLimitInformation,
JobObjectBasicProcessIdList,
JobObjectBasicUIRestrictions,
JobObjectSecurityLimitInformation,
JobObjectEndOfJobTimeInformation,
JobObjectAssociateCompletionPortInformation,
JobObjectBasicAndIoAccountingInformation,
JobObjectExtendedLimitInformation,
JobObjectJobSetInformation,
JobObjectGroupInformation,
JobObjectNotificationLimitInformation,
JobObjectLimitViolationInformation,
JobObjectGroupInformationEx,
JobObjectCpuRateControlInformation,
JobObjectCompletionFilter,
JobObjectCompletionCounter,
JobObjectReserved1Information = 18,
JobObjectReserved2Information,
JobObjectReserved3Information,
JobObjectReserved4Information,
JobObjectReserved5Information,
JobObjectReserved6Information,
JobObjectReserved7Information,
JobObjectReserved8Information,
JobObjectReserved9Information,
JobObjectReserved10Information,
JobObjectReserved11Information,
JobObjectReserved12Information,
JobObjectReserved13Information,
JobObjectReserved14Information = 31,
JobObjectNetRateControlInformation,
JobObjectNotificationLimitInformation2,
JobObjectLimitViolationInformation2,
JobObjectCreateSilo,
JobObjectSiloBasicInformation,
JobObjectReserved15Information = 37,
JobObjectReserved16Information = 38,
JobObjectReserved17Information = 39,
JobObjectReserved18Information = 40,
JobObjectReserved19Information = 41,
JobObjectReserved20Information = 42,
JobObjectReserved21Information = 43,
JobObjectReserved22Information = 44,
JobObjectReserved23Information = 45,
JobObjectReserved24Information = 46,
JobObjectReserved25Information = 47,
MaxJobObjectInfoClass,
};
SILOOBJECT_BASIC_INFORMATION :: struct {
SiloId : u32,
SiloParentId : u32,
NumberOfProcesses : u32,
IsInServerSilo : BOOLEAN,
Reserved : [3]BYTE,
};
PSILOOBJECT_BASIC_INFORMATION :: ^struct {
SiloId : u32,
SiloParentId : u32,
NumberOfProcesses : u32,
IsInServerSilo : BOOLEAN,
Reserved : [3]BYTE,
};
SERVERSILO_STATE :: enum {
SERVERSILO_INITING = 0,
SERVERSILO_STARTED,
SERVERSILO_SHUTTING_DOWN,
SERVERSILO_TERMINATING,
SERVERSILO_TERMINATED,
};
PSERVERSILO_STATE :: ^enum {
SERVERSILO_INITING = 0,
SERVERSILO_STARTED,
SERVERSILO_SHUTTING_DOWN,
SERVERSILO_TERMINATING,
SERVERSILO_TERMINATED,
};
SERVERSILO_BASIC_INFORMATION :: struct {
ServiceSessionId : u32,
State : SERVERSILO_STATE,
ExitStatus : u32,
};
PSERVERSILO_BASIC_INFORMATION :: ^struct {
ServiceSessionId : u32,
State : SERVERSILO_STATE,
ExitStatus : u32,
};
FIRMWARE_TYPE :: enum {
FirmwareTypeUnknown,
FirmwareTypeBios,
FirmwareTypeUefi,
FirmwareTypeMax,
};
PFIRMWARE_TYPE :: ^enum {
FirmwareTypeUnknown,
FirmwareTypeBios,
FirmwareTypeUefi,
FirmwareTypeMax,
};
LOGICAL_PROCESSOR_RELATIONSHIP :: enum {
RelationProcessorCore,
RelationNumaNode,
RelationCache,
RelationProcessorPackage,
RelationGroup,
RelationAll = 0xffff,
};
PROCESSOR_CACHE_TYPE :: enum {
CacheUnified,
CacheInstruction,
CacheData,
CacheTrace,
};
CACHE_DESCRIPTOR :: struct {
Level : BYTE,
Associativity : BYTE,
LineSize : u16,
Size : u32,
Type : PROCESSOR_CACHE_TYPE,
};
PCACHE_DESCRIPTOR :: ^struct {
Level : BYTE,
Associativity : BYTE,
LineSize : u16,
Size : u32,
Type : PROCESSOR_CACHE_TYPE,
};
SYSTEM_LOGICAL_PROCESSOR_INFORMATION :: struct {
ProcessorMask : ULONG_PTR,
Relationship : LOGICAL_PROCESSOR_RELATIONSHIP,
u : struct #raw_union {
ProcessorCore : struct {
Flags : BYTE,
},
NumaNode : struct {
NodeNumber : u32,
},
Cache : CACHE_DESCRIPTOR,
Reserved : [2]ULONGLONG,
},
};
PSYSTEM_LOGICAL_PROCESSOR_INFORMATION :: ^struct {
ProcessorMask : ULONG_PTR,
Relationship : LOGICAL_PROCESSOR_RELATIONSHIP,
u : struct #raw_union {
ProcessorCore : struct {
Flags : BYTE,
},
NumaNode : struct {
NodeNumber : u32,
},
Cache : CACHE_DESCRIPTOR,
Reserved : [2]ULONGLONG,
},
};
PROCESSOR_RELATIONSHIP :: struct {
Flags : BYTE,
EfficiencyClass : BYTE,
Reserved : [20]BYTE,
GroupCount : u16,
GroupMask : [1]GROUP_AFFINITY,
};
PPROCESSOR_RELATIONSHIP :: ^struct {
Flags : BYTE,
EfficiencyClass : BYTE,
Reserved : [20]BYTE,
GroupCount : u16,
GroupMask : [1]GROUP_AFFINITY,
};
NUMA_NODE_RELATIONSHIP :: struct {
NodeNumber : u32,
Reserved : [20]BYTE,
GroupMask : GROUP_AFFINITY,
};
PNUMA_NODE_RELATIONSHIP :: ^struct {
NodeNumber : u32,
Reserved : [20]BYTE,
GroupMask : GROUP_AFFINITY,
};
CACHE_RELATIONSHIP :: struct {
Level : BYTE,
Associativity : BYTE,
LineSize : u16,
CacheSize : u32,
Type : PROCESSOR_CACHE_TYPE,
Reserved : [20]BYTE,
GroupMask : GROUP_AFFINITY,
};
PCACHE_RELATIONSHIP :: ^struct {
Level : BYTE,
Associativity : BYTE,
LineSize : u16,
CacheSize : u32,
Type : PROCESSOR_CACHE_TYPE,
Reserved : [20]BYTE,
GroupMask : GROUP_AFFINITY,
};
PROCESSOR_GROUP_INFO :: struct {
MaximumProcessorCount : BYTE,
ActiveProcessorCount : BYTE,
Reserved : [38]BYTE,
ActiveProcessorMask : KAFFINITY,
};
PPROCESSOR_GROUP_INFO :: ^struct {
MaximumProcessorCount : BYTE,
ActiveProcessorCount : BYTE,
Reserved : [38]BYTE,
ActiveProcessorMask : KAFFINITY,
};
GROUP_RELATIONSHIP :: struct {
MaximumGroupCount : u16,
ActiveGroupCount : u16,
Reserved : [20]BYTE,
GroupInfo : [1]PROCESSOR_GROUP_INFO,
};
PGROUP_RELATIONSHIP :: ^struct {
MaximumGroupCount : u16,
ActiveGroupCount : u16,
Reserved : [20]BYTE,
GroupInfo : [1]PROCESSOR_GROUP_INFO,
};
SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX :: struct {
Relationship : LOGICAL_PROCESSOR_RELATIONSHIP,
Size : u32,
u : struct #raw_union {
Processor : PROCESSOR_RELATIONSHIP,
NumaNode : NUMA_NODE_RELATIONSHIP,
Cache : CACHE_RELATIONSHIP,
Group : GROUP_RELATIONSHIP,
},
};
SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX :: struct {};
PSYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX :: ^SYSTEM_LOGICAL_PROCESSOR_INFORMATION_EX;
CPU_SET_INFORMATION_TYPE :: enum {
CpuSetInformation,
};
PCPU_SET_INFORMATION_TYPE :: ^enum {
CpuSetInformation,
};
SYSTEM_CPU_SET_INFORMATION :: struct {
Size : u32,
Type : CPU_SET_INFORMATION_TYPE,
u : struct #raw_union {
CpuSet : struct {
Id : u32,
Group : u16,
LogicalProcessorIndex : BYTE,
CoreIndex : BYTE,
LastLevelCacheIndex : BYTE,
NumaNodeIndex : BYTE,
EfficiencyClass : BYTE,
u2 : struct #raw_union {
AllFlags : BYTE,
s : struct {
Parked : ,
Allocated : ,
AllocatedToTargetProcess : ,
RealTime : ,
ReservedFlags : ,
},
},
using _ : struct #raw_union {
Reserved : u32,
SchedulingClass : BYTE,
},
AllocationTag : DWORD64,
},
},
};
SYSTEM_CPU_SET_INFORMATION :: struct {};
PSYSTEM_CPU_SET_INFORMATION :: ^SYSTEM_CPU_SET_INFORMATION;
SYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION :: struct {
CycleTime : DWORD64,
};
PSYSTEM_PROCESSOR_CYCLE_TIME_INFORMATION :: ^struct {
CycleTime : DWORD64,
};
XSTATE_FEATURE :: struct {
Offset : u32,
Size : u32,
};
PXSTATE_FEATURE :: ^struct {
Offset : u32,
Size : u32,
};
XSTATE_CONFIGURATION :: struct {
EnabledFeatures : DWORD64,
EnabledVolatileFeatures : DWORD64,
Size : u32,
using _ : struct #raw_union {
ControlFlags : u32,
using _ : struct {
OptimizedSave : ,
CompactionEnabled : ,
},
},
Features : [(64)]XSTATE_FEATURE,
EnabledSupervisorFeatures : DWORD64,
AlignedFeatures : DWORD64,
AllFeatureSize : u32,
AllFeatures : [(64)]u32,
EnabledUserVisibleSupervisorFeatures : DWORD64,
};
PXSTATE_CONFIGURATION :: ^struct {
EnabledFeatures : DWORD64,
EnabledVolatileFeatures : DWORD64,
Size : u32,
using _ : struct #raw_union {
ControlFlags : u32,
using _ : struct {
OptimizedSave : ,
CompactionEnabled : ,
},
},
Features : [(64)]XSTATE_FEATURE,
EnabledSupervisorFeatures : DWORD64,
AlignedFeatures : DWORD64,
AllFeatureSize : u32,
AllFeatures : [(64)]u32,
EnabledUserVisibleSupervisorFeatures : DWORD64,
};
MEMORY_BASIC_INFORMATION :: struct {
BaseAddress : PVOID,
AllocationBase : PVOID,
AllocationProtect : u32,
RegionSize : SIZE_T,
State : u32,
Protect : u32,
Type : u32,
};
PMEMORY_BASIC_INFORMATION :: ^struct {
BaseAddress : PVOID,
AllocationBase : PVOID,
AllocationProtect : u32,
RegionSize : SIZE_T,
State : u32,
Protect : u32,
Type : u32,
};
MEMORY_BASIC_INFORMATION32 :: struct {
BaseAddress : u32,
AllocationBase : u32,
AllocationProtect : u32,
RegionSize : u32,
State : u32,
Protect : u32,
Type : u32,
};
PMEMORY_BASIC_INFORMATION32 :: ^struct {
BaseAddress : u32,
AllocationBase : u32,
AllocationProtect : u32,
RegionSize : u32,
State : u32,
Protect : u32,
Type : u32,
};
MEMORY_BASIC_INFORMATION64 :: struct {
BaseAddress : ULONGLONG,
AllocationBase : ULONGLONG,
AllocationProtect : u32,
__alignment1 : u32,
RegionSize : ULONGLONG,
State : u32,
Protect : u32,
Type : u32,
__alignment2 : u32,
};
PMEMORY_BASIC_INFORMATION64 :: ^struct {
BaseAddress : ULONGLONG,
AllocationBase : ULONGLONG,
AllocationProtect : u32,
__alignment1 : u32,
RegionSize : ULONGLONG,
State : u32,
Protect : u32,
Type : u32,
__alignment2 : u32,
};
CFG_CALL_TARGET_INFO :: struct {
Offset : ULONG_PTR,
Flags : ULONG_PTR,
};
PCFG_CALL_TARGET_INFO :: ^struct {
Offset : ULONG_PTR,
Flags : ULONG_PTR,
};
MEM_ADDRESS_REQUIREMENTS :: struct {
LowestStartingAddress : PVOID,
HighestEndingAddress : PVOID,
Alignment : SIZE_T,
};
PMEM_ADDRESS_REQUIREMENTS :: ^struct {
LowestStartingAddress : PVOID,
HighestEndingAddress : PVOID,
Alignment : SIZE_T,
};
MEM_EXTENDED_PARAMETER_TYPE :: enum {
MemExtendedParameterInvalidType = 0,
MemExtendedParameterAddressRequirements,
MemExtendedParameterNumaNode,
MemExtendedParameterPartitionHandle,
MemExtendedParameterUserPhysicalHandle,
MemExtendedParameterAttributeFlags,
MemExtendedParameterMax,
};
PMEM_EXTENDED_PARAMETER_TYPE :: ^enum {
MemExtendedParameterInvalidType = 0,
MemExtendedParameterAddressRequirements,
MemExtendedParameterNumaNode,
MemExtendedParameterPartitionHandle,
MemExtendedParameterUserPhysicalHandle,
MemExtendedParameterAttributeFlags,
MemExtendedParameterMax,
};
MEM_EXTENDED_PARAMETER :: struct {
s : struct {
Type : ,
Reserved : ,
},
u : struct #raw_union {
ULong64 : DWORD64,
Pointer : PVOID,
Size : SIZE_T,
Handle : HANDLE,
ULong : u32,
},
};
PMEM_EXTENDED_PARAMETER :: ^struct {
s : struct {
Type : ,
Reserved : ,
},
u : struct #raw_union {
ULong64 : DWORD64,
Pointer : PVOID,
Size : SIZE_T,
Handle : HANDLE,
ULong : u32,
},
};
MEM_SECTION_EXTENDED_PARAMETER_TYPE :: enum {
MemSectionExtendedParameterInvalidType = 0,
MemSectionExtendedParameterUserPhysicalFlags,
MemSectionExtendedParameterNumaNode,
MemSectionExtendedParameterMax,
};
PMEM_SECTION_EXTENDED_PARAMETER_TYPE :: ^enum {
MemSectionExtendedParameterInvalidType = 0,
MemSectionExtendedParameterUserPhysicalFlags,
MemSectionExtendedParameterNumaNode,
MemSectionExtendedParameterMax,
};
ENCLAVE_CREATE_INFO_SGX :: struct {
Secs : [4096]BYTE,
};
PENCLAVE_CREATE_INFO_SGX :: ^struct {
Secs : [4096]BYTE,
};
ENCLAVE_INIT_INFO_SGX :: struct {
SigStruct : [1808]BYTE,
Reserved1 : [240]BYTE,
EInitToken : [304]BYTE,
Reserved2 : [1744]BYTE,
};
PENCLAVE_INIT_INFO_SGX :: ^struct {
SigStruct : [1808]BYTE,
Reserved1 : [240]BYTE,
EInitToken : [304]BYTE,
Reserved2 : [1744]BYTE,
};
ENCLAVE_CREATE_INFO_VBS :: struct {
Flags : u32,
OwnerID : [32]BYTE,
};
PENCLAVE_CREATE_INFO_VBS :: ^struct {
Flags : u32,
OwnerID : [32]BYTE,
};
ENCLAVE_CREATE_INFO_VBS_BASIC :: struct {
Flags : u32,
OwnerID : [32]BYTE,
};
PENCLAVE_CREATE_INFO_VBS_BASIC :: ^struct {
Flags : u32,
OwnerID : [32]BYTE,
};
ENCLAVE_LOAD_DATA_VBS_BASIC :: struct {
PageType : u32,
};
PENCLAVE_LOAD_DATA_VBS_BASIC :: ^struct {
PageType : u32,
};
ENCLAVE_INIT_INFO_VBS_BASIC :: struct {
FamilyId : [16]BYTE,
ImageId : [16]BYTE,
EnclaveSize : ULONGLONG,
EnclaveSvn : u32,
Reserved : u32,
u : struct #raw_union {
SignatureInfoHandle : HANDLE,
Unused : ULONGLONG,
},
};
PENCLAVE_INIT_INFO_VBS_BASIC :: ^struct {
FamilyId : [16]BYTE,
ImageId : [16]BYTE,
EnclaveSize : ULONGLONG,
EnclaveSvn : u32,
Reserved : u32,
u : struct #raw_union {
SignatureInfoHandle : HANDLE,
Unused : ULONGLONG,
},
};
ENCLAVE_INIT_INFO_VBS :: struct {
Length : u32,
ThreadCount : u32,
};
PENCLAVE_INIT_INFO_VBS :: ^struct {
Length : u32,
ThreadCount : u32,
};
ENCLAVE_TARGET_FUNCTION :: #type (proc(PVOID) -> PVOID);
PENCLAVE_TARGET_FUNCTION :: ^ENCLAVE_TARGET_FUNCTION;
LPENCLAVE_TARGET_FUNCTION :: PENCLAVE_TARGET_FUNCTION;
FILE_ID_128 :: struct {
Identifier : [16]BYTE,
};
PFILE_ID_128 :: ^struct {
Identifier : [16]BYTE,
};
FILE_NOTIFY_INFORMATION :: struct {
NextEntryOffset : u32,
Action : u32,
FileNameLength : u32,
FileName : [1]WCHAR,
};
PFILE_NOTIFY_INFORMATION :: ^struct {
NextEntryOffset : u32,
Action : u32,
FileNameLength : u32,
FileName : [1]WCHAR,
};
FILE_NOTIFY_EXTENDED_INFORMATION :: struct {
NextEntryOffset : u32,
Action : u32,
CreationTime : LARGE_INTEGER,
LastModificationTime : LARGE_INTEGER,
LastChangeTime : LARGE_INTEGER,
LastAccessTime : LARGE_INTEGER,
AllocatedLength : LARGE_INTEGER,
FileSize : LARGE_INTEGER,
FileAttributes : u32,
ReparsePointTag : u32,
FileId : LARGE_INTEGER,
ParentFileId : LARGE_INTEGER,
FileNameLength : u32,
FileName : [1]WCHAR,
};
PFILE_NOTIFY_EXTENDED_INFORMATION :: ^struct {
NextEntryOffset : u32,
Action : u32,
CreationTime : LARGE_INTEGER,
LastModificationTime : LARGE_INTEGER,
LastChangeTime : LARGE_INTEGER,
LastAccessTime : LARGE_INTEGER,
AllocatedLength : LARGE_INTEGER,
FileSize : LARGE_INTEGER,
FileAttributes : u32,
ReparsePointTag : u32,
FileId : LARGE_INTEGER,
ParentFileId : LARGE_INTEGER,
FileNameLength : u32,
FileName : [1]WCHAR,
};
FILE_SEGMENT_ELEMENT :: struct #raw_union {
Buffer : PVOID64,
Alignment : ULONGLONG,
};
PFILE_SEGMENT_ELEMENT :: ^struct #raw_union {
Buffer : PVOID64,
Alignment : ULONGLONG,
};
REPARSE_GUID_DATA_BUFFER :: struct {
ReparseTag : u32,
ReparseDataLength : u16,
Reserved : u16,
ReparseGuid : GUID,
GenericReparseBuffer : struct {
DataBuffer : [1]BYTE,
},
};
PREPARSE_GUID_DATA_BUFFER :: ^struct {
ReparseTag : u32,
ReparseDataLength : u16,
Reserved : u16,
ReparseGuid : GUID,
GenericReparseBuffer : struct {
DataBuffer : [1]BYTE,
},
};
SCRUB_DATA_INPUT :: struct {
Size : u32,
Flags : u32,
MaximumIos : u32,
ObjectId : [4]u32,
Reserved : [25]u32,
ResumeContext : [816]BYTE,
};
PSCRUB_DATA_INPUT :: ^struct {
Size : u32,
Flags : u32,
MaximumIos : u32,
ObjectId : [4]u32,
Reserved : [25]u32,
ResumeContext : [816]BYTE,
};
SCRUB_PARITY_EXTENT :: struct {
Offset : LONGLONG,
Length : ULONGLONG,
};
PSCRUB_PARITY_EXTENT :: ^struct {
Offset : LONGLONG,
Length : ULONGLONG,
};
SCRUB_PARITY_EXTENT_DATA :: struct {
Size : u16,
Flags : u16,
NumberOfParityExtents : u16,
MaximumNumberOfParityExtents : u16,
ParityExtents : [1]SCRUB_PARITY_EXTENT,
};
PSCRUB_PARITY_EXTENT_DATA :: ^struct {
Size : u16,
Flags : u16,
NumberOfParityExtents : u16,
MaximumNumberOfParityExtents : u16,
ParityExtents : [1]SCRUB_PARITY_EXTENT,
};
SCRUB_DATA_OUTPUT :: struct {
Size : u32,
Flags : u32,
Status : u32,
ErrorFileOffset : ULONGLONG,
ErrorLength : ULONGLONG,
NumberOfBytesRepaired : ULONGLONG,
NumberOfBytesFailed : ULONGLONG,
InternalFileReference : ULONGLONG,
ResumeContextLength : u16,
ParityExtentDataOffset : u16,
Reserved : [9]u32,
NumberOfMetadataBytesProcessed : ULONGLONG,
NumberOfDataBytesProcessed : ULONGLONG,
TotalNumberOfMetadataBytesInUse : ULONGLONG,
TotalNumberOfDataBytesInUse : ULONGLONG,
ResumeContext : [816]BYTE,
};
PSCRUB_DATA_OUTPUT :: ^struct {
Size : u32,
Flags : u32,
Status : u32,
ErrorFileOffset : ULONGLONG,
ErrorLength : ULONGLONG,
NumberOfBytesRepaired : ULONGLONG,
NumberOfBytesFailed : ULONGLONG,
InternalFileReference : ULONGLONG,
ResumeContextLength : u16,
ParityExtentDataOffset : u16,
Reserved : [9]u32,
NumberOfMetadataBytesProcessed : ULONGLONG,
NumberOfDataBytesProcessed : ULONGLONG,
TotalNumberOfMetadataBytesInUse : ULONGLONG,
TotalNumberOfDataBytesInUse : ULONGLONG,
ResumeContext : [816]BYTE,
};
SharedVirtualDiskSupportType :: enum {
SharedVirtualDisksUnsupported = 0,
SharedVirtualDisksSupported = 1,
SharedVirtualDiskSnapshotsSupported = 3,
SharedVirtualDiskCDPSnapshotsSupported = 7,
};
SharedVirtualDiskHandleState :: enum {
SharedVirtualDiskHandleStateNone = 0,
SharedVirtualDiskHandleStateFileShared = 1,
SharedVirtualDiskHandleStateHandleShared = 3,
};
SHARED_VIRTUAL_DISK_SUPPORT :: struct {
SharedVirtualDiskSupport : SharedVirtualDiskSupportType,
HandleState : SharedVirtualDiskHandleState,
};
PSHARED_VIRTUAL_DISK_SUPPORT :: ^struct {
SharedVirtualDiskSupport : SharedVirtualDiskSupportType,
HandleState : SharedVirtualDiskHandleState,
};
REARRANGE_FILE_DATA :: struct {
SourceStartingOffset : ULONGLONG,
TargetOffset : ULONGLONG,
SourceFileHandle : HANDLE,
Length : u32,
Flags : u32,
};
PREARRANGE_FILE_DATA :: ^struct {
SourceStartingOffset : ULONGLONG,
TargetOffset : ULONGLONG,
SourceFileHandle : HANDLE,
Length : u32,
Flags : u32,
};
SHUFFLE_FILE_DATA :: struct {
StartingOffset : LONGLONG,
Length : LONGLONG,
Flags : u32,
};
PSHUFFLE_FILE_DATA :: ^struct {
StartingOffset : LONGLONG,
Length : LONGLONG,
Flags : u32,
};
NETWORK_APP_INSTANCE_EA :: struct {
AppInstanceID : GUID,
CsvFlags : u32,
};
PNETWORK_APP_INSTANCE_EA :: ^struct {
AppInstanceID : GUID,
CsvFlags : u32,
};
SYSTEM_POWER_STATE :: enum {
PowerSystemUnspecified = 0,
PowerSystemWorking = 1,
PowerSystemSleeping1 = 2,
PowerSystemSleeping2 = 3,
PowerSystemSleeping3 = 4,
PowerSystemHibernate = 5,
PowerSystemShutdown = 6,
PowerSystemMaximum = 7,
};
PSYSTEM_POWER_STATE :: ^enum {
PowerSystemUnspecified = 0,
PowerSystemWorking = 1,
PowerSystemSleeping1 = 2,
PowerSystemSleeping2 = 3,
PowerSystemSleeping3 = 4,
PowerSystemHibernate = 5,
PowerSystemShutdown = 6,
PowerSystemMaximum = 7,
};
POWER_ACTION :: enum {
PowerActionNone = 0,
PowerActionReserved,
PowerActionSleep,
PowerActionHibernate,
PowerActionShutdown,
PowerActionShutdownReset,
PowerActionShutdownOff,
PowerActionWarmEject,
PowerActionDisplayOff,
};
PPOWER_ACTION :: ^enum {
PowerActionNone = 0,
PowerActionReserved,
PowerActionSleep,
PowerActionHibernate,
PowerActionShutdown,
PowerActionShutdownReset,
PowerActionShutdownOff,
PowerActionWarmEject,
PowerActionDisplayOff,
};
DEVICE_POWER_STATE :: enum {
PowerDeviceUnspecified = 0,
PowerDeviceD0,
PowerDeviceD1,
PowerDeviceD2,
PowerDeviceD3,
PowerDeviceMaximum,
};
PDEVICE_POWER_STATE :: ^enum {
PowerDeviceUnspecified = 0,
PowerDeviceD0,
PowerDeviceD1,
PowerDeviceD2,
PowerDeviceD3,
PowerDeviceMaximum,
};
MONITOR_DISPLAY_STATE :: enum {
PowerMonitorOff = 0,
PowerMonitorOn,
PowerMonitorDim,
};
PMONITOR_DISPLAY_STATE :: ^enum {
PowerMonitorOff = 0,
PowerMonitorOn,
PowerMonitorDim,
};
USER_ACTIVITY_PRESENCE :: enum {
PowerUserPresent = 0,
PowerUserNotPresent,
PowerUserInactive,
PowerUserMaximum,
PowerUserInvalid = PowerUserMaximum,
};
PUSER_ACTIVITY_PRESENCE :: ^enum {
PowerUserPresent = 0,
PowerUserNotPresent,
PowerUserInactive,
PowerUserMaximum,
PowerUserInvalid = PowerUserMaximum,
};
EXECUTION_STATE :: u32;
PEXECUTION_STATE :: ^u32;
LATENCY_TIME :: enum {
LT_DONT_CARE,
LT_LOWEST_LATENCY,
};
POWER_REQUEST_TYPE :: enum {
PowerRequestDisplayRequired,
PowerRequestSystemRequired,
PowerRequestAwayModeRequired,
PowerRequestExecutionRequired,
};
PPOWER_REQUEST_TYPE :: ^enum {
PowerRequestDisplayRequired,
PowerRequestSystemRequired,
PowerRequestAwayModeRequired,
PowerRequestExecutionRequired,
};
CM_POWER_DATA :: struct {
PD_Size : u32,
PD_MostRecentPowerState : DEVICE_POWER_STATE,
PD_Capabilities : u32,
PD_D1Latency : u32,
PD_D2Latency : u32,
PD_D3Latency : u32,
PD_PowerStateMapping : [7]DEVICE_POWER_STATE,
PD_DeepestSystemWake : SYSTEM_POWER_STATE,
};
PCM_POWER_DATA :: ^struct {
PD_Size : u32,
PD_MostRecentPowerState : DEVICE_POWER_STATE,
PD_Capabilities : u32,
PD_D1Latency : u32,
PD_D2Latency : u32,
PD_D3Latency : u32,
PD_PowerStateMapping : [7]DEVICE_POWER_STATE,
PD_DeepestSystemWake : SYSTEM_POWER_STATE,
};
POWER_INFORMATION_LEVEL :: enum {
SystemPowerPolicyAc,
SystemPowerPolicyDc,
VerifySystemPolicyAc,
VerifySystemPolicyDc,
SystemPowerCapabilities,
SystemBatteryState,
SystemPowerStateHandler,
ProcessorStateHandler,
SystemPowerPolicyCurrent,
AdministratorPowerPolicy,
SystemReserveHiberFile,
ProcessorInformation,
SystemPowerInformation,
ProcessorStateHandler2,
LastWakeTime,
LastSleepTime,
SystemExecutionState,
SystemPowerStateNotifyHandler,
ProcessorPowerPolicyAc,
ProcessorPowerPolicyDc,
VerifyProcessorPowerPolicyAc,
VerifyProcessorPowerPolicyDc,
ProcessorPowerPolicyCurrent,
SystemPowerStateLogging,
SystemPowerLoggingEntry,
SetPowerSettingValue,
NotifyUserPowerSetting,
PowerInformationLevelUnused0,
SystemMonitorHiberBootPowerOff,
SystemVideoState,
TraceApplicationPowerMessage,
TraceApplicationPowerMessageEnd,
ProcessorPerfStates,
ProcessorIdleStates,
ProcessorCap,
SystemWakeSource,
SystemHiberFileInformation,
TraceServicePowerMessage,
ProcessorLoad,
PowerShutdownNotification,
MonitorCapabilities,
SessionPowerInit,
SessionDisplayState,
PowerRequestCreate,
PowerRequestAction,
GetPowerRequestList,
ProcessorInformationEx,
NotifyUserModeLegacyPowerEvent,
GroupPark,
ProcessorIdleDomains,
WakeTimerList,
SystemHiberFileSize,
ProcessorIdleStatesHv,
ProcessorPerfStatesHv,
ProcessorPerfCapHv,
ProcessorSetIdle,
LogicalProcessorIdling,
UserPresence,
PowerSettingNotificationName,
GetPowerSettingValue,
IdleResiliency,
SessionRITState,
SessionConnectNotification,
SessionPowerCleanup,
SessionLockState,
SystemHiberbootState,
PlatformInformation,
PdcInvocation,
MonitorInvocation,
FirmwareTableInformationRegistered,
SetShutdownSelectedTime,
SuspendResumeInvocation,
PlmPowerRequestCreate,
ScreenOff,
CsDeviceNotification,
PlatformRole,
LastResumePerformance,
DisplayBurst,
ExitLatencySamplingPercentage,
RegisterSpmPowerSettings,
PlatformIdleStates,
ProcessorIdleVeto,
PlatformIdleVeto,
SystemBatteryStatePrecise,
ThermalEvent,
PowerRequestActionInternal,
BatteryDeviceState,
PowerInformationInternal,
ThermalStandby,
SystemHiberFileType,
PhysicalPowerButtonPress,
QueryPotentialDripsConstraint,
EnergyTrackerCreate,
EnergyTrackerQuery,
UpdateBlackBoxRecorder,
PowerInformationLevelMaximum,
};
POWER_USER_PRESENCE_TYPE :: enum {
UserNotPresent = 0,
UserPresent = 1,
UserUnknown = 0xff,
};
PPOWER_USER_PRESENCE_TYPE :: ^enum {
UserNotPresent = 0,
UserPresent = 1,
UserUnknown = 0xff,
};
POWER_USER_PRESENCE :: struct {
UserPresence : POWER_USER_PRESENCE_TYPE,
};
PPOWER_USER_PRESENCE :: ^struct {
UserPresence : POWER_USER_PRESENCE_TYPE,
};
POWER_SESSION_CONNECT :: struct {
Connected : BOOLEAN,
Console : BOOLEAN,
};
PPOWER_SESSION_CONNECT :: ^struct {
Connected : BOOLEAN,
Console : BOOLEAN,
};
POWER_SESSION_TIMEOUTS :: struct {
InputTimeout : u32,
DisplayTimeout : u32,
};
PPOWER_SESSION_TIMEOUTS :: ^struct {
InputTimeout : u32,
DisplayTimeout : u32,
};
POWER_SESSION_RIT_STATE :: struct {
Active : BOOLEAN,
LastInputTime : u32,
};
PPOWER_SESSION_RIT_STATE :: ^struct {
Active : BOOLEAN,
LastInputTime : u32,
};
POWER_SESSION_WINLOGON :: struct {
SessionId : u32,
Console : BOOLEAN,
Locked : BOOLEAN,
};
PPOWER_SESSION_WINLOGON :: ^struct {
SessionId : u32,
Console : BOOLEAN,
Locked : BOOLEAN,
};
POWER_IDLE_RESILIENCY :: struct {
CoalescingTimeout : u32,
IdleResiliencyPeriod : u32,
};
PPOWER_IDLE_RESILIENCY :: ^struct {
CoalescingTimeout : u32,
IdleResiliencyPeriod : u32,
};
POWER_MONITOR_REQUEST_REASON :: enum {
MonitorRequestReasonUnknown,
MonitorRequestReasonPowerButton,
MonitorRequestReasonRemoteConnection,
MonitorRequestReasonScMonitorpower,
MonitorRequestReasonUserInput,
MonitorRequestReasonAcDcDisplayBurst,
MonitorRequestReasonUserDisplayBurst,
MonitorRequestReasonPoSetSystemState,
MonitorRequestReasonSetThreadExecutionState,
MonitorRequestReasonFullWake,
MonitorRequestReasonSessionUnlock,
MonitorRequestReasonScreenOffRequest,
MonitorRequestReasonIdleTimeout,
MonitorRequestReasonPolicyChange,
MonitorRequestReasonSleepButton,
MonitorRequestReasonLid,
MonitorRequestReasonBatteryCountChange,
MonitorRequestReasonGracePeriod,
MonitorRequestReasonPnP,
MonitorRequestReasonDP,
MonitorRequestReasonSxTransition,
MonitorRequestReasonSystemIdle,
MonitorRequestReasonNearProximity,
MonitorRequestReasonThermalStandby,
MonitorRequestReasonResumePdc,
MonitorRequestReasonResumeS4,
MonitorRequestReasonTerminal,
MonitorRequestReasonPdcSignal,
MonitorRequestReasonAcDcDisplayBurstSuppressed,
MonitorRequestReasonSystemStateEntered,
MonitorRequestReasonWinrt,
MonitorRequestReasonUserInputKeyboard,
MonitorRequestReasonUserInputMouse,
MonitorRequestReasonUserInputTouch,
MonitorRequestReasonUserInputPen,
MonitorRequestReasonUserInputAccelerometer,
MonitorRequestReasonUserInputHid,
MonitorRequestReasonUserInputPoUserPresent,
MonitorRequestReasonUserInputSessionSwitch,
MonitorRequestReasonUserInputInitialization,
MonitorRequestReasonPdcSignalWindowsMobilePwrNotif,
MonitorRequestReasonPdcSignalWindowsMobileShell,
MonitorRequestReasonPdcSignalHeyCortana,
MonitorRequestReasonPdcSignalHolographicShell,
MonitorRequestReasonPdcSignalFingerprint,
MonitorRequestReasonDirectedDrips,
MonitorRequestReasonMax,
};
POWER_MONITOR_REQUEST_TYPE :: enum {
MonitorRequestTypeOff,
MonitorRequestTypeOnAndPresent,
MonitorRequestTypeToggleOn,
};
POWER_MONITOR_INVOCATION :: struct {
Console : BOOLEAN,
RequestReason : POWER_MONITOR_REQUEST_REASON,
};
PPOWER_MONITOR_INVOCATION :: ^struct {
Console : BOOLEAN,
RequestReason : POWER_MONITOR_REQUEST_REASON,
};
RESUME_PERFORMANCE :: struct {
PostTimeMs : u32,
TotalResumeTimeMs : ULONGLONG,
ResumeCompleteTimestamp : ULONGLONG,
};
PRESUME_PERFORMANCE :: ^struct {
PostTimeMs : u32,
TotalResumeTimeMs : ULONGLONG,
ResumeCompleteTimestamp : ULONGLONG,
};
SYSTEM_POWER_CONDITION :: enum {
PoAc,
PoDc,
PoHot,
PoConditionMaximum,
};
SET_POWER_SETTING_VALUE :: struct {
Version : u32,
Guid : GUID,
PowerCondition : SYSTEM_POWER_CONDITION,
DataLength : u32,
Data : [1]BYTE,
};
PSET_POWER_SETTING_VALUE :: ^struct {
Version : u32,
Guid : GUID,
PowerCondition : SYSTEM_POWER_CONDITION,
DataLength : u32,
Data : [1]BYTE,
};
NOTIFY_USER_POWER_SETTING :: struct {
Guid : GUID,
};
PNOTIFY_USER_POWER_SETTING :: ^struct {
Guid : GUID,
};
APPLICATIONLAUNCH_SETTING_VALUE :: struct {
ActivationTime : LARGE_INTEGER,
Flags : u32,
ButtonInstanceID : u32,
};
PAPPLICATIONLAUNCH_SETTING_VALUE :: ^struct {
ActivationTime : LARGE_INTEGER,
Flags : u32,
ButtonInstanceID : u32,
};
POWER_PLATFORM_ROLE :: enum {
PlatformRoleUnspecified = 0,
PlatformRoleDesktop,
PlatformRoleMobile,
PlatformRoleWorkstation,
PlatformRoleEnterpriseServer,
PlatformRoleSOHOServer,
PlatformRoleAppliancePC,
PlatformRolePerformanceServer,
PlatformRoleSlate,
PlatformRoleMaximum,
};
PPOWER_PLATFORM_ROLE :: ^enum {
PlatformRoleUnspecified = 0,
PlatformRoleDesktop,
PlatformRoleMobile,
PlatformRoleWorkstation,
PlatformRoleEnterpriseServer,
PlatformRoleSOHOServer,
PlatformRoleAppliancePC,
PlatformRolePerformanceServer,
PlatformRoleSlate,
PlatformRoleMaximum,
};
POWER_PLATFORM_INFORMATION :: struct {
AoAc : BOOLEAN,
};
PPOWER_PLATFORM_INFORMATION :: ^struct {
AoAc : BOOLEAN,
};
BATTERY_REPORTING_SCALE :: struct {
Granularity : u32,
Capacity : u32,
};
PBATTERY_REPORTING_SCALE :: ^struct {
Granularity : u32,
Capacity : u32,
};
PPM_WMI_LEGACY_PERFSTATE :: struct {
Frequency : u32,
Flags : u32,
PercentFrequency : u32,
};
PPPM_WMI_LEGACY_PERFSTATE :: ^struct {
Frequency : u32,
Flags : u32,
PercentFrequency : u32,
};
PPM_WMI_IDLE_STATE :: struct {
Latency : u32,
Power : u32,
TimeCheck : u32,
PromotePercent : BYTE,
DemotePercent : BYTE,
StateType : BYTE,
Reserved : BYTE,
StateFlags : u32,
Context : u32,
IdleHandler : u32,
Reserved1 : u32,
};
PPPM_WMI_IDLE_STATE :: ^struct {
Latency : u32,
Power : u32,
TimeCheck : u32,
PromotePercent : BYTE,
DemotePercent : BYTE,
StateType : BYTE,
Reserved : BYTE,
StateFlags : u32,
Context : u32,
IdleHandler : u32,
Reserved1 : u32,
};
PPM_WMI_IDLE_STATES :: struct {
Type : u32,
Count : u32,
TargetState : u32,
OldState : u32,
TargetProcessors : DWORD64,
State : [1]PPM_WMI_IDLE_STATE,
};
PPPM_WMI_IDLE_STATES :: ^struct {
Type : u32,
Count : u32,
TargetState : u32,
OldState : u32,
TargetProcessors : DWORD64,
State : [1]PPM_WMI_IDLE_STATE,
};
PPM_WMI_IDLE_STATES_EX :: struct {
Type : u32,
Count : u32,
TargetState : u32,
OldState : u32,
TargetProcessors : PVOID,
State : [1]PPM_WMI_IDLE_STATE,
};
PPPM_WMI_IDLE_STATES_EX :: ^struct {
Type : u32,
Count : u32,
TargetState : u32,
OldState : u32,
TargetProcessors : PVOID,
State : [1]PPM_WMI_IDLE_STATE,
};
PPM_WMI_PERF_STATE :: struct {
Frequency : u32,
Power : u32,
PercentFrequency : BYTE,
IncreaseLevel : BYTE,
DecreaseLevel : BYTE,
Type : BYTE,
IncreaseTime : u32,
DecreaseTime : u32,
Control : DWORD64,
Status : DWORD64,
HitCount : u32,
Reserved1 : u32,
Reserved2 : DWORD64,
Reserved3 : DWORD64,
};
PPPM_WMI_PERF_STATE :: ^struct {
Frequency : u32,
Power : u32,
PercentFrequency : BYTE,
IncreaseLevel : BYTE,
DecreaseLevel : BYTE,
Type : BYTE,
IncreaseTime : u32,
DecreaseTime : u32,
Control : DWORD64,
Status : DWORD64,
HitCount : u32,
Reserved1 : u32,
Reserved2 : DWORD64,
Reserved3 : DWORD64,
};
PPM_WMI_PERF_STATES :: struct {
Count : u32,
MaxFrequency : u32,
CurrentState : u32,
MaxPerfState : u32,
MinPerfState : u32,
LowestPerfState : u32,
ThermalConstraint : u32,
BusyAdjThreshold : BYTE,
PolicyType : BYTE,
Type : BYTE,
Reserved : BYTE,
TimerInterval : u32,
TargetProcessors : DWORD64,
PStateHandler : u32,
PStateContext : u32,
TStateHandler : u32,
TStateContext : u32,
FeedbackHandler : u32,
Reserved1 : u32,
Reserved2 : DWORD64,
State : [1]PPM_WMI_PERF_STATE,
};
PPPM_WMI_PERF_STATES :: ^struct {
Count : u32,
MaxFrequency : u32,
CurrentState : u32,
MaxPerfState : u32,
MinPerfState : u32,
LowestPerfState : u32,
ThermalConstraint : u32,
BusyAdjThreshold : BYTE,
PolicyType : BYTE,
Type : BYTE,
Reserved : BYTE,
TimerInterval : u32,
TargetProcessors : DWORD64,
PStateHandler : u32,
PStateContext : u32,
TStateHandler : u32,
TStateContext : u32,
FeedbackHandler : u32,
Reserved1 : u32,
Reserved2 : DWORD64,
State : [1]PPM_WMI_PERF_STATE,
};
PPM_WMI_PERF_STATES_EX :: struct {
Count : u32,
MaxFrequency : u32,
CurrentState : u32,
MaxPerfState : u32,
MinPerfState : u32,
LowestPerfState : u32,
ThermalConstraint : u32,
BusyAdjThreshold : BYTE,
PolicyType : BYTE,
Type : BYTE,
Reserved : BYTE,
TimerInterval : u32,
TargetProcessors : PVOID,
PStateHandler : u32,
PStateContext : u32,
TStateHandler : u32,
TStateContext : u32,
FeedbackHandler : u32,
Reserved1 : u32,
Reserved2 : DWORD64,
State : [1]PPM_WMI_PERF_STATE,
};
PPPM_WMI_PERF_STATES_EX :: ^struct {
Count : u32,
MaxFrequency : u32,
CurrentState : u32,
MaxPerfState : u32,
MinPerfState : u32,
LowestPerfState : u32,
ThermalConstraint : u32,
BusyAdjThreshold : BYTE,
PolicyType : BYTE,
Type : BYTE,
Reserved : BYTE,
TimerInterval : u32,
TargetProcessors : PVOID,
PStateHandler : u32,
PStateContext : u32,
TStateHandler : u32,
TStateContext : u32,
FeedbackHandler : u32,
Reserved1 : u32,
Reserved2 : DWORD64,
State : [1]PPM_WMI_PERF_STATE,
};
PPM_IDLE_STATE_ACCOUNTING :: struct {
IdleTransitions : u32,
FailedTransitions : u32,
InvalidBucketIndex : u32,
TotalTime : DWORD64,
IdleTimeBuckets : [6]u32,
};
PPPM_IDLE_STATE_ACCOUNTING :: ^struct {
IdleTransitions : u32,
FailedTransitions : u32,
InvalidBucketIndex : u32,
TotalTime : DWORD64,
IdleTimeBuckets : [6]u32,
};
PPM_IDLE_ACCOUNTING :: struct {
StateCount : u32,
TotalTransitions : u32,
ResetCount : u32,
StartTime : DWORD64,
State : [1]PPM_IDLE_STATE_ACCOUNTING,
};
PPPM_IDLE_ACCOUNTING :: ^struct {
StateCount : u32,
TotalTransitions : u32,
ResetCount : u32,
StartTime : DWORD64,
State : [1]PPM_IDLE_STATE_ACCOUNTING,
};
PPM_IDLE_STATE_BUCKET_EX :: struct {
TotalTimeUs : DWORD64,
MinTimeUs : u32,
MaxTimeUs : u32,
Count : u32,
};
PPPM_IDLE_STATE_BUCKET_EX :: ^struct {
TotalTimeUs : DWORD64,
MinTimeUs : u32,
MaxTimeUs : u32,
Count : u32,
};
PPM_IDLE_STATE_ACCOUNTING_EX :: struct {
TotalTime : DWORD64,
IdleTransitions : u32,
FailedTransitions : u32,
InvalidBucketIndex : u32,
MinTimeUs : u32,
MaxTimeUs : u32,
CancelledTransitions : u32,
IdleTimeBuckets : [16]PPM_IDLE_STATE_BUCKET_EX,
};
PPPM_IDLE_STATE_ACCOUNTING_EX :: ^struct {
TotalTime : DWORD64,
IdleTransitions : u32,
FailedTransitions : u32,
InvalidBucketIndex : u32,
MinTimeUs : u32,
MaxTimeUs : u32,
CancelledTransitions : u32,
IdleTimeBuckets : [16]PPM_IDLE_STATE_BUCKET_EX,
};
PPM_IDLE_ACCOUNTING_EX :: struct {
StateCount : u32,
TotalTransitions : u32,
ResetCount : u32,
AbortCount : u32,
StartTime : DWORD64,
State : [1]PPM_IDLE_STATE_ACCOUNTING_EX,
};
PPPM_IDLE_ACCOUNTING_EX :: ^struct {
StateCount : u32,
TotalTransitions : u32,
ResetCount : u32,
AbortCount : u32,
StartTime : DWORD64,
State : [1]PPM_IDLE_STATE_ACCOUNTING_EX,
};
PPM_PERFSTATE_EVENT :: struct {
State : u32,
Status : u32,
Latency : u32,
Speed : u32,
Processor : u32,
};
PPPM_PERFSTATE_EVENT :: ^struct {
State : u32,
Status : u32,
Latency : u32,
Speed : u32,
Processor : u32,
};
PPM_PERFSTATE_DOMAIN_EVENT :: struct {
State : u32,
Latency : u32,
Speed : u32,
Processors : DWORD64,
};
PPPM_PERFSTATE_DOMAIN_EVENT :: ^struct {
State : u32,
Latency : u32,
Speed : u32,
Processors : DWORD64,
};
PPM_IDLESTATE_EVENT :: struct {
NewState : u32,
OldState : u32,
Processors : DWORD64,
};
PPPM_IDLESTATE_EVENT :: ^struct {
NewState : u32,
OldState : u32,
Processors : DWORD64,
};
PPM_THERMALCHANGE_EVENT :: struct {
ThermalConstraint : u32,
Processors : DWORD64,
};
PPPM_THERMALCHANGE_EVENT :: ^struct {
ThermalConstraint : u32,
Processors : DWORD64,
};
PPM_THERMAL_POLICY_EVENT :: struct {
Mode : BYTE,
Processors : DWORD64,
};
PPPM_THERMAL_POLICY_EVENT :: ^struct {
Mode : BYTE,
Processors : DWORD64,
};
POWER_ACTION_POLICY :: struct {
Action : POWER_ACTION,
Flags : u32,
EventCode : u32,
};
PPOWER_ACTION_POLICY :: ^struct {
Action : POWER_ACTION,
Flags : u32,
EventCode : u32,
};
SYSTEM_POWER_LEVEL :: struct {
Enable : BOOLEAN,
Spare : [3]BYTE,
BatteryLevel : u32,
PowerPolicy : POWER_ACTION_POLICY,
MinSystemState : SYSTEM_POWER_STATE,
};
PSYSTEM_POWER_LEVEL :: ^struct {
Enable : BOOLEAN,
Spare : [3]BYTE,
BatteryLevel : u32,
PowerPolicy : POWER_ACTION_POLICY,
MinSystemState : SYSTEM_POWER_STATE,
};
SYSTEM_POWER_POLICY :: struct {
Revision : u32,
PowerButton : POWER_ACTION_POLICY,
SleepButton : POWER_ACTION_POLICY,
LidClose : POWER_ACTION_POLICY,
LidOpenWake : SYSTEM_POWER_STATE,
Reserved : u32,
Idle : POWER_ACTION_POLICY,
IdleTimeout : u32,
IdleSensitivity : BYTE,
DynamicThrottle : BYTE,
Spare2 : [2]BYTE,
MinSleep : SYSTEM_POWER_STATE,
MaxSleep : SYSTEM_POWER_STATE,
ReducedLatencySleep : SYSTEM_POWER_STATE,
WinLogonFlags : u32,
Spare3 : u32,
DozeS4Timeout : u32,
BroadcastCapacityResolution : u32,
DischargePolicy : [4]SYSTEM_POWER_LEVEL,
VideoTimeout : u32,
VideoDimDisplay : BOOLEAN,
VideoReserved : [3]u32,
SpindownTimeout : u32,
OptimizeForPower : BOOLEAN,
FanThrottleTolerance : BYTE,
ForcedThrottle : BYTE,
MinThrottle : BYTE,
OverThrottled : POWER_ACTION_POLICY,
};
PSYSTEM_POWER_POLICY :: ^struct {
Revision : u32,
PowerButton : POWER_ACTION_POLICY,
SleepButton : POWER_ACTION_POLICY,
LidClose : POWER_ACTION_POLICY,
LidOpenWake : SYSTEM_POWER_STATE,
Reserved : u32,
Idle : POWER_ACTION_POLICY,
IdleTimeout : u32,
IdleSensitivity : BYTE,
DynamicThrottle : BYTE,
Spare2 : [2]BYTE,
MinSleep : SYSTEM_POWER_STATE,
MaxSleep : SYSTEM_POWER_STATE,
ReducedLatencySleep : SYSTEM_POWER_STATE,
WinLogonFlags : u32,
Spare3 : u32,
DozeS4Timeout : u32,
BroadcastCapacityResolution : u32,
DischargePolicy : [4]SYSTEM_POWER_LEVEL,
VideoTimeout : u32,
VideoDimDisplay : BOOLEAN,
VideoReserved : [3]u32,
SpindownTimeout : u32,
OptimizeForPower : BOOLEAN,
FanThrottleTolerance : BYTE,
ForcedThrottle : BYTE,
MinThrottle : BYTE,
OverThrottled : POWER_ACTION_POLICY,
};
PROCESSOR_IDLESTATE_INFO :: struct {
TimeCheck : u32,
DemotePercent : BYTE,
PromotePercent : BYTE,
Spare : [2]BYTE,
};
PPROCESSOR_IDLESTATE_INFO :: ^struct {
TimeCheck : u32,
DemotePercent : BYTE,
PromotePercent : BYTE,
Spare : [2]BYTE,
};
PROCESSOR_IDLESTATE_POLICY :: struct {
Revision : u16,
Flags : struct #raw_union {
AsWORD : u16,
s : struct {
AllowScaling : ,
Disabled : ,
Reserved : ,
},
},
PolicyCount : u32,
Policy : [0x3]PROCESSOR_IDLESTATE_INFO,
};
PPROCESSOR_IDLESTATE_POLICY :: ^struct {
Revision : u16,
Flags : struct #raw_union {
AsWORD : u16,
s : struct {
AllowScaling : ,
Disabled : ,
Reserved : ,
},
},
PolicyCount : u32,
Policy : [0x3]PROCESSOR_IDLESTATE_INFO,
};
PROCESSOR_POWER_POLICY_INFO :: struct {
TimeCheck : u32,
DemoteLimit : u32,
PromoteLimit : u32,
DemotePercent : BYTE,
PromotePercent : BYTE,
Spare : [2]BYTE,
AllowDemotion : ,
AllowPromotion : ,
Reserved : ,
};
PPROCESSOR_POWER_POLICY_INFO :: ^struct {
TimeCheck : u32,
DemoteLimit : u32,
PromoteLimit : u32,
DemotePercent : BYTE,
PromotePercent : BYTE,
Spare : [2]BYTE,
AllowDemotion : ,
AllowPromotion : ,
Reserved : ,
};
PROCESSOR_POWER_POLICY :: struct {
Revision : u32,
DynamicThrottle : BYTE,
Spare : [3]BYTE,
DisableCStates : ,
Reserved : ,
PolicyCount : u32,
Policy : [3]PROCESSOR_POWER_POLICY_INFO,
};
PPROCESSOR_POWER_POLICY :: ^struct {
Revision : u32,
DynamicThrottle : BYTE,
Spare : [3]BYTE,
DisableCStates : ,
Reserved : ,
PolicyCount : u32,
Policy : [3]PROCESSOR_POWER_POLICY_INFO,
};
PROCESSOR_PERFSTATE_POLICY :: struct {
Revision : u32,
MaxThrottle : BYTE,
MinThrottle : BYTE,
BusyAdjThreshold : BYTE,
u : struct #raw_union {
Spare : BYTE,
Flags : struct #raw_union {
AsBYTE : BYTE,
s : struct {
NoDomainAccounting : ,
IncreasePolicy : ,
DecreasePolicy : ,
Reserved : ,
},
},
},
TimeCheck : u32,
IncreaseTime : u32,
DecreaseTime : u32,
IncreasePercent : u32,
DecreasePercent : u32,
};
PPROCESSOR_PERFSTATE_POLICY :: ^struct {
Revision : u32,
MaxThrottle : BYTE,
MinThrottle : BYTE,
BusyAdjThreshold : BYTE,
u : struct #raw_union {
Spare : BYTE,
Flags : struct #raw_union {
AsBYTE : BYTE,
s : struct {
NoDomainAccounting : ,
IncreasePolicy : ,
DecreasePolicy : ,
Reserved : ,
},
},
},
TimeCheck : u32,
IncreaseTime : u32,
DecreaseTime : u32,
IncreasePercent : u32,
DecreasePercent : u32,
};
ADMINISTRATOR_POWER_POLICY :: struct {
MinSleep : SYSTEM_POWER_STATE,
MaxSleep : SYSTEM_POWER_STATE,
MinVideoTimeout : u32,
MaxVideoTimeout : u32,
MinSpindownTimeout : u32,
MaxSpindownTimeout : u32,
};
PADMINISTRATOR_POWER_POLICY :: ^struct {
MinSleep : SYSTEM_POWER_STATE,
MaxSleep : SYSTEM_POWER_STATE,
MinVideoTimeout : u32,
MaxVideoTimeout : u32,
MinSpindownTimeout : u32,
MaxSpindownTimeout : u32,
};
HIBERFILE_BUCKET_SIZE :: enum {
HiberFileBucket1GB = 0,
HiberFileBucket2GB,
HiberFileBucket4GB,
HiberFileBucket8GB,
HiberFileBucket16GB,
HiberFileBucket32GB,
HiberFileBucketUnlimited,
HiberFileBucketMax,
};
PHIBERFILE_BUCKET_SIZE :: ^enum {
HiberFileBucket1GB = 0,
HiberFileBucket2GB,
HiberFileBucket4GB,
HiberFileBucket8GB,
HiberFileBucket16GB,
HiberFileBucket32GB,
HiberFileBucketUnlimited,
HiberFileBucketMax,
};
HIBERFILE_BUCKET :: struct {
MaxPhysicalMemory : DWORD64,
PhysicalMemoryPercent : [0x03]u32,
};
PHIBERFILE_BUCKET :: ^struct {
MaxPhysicalMemory : DWORD64,
PhysicalMemoryPercent : [0x03]u32,
};
SYSTEM_POWER_CAPABILITIES :: struct {
PowerButtonPresent : BOOLEAN,
SleepButtonPresent : BOOLEAN,
LidPresent : BOOLEAN,
SystemS1 : BOOLEAN,
SystemS2 : BOOLEAN,
SystemS3 : BOOLEAN,
SystemS4 : BOOLEAN,
SystemS5 : BOOLEAN,
HiberFilePresent : BOOLEAN,
FullWake : BOOLEAN,
VideoDimPresent : BOOLEAN,
ApmPresent : BOOLEAN,
UpsPresent : BOOLEAN,
ThermalControl : BOOLEAN,
ProcessorThrottle : BOOLEAN,
ProcessorMinThrottle : BYTE,
ProcessorMaxThrottle : BYTE,
FastSystemS4 : BOOLEAN,
Hiberboot : BOOLEAN,
WakeAlarmPresent : BOOLEAN,
AoAc : BOOLEAN,
DiskSpinDown : BOOLEAN,
HiberFileType : BYTE,
AoAcConnectivitySupported : BOOLEAN,
spare3 : [6]BYTE,
SystemBatteriesPresent : BOOLEAN,
BatteriesAreShortTerm : BOOLEAN,
BatteryScale : [3]BATTERY_REPORTING_SCALE,
AcOnLineWake : SYSTEM_POWER_STATE,
SoftLidWake : SYSTEM_POWER_STATE,
RtcWake : SYSTEM_POWER_STATE,
MinDeviceWakeState : SYSTEM_POWER_STATE,
DefaultLowLatencyWake : SYSTEM_POWER_STATE,
};
PSYSTEM_POWER_CAPABILITIES :: ^struct {
PowerButtonPresent : BOOLEAN,
SleepButtonPresent : BOOLEAN,
LidPresent : BOOLEAN,
SystemS1 : BOOLEAN,
SystemS2 : BOOLEAN,
SystemS3 : BOOLEAN,
SystemS4 : BOOLEAN,
SystemS5 : BOOLEAN,
HiberFilePresent : BOOLEAN,
FullWake : BOOLEAN,
VideoDimPresent : BOOLEAN,
ApmPresent : BOOLEAN,
UpsPresent : BOOLEAN,
ThermalControl : BOOLEAN,
ProcessorThrottle : BOOLEAN,
ProcessorMinThrottle : BYTE,
ProcessorMaxThrottle : BYTE,
FastSystemS4 : BOOLEAN,
Hiberboot : BOOLEAN,
WakeAlarmPresent : BOOLEAN,
AoAc : BOOLEAN,
DiskSpinDown : BOOLEAN,
HiberFileType : BYTE,
AoAcConnectivitySupported : BOOLEAN,
spare3 : [6]BYTE,
SystemBatteriesPresent : BOOLEAN,
BatteriesAreShortTerm : BOOLEAN,
BatteryScale : [3]BATTERY_REPORTING_SCALE,
AcOnLineWake : SYSTEM_POWER_STATE,
SoftLidWake : SYSTEM_POWER_STATE,
RtcWake : SYSTEM_POWER_STATE,
MinDeviceWakeState : SYSTEM_POWER_STATE,
DefaultLowLatencyWake : SYSTEM_POWER_STATE,
};
SYSTEM_BATTERY_STATE :: struct {
AcOnLine : BOOLEAN,
BatteryPresent : BOOLEAN,
Charging : BOOLEAN,
Discharging : BOOLEAN,
Spare1 : [3]BOOLEAN,
Tag : BYTE,
MaxCapacity : u32,
RemainingCapacity : u32,
Rate : u32,
EstimatedTime : u32,
DefaultAlert1 : u32,
DefaultAlert2 : u32,
};
PSYSTEM_BATTERY_STATE :: ^struct {
AcOnLine : BOOLEAN,
BatteryPresent : BOOLEAN,
Charging : BOOLEAN,
Discharging : BOOLEAN,
Spare1 : [3]BOOLEAN,
Tag : BYTE,
MaxCapacity : u32,
RemainingCapacity : u32,
Rate : u32,
EstimatedTime : u32,
DefaultAlert1 : u32,
DefaultAlert2 : u32,
};
IMAGE_DOS_HEADER :: struct {
e_magic : u16,
e_cblp : u16,
e_cp : u16,
e_crlc : u16,
e_cparhdr : u16,
e_minalloc : u16,
e_maxalloc : u16,
e_ss : u16,
e_sp : u16,
e_csum : u16,
e_ip : u16,
e_cs : u16,
e_lfarlc : u16,
e_ovno : u16,
e_res : [4]u16,
e_oemid : u16,
e_oeminfo : u16,
e_res2 : [10]u16,
e_lfanew : LONG,
};
PIMAGE_DOS_HEADER :: ^struct {
e_magic : u16,
e_cblp : u16,
e_cp : u16,
e_crlc : u16,
e_cparhdr : u16,
e_minalloc : u16,
e_maxalloc : u16,
e_ss : u16,
e_sp : u16,
e_csum : u16,
e_ip : u16,
e_cs : u16,
e_lfarlc : u16,
e_ovno : u16,
e_res : [4]u16,
e_oemid : u16,
e_oeminfo : u16,
e_res2 : [10]u16,
e_lfanew : LONG,
};
IMAGE_OS2_HEADER :: struct {
ne_magic : u16,
ne_ver : CHAR,
ne_rev : CHAR,
ne_enttab : u16,
ne_cbenttab : u16,
ne_crc : LONG,
ne_flags : u16,
ne_autodata : u16,
ne_heap : u16,
ne_stack : u16,
ne_csip : LONG,
ne_sssp : LONG,
ne_cseg : u16,
ne_cmod : u16,
ne_cbnrestab : u16,
ne_segtab : u16,
ne_rsrctab : u16,
ne_restab : u16,
ne_modtab : u16,
ne_imptab : u16,
ne_nrestab : LONG,
ne_cmovent : u16,
ne_align : u16,
ne_cres : u16,
ne_exetyp : BYTE,
ne_flagsothers : BYTE,
ne_pretthunks : u16,
ne_psegrefbytes : u16,
ne_swaparea : u16,
ne_expver : u16,
};
PIMAGE_OS2_HEADER :: ^struct {
ne_magic : u16,
ne_ver : CHAR,
ne_rev : CHAR,
ne_enttab : u16,
ne_cbenttab : u16,
ne_crc : LONG,
ne_flags : u16,
ne_autodata : u16,
ne_heap : u16,
ne_stack : u16,
ne_csip : LONG,
ne_sssp : LONG,
ne_cseg : u16,
ne_cmod : u16,
ne_cbnrestab : u16,
ne_segtab : u16,
ne_rsrctab : u16,
ne_restab : u16,
ne_modtab : u16,
ne_imptab : u16,
ne_nrestab : LONG,
ne_cmovent : u16,
ne_align : u16,
ne_cres : u16,
ne_exetyp : BYTE,
ne_flagsothers : BYTE,
ne_pretthunks : u16,
ne_psegrefbytes : u16,
ne_swaparea : u16,
ne_expver : u16,
};
IMAGE_VXD_HEADER :: struct {
e32_magic : u16,
e32_border : BYTE,
e32_worder : BYTE,
e32_level : u32,
e32_cpu : u16,
e32_os : u16,
e32_ver : u32,
e32_mflags : u32,
e32_mpages : u32,
e32_startobj : u32,
e32_eip : u32,
e32_stackobj : u32,
e32_esp : u32,
e32_pagesize : u32,
e32_lastpagesize : u32,
e32_fixupsize : u32,
e32_fixupsum : u32,
e32_ldrsize : u32,
e32_ldrsum : u32,
e32_objtab : u32,
e32_objcnt : u32,
e32_objmap : u32,
e32_itermap : u32,
e32_rsrctab : u32,
e32_rsrccnt : u32,
e32_restab : u32,
e32_enttab : u32,
e32_dirtab : u32,
e32_dircnt : u32,
e32_fpagetab : u32,
e32_frectab : u32,
e32_impmod : u32,
e32_impmodcnt : u32,
e32_impproc : u32,
e32_pagesum : u32,
e32_datapage : u32,
e32_preload : u32,
e32_nrestab : u32,
e32_cbnrestab : u32,
e32_nressum : u32,
e32_autodata : u32,
e32_debuginfo : u32,
e32_debuglen : u32,
e32_instpreload : u32,
e32_instdemand : u32,
e32_heapsize : u32,
e32_res3 : [12]BYTE,
e32_winresoff : u32,
e32_winreslen : u32,
e32_devid : u16,
e32_ddkver : u16,
};
PIMAGE_VXD_HEADER :: ^struct {
e32_magic : u16,
e32_border : BYTE,
e32_worder : BYTE,
e32_level : u32,
e32_cpu : u16,
e32_os : u16,
e32_ver : u32,
e32_mflags : u32,
e32_mpages : u32,
e32_startobj : u32,
e32_eip : u32,
e32_stackobj : u32,
e32_esp : u32,
e32_pagesize : u32,
e32_lastpagesize : u32,
e32_fixupsize : u32,
e32_fixupsum : u32,
e32_ldrsize : u32,
e32_ldrsum : u32,
e32_objtab : u32,
e32_objcnt : u32,
e32_objmap : u32,
e32_itermap : u32,
e32_rsrctab : u32,
e32_rsrccnt : u32,
e32_restab : u32,
e32_enttab : u32,
e32_dirtab : u32,
e32_dircnt : u32,
e32_fpagetab : u32,
e32_frectab : u32,
e32_impmod : u32,
e32_impmodcnt : u32,
e32_impproc : u32,
e32_pagesum : u32,
e32_datapage : u32,
e32_preload : u32,
e32_nrestab : u32,
e32_cbnrestab : u32,
e32_nressum : u32,
e32_autodata : u32,
e32_debuginfo : u32,
e32_debuglen : u32,
e32_instpreload : u32,
e32_instdemand : u32,
e32_heapsize : u32,
e32_res3 : [12]BYTE,
e32_winresoff : u32,
e32_winreslen : u32,
e32_devid : u16,
e32_ddkver : u16,
};
IMAGE_FILE_HEADER :: struct {
Machine : u16,
NumberOfSections : u16,
TimeDateStamp : u32,
PointerToSymbolTable : u32,
NumberOfSymbols : u32,
SizeOfOptionalHeader : u16,
Characteristics : u16,
};
PIMAGE_FILE_HEADER :: ^struct {
Machine : u16,
NumberOfSections : u16,
TimeDateStamp : u32,
PointerToSymbolTable : u32,
NumberOfSymbols : u32,
SizeOfOptionalHeader : u16,
Characteristics : u16,
};
IMAGE_DATA_DIRECTORY :: struct {
VirtualAddress : u32,
Size : u32,
};
PIMAGE_DATA_DIRECTORY :: ^struct {
VirtualAddress : u32,
Size : u32,
};
IMAGE_OPTIONAL_HEADER32 :: struct {
Magic : u16,
MajorLinkerVersion : BYTE,
MinorLinkerVersion : BYTE,
SizeOfCode : u32,
SizeOfInitializedData : u32,
SizeOfUninitializedData : u32,
AddressOfEntryPoint : u32,
BaseOfCode : u32,
BaseOfData : u32,
ImageBase : u32,
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 : u32,
SizeOfStackCommit : u32,
SizeOfHeapReserve : u32,
SizeOfHeapCommit : u32,
LoaderFlags : u32,
NumberOfRvaAndSizes : u32,
DataDirectory : [16]IMAGE_DATA_DIRECTORY,
};
PIMAGE_OPTIONAL_HEADER32 :: ^struct {
Magic : u16,
MajorLinkerVersion : BYTE,
MinorLinkerVersion : BYTE,
SizeOfCode : u32,
SizeOfInitializedData : u32,
SizeOfUninitializedData : u32,
AddressOfEntryPoint : u32,
BaseOfCode : u32,
BaseOfData : u32,
ImageBase : u32,
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 : u32,
SizeOfStackCommit : u32,
SizeOfHeapReserve : u32,
SizeOfHeapCommit : u32,
LoaderFlags : u32,
NumberOfRvaAndSizes : u32,
DataDirectory : [16]IMAGE_DATA_DIRECTORY,
};
IMAGE_ROM_OPTIONAL_HEADER :: struct {
Magic : u16,
MajorLinkerVersion : BYTE,
MinorLinkerVersion : BYTE,
SizeOfCode : u32,
SizeOfInitializedData : u32,
SizeOfUninitializedData : u32,
AddressOfEntryPoint : u32,
BaseOfCode : u32,
BaseOfData : u32,
BaseOfBss : u32,
GprMask : u32,
CprMask : [4]u32,
GpValue : u32,
};
PIMAGE_ROM_OPTIONAL_HEADER :: ^struct {
Magic : u16,
MajorLinkerVersion : BYTE,
MinorLinkerVersion : BYTE,
SizeOfCode : u32,
SizeOfInitializedData : u32,
SizeOfUninitializedData : u32,
AddressOfEntryPoint : u32,
BaseOfCode : u32,
BaseOfData : u32,
BaseOfBss : u32,
GprMask : u32,
CprMask : [4]u32,
GpValue : u32,
};
IMAGE_OPTIONAL_HEADER64 :: struct {
Magic : u16,
MajorLinkerVersion : BYTE,
MinorLinkerVersion : BYTE,
SizeOfCode : u32,
SizeOfInitializedData : u32,
SizeOfUninitializedData : u32,
AddressOfEntryPoint : u32,
BaseOfCode : u32,
ImageBase : ULONGLONG,
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 : ULONGLONG,
SizeOfStackCommit : ULONGLONG,
SizeOfHeapReserve : ULONGLONG,
SizeOfHeapCommit : ULONGLONG,
LoaderFlags : u32,
NumberOfRvaAndSizes : u32,
DataDirectory : [16]IMAGE_DATA_DIRECTORY,
};
PIMAGE_OPTIONAL_HEADER64 :: ^struct {
Magic : u16,
MajorLinkerVersion : BYTE,
MinorLinkerVersion : BYTE,
SizeOfCode : u32,
SizeOfInitializedData : u32,
SizeOfUninitializedData : u32,
AddressOfEntryPoint : u32,
BaseOfCode : u32,
ImageBase : ULONGLONG,
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 : ULONGLONG,
SizeOfStackCommit : ULONGLONG,
SizeOfHeapReserve : ULONGLONG,
SizeOfHeapCommit : ULONGLONG,
LoaderFlags : u32,
NumberOfRvaAndSizes : u32,
DataDirectory : [16]IMAGE_DATA_DIRECTORY,
};
IMAGE_OPTIONAL_HEADER :: IMAGE_OPTIONAL_HEADER32;
PIMAGE_OPTIONAL_HEADER :: PIMAGE_OPTIONAL_HEADER32;
IMAGE_NT_HEADERS64 :: struct {
Signature : u32,
FileHeader : IMAGE_FILE_HEADER,
OptionalHeader : IMAGE_OPTIONAL_HEADER64,
};
PIMAGE_NT_HEADERS64 :: ^struct {
Signature : u32,
FileHeader : IMAGE_FILE_HEADER,
OptionalHeader : IMAGE_OPTIONAL_HEADER64,
};
IMAGE_NT_HEADERS32 :: struct {
Signature : u32,
FileHeader : IMAGE_FILE_HEADER,
OptionalHeader : IMAGE_OPTIONAL_HEADER32,
};
PIMAGE_NT_HEADERS32 :: ^struct {
Signature : u32,
FileHeader : IMAGE_FILE_HEADER,
OptionalHeader : IMAGE_OPTIONAL_HEADER32,
};
IMAGE_ROM_HEADERS :: struct {
FileHeader : IMAGE_FILE_HEADER,
OptionalHeader : IMAGE_ROM_OPTIONAL_HEADER,
};
PIMAGE_ROM_HEADERS :: ^struct {
FileHeader : IMAGE_FILE_HEADER,
OptionalHeader : IMAGE_ROM_OPTIONAL_HEADER,
};
IMAGE_NT_HEADERS :: IMAGE_NT_HEADERS32;
PIMAGE_NT_HEADERS :: PIMAGE_NT_HEADERS32;
ANON_OBJECT_HEADER :: struct {
Sig1 : u16,
Sig2 : u16,
Version : u16,
Machine : u16,
TimeDateStamp : u32,
ClassID : CLSID,
SizeOfData : u32,
};
ANON_OBJECT_HEADER_V2 :: struct {
Sig1 : u16,
Sig2 : u16,
Version : u16,
Machine : u16,
TimeDateStamp : u32,
ClassID : CLSID,
SizeOfData : u32,
Flags : u32,
MetaDataSize : u32,
MetaDataOffset : u32,
};
ANON_OBJECT_HEADER_BIGOBJ :: struct {
Sig1 : u16,
Sig2 : u16,
Version : u16,
Machine : u16,
TimeDateStamp : u32,
ClassID : CLSID,
SizeOfData : u32,
Flags : u32,
MetaDataSize : u32,
MetaDataOffset : u32,
NumberOfSections : u32,
PointerToSymbolTable : u32,
NumberOfSymbols : u32,
};
IMAGE_SECTION_HEADER :: struct {
Name : [8]BYTE,
Misc : struct #raw_union {
PhysicalAddress : u32,
VirtualSize : u32,
},
VirtualAddress : u32,
SizeOfRawData : u32,
PointerToRawData : u32,
PointerToRelocations : u32,
PointerToLinenumbers : u32,
NumberOfRelocations : u16,
NumberOfLinenumbers : u16,
Characteristics : u32,
};
PIMAGE_SECTION_HEADER :: ^struct {
Name : [8]BYTE,
Misc : struct #raw_union {
PhysicalAddress : u32,
VirtualSize : u32,
},
VirtualAddress : u32,
SizeOfRawData : u32,
PointerToRawData : u32,
PointerToRelocations : u32,
PointerToLinenumbers : u32,
NumberOfRelocations : u16,
NumberOfLinenumbers : u16,
Characteristics : u32,
};
IMAGE_SYMBOL :: struct {
N : struct #raw_union {
ShortName : [8]BYTE,
Name : struct {
Short : u32,
Long : u32,
},
LongName : [2]u32,
},
Value : u32,
SectionNumber : SHORT,
Type : u16,
StorageClass : BYTE,
NumberOfAuxSymbols : BYTE,
};
PIMAGE_SYMBOL :: ^IMAGE_SYMBOL;
IMAGE_SYMBOL_EX :: struct {
N : struct #raw_union {
ShortName : [8]BYTE,
Name : struct {
Short : u32,
Long : u32,
},
LongName : [2]u32,
},
Value : u32,
SectionNumber : LONG,
Type : u16,
StorageClass : BYTE,
NumberOfAuxSymbols : BYTE,
};
PIMAGE_SYMBOL_EX :: ^IMAGE_SYMBOL_EX;
IMAGE_AUX_SYMBOL_TOKEN_DEF :: struct {
bAuxType : BYTE,
bReserved : BYTE,
SymbolTableIndex : u32,
rgbReserved : [12]BYTE,
};
PIMAGE_AUX_SYMBOL_TOKEN_DEF :: ^IMAGE_AUX_SYMBOL_TOKEN_DEF;
IMAGE_AUX_SYMBOL :: struct #raw_union {
Sym : struct {
TagIndex : u32,
Misc : struct #raw_union {
LnSz : struct {
Linenumber : u16,
Size : u16,
},
TotalSize : u32,
},
FcnAry : struct #raw_union {
Function : struct {
PointerToLinenumber : u32,
PointerToNextFunction : u32,
},
Array : struct {
Dimension : [4]u16,
},
},
TvIndex : u16,
},
File : struct {
Name : [18]BYTE,
},
Section : struct {
Length : u32,
NumberOfRelocations : u16,
NumberOfLinenumbers : u16,
CheckSum : u32,
Number : SHORT,
Selection : BYTE,
bReserved : BYTE,
HighNumber : SHORT,
},
TokenDef : IMAGE_AUX_SYMBOL_TOKEN_DEF,
CRC : struct {
crc : u32,
rgbReserved : [14]BYTE,
},
};
PIMAGE_AUX_SYMBOL :: ^IMAGE_AUX_SYMBOL;
IMAGE_AUX_SYMBOL_EX :: struct #raw_union {
Sym : struct {
WeakDefaultSymIndex : u32,
WeakSearchType : u32,
rgbReserved : [12]BYTE,
},
File : struct {
Name : [size_of(IMAGE_SYMBOL_EX)]BYTE,
},
Section : struct {
Length : u32,
NumberOfRelocations : u16,
NumberOfLinenumbers : u16,
CheckSum : u32,
Number : SHORT,
Selection : BYTE,
bReserved : BYTE,
HighNumber : SHORT,
rgbReserved : [2]BYTE,
},
s : struct {
TokenDef : IMAGE_AUX_SYMBOL_TOKEN_DEF,
rgbReserved : [2]BYTE,
},
CRC : struct {
crc : u32,
rgbReserved : [16]BYTE,
},
};
PIMAGE_AUX_SYMBOL_EX :: ^IMAGE_AUX_SYMBOL_EX;
IMAGE_AUX_SYMBOL_TYPE :: enum {
IMAGE_AUX_SYMBOL_TYPE_TOKEN_DEF = 1,
};
IMAGE_RELOCATION :: struct {
u : struct #raw_union {
VirtualAddress : u32,
RelocCount : u32,
},
SymbolTableIndex : u32,
Type : u16,
};
PIMAGE_RELOCATION :: ^IMAGE_RELOCATION;
IMAGE_LINENUMBER :: struct {
Type : struct #raw_union {
SymbolTableIndex : u32,
VirtualAddress : u32,
},
Linenumber : u16,
};
PIMAGE_LINENUMBER :: ^IMAGE_LINENUMBER;
IMAGE_BASE_RELOCATION :: struct {
VirtualAddress : u32,
SizeOfBlock : u32,
};
PIMAGE_BASE_RELOCATION :: ^IMAGE_BASE_RELOCATION;
IMAGE_ARCHIVE_MEMBER_HEADER :: struct {
Name : [16]BYTE,
Date : [12]BYTE,
UserID : [6]BYTE,
GroupID : [6]BYTE,
Mode : [8]BYTE,
Size : [10]BYTE,
EndHeader : [2]BYTE,
};
PIMAGE_ARCHIVE_MEMBER_HEADER :: ^struct {
Name : [16]BYTE,
Date : [12]BYTE,
UserID : [6]BYTE,
GroupID : [6]BYTE,
Mode : [8]BYTE,
Size : [10]BYTE,
EndHeader : [2]BYTE,
};
IMAGE_EXPORT_DIRECTORY :: struct {
Characteristics : u32,
TimeDateStamp : u32,
MajorVersion : u16,
MinorVersion : u16,
Name : u32,
Base : u32,
NumberOfFunctions : u32,
NumberOfNames : u32,
AddressOfFunctions : u32,
AddressOfNames : u32,
AddressOfNameOrdinals : u32,
};
PIMAGE_EXPORT_DIRECTORY :: ^struct {
Characteristics : u32,
TimeDateStamp : u32,
MajorVersion : u16,
MinorVersion : u16,
Name : u32,
Base : u32,
NumberOfFunctions : u32,
NumberOfNames : u32,
AddressOfFunctions : u32,
AddressOfNames : u32,
AddressOfNameOrdinals : u32,
};
IMAGE_IMPORT_BY_NAME :: struct {
Hint : u16,
Name : [1]CHAR,
};
PIMAGE_IMPORT_BY_NAME :: ^struct {
Hint : u16,
Name : [1]CHAR,
};
IMAGE_THUNK_DATA64 :: struct {
u1 : struct #raw_union {
ForwarderString : ULONGLONG,
Function : ULONGLONG,
Ordinal : ULONGLONG,
AddressOfData : ULONGLONG,
},
};
PIMAGE_THUNK_DATA64 :: ^IMAGE_THUNK_DATA64;
IMAGE_THUNK_DATA32 :: struct {
u1 : struct #raw_union {
ForwarderString : u32,
Function : u32,
Ordinal : u32,
AddressOfData : u32,
},
};
PIMAGE_THUNK_DATA32 :: ^IMAGE_THUNK_DATA32;
PIMAGE_TLS_CALLBACK :: proc(DllHandle : PVOID, Reason : u32, Reserved : PVOID);
IMAGE_TLS_DIRECTORY64 :: struct {
StartAddressOfRawData : ULONGLONG,
EndAddressOfRawData : ULONGLONG,
AddressOfIndex : ULONGLONG,
AddressOfCallBacks : ULONGLONG,
SizeOfZeroFill : u32,
u : struct #raw_union {
Characteristics : u32,
s : struct {
Reserved0 : ,
Alignment : ,
Reserved1 : ,
},
},
};
PIMAGE_TLS_DIRECTORY64 :: ^IMAGE_TLS_DIRECTORY64;
IMAGE_TLS_DIRECTORY32 :: struct {
StartAddressOfRawData : u32,
EndAddressOfRawData : u32,
AddressOfIndex : u32,
AddressOfCallBacks : u32,
SizeOfZeroFill : u32,
u : struct #raw_union {
Characteristics : u32,
s : struct {
Reserved0 : ,
Alignment : ,
Reserved1 : ,
},
},
};
PIMAGE_TLS_DIRECTORY32 :: ^IMAGE_TLS_DIRECTORY32;
IMAGE_THUNK_DATA :: IMAGE_THUNK_DATA32;
PIMAGE_THUNK_DATA :: PIMAGE_THUNK_DATA32;
IMAGE_TLS_DIRECTORY :: IMAGE_TLS_DIRECTORY32;
PIMAGE_TLS_DIRECTORY :: PIMAGE_TLS_DIRECTORY32;
IMAGE_IMPORT_DESCRIPTOR :: struct {
u : struct #raw_union {
Characteristics : u32,
OriginalFirstThunk : u32,
},
TimeDateStamp : u32,
ForwarderChain : u32,
Name : u32,
FirstThunk : u32,
};
PIMAGE_IMPORT_DESCRIPTOR :: ^IMAGE_IMPORT_DESCRIPTOR;
IMAGE_BOUND_IMPORT_DESCRIPTOR :: struct {
TimeDateStamp : u32,
OffsetModuleName : u16,
NumberOfModuleForwarderRefs : u16,
};
PIMAGE_BOUND_IMPORT_DESCRIPTOR :: ^struct {
TimeDateStamp : u32,
OffsetModuleName : u16,
NumberOfModuleForwarderRefs : u16,
};
IMAGE_BOUND_FORWARDER_REF :: struct {
TimeDateStamp : u32,
OffsetModuleName : u16,
Reserved : u16,
};
PIMAGE_BOUND_FORWARDER_REF :: ^struct {
TimeDateStamp : u32,
OffsetModuleName : u16,
Reserved : u16,
};
IMAGE_DELAYLOAD_DESCRIPTOR :: struct {
Attributes : struct #raw_union {
AllAttributes : u32,
s : struct {
RvaBased : ,
ReservedAttributes : ,
},
},
DllNameRVA : u32,
ModuleHandleRVA : u32,
ImportAddressTableRVA : u32,
ImportNameTableRVA : u32,
BoundImportAddressTableRVA : u32,
UnloadInformationTableRVA : u32,
TimeDateStamp : u32,
};
PIMAGE_DELAYLOAD_DESCRIPTOR :: ^struct {
Attributes : struct #raw_union {
AllAttributes : u32,
s : struct {
RvaBased : ,
ReservedAttributes : ,
},
},
DllNameRVA : u32,
ModuleHandleRVA : u32,
ImportAddressTableRVA : u32,
ImportNameTableRVA : u32,
BoundImportAddressTableRVA : u32,
UnloadInformationTableRVA : u32,
TimeDateStamp : u32,
};
PCIMAGE_DELAYLOAD_DESCRIPTOR :: ^IMAGE_DELAYLOAD_DESCRIPTOR;
IMAGE_RESOURCE_DIRECTORY :: struct {
Characteristics : u32,
TimeDateStamp : u32,
MajorVersion : u16,
MinorVersion : u16,
NumberOfNamedEntries : u16,
NumberOfIdEntries : u16,
};
PIMAGE_RESOURCE_DIRECTORY :: ^struct {
Characteristics : u32,
TimeDateStamp : u32,
MajorVersion : u16,
MinorVersion : u16,
NumberOfNamedEntries : u16,
NumberOfIdEntries : u16,
};
IMAGE_RESOURCE_DIRECTORY_ENTRY :: struct {
u : struct #raw_union {
s : struct {
NameOffset : ,
NameIsString : ,
},
Name : u32,
Id : u16,
},
u2 : struct #raw_union {
OffsetToData : u32,
s2 : struct {
OffsetToDirectory : ,
DataIsDirectory : ,
},
},
};
PIMAGE_RESOURCE_DIRECTORY_ENTRY :: ^struct {
u : struct #raw_union {
s : struct {
NameOffset : ,
NameIsString : ,
},
Name : u32,
Id : u16,
},
u2 : struct #raw_union {
OffsetToData : u32,
s2 : struct {
OffsetToDirectory : ,
DataIsDirectory : ,
},
},
};
IMAGE_RESOURCE_DIRECTORY_STRING :: struct {
Length : u16,
NameString : [1]CHAR,
};
PIMAGE_RESOURCE_DIRECTORY_STRING :: ^struct {
Length : u16,
NameString : [1]CHAR,
};
IMAGE_RESOURCE_DIR_STRING_U :: struct {
Length : u16,
NameString : [1]WCHAR,
};
PIMAGE_RESOURCE_DIR_STRING_U :: ^struct {
Length : u16,
NameString : [1]WCHAR,
};
IMAGE_RESOURCE_DATA_ENTRY :: struct {
OffsetToData : u32,
Size : u32,
CodePage : u32,
Reserved : u32,
};
PIMAGE_RESOURCE_DATA_ENTRY :: ^struct {
OffsetToData : u32,
Size : u32,
CodePage : u32,
Reserved : u32,
};
IMAGE_LOAD_CONFIG_CODE_INTEGRITY :: struct {
Flags : u16,
Catalog : u16,
CatalogOffset : u32,
Reserved : u32,
};
PIMAGE_LOAD_CONFIG_CODE_INTEGRITY :: ^struct {
Flags : u16,
Catalog : u16,
CatalogOffset : u32,
Reserved : u32,
};
IMAGE_DYNAMIC_RELOCATION_TABLE :: struct {
Version : u32,
Size : u32,
};
PIMAGE_DYNAMIC_RELOCATION_TABLE :: ^struct {
Version : u32,
Size : u32,
};
IMAGE_DYNAMIC_RELOCATION32 :: struct {
Symbol : u32,
BaseRelocSize : u32,
};
PIMAGE_DYNAMIC_RELOCATION32 :: ^struct {
Symbol : u32,
BaseRelocSize : u32,
};
IMAGE_DYNAMIC_RELOCATION64 :: struct {
Symbol : ULONGLONG,
BaseRelocSize : u32,
};
PIMAGE_DYNAMIC_RELOCATION64 :: ^struct {
Symbol : ULONGLONG,
BaseRelocSize : u32,
};
IMAGE_DYNAMIC_RELOCATION32_V2 :: struct {
HeaderSize : u32,
FixupInfoSize : u32,
Symbol : u32,
SymbolGroup : u32,
Flags : u32,
};
PIMAGE_DYNAMIC_RELOCATION32_V2 :: ^struct {
HeaderSize : u32,
FixupInfoSize : u32,
Symbol : u32,
SymbolGroup : u32,
Flags : u32,
};
IMAGE_DYNAMIC_RELOCATION64_V2 :: struct {
HeaderSize : u32,
FixupInfoSize : u32,
Symbol : ULONGLONG,
SymbolGroup : u32,
Flags : u32,
};
PIMAGE_DYNAMIC_RELOCATION64_V2 :: ^struct {
HeaderSize : u32,
FixupInfoSize : u32,
Symbol : ULONGLONG,
SymbolGroup : u32,
Flags : u32,
};
IMAGE_DYNAMIC_RELOCATION :: IMAGE_DYNAMIC_RELOCATION32;
PIMAGE_DYNAMIC_RELOCATION :: PIMAGE_DYNAMIC_RELOCATION32;
IMAGE_DYNAMIC_RELOCATION_V2 :: IMAGE_DYNAMIC_RELOCATION32_V2;
PIMAGE_DYNAMIC_RELOCATION_V2 :: PIMAGE_DYNAMIC_RELOCATION32_V2;
IMAGE_PROLOGUE_DYNAMIC_RELOCATION_HEADER :: struct {
PrologueByteCount : BYTE,
};
PIMAGE_PROLOGUE_DYNAMIC_RELOCATION_HEADER :: ^IMAGE_PROLOGUE_DYNAMIC_RELOCATION_HEADER;
IMAGE_EPILOGUE_DYNAMIC_RELOCATION_HEADER :: struct {
EpilogueCount : u32,
EpilogueByteCount : BYTE,
BranchDescriptorElementSize : BYTE,
BranchDescriptorCount : u16,
};
PIMAGE_EPILOGUE_DYNAMIC_RELOCATION_HEADER :: ^IMAGE_EPILOGUE_DYNAMIC_RELOCATION_HEADER;
IMAGE_IMPORT_CONTROL_TRANSFER_DYNAMIC_RELOCATION :: struct {
PageRelativeOffset : ,
IndirectCall : ,
IATIndex : ,
};
PIMAGE_IMPORT_CONTROL_TRANSFER_DYNAMIC_RELOCATION :: ^IMAGE_IMPORT_CONTROL_TRANSFER_DYNAMIC_RELOCATION;
IMAGE_INDIR_CONTROL_TRANSFER_DYNAMIC_RELOCATION :: struct {
PageRelativeOffset : ,
IndirectCall : ,
RexWPrefix : ,
CfgCheck : ,
Reserved : ,
};
PIMAGE_INDIR_CONTROL_TRANSFER_DYNAMIC_RELOCATION :: ^IMAGE_INDIR_CONTROL_TRANSFER_DYNAMIC_RELOCATION;
IMAGE_SWITCHTABLE_BRANCH_DYNAMIC_RELOCATION :: struct {
PageRelativeOffset : ,
RegisterNumber : ,
};
PIMAGE_SWITCHTABLE_BRANCH_DYNAMIC_RELOCATION :: ^IMAGE_SWITCHTABLE_BRANCH_DYNAMIC_RELOCATION;
IMAGE_LOAD_CONFIG_DIRECTORY32 :: struct {
Size : u32,
TimeDateStamp : u32,
MajorVersion : u16,
MinorVersion : u16,
GlobalFlagsClear : u32,
GlobalFlagsSet : u32,
CriticalSectionDefaultTimeout : u32,
DeCommitFreeBlockThreshold : u32,
DeCommitTotalFreeThreshold : u32,
LockPrefixTable : u32,
MaximumAllocationSize : u32,
VirtualMemoryThreshold : u32,
ProcessHeapFlags : u32,
ProcessAffinityMask : u32,
CSDVersion : u16,
DependentLoadFlags : u16,
EditList : u32,
SecurityCookie : u32,
SEHandlerTable : u32,
SEHandlerCount : u32,
GuardCFCheckFunctionPointer : u32,
GuardCFDispatchFunctionPointer : u32,
GuardCFFunctionTable : u32,
GuardCFFunctionCount : u32,
GuardFlags : u32,
CodeIntegrity : IMAGE_LOAD_CONFIG_CODE_INTEGRITY,
GuardAddressTakenIatEntryTable : u32,
GuardAddressTakenIatEntryCount : u32,
GuardLongJumpTargetTable : u32,
GuardLongJumpTargetCount : u32,
DynamicValueRelocTable : u32,
CHPEMetadataPointer : u32,
GuardRFFailureRoutine : u32,
GuardRFFailureRoutineFunctionPointer : u32,
DynamicValueRelocTableOffset : u32,
DynamicValueRelocTableSection : u16,
Reserved2 : u16,
GuardRFVerifyStackPointerFunctionPointer : u32,
HotPatchTableOffset : u32,
Reserved3 : u32,
EnclaveConfigurationPointer : u32,
VolatileMetadataPointer : u32,
};
PIMAGE_LOAD_CONFIG_DIRECTORY32 :: ^struct {
Size : u32,
TimeDateStamp : u32,
MajorVersion : u16,
MinorVersion : u16,
GlobalFlagsClear : u32,
GlobalFlagsSet : u32,
CriticalSectionDefaultTimeout : u32,
DeCommitFreeBlockThreshold : u32,
DeCommitTotalFreeThreshold : u32,
LockPrefixTable : u32,
MaximumAllocationSize : u32,
VirtualMemoryThreshold : u32,
ProcessHeapFlags : u32,
ProcessAffinityMask : u32,
CSDVersion : u16,
DependentLoadFlags : u16,
EditList : u32,
SecurityCookie : u32,
SEHandlerTable : u32,
SEHandlerCount : u32,
GuardCFCheckFunctionPointer : u32,
GuardCFDispatchFunctionPointer : u32,
GuardCFFunctionTable : u32,
GuardCFFunctionCount : u32,
GuardFlags : u32,
CodeIntegrity : IMAGE_LOAD_CONFIG_CODE_INTEGRITY,
GuardAddressTakenIatEntryTable : u32,
GuardAddressTakenIatEntryCount : u32,
GuardLongJumpTargetTable : u32,
GuardLongJumpTargetCount : u32,
DynamicValueRelocTable : u32,
CHPEMetadataPointer : u32,
GuardRFFailureRoutine : u32,
GuardRFFailureRoutineFunctionPointer : u32,
DynamicValueRelocTableOffset : u32,
DynamicValueRelocTableSection : u16,
Reserved2 : u16,
GuardRFVerifyStackPointerFunctionPointer : u32,
HotPatchTableOffset : u32,
Reserved3 : u32,
EnclaveConfigurationPointer : u32,
VolatileMetadataPointer : u32,
};
IMAGE_LOAD_CONFIG_DIRECTORY64 :: struct {
Size : u32,
TimeDateStamp : u32,
MajorVersion : u16,
MinorVersion : u16,
GlobalFlagsClear : u32,
GlobalFlagsSet : u32,
CriticalSectionDefaultTimeout : u32,
DeCommitFreeBlockThreshold : ULONGLONG,
DeCommitTotalFreeThreshold : ULONGLONG,
LockPrefixTable : ULONGLONG,
MaximumAllocationSize : ULONGLONG,
VirtualMemoryThreshold : ULONGLONG,
ProcessAffinityMask : ULONGLONG,
ProcessHeapFlags : u32,
CSDVersion : u16,
DependentLoadFlags : u16,
EditList : ULONGLONG,
SecurityCookie : ULONGLONG,
SEHandlerTable : ULONGLONG,
SEHandlerCount : ULONGLONG,
GuardCFCheckFunctionPointer : ULONGLONG,
GuardCFDispatchFunctionPointer : ULONGLONG,
GuardCFFunctionTable : ULONGLONG,
GuardCFFunctionCount : ULONGLONG,
GuardFlags : u32,
CodeIntegrity : IMAGE_LOAD_CONFIG_CODE_INTEGRITY,
GuardAddressTakenIatEntryTable : ULONGLONG,
GuardAddressTakenIatEntryCount : ULONGLONG,
GuardLongJumpTargetTable : ULONGLONG,
GuardLongJumpTargetCount : ULONGLONG,
DynamicValueRelocTable : ULONGLONG,
CHPEMetadataPointer : ULONGLONG,
GuardRFFailureRoutine : ULONGLONG,
GuardRFFailureRoutineFunctionPointer : ULONGLONG,
DynamicValueRelocTableOffset : u32,
DynamicValueRelocTableSection : u16,
Reserved2 : u16,
GuardRFVerifyStackPointerFunctionPointer : ULONGLONG,
HotPatchTableOffset : u32,
Reserved3 : u32,
EnclaveConfigurationPointer : ULONGLONG,
VolatileMetadataPointer : ULONGLONG,
};
PIMAGE_LOAD_CONFIG_DIRECTORY64 :: ^struct {
Size : u32,
TimeDateStamp : u32,
MajorVersion : u16,
MinorVersion : u16,
GlobalFlagsClear : u32,
GlobalFlagsSet : u32,
CriticalSectionDefaultTimeout : u32,
DeCommitFreeBlockThreshold : ULONGLONG,
DeCommitTotalFreeThreshold : ULONGLONG,
LockPrefixTable : ULONGLONG,
MaximumAllocationSize : ULONGLONG,
VirtualMemoryThreshold : ULONGLONG,
ProcessAffinityMask : ULONGLONG,
ProcessHeapFlags : u32,
CSDVersion : u16,
DependentLoadFlags : u16,
EditList : ULONGLONG,
SecurityCookie : ULONGLONG,
SEHandlerTable : ULONGLONG,
SEHandlerCount : ULONGLONG,
GuardCFCheckFunctionPointer : ULONGLONG,
GuardCFDispatchFunctionPointer : ULONGLONG,
GuardCFFunctionTable : ULONGLONG,
GuardCFFunctionCount : ULONGLONG,
GuardFlags : u32,
CodeIntegrity : IMAGE_LOAD_CONFIG_CODE_INTEGRITY,
GuardAddressTakenIatEntryTable : ULONGLONG,
GuardAddressTakenIatEntryCount : ULONGLONG,
GuardLongJumpTargetTable : ULONGLONG,
GuardLongJumpTargetCount : ULONGLONG,
DynamicValueRelocTable : ULONGLONG,
CHPEMetadataPointer : ULONGLONG,
GuardRFFailureRoutine : ULONGLONG,
GuardRFFailureRoutineFunctionPointer : ULONGLONG,
DynamicValueRelocTableOffset : u32,
DynamicValueRelocTableSection : u16,
Reserved2 : u16,
GuardRFVerifyStackPointerFunctionPointer : ULONGLONG,
HotPatchTableOffset : u32,
Reserved3 : u32,
EnclaveConfigurationPointer : ULONGLONG,
VolatileMetadataPointer : ULONGLONG,
};
IMAGE_LOAD_CONFIG_DIRECTORY :: IMAGE_LOAD_CONFIG_DIRECTORY32;
PIMAGE_LOAD_CONFIG_DIRECTORY :: PIMAGE_LOAD_CONFIG_DIRECTORY32;
IMAGE_HOT_PATCH_INFO :: struct {
Version : u32,
Size : u32,
SequenceNumber : u32,
BaseImageList : u32,
BaseImageCount : u32,
BufferOffset : u32,
ExtraPatchSize : u32,
};
PIMAGE_HOT_PATCH_INFO :: ^struct {
Version : u32,
Size : u32,
SequenceNumber : u32,
BaseImageList : u32,
BaseImageCount : u32,
BufferOffset : u32,
ExtraPatchSize : u32,
};
IMAGE_HOT_PATCH_BASE :: struct {
SequenceNumber : u32,
Flags : u32,
OriginalTimeDateStamp : u32,
OriginalCheckSum : u32,
CodeIntegrityInfo : u32,
CodeIntegritySize : u32,
PatchTable : u32,
BufferOffset : u32,
};
PIMAGE_HOT_PATCH_BASE :: ^struct {
SequenceNumber : u32,
Flags : u32,
OriginalTimeDateStamp : u32,
OriginalCheckSum : u32,
CodeIntegrityInfo : u32,
CodeIntegritySize : u32,
PatchTable : u32,
BufferOffset : u32,
};
IMAGE_HOT_PATCH_HASHES :: struct {
SHA256 : [32]BYTE,
SHA1 : [20]BYTE,
};
PIMAGE_HOT_PATCH_HASHES :: ^struct {
SHA256 : [32]BYTE,
SHA1 : [20]BYTE,
};
IMAGE_CE_RUNTIME_FUNCTION_ENTRY :: struct {
FuncStart : u32,
PrologLen : ,
FuncLen : ,
ThirtyTwoBit : ,
ExceptionFlag : ,
};
PIMAGE_CE_RUNTIME_FUNCTION_ENTRY :: ^struct {
FuncStart : u32,
PrologLen : ,
FuncLen : ,
ThirtyTwoBit : ,
ExceptionFlag : ,
};
IMAGE_ARM_RUNTIME_FUNCTION_ENTRY :: struct {
BeginAddress : u32,
u : struct #raw_union {
UnwindData : u32,
s : struct {
Flag : ,
FunctionLength : ,
Ret : ,
H : ,
Reg : ,
R : ,
L : ,
C : ,
StackAdjust : ,
},
},
};
PIMAGE_ARM_RUNTIME_FUNCTION_ENTRY :: ^struct {
BeginAddress : u32,
u : struct #raw_union {
UnwindData : u32,
s : struct {
Flag : ,
FunctionLength : ,
Ret : ,
H : ,
Reg : ,
R : ,
L : ,
C : ,
StackAdjust : ,
},
},
};
IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY :: struct {
BeginAddress : u32,
u : struct #raw_union {
UnwindData : u32,
s : struct {
Flag : ,
FunctionLength : ,
RegF : ,
RegI : ,
H : ,
CR : ,
FrameSize : ,
},
},
};
PIMAGE_ARM64_RUNTIME_FUNCTION_ENTRY :: ^struct {
BeginAddress : u32,
u : struct #raw_union {
UnwindData : u32,
s : struct {
Flag : ,
FunctionLength : ,
RegF : ,
RegI : ,
H : ,
CR : ,
FrameSize : ,
},
},
};
IMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY :: struct {
BeginAddress : ULONGLONG,
EndAddress : ULONGLONG,
ExceptionHandler : ULONGLONG,
HandlerData : ULONGLONG,
PrologEndAddress : ULONGLONG,
};
PIMAGE_ALPHA64_RUNTIME_FUNCTION_ENTRY :: ^struct {
BeginAddress : ULONGLONG,
EndAddress : ULONGLONG,
ExceptionHandler : ULONGLONG,
HandlerData : ULONGLONG,
PrologEndAddress : ULONGLONG,
};
IMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY :: struct {
BeginAddress : u32,
EndAddress : u32,
ExceptionHandler : u32,
HandlerData : u32,
PrologEndAddress : u32,
};
PIMAGE_ALPHA_RUNTIME_FUNCTION_ENTRY :: ^struct {
BeginAddress : u32,
EndAddress : u32,
ExceptionHandler : u32,
HandlerData : u32,
PrologEndAddress : u32,
};
_IMAGE_RUNTIME_FUNCTION_ENTRY :: struct {
BeginAddress : u32,
EndAddress : u32,
u : struct #raw_union {
UnwindInfoAddress : u32,
UnwindData : u32,
},
};
_PIMAGE_RUNTIME_FUNCTION_ENTRY :: ^struct {
BeginAddress : u32,
EndAddress : u32,
u : struct #raw_union {
UnwindInfoAddress : u32,
UnwindData : u32,
},
};
IMAGE_IA64_RUNTIME_FUNCTION_ENTRY :: _IMAGE_RUNTIME_FUNCTION_ENTRY;
PIMAGE_IA64_RUNTIME_FUNCTION_ENTRY :: _PIMAGE_RUNTIME_FUNCTION_ENTRY;
IMAGE_RUNTIME_FUNCTION_ENTRY :: _IMAGE_RUNTIME_FUNCTION_ENTRY;
PIMAGE_RUNTIME_FUNCTION_ENTRY :: _PIMAGE_RUNTIME_FUNCTION_ENTRY;
IMAGE_ENCLAVE_CONFIG32 :: struct {
Size : u32,
MinimumRequiredConfigSize : u32,
PolicyFlags : u32,
NumberOfImports : u32,
ImportList : u32,
ImportEntrySize : u32,
FamilyID : [16]BYTE,
ImageID : [16]BYTE,
ImageVersion : u32,
SecurityVersion : u32,
EnclaveSize : u32,
NumberOfThreads : u32,
EnclaveFlags : u32,
};
PIMAGE_ENCLAVE_CONFIG32 :: ^struct {
Size : u32,
MinimumRequiredConfigSize : u32,
PolicyFlags : u32,
NumberOfImports : u32,
ImportList : u32,
ImportEntrySize : u32,
FamilyID : [16]BYTE,
ImageID : [16]BYTE,
ImageVersion : u32,
SecurityVersion : u32,
EnclaveSize : u32,
NumberOfThreads : u32,
EnclaveFlags : u32,
};
IMAGE_ENCLAVE_CONFIG64 :: struct {
Size : u32,
MinimumRequiredConfigSize : u32,
PolicyFlags : u32,
NumberOfImports : u32,
ImportList : u32,
ImportEntrySize : u32,
FamilyID : [16]BYTE,
ImageID : [16]BYTE,
ImageVersion : u32,
SecurityVersion : u32,
EnclaveSize : ULONGLONG,
NumberOfThreads : u32,
EnclaveFlags : u32,
};
PIMAGE_ENCLAVE_CONFIG64 :: ^struct {
Size : u32,
MinimumRequiredConfigSize : u32,
PolicyFlags : u32,
NumberOfImports : u32,
ImportList : u32,
ImportEntrySize : u32,
FamilyID : [16]BYTE,
ImageID : [16]BYTE,
ImageVersion : u32,
SecurityVersion : u32,
EnclaveSize : ULONGLONG,
NumberOfThreads : u32,
EnclaveFlags : u32,
};
IMAGE_ENCLAVE_CONFIG :: IMAGE_ENCLAVE_CONFIG32;
PIMAGE_ENCLAVE_CONFIG :: PIMAGE_ENCLAVE_CONFIG32;
IMAGE_ENCLAVE_IMPORT :: struct {
MatchType : u32,
MinimumSecurityVersion : u32,
UniqueOrAuthorID : [32]BYTE,
FamilyID : [16]BYTE,
ImageID : [16]BYTE,
ImportName : u32,
Reserved : u32,
};
PIMAGE_ENCLAVE_IMPORT :: ^struct {
MatchType : u32,
MinimumSecurityVersion : u32,
UniqueOrAuthorID : [32]BYTE,
FamilyID : [16]BYTE,
ImageID : [16]BYTE,
ImportName : u32,
Reserved : u32,
};
IMAGE_DEBUG_DIRECTORY :: struct {
Characteristics : u32,
TimeDateStamp : u32,
MajorVersion : u16,
MinorVersion : u16,
Type : u32,
SizeOfData : u32,
AddressOfRawData : u32,
PointerToRawData : u32,
};
PIMAGE_DEBUG_DIRECTORY :: ^struct {
Characteristics : u32,
TimeDateStamp : u32,
MajorVersion : u16,
MinorVersion : u16,
Type : u32,
SizeOfData : u32,
AddressOfRawData : u32,
PointerToRawData : u32,
};
IMAGE_COFF_SYMBOLS_HEADER :: struct {
NumberOfSymbols : u32,
LvaToFirstSymbol : u32,
NumberOfLinenumbers : u32,
LvaToFirstLinenumber : u32,
RvaToFirstByteOfCode : u32,
RvaToLastByteOfCode : u32,
RvaToFirstByteOfData : u32,
RvaToLastByteOfData : u32,
};
PIMAGE_COFF_SYMBOLS_HEADER :: ^struct {
NumberOfSymbols : u32,
LvaToFirstSymbol : u32,
NumberOfLinenumbers : u32,
LvaToFirstLinenumber : u32,
RvaToFirstByteOfCode : u32,
RvaToLastByteOfCode : u32,
RvaToFirstByteOfData : u32,
RvaToLastByteOfData : u32,
};
FPO_DATA :: struct {
ulOffStart : u32,
cbProcSize : u32,
cdwLocals : u32,
cdwParams : u16,
cbProlog : ,
cbRegs : ,
fHasSEH : ,
fUseBP : ,
reserved : ,
cbFrame : ,
};
PFPO_DATA :: ^struct {
ulOffStart : u32,
cbProcSize : u32,
cdwLocals : u32,
cdwParams : u16,
cbProlog : ,
cbRegs : ,
fHasSEH : ,
fUseBP : ,
reserved : ,
cbFrame : ,
};
IMAGE_DEBUG_MISC :: struct {
DataType : u32,
Length : u32,
Unicode : BOOLEAN,
Reserved : [3]BYTE,
Data : [1]BYTE,
};
PIMAGE_DEBUG_MISC :: ^struct {
DataType : u32,
Length : u32,
Unicode : BOOLEAN,
Reserved : [3]BYTE,
Data : [1]BYTE,
};
IMAGE_FUNCTION_ENTRY :: struct {
StartingAddress : u32,
EndingAddress : u32,
EndOfPrologue : u32,
};
PIMAGE_FUNCTION_ENTRY :: ^struct {
StartingAddress : u32,
EndingAddress : u32,
EndOfPrologue : u32,
};
IMAGE_FUNCTION_ENTRY64 :: struct {
StartingAddress : ULONGLONG,
EndingAddress : ULONGLONG,
u : struct #raw_union {
EndOfPrologue : ULONGLONG,
UnwindInfoAddress : ULONGLONG,
},
};
PIMAGE_FUNCTION_ENTRY64 :: ^struct {
StartingAddress : ULONGLONG,
EndingAddress : ULONGLONG,
u : struct #raw_union {
EndOfPrologue : ULONGLONG,
UnwindInfoAddress : ULONGLONG,
},
};
IMAGE_SEPARATE_DEBUG_HEADER :: struct {
Signature : u16,
Flags : u16,
Machine : u16,
Characteristics : u16,
TimeDateStamp : u32,
CheckSum : u32,
ImageBase : u32,
SizeOfImage : u32,
NumberOfSections : u32,
ExportedNamesSize : u32,
DebugDirectorySize : u32,
SectionAlignment : u32,
Reserved : [2]u32,
};
PIMAGE_SEPARATE_DEBUG_HEADER :: ^struct {
Signature : u16,
Flags : u16,
Machine : u16,
Characteristics : u16,
TimeDateStamp : u32,
CheckSum : u32,
ImageBase : u32,
SizeOfImage : u32,
NumberOfSections : u32,
ExportedNamesSize : u32,
DebugDirectorySize : u32,
SectionAlignment : u32,
Reserved : [2]u32,
};
NON_PAGED_DEBUG_INFO :: struct {
Signature : u16,
Flags : u16,
Size : u32,
Machine : u16,
Characteristics : u16,
TimeDateStamp : u32,
CheckSum : u32,
SizeOfImage : u32,
ImageBase : ULONGLONG,
};
PNON_PAGED_DEBUG_INFO :: ^struct {
Signature : u16,
Flags : u16,
Size : u32,
Machine : u16,
Characteristics : u16,
TimeDateStamp : u32,
CheckSum : u32,
SizeOfImage : u32,
ImageBase : ULONGLONG,
};
IMAGE_ARCHITECTURE_HEADER :: struct {
AmaskValue : ,
,
AmaskShift : ,
,
FirstEntryRVA : u32,
};
PIMAGE_ARCHITECTURE_HEADER :: ^struct {
AmaskValue : ,
,
AmaskShift : ,
,
FirstEntryRVA : u32,
};
IMAGE_ARCHITECTURE_ENTRY :: struct {
FixupInstRVA : u32,
NewInst : u32,
};
PIMAGE_ARCHITECTURE_ENTRY :: ^struct {
FixupInstRVA : u32,
NewInst : u32,
};
IMPORT_OBJECT_HEADER :: struct {
Sig1 : u16,
Sig2 : u16,
Version : u16,
Machine : u16,
TimeDateStamp : u32,
SizeOfData : u32,
u : struct #raw_union {
Ordinal : u16,
Hint : u16,
},
Type : ,
NameType : ,
Reserved : ,
};
IMPORT_OBJECT_TYPE :: enum {
IMPORT_OBJECT_CODE = 0,
IMPORT_OBJECT_DATA = 1,
IMPORT_OBJECT_CONST = 2,
};
IMPORT_OBJECT_NAME_TYPE :: enum {
IMPORT_OBJECT_ORDINAL = 0,
IMPORT_OBJECT_NAME = 1,
IMPORT_OBJECT_NAME_NO_PREFIX = 2,
IMPORT_OBJECT_NAME_UNDECORATE = 3,
IMPORT_OBJECT_NAME_EXPORTAS = 4,
};
ReplacesCorHdrNumericDefines :: enum {
COMIMAGE_FLAGS_ILONLY = 0x00000001,
COMIMAGE_FLAGS_32BITREQUIRED = 0x00000002,
COMIMAGE_FLAGS_IL_LIBRARY = 0x00000004,
COMIMAGE_FLAGS_STRONGNAMESIGNED = 0x00000008,
COMIMAGE_FLAGS_NATIVE_ENTRYPOINT = 0x00000010,
COMIMAGE_FLAGS_TRACKDEBUGDATA = 0x00010000,
COMIMAGE_FLAGS_32BITPREFERRED = 0x00020000,
COR_VERSION_MAJOR_V2 = 2,
COR_VERSION_MAJOR = COR_VERSION_MAJOR_V2,
COR_VERSION_MINOR = 5,
COR_DELETED_NAME_LENGTH = 8,
COR_VTABLEGAP_NAME_LENGTH = 8,
NATIVE_TYPE_MAX_CB = 1,
COR_ILMETHOD_SECT_SMALL_MAX_DATASIZE = 0xFF,
IMAGE_COR_MIH_METHODRVA = 0x01,
IMAGE_COR_MIH_EHRVA = 0x02,
IMAGE_COR_MIH_BASICBLOCK = 0x08,
COR_VTABLE_32BIT = 0x01,
COR_VTABLE_64BIT = 0x02,
COR_VTABLE_FROM_UNMANAGED = 0x04,
COR_VTABLE_FROM_UNMANAGED_RETAIN_APPDOMAIN = 0x08,
COR_VTABLE_CALL_MOST_DERIVED = 0x10,
IMAGE_COR_EATJ_THUNK_SIZE = 32,
MAX_CLASS_NAME = 1024,
MAX_PACKAGE_NAME = 1024,
};
IMAGE_COR20_HEADER :: struct {
cb : u32,
MajorRuntimeVersion : u16,
MinorRuntimeVersion : u16,
MetaData : IMAGE_DATA_DIRECTORY,
Flags : u32,
u : struct #raw_union {
EntryPointToken : u32,
EntryPointRVA : u32,
},
Resources : IMAGE_DATA_DIRECTORY,
StrongNameSignature : IMAGE_DATA_DIRECTORY,
CodeManagerTable : IMAGE_DATA_DIRECTORY,
VTableFixups : IMAGE_DATA_DIRECTORY,
ExportAddressTableJumps : IMAGE_DATA_DIRECTORY,
ManagedNativeHeader : IMAGE_DATA_DIRECTORY,
};
PIMAGE_COR20_HEADER :: ^struct {
cb : u32,
MajorRuntimeVersion : u16,
MinorRuntimeVersion : u16,
MetaData : IMAGE_DATA_DIRECTORY,
Flags : u32,
u : struct #raw_union {
EntryPointToken : u32,
EntryPointRVA : u32,
},
Resources : IMAGE_DATA_DIRECTORY,
StrongNameSignature : IMAGE_DATA_DIRECTORY,
CodeManagerTable : IMAGE_DATA_DIRECTORY,
VTableFixups : IMAGE_DATA_DIRECTORY,
ExportAddressTableJumps : IMAGE_DATA_DIRECTORY,
ManagedNativeHeader : IMAGE_DATA_DIRECTORY,
};
SLIST_ENTRY :: struct {};
PSLIST_ENTRY :: ^SLIST_ENTRY;
SLIST_HEADER :: struct #raw_union {
Alignment : ULONGLONG,
s : struct {
Next : SLIST_ENTRY,
Depth : u16,
CpuId : u16,
},
};
PSLIST_HEADER :: ^struct #raw_union {
Alignment : ULONGLONG,
s : struct {
Next : SLIST_ENTRY,
Depth : u16,
CpuId : u16,
},
};
RTL_RUN_ONCE :: struct #raw_union {
Ptr : PVOID,
};
PRTL_RUN_ONCE :: ^struct #raw_union {
Ptr : PVOID,
};
RTL_BARRIER :: struct {
Reserved1 : u32,
Reserved2 : u32,
Reserved3 : [2]ULONG_PTR,
Reserved4 : u32,
Reserved5 : u32,
};
PRTL_BARRIER :: ^struct {
Reserved1 : u32,
Reserved2 : u32,
Reserved3 : [2]ULONG_PTR,
Reserved4 : u32,
Reserved5 : u32,
};
MESSAGE_RESOURCE_ENTRY :: struct {
Length : u16,
Flags : u16,
Text : [1]BYTE,
};
PMESSAGE_RESOURCE_ENTRY :: ^struct {
Length : u16,
Flags : u16,
Text : [1]BYTE,
};
MESSAGE_RESOURCE_BLOCK :: struct {
LowId : u32,
HighId : u32,
OffsetToEntries : u32,
};
PMESSAGE_RESOURCE_BLOCK :: ^struct {
LowId : u32,
HighId : u32,
OffsetToEntries : u32,
};
MESSAGE_RESOURCE_DATA :: struct {
NumberOfBlocks : u32,
Blocks : [1]MESSAGE_RESOURCE_BLOCK,
};
PMESSAGE_RESOURCE_DATA :: ^struct {
NumberOfBlocks : u32,
Blocks : [1]MESSAGE_RESOURCE_BLOCK,
};
OSVERSIONINFOA :: struct {
dwOSVersionInfoSize : u32,
dwMajorVersion : u32,
dwMinorVersion : u32,
dwBuildNumber : u32,
dwPlatformId : u32,
szCSDVersion : [128]CHAR,
};
POSVERSIONINFOA :: ^struct {
dwOSVersionInfoSize : u32,
dwMajorVersion : u32,
dwMinorVersion : u32,
dwBuildNumber : u32,
dwPlatformId : u32,
szCSDVersion : [128]CHAR,
};
LPOSVERSIONINFOA :: ^struct {
dwOSVersionInfoSize : u32,
dwMajorVersion : u32,
dwMinorVersion : u32,
dwBuildNumber : u32,
dwPlatformId : u32,
szCSDVersion : [128]CHAR,
};
OSVERSIONINFOW :: struct {
dwOSVersionInfoSize : u32,
dwMajorVersion : u32,
dwMinorVersion : u32,
dwBuildNumber : u32,
dwPlatformId : u32,
szCSDVersion : [128]WCHAR,
};
POSVERSIONINFOW :: ^struct {
dwOSVersionInfoSize : u32,
dwMajorVersion : u32,
dwMinorVersion : u32,
dwBuildNumber : u32,
dwPlatformId : u32,
szCSDVersion : [128]WCHAR,
};
LPOSVERSIONINFOW :: ^struct {
dwOSVersionInfoSize : u32,
dwMajorVersion : u32,
dwMinorVersion : u32,
dwBuildNumber : u32,
dwPlatformId : u32,
szCSDVersion : [128]WCHAR,
};
RTL_OSVERSIONINFOW :: struct {
dwOSVersionInfoSize : u32,
dwMajorVersion : u32,
dwMinorVersion : u32,
dwBuildNumber : u32,
dwPlatformId : u32,
szCSDVersion : [128]WCHAR,
};
PRTL_OSVERSIONINFOW :: ^struct {
dwOSVersionInfoSize : u32,
dwMajorVersion : u32,
dwMinorVersion : u32,
dwBuildNumber : u32,
dwPlatformId : u32,
szCSDVersion : [128]WCHAR,
};
OSVERSIONINFO :: OSVERSIONINFOA;
POSVERSIONINFO :: POSVERSIONINFOA;
LPOSVERSIONINFO :: LPOSVERSIONINFOA;
OSVERSIONINFOEXA :: struct {
dwOSVersionInfoSize : u32,
dwMajorVersion : u32,
dwMinorVersion : u32,
dwBuildNumber : u32,
dwPlatformId : u32,
szCSDVersion : [128]CHAR,
wServicePackMajor : u16,
wServicePackMinor : u16,
wSuiteMask : u16,
wProductType : BYTE,
wReserved : BYTE,
};
POSVERSIONINFOEXA :: ^struct {
dwOSVersionInfoSize : u32,
dwMajorVersion : u32,
dwMinorVersion : u32,
dwBuildNumber : u32,
dwPlatformId : u32,
szCSDVersion : [128]CHAR,
wServicePackMajor : u16,
wServicePackMinor : u16,
wSuiteMask : u16,
wProductType : BYTE,
wReserved : BYTE,
};
LPOSVERSIONINFOEXA :: ^struct {
dwOSVersionInfoSize : u32,
dwMajorVersion : u32,
dwMinorVersion : u32,
dwBuildNumber : u32,
dwPlatformId : u32,
szCSDVersion : [128]CHAR,
wServicePackMajor : u16,
wServicePackMinor : u16,
wSuiteMask : u16,
wProductType : BYTE,
wReserved : BYTE,
};
OSVERSIONINFOEXW :: struct {
dwOSVersionInfoSize : u32,
dwMajorVersion : u32,
dwMinorVersion : u32,
dwBuildNumber : u32,
dwPlatformId : u32,
szCSDVersion : [128]WCHAR,
wServicePackMajor : u16,
wServicePackMinor : u16,
wSuiteMask : u16,
wProductType : BYTE,
wReserved : BYTE,
};
POSVERSIONINFOEXW :: ^struct {
dwOSVersionInfoSize : u32,
dwMajorVersion : u32,
dwMinorVersion : u32,
dwBuildNumber : u32,
dwPlatformId : u32,
szCSDVersion : [128]WCHAR,
wServicePackMajor : u16,
wServicePackMinor : u16,
wSuiteMask : u16,
wProductType : BYTE,
wReserved : BYTE,
};
LPOSVERSIONINFOEXW :: ^struct {
dwOSVersionInfoSize : u32,
dwMajorVersion : u32,
dwMinorVersion : u32,
dwBuildNumber : u32,
dwPlatformId : u32,
szCSDVersion : [128]WCHAR,
wServicePackMajor : u16,
wServicePackMinor : u16,
wSuiteMask : u16,
wProductType : BYTE,
wReserved : BYTE,
};
RTL_OSVERSIONINFOEXW :: struct {
dwOSVersionInfoSize : u32,
dwMajorVersion : u32,
dwMinorVersion : u32,
dwBuildNumber : u32,
dwPlatformId : u32,
szCSDVersion : [128]WCHAR,
wServicePackMajor : u16,
wServicePackMinor : u16,
wSuiteMask : u16,
wProductType : BYTE,
wReserved : BYTE,
};
PRTL_OSVERSIONINFOEXW :: ^struct {
dwOSVersionInfoSize : u32,
dwMajorVersion : u32,
dwMinorVersion : u32,
dwBuildNumber : u32,
dwPlatformId : u32,
szCSDVersion : [128]WCHAR,
wServicePackMajor : u16,
wServicePackMinor : u16,
wSuiteMask : u16,
wProductType : BYTE,
wReserved : BYTE,
};
OSVERSIONINFOEX :: OSVERSIONINFOEXA;
POSVERSIONINFOEX :: POSVERSIONINFOEXA;
LPOSVERSIONINFOEX :: LPOSVERSIONINFOEXA;
RTL_UMS_THREAD_INFO_CLASS :: enum {
UmsThreadInvalidInfoClass = 0,
UmsThreadUserContext,
UmsThreadPriority,
UmsThreadAffinity,
UmsThreadTeb,
UmsThreadIsSuspended,
UmsThreadIsTerminated,
UmsThreadMaxInfoClass,
};
PRTL_UMS_THREAD_INFO_CLASS :: ^enum {
UmsThreadInvalidInfoClass = 0,
UmsThreadUserContext,
UmsThreadPriority,
UmsThreadAffinity,
UmsThreadTeb,
UmsThreadIsSuspended,
UmsThreadIsTerminated,
UmsThreadMaxInfoClass,
};
RTL_UMS_SCHEDULER_REASON :: enum {
UmsSchedulerStartup = 0,
UmsSchedulerThreadBlocked,
UmsSchedulerThreadYield,
};
PRTL_UMS_SCHEDULER_REASON :: ^enum {
UmsSchedulerStartup = 0,
UmsSchedulerThreadBlocked,
UmsSchedulerThreadYield,
};
RTL_UMS_SCHEDULER_ENTRY_POINT :: #type proc(Reason : RTL_UMS_SCHEDULER_REASON, ActivationPayload : ULONG_PTR, SchedulerParam : PVOID);
PRTL_UMS_SCHEDULER_ENTRY_POINT :: ^RTL_UMS_SCHEDULER_ENTRY_POINT;
OS_DEPLOYEMENT_STATE_VALUES :: enum {
OS_DEPLOYMENT_STANDARD = 1,
OS_DEPLOYMENT_COMPACT,
};
NV_MEMORY_RANGE :: struct {
BaseAddress : rawptr,
Length : SIZE_T,
};
PNV_MEMORY_RANGE :: ^struct {
BaseAddress : rawptr,
Length : SIZE_T,
};
CORRELATION_VECTOR :: struct {
Version : CHAR,
Vector : [129]CHAR,
};
PCORRELATION_VECTOR :: ^CORRELATION_VECTOR;
CUSTOM_SYSTEM_EVENT_TRIGGER_CONFIG :: struct {
Size : u32,
TriggerId : PCWSTR,
};
PCUSTOM_SYSTEM_EVENT_TRIGGER_CONFIG :: ^struct {
Size : u32,
TriggerId : PCWSTR,
};
IMAGE_POLICY_ENTRY_TYPE :: enum {
ImagePolicyEntryTypeNone = 0,
ImagePolicyEntryTypeBool,
ImagePolicyEntryTypeInt8,
ImagePolicyEntryTypeUInt8,
ImagePolicyEntryTypeInt16,
ImagePolicyEntryTypeUInt16,
ImagePolicyEntryTypeInt32,
ImagePolicyEntryTypeUInt32,
ImagePolicyEntryTypeInt64,
ImagePolicyEntryTypeUInt64,
ImagePolicyEntryTypeAnsiString,
ImagePolicyEntryTypeUnicodeString,
ImagePolicyEntryTypeOverride,
ImagePolicyEntryTypeMaximum,
};
IMAGE_POLICY_ID :: enum {
ImagePolicyIdNone = 0,
ImagePolicyIdEtw,
ImagePolicyIdDebug,
ImagePolicyIdCrashDump,
ImagePolicyIdCrashDumpKey,
ImagePolicyIdCrashDumpKeyGuid,
ImagePolicyIdParentSd,
ImagePolicyIdParentSdRev,
ImagePolicyIdSvn,
ImagePolicyIdDeviceId,
ImagePolicyIdCapability,
ImagePolicyIdScenarioId,
ImagePolicyIdMaximum,
};
IMAGE_POLICY_ENTRY :: struct {
Type : IMAGE_POLICY_ENTRY_TYPE,
PolicyId : IMAGE_POLICY_ID,
u : struct #raw_union {
None : rawptr,
BoolValue : BOOLEAN,
Int8Value : INT8,
UInt8Value : UINT8,
Int16Value : INT16,
UInt16Value : UINT16,
Int32Value : INT32,
UInt32Value : UINT32,
Int64Value : INT64,
UInt64Value : UINT64,
AnsiStringValue : PCSTR,
UnicodeStringValue : PCWSTR,
},
};
PCIMAGE_POLICY_ENTRY :: ^IMAGE_POLICY_ENTRY;
IMAGE_POLICY_METADATA :: struct {
Version : BYTE,
Reserved0 : [7]BYTE,
ApplicationId : ULONGLONG,
Policies : []IMAGE_POLICY_ENTRY,
};
PCIMAGE_POLICY_METADATA :: ^IMAGE_POLICY_METADATA;
RTL_CRITICAL_SECTION_DEBUG :: struct {
Type : u16,
CreatorBackTraceIndex : u16,
CriticalSection : ^RTL_CRITICAL_SECTION,
ProcessLocksList : LIST_ENTRY,
EntryCount : u32,
ContentionCount : u32,
Flags : u32,
CreatorBackTraceIndexHigh : u16,
SpareWORD : u16,
};
PRTL_CRITICAL_SECTION_DEBUG :: ^struct {
Type : u16,
CreatorBackTraceIndex : u16,
CriticalSection : ^RTL_CRITICAL_SECTION,
ProcessLocksList : LIST_ENTRY,
EntryCount : u32,
ContentionCount : u32,
Flags : u32,
CreatorBackTraceIndexHigh : u16,
SpareWORD : u16,
};
RTL_RESOURCE_DEBUG :: struct {
Type : u16,
CreatorBackTraceIndex : u16,
CriticalSection : ^RTL_CRITICAL_SECTION,
ProcessLocksList : LIST_ENTRY,
EntryCount : u32,
ContentionCount : u32,
Flags : u32,
CreatorBackTraceIndexHigh : u16,
SpareWORD : u16,
};
PRTL_RESOURCE_DEBUG :: ^struct {
Type : u16,
CreatorBackTraceIndex : u16,
CriticalSection : ^RTL_CRITICAL_SECTION,
ProcessLocksList : LIST_ENTRY,
EntryCount : u32,
ContentionCount : u32,
Flags : u32,
CreatorBackTraceIndexHigh : u16,
SpareWORD : u16,
};
RTL_CRITICAL_SECTION :: struct {
DebugInfo : PRTL_CRITICAL_SECTION_DEBUG,
LockCount : LONG,
RecursionCount : LONG,
OwningThread : HANDLE,
LockSemaphore : HANDLE,
SpinCount : ULONG_PTR,
};
PRTL_CRITICAL_SECTION :: ^struct {
DebugInfo : PRTL_CRITICAL_SECTION_DEBUG,
LockCount : LONG,
RecursionCount : LONG,
OwningThread : HANDLE,
LockSemaphore : HANDLE,
SpinCount : ULONG_PTR,
};
RTL_SRWLOCK :: struct {
Ptr : PVOID,
};
PRTL_SRWLOCK :: ^struct {
Ptr : PVOID,
};
RTL_CONDITION_VARIABLE :: struct {
Ptr : PVOID,
};
PRTL_CONDITION_VARIABLE :: ^struct {
Ptr : PVOID,
};
PAPCFUNC :: proc(Parameter : ULONG_PTR);
PVECTORED_EXCEPTION_HANDLER :: (proc(ExceptionInfo : ^EXCEPTION_POINTERS) -> LONG);
HEAP_INFORMATION_CLASS :: enum {
HeapCompatibilityInformation = 0,
HeapEnableTerminationOnCorruption = 1,
HeapOptimizeResources = 3,
};
HEAP_OPTIMIZE_RESOURCES_INFORMATION :: struct {
Version : u32,
Flags : u32,
};
PHEAP_OPTIMIZE_RESOURCES_INFORMATION :: ^struct {
Version : u32,
Flags : u32,
};
WAITORTIMERCALLBACKFUNC :: proc(PVOID, BOOLEAN);
WORKERCALLBACKFUNC :: proc(PVOID);
APC_CALLBACK_FUNCTION :: proc(u32, PVOID, PVOID);
WAITORTIMERCALLBACK :: WAITORTIMERCALLBACKFUNC;
PFLS_CALLBACK_FUNCTION :: proc(lpFlsData : PVOID);
PSECURE_MEMORY_CACHE_CALLBACK :: (proc(Addr : PVOID, Range : SIZE_T) -> BOOLEAN);
ACTIVATION_CONTEXT_INFO_CLASS :: enum {
ActivationContextBasicInformation = 1,
ActivationContextDetailedInformation = 2,
AssemblyDetailedInformationInActivationContext = 3,
FileInformationInAssemblyOfAssemblyInActivationContext = 4,
RunlevelInformationInActivationContext = 5,
CompatibilityInformationInActivationContext = 6,
ActivationContextManifestResourceName = 7,
MaxActivationContextInfoClass,
AssemblyDetailedInformationInActivationContxt = 3,
FileInformationInAssemblyOfAssemblyInActivationContxt = 4,
};
ACTIVATION_CONTEXT_QUERY_INDEX :: struct {
ulAssemblyIndex : u32,
ulFileIndexInAssembly : u32,
};
PACTIVATION_CONTEXT_QUERY_INDEX :: ^struct {
ulAssemblyIndex : u32,
ulFileIndexInAssembly : u32,
};
PCACTIVATION_CONTEXT_QUERY_INDEX :: ^ACTIVATION_CONTEXT_QUERY_INDEX;
ASSEMBLY_FILE_DETAILED_INFORMATION :: struct {
ulFlags : u32,
ulFilenameLength : u32,
ulPathLength : u32,
lpFileName : PCWSTR,
lpFilePath : PCWSTR,
};
PASSEMBLY_FILE_DETAILED_INFORMATION :: ^struct {
ulFlags : u32,
ulFilenameLength : u32,
ulPathLength : u32,
lpFileName : PCWSTR,
lpFilePath : PCWSTR,
};
PCASSEMBLY_FILE_DETAILED_INFORMATION :: ^ASSEMBLY_FILE_DETAILED_INFORMATION;
ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION :: struct {
ulFlags : u32,
ulEncodedAssemblyIdentityLength : u32,
ulManifestPathType : u32,
ulManifestPathLength : u32,
liManifestLastWriteTime : LARGE_INTEGER,
ulPolicyPathType : u32,
ulPolicyPathLength : u32,
liPolicyLastWriteTime : LARGE_INTEGER,
ulMetadataSatelliteRosterIndex : u32,
ulManifestVersionMajor : u32,
ulManifestVersionMinor : u32,
ulPolicyVersionMajor : u32,
ulPolicyVersionMinor : u32,
ulAssemblyDirectoryNameLength : u32,
lpAssemblyEncodedAssemblyIdentity : PCWSTR,
lpAssemblyManifestPath : PCWSTR,
lpAssemblyPolicyPath : PCWSTR,
lpAssemblyDirectoryName : PCWSTR,
ulFileCount : u32,
};
PACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION :: ^struct {
ulFlags : u32,
ulEncodedAssemblyIdentityLength : u32,
ulManifestPathType : u32,
ulManifestPathLength : u32,
liManifestLastWriteTime : LARGE_INTEGER,
ulPolicyPathType : u32,
ulPolicyPathLength : u32,
liPolicyLastWriteTime : LARGE_INTEGER,
ulMetadataSatelliteRosterIndex : u32,
ulManifestVersionMajor : u32,
ulManifestVersionMinor : u32,
ulPolicyVersionMajor : u32,
ulPolicyVersionMinor : u32,
ulAssemblyDirectoryNameLength : u32,
lpAssemblyEncodedAssemblyIdentity : PCWSTR,
lpAssemblyManifestPath : PCWSTR,
lpAssemblyPolicyPath : PCWSTR,
lpAssemblyDirectoryName : PCWSTR,
ulFileCount : u32,
};
PCACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION :: ^ACTIVATION_CONTEXT_ASSEMBLY_DETAILED_INFORMATION;
ACTCTX_REQUESTED_RUN_LEVEL :: enum {
ACTCTX_RUN_LEVEL_UNSPECIFIED = 0,
ACTCTX_RUN_LEVEL_AS_INVOKER,
ACTCTX_RUN_LEVEL_HIGHEST_AVAILABLE,
ACTCTX_RUN_LEVEL_REQUIRE_ADMIN,
ACTCTX_RUN_LEVEL_NUMBERS,
};
ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION :: struct {
ulFlags : u32,
RunLevel : ACTCTX_REQUESTED_RUN_LEVEL,
UiAccess : u32,
};
PACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION :: ^struct {
ulFlags : u32,
RunLevel : ACTCTX_REQUESTED_RUN_LEVEL,
UiAccess : u32,
};
PCACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION :: ^ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION;
ACTCTX_COMPATIBILITY_ELEMENT_TYPE :: enum {
ACTCTX_COMPATIBILITY_ELEMENT_TYPE_UNKNOWN = 0,
ACTCTX_COMPATIBILITY_ELEMENT_TYPE_OS,
ACTCTX_COMPATIBILITY_ELEMENT_TYPE_MITIGATION,
ACTCTX_COMPATIBILITY_ELEMENT_TYPE_MAXVERSIONTESTED,
};
COMPATIBILITY_CONTEXT_ELEMENT :: struct {
Id : GUID,
Type : ACTCTX_COMPATIBILITY_ELEMENT_TYPE,
MaxVersionTested : ULONGLONG,
};
PCOMPATIBILITY_CONTEXT_ELEMENT :: ^struct {
Id : GUID,
Type : ACTCTX_COMPATIBILITY_ELEMENT_TYPE,
MaxVersionTested : ULONGLONG,
};
PCCOMPATIBILITY_CONTEXT_ELEMENT :: ^COMPATIBILITY_CONTEXT_ELEMENT;
SUPPORTED_OS_INFO :: struct {
MajorVersion : u16,
MinorVersion : u16,
};
PSUPPORTED_OS_INFO :: ^struct {
MajorVersion : u16,
MinorVersion : u16,
};
MAXVERSIONTESTED_INFO :: struct {
MaxVersionTested : ULONGLONG,
};
PMAXVERSIONTESTED_INFO :: ^struct {
MaxVersionTested : ULONGLONG,
};
ACTIVATION_CONTEXT_DETAILED_INFORMATION :: struct {
dwFlags : u32,
ulFormatVersion : u32,
ulAssemblyCount : u32,
ulRootManifestPathType : u32,
ulRootManifestPathChars : u32,
ulRootConfigurationPathType : u32,
ulRootConfigurationPathChars : u32,
ulAppDirPathType : u32,
ulAppDirPathChars : u32,
lpRootManifestPath : PCWSTR,
lpRootConfigurationPath : PCWSTR,
lpAppDirPath : PCWSTR,
};
PACTIVATION_CONTEXT_DETAILED_INFORMATION :: ^struct {
dwFlags : u32,
ulFormatVersion : u32,
ulAssemblyCount : u32,
ulRootManifestPathType : u32,
ulRootManifestPathChars : u32,
ulRootConfigurationPathType : u32,
ulRootConfigurationPathChars : u32,
ulAppDirPathType : u32,
ulAppDirPathChars : u32,
lpRootManifestPath : PCWSTR,
lpRootConfigurationPath : PCWSTR,
lpAppDirPath : PCWSTR,
};
PCACTIVATION_CONTEXT_DETAILED_INFORMATION :: ^ACTIVATION_CONTEXT_DETAILED_INFORMATION;
HARDWARE_COUNTER_DATA :: struct {
Type : HARDWARE_COUNTER_TYPE,
Reserved : u32,
Value : DWORD64,
};
PHARDWARE_COUNTER_DATA :: ^struct {
Type : HARDWARE_COUNTER_TYPE,
Reserved : u32,
Value : DWORD64,
};
PERFORMANCE_DATA :: struct {
Size : u16,
Version : BYTE,
HwCountersCount : BYTE,
ContextSwitchCount : u32,
WaitReasonBitMap : DWORD64,
CycleTime : DWORD64,
RetryCount : u32,
Reserved : u32,
HwCounters : [16]HARDWARE_COUNTER_DATA,
};
PPERFORMANCE_DATA :: ^struct {
Size : u16,
Version : BYTE,
HwCountersCount : BYTE,
ContextSwitchCount : u32,
WaitReasonBitMap : DWORD64,
CycleTime : DWORD64,
RetryCount : u32,
Reserved : u32,
HwCounters : [16]HARDWARE_COUNTER_DATA,
};
EVENTLOGRECORD :: struct {
Length : u32,
Reserved : u32,
RecordNumber : u32,
TimeGenerated : u32,
TimeWritten : u32,
EventID : u32,
EventType : u16,
NumStrings : u16,
EventCategory : u16,
ReservedFlags : u16,
ClosingRecordNumber : u32,
StringOffset : u32,
UserSidLength : u32,
UserSidOffset : u32,
DataLength : u32,
DataOffset : u32,
};
PEVENTLOGRECORD :: ^struct {
Length : u32,
Reserved : u32,
RecordNumber : u32,
TimeGenerated : u32,
TimeWritten : u32,
EventID : u32,
EventType : u16,
NumStrings : u16,
EventCategory : u16,
ReservedFlags : u16,
ClosingRecordNumber : u32,
StringOffset : u32,
UserSidLength : u32,
UserSidOffset : u32,
DataLength : u32,
DataOffset : u32,
};
EVENTSFORLOGFILE :: struct {};
PEVENTSFORLOGFILE :: ^EVENTSFORLOGFILE;
PACKEDEVENTINFO :: struct {};
PPACKEDEVENTINFO :: ^PACKEDEVENTINFO;
SERVICE_NODE_TYPE :: enum {
DriverType = 0x00000001,
FileSystemType = 0x00000002,
Win32ServiceOwnProcess = 0x00000010,
Win32ServiceShareProcess = 0x00000020,
AdapterType = 0x00000004,
RecognizerType = 0x00000008,
};
SERVICE_LOAD_TYPE :: enum {
BootLoad = 0x00000000,
SystemLoad = 0x00000001,
AutoLoad = 0x00000002,
DemandLoad = 0x00000003,
DisableLoad = 0x00000004,
};
SERVICE_ERROR_TYPE :: enum {
IgnoreError = 0x00000000,
NormalError = 0x00000001,
SevereError = 0x00000002,
CriticalError = 0x00000003,
};
TAPE_ERASE :: struct {
Type : u32,
Immediate : BOOLEAN,
};
PTAPE_ERASE :: ^struct {
Type : u32,
Immediate : BOOLEAN,
};
TAPE_PREPARE :: struct {
Operation : u32,
Immediate : BOOLEAN,
};
PTAPE_PREPARE :: ^struct {
Operation : u32,
Immediate : BOOLEAN,
};
TAPE_WRITE_MARKS :: struct {
Type : u32,
Count : u32,
Immediate : BOOLEAN,
};
PTAPE_WRITE_MARKS :: ^struct {
Type : u32,
Count : u32,
Immediate : BOOLEAN,
};
TAPE_GET_POSITION :: struct {
Type : u32,
Partition : u32,
Offset : LARGE_INTEGER,
};
PTAPE_GET_POSITION :: ^struct {
Type : u32,
Partition : u32,
Offset : LARGE_INTEGER,
};
TAPE_SET_POSITION :: struct {
Method : u32,
Partition : u32,
Offset : LARGE_INTEGER,
Immediate : BOOLEAN,
};
PTAPE_SET_POSITION :: ^struct {
Method : u32,
Partition : u32,
Offset : LARGE_INTEGER,
Immediate : BOOLEAN,
};
TAPE_GET_DRIVE_PARAMETERS :: struct {
ECC : BOOLEAN,
Compression : BOOLEAN,
DataPadding : BOOLEAN,
ReportSetmarks : BOOLEAN,
DefaultBlockSize : u32,
MaximumBlockSize : u32,
MinimumBlockSize : u32,
MaximumPartitionCount : u32,
FeaturesLow : u32,
FeaturesHigh : u32,
EOTWarningZoneSize : u32,
};
PTAPE_GET_DRIVE_PARAMETERS :: ^struct {
ECC : BOOLEAN,
Compression : BOOLEAN,
DataPadding : BOOLEAN,
ReportSetmarks : BOOLEAN,
DefaultBlockSize : u32,
MaximumBlockSize : u32,
MinimumBlockSize : u32,
MaximumPartitionCount : u32,
FeaturesLow : u32,
FeaturesHigh : u32,
EOTWarningZoneSize : u32,
};
TAPE_SET_DRIVE_PARAMETERS :: struct {
ECC : BOOLEAN,
Compression : BOOLEAN,
DataPadding : BOOLEAN,
ReportSetmarks : BOOLEAN,
EOTWarningZoneSize : u32,
};
PTAPE_SET_DRIVE_PARAMETERS :: ^struct {
ECC : BOOLEAN,
Compression : BOOLEAN,
DataPadding : BOOLEAN,
ReportSetmarks : BOOLEAN,
EOTWarningZoneSize : u32,
};
TAPE_GET_MEDIA_PARAMETERS :: struct {
Capacity : LARGE_INTEGER,
Remaining : LARGE_INTEGER,
BlockSize : u32,
PartitionCount : u32,
WriteProtected : BOOLEAN,
};
PTAPE_GET_MEDIA_PARAMETERS :: ^struct {
Capacity : LARGE_INTEGER,
Remaining : LARGE_INTEGER,
BlockSize : u32,
PartitionCount : u32,
WriteProtected : BOOLEAN,
};
TAPE_SET_MEDIA_PARAMETERS :: struct {
BlockSize : u32,
};
PTAPE_SET_MEDIA_PARAMETERS :: ^struct {
BlockSize : u32,
};
TAPE_CREATE_PARTITION :: struct {
Method : u32,
Count : u32,
Size : u32,
};
PTAPE_CREATE_PARTITION :: ^struct {
Method : u32,
Count : u32,
Size : u32,
};
TAPE_WMI_OPERATIONS :: struct {
Method : u32,
DataBufferSize : u32,
DataBuffer : PVOID,
};
PTAPE_WMI_OPERATIONS :: ^struct {
Method : u32,
DataBufferSize : u32,
DataBuffer : PVOID,
};
TAPE_DRIVE_PROBLEM_TYPE :: enum {
TapeDriveProblemNone,
TapeDriveReadWriteWarning,
TapeDriveReadWriteError,
TapeDriveReadWarning,
TapeDriveWriteWarning,
TapeDriveReadError,
TapeDriveWriteError,
TapeDriveHardwareError,
TapeDriveUnsupportedMedia,
TapeDriveScsiConnectionError,
TapeDriveTimetoClean,
TapeDriveCleanDriveNow,
TapeDriveMediaLifeExpired,
TapeDriveSnappedTape,
};
UOW :: GUID;
PUOW :: ^GUID;
CRM_PROTOCOL_ID :: GUID;
PCRM_PROTOCOL_ID :: ^GUID;
NOTIFICATION_MASK :: ULONG;
TRANSACTION_NOTIFICATION :: struct {
TransactionKey : PVOID,
TransactionNotification : ULONG,
TmVirtualClock : LARGE_INTEGER,
ArgumentLength : ULONG,
};
PTRANSACTION_NOTIFICATION :: ^struct {
TransactionKey : PVOID,
TransactionNotification : ULONG,
TmVirtualClock : LARGE_INTEGER,
ArgumentLength : ULONG,
};
TRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT :: struct {
EnlistmentId : GUID,
UOW : UOW,
};
PTRANSACTION_NOTIFICATION_RECOVERY_ARGUMENT :: ^struct {
EnlistmentId : GUID,
UOW : UOW,
};
TRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT :: struct {
TmIdentity : GUID,
Flags : ULONG,
};
PTRANSACTION_NOTIFICATION_TM_ONLINE_ARGUMENT :: ^struct {
TmIdentity : GUID,
Flags : ULONG,
};
SAVEPOINT_ID :: ULONG;
PSAVEPOINT_ID :: ^ULONG;
TRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT :: struct {
SavepointId : SAVEPOINT_ID,
};
PTRANSACTION_NOTIFICATION_SAVEPOINT_ARGUMENT :: ^struct {
SavepointId : SAVEPOINT_ID,
};
TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT :: struct {
PropagationCookie : ULONG,
UOW : GUID,
TmIdentity : GUID,
BufferLength : ULONG,
};
PTRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT :: ^struct {
PropagationCookie : ULONG,
UOW : GUID,
TmIdentity : GUID,
BufferLength : ULONG,
};
TRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT :: struct {
MarshalCookie : ULONG,
UOW : GUID,
};
PTRANSACTION_NOTIFICATION_MARSHAL_ARGUMENT :: ^struct {
MarshalCookie : ULONG,
UOW : GUID,
};
TRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT :: TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT;
PTRANSACTION_NOTIFICATION_PROMOTE_ARGUMENT :: ^TRANSACTION_NOTIFICATION_PROPAGATE_ARGUMENT;
KCRM_MARSHAL_HEADER :: struct {
VersionMajor : ULONG,
VersionMinor : ULONG,
NumProtocols : ULONG,
Unused : ULONG,
};
PKCRM_MARSHAL_HEADER :: ^struct {
VersionMajor : ULONG,
VersionMinor : ULONG,
NumProtocols : ULONG,
Unused : ULONG,
};
PRKCRM_MARSHAL_HEADER :: ^struct {
VersionMajor : ULONG,
VersionMinor : ULONG,
NumProtocols : ULONG,
Unused : ULONG,
};
KCRM_TRANSACTION_BLOB :: struct {
UOW : UOW,
TmIdentity : GUID,
IsolationLevel : ULONG,
IsolationFlags : ULONG,
Timeout : ULONG,
Description : [64]WCHAR,
};
PKCRM_TRANSACTION_BLOB :: ^struct {
UOW : UOW,
TmIdentity : GUID,
IsolationLevel : ULONG,
IsolationFlags : ULONG,
Timeout : ULONG,
Description : [64]WCHAR,
};
PRKCRM_TRANSACTION_BLOB :: ^struct {
UOW : UOW,
TmIdentity : GUID,
IsolationLevel : ULONG,
IsolationFlags : ULONG,
Timeout : ULONG,
Description : [64]WCHAR,
};
KCRM_PROTOCOL_BLOB :: struct {
ProtocolId : CRM_PROTOCOL_ID,
StaticInfoLength : ULONG,
TransactionIdInfoLength : ULONG,
Unused1 : ULONG,
Unused2 : ULONG,
};
PKCRM_PROTOCOL_BLOB :: ^struct {
ProtocolId : CRM_PROTOCOL_ID,
StaticInfoLength : ULONG,
TransactionIdInfoLength : ULONG,
Unused1 : ULONG,
Unused2 : ULONG,
};
PRKCRM_PROTOCOL_BLOB :: ^struct {
ProtocolId : CRM_PROTOCOL_ID,
StaticInfoLength : ULONG,
TransactionIdInfoLength : ULONG,
Unused1 : ULONG,
Unused2 : ULONG,
};
TRANSACTION_OUTCOME :: enum {
TransactionOutcomeUndetermined = 1,
TransactionOutcomeCommitted,
TransactionOutcomeAborted,
};
TRANSACTION_STATE :: enum {
TransactionStateNormal = 1,
TransactionStateIndoubt,
TransactionStateCommittedNotify,
};
TRANSACTION_BASIC_INFORMATION :: struct {
TransactionId : GUID,
State : u32,
Outcome : u32,
};
PTRANSACTION_BASIC_INFORMATION :: ^struct {
TransactionId : GUID,
State : u32,
Outcome : u32,
};
TRANSACTIONMANAGER_BASIC_INFORMATION :: struct {
TmIdentity : GUID,
VirtualClock : LARGE_INTEGER,
};
PTRANSACTIONMANAGER_BASIC_INFORMATION :: ^struct {
TmIdentity : GUID,
VirtualClock : LARGE_INTEGER,
};
TRANSACTIONMANAGER_LOG_INFORMATION :: struct {
LogIdentity : GUID,
};
PTRANSACTIONMANAGER_LOG_INFORMATION :: ^struct {
LogIdentity : GUID,
};
TRANSACTIONMANAGER_LOGPATH_INFORMATION :: struct {
LogPathLength : u32,
LogPath : [1]WCHAR,
};
PTRANSACTIONMANAGER_LOGPATH_INFORMATION :: ^struct {
LogPathLength : u32,
LogPath : [1]WCHAR,
};
TRANSACTIONMANAGER_RECOVERY_INFORMATION :: struct {
LastRecoveredLsn : ULONGLONG,
};
PTRANSACTIONMANAGER_RECOVERY_INFORMATION :: ^struct {
LastRecoveredLsn : ULONGLONG,
};
TRANSACTIONMANAGER_OLDEST_INFORMATION :: struct {
OldestTransactionGuid : GUID,
};
PTRANSACTIONMANAGER_OLDEST_INFORMATION :: ^struct {
OldestTransactionGuid : GUID,
};
TRANSACTION_PROPERTIES_INFORMATION :: struct {
IsolationLevel : u32,
IsolationFlags : u32,
Timeout : LARGE_INTEGER,
Outcome : u32,
DescriptionLength : u32,
Description : [1]WCHAR,
};
PTRANSACTION_PROPERTIES_INFORMATION :: ^struct {
IsolationLevel : u32,
IsolationFlags : u32,
Timeout : LARGE_INTEGER,
Outcome : u32,
DescriptionLength : u32,
Description : [1]WCHAR,
};
TRANSACTION_BIND_INFORMATION :: struct {
TmHandle : HANDLE,
};
PTRANSACTION_BIND_INFORMATION :: ^struct {
TmHandle : HANDLE,
};
TRANSACTION_ENLISTMENT_PAIR :: struct {
EnlistmentId : GUID,
ResourceManagerId : GUID,
};
PTRANSACTION_ENLISTMENT_PAIR :: ^struct {
EnlistmentId : GUID,
ResourceManagerId : GUID,
};
TRANSACTION_ENLISTMENTS_INFORMATION :: struct {
NumberOfEnlistments : u32,
EnlistmentPair : [1]TRANSACTION_ENLISTMENT_PAIR,
};
PTRANSACTION_ENLISTMENTS_INFORMATION :: ^struct {
NumberOfEnlistments : u32,
EnlistmentPair : [1]TRANSACTION_ENLISTMENT_PAIR,
};
TRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION :: struct {
SuperiorEnlistmentPair : TRANSACTION_ENLISTMENT_PAIR,
};
PTRANSACTION_SUPERIOR_ENLISTMENT_INFORMATION :: ^struct {
SuperiorEnlistmentPair : TRANSACTION_ENLISTMENT_PAIR,
};
RESOURCEMANAGER_BASIC_INFORMATION :: struct {
ResourceManagerId : GUID,
DescriptionLength : u32,
Description : [1]WCHAR,
};
PRESOURCEMANAGER_BASIC_INFORMATION :: ^struct {
ResourceManagerId : GUID,
DescriptionLength : u32,
Description : [1]WCHAR,
};
RESOURCEMANAGER_COMPLETION_INFORMATION :: struct {
IoCompletionPortHandle : HANDLE,
CompletionKey : ULONG_PTR,
};
PRESOURCEMANAGER_COMPLETION_INFORMATION :: ^struct {
IoCompletionPortHandle : HANDLE,
CompletionKey : ULONG_PTR,
};
TRANSACTION_INFORMATION_CLASS :: enum {
TransactionBasicInformation,
TransactionPropertiesInformation,
TransactionEnlistmentInformation,
TransactionSuperiorEnlistmentInformation,
TransactionBindInformation,
TransactionDTCPrivateInformation,
};
TRANSACTIONMANAGER_INFORMATION_CLASS :: enum {
TransactionManagerBasicInformation,
TransactionManagerLogInformation,
TransactionManagerLogPathInformation,
TransactionManagerRecoveryInformation = 4,
TransactionManagerOnlineProbeInformation = 3,
TransactionManagerOldestTransactionInformation = 5,
};
RESOURCEMANAGER_INFORMATION_CLASS :: enum {
ResourceManagerBasicInformation,
ResourceManagerCompletionInformation,
};
ENLISTMENT_BASIC_INFORMATION :: struct {
EnlistmentId : GUID,
TransactionId : GUID,
ResourceManagerId : GUID,
};
PENLISTMENT_BASIC_INFORMATION :: ^struct {
EnlistmentId : GUID,
TransactionId : GUID,
ResourceManagerId : GUID,
};
ENLISTMENT_CRM_INFORMATION :: struct {
CrmTransactionManagerId : GUID,
CrmResourceManagerId : GUID,
CrmEnlistmentId : GUID,
};
PENLISTMENT_CRM_INFORMATION :: ^struct {
CrmTransactionManagerId : GUID,
CrmResourceManagerId : GUID,
CrmEnlistmentId : GUID,
};
ENLISTMENT_INFORMATION_CLASS :: enum {
EnlistmentBasicInformation,
EnlistmentRecoveryInformation,
EnlistmentCrmInformation,
};
TRANSACTION_LIST_ENTRY :: struct {
UOW : UOW,
};
PTRANSACTION_LIST_ENTRY :: ^struct {
UOW : UOW,
};
TRANSACTION_LIST_INFORMATION :: struct {
NumberOfTransactions : u32,
TransactionInformation : [1]TRANSACTION_LIST_ENTRY,
};
PTRANSACTION_LIST_INFORMATION :: ^struct {
NumberOfTransactions : u32,
TransactionInformation : [1]TRANSACTION_LIST_ENTRY,
};
KTMOBJECT_TYPE :: enum {
KTMOBJECT_TRANSACTION,
KTMOBJECT_TRANSACTION_MANAGER,
KTMOBJECT_RESOURCE_MANAGER,
KTMOBJECT_ENLISTMENT,
KTMOBJECT_INVALID,
};
PKTMOBJECT_TYPE :: ^enum {
KTMOBJECT_TRANSACTION,
KTMOBJECT_TRANSACTION_MANAGER,
KTMOBJECT_RESOURCE_MANAGER,
KTMOBJECT_ENLISTMENT,
KTMOBJECT_INVALID,
};
KTMOBJECT_CURSOR :: struct {
LastQuery : GUID,
ObjectIdCount : u32,
ObjectIds : [1]GUID,
};
PKTMOBJECT_CURSOR :: ^struct {
LastQuery : GUID,
ObjectIdCount : u32,
ObjectIds : [1]GUID,
};
TP_VERSION :: u32;
PTP_VERSION :: ^u32;
TP_CALLBACK_INSTANCE :: struct {};
PTP_CALLBACK_INSTANCE :: ^TP_CALLBACK_INSTANCE;
PTP_SIMPLE_CALLBACK :: proc(Instance : PTP_CALLBACK_INSTANCE, Context : PVOID);
TP_POOL :: struct {};
PTP_POOL :: ^TP_POOL;
TP_CALLBACK_PRIORITY :: enum {
TP_CALLBACK_PRIORITY_HIGH,
TP_CALLBACK_PRIORITY_NORMAL,
TP_CALLBACK_PRIORITY_LOW,
TP_CALLBACK_PRIORITY_INVALID,
TP_CALLBACK_PRIORITY_COUNT = TP_CALLBACK_PRIORITY_INVALID,
};
TP_POOL_STACK_INFORMATION :: struct {
StackReserve : SIZE_T,
StackCommit : SIZE_T,
};
PTP_POOL_STACK_INFORMATION :: ^struct {
StackReserve : SIZE_T,
StackCommit : SIZE_T,
};
TP_CLEANUP_GROUP :: struct {};
PTP_CLEANUP_GROUP :: ^TP_CLEANUP_GROUP;
PTP_CLEANUP_GROUP_CANCEL_CALLBACK :: proc(ObjectContext : PVOID, CleanupContext : PVOID);
TP_CALLBACK_ENVIRON_V3 :: struct {
Version : TP_VERSION,
Pool : PTP_POOL,
CleanupGroup : PTP_CLEANUP_GROUP,
CleanupGroupCancelCallback : PTP_CLEANUP_GROUP_CANCEL_CALLBACK,
RaceDll : PVOID,
ActivationContext : ^_ACTIVATION_CONTEXT,
FinalizationCallback : PTP_SIMPLE_CALLBACK,
u : struct #raw_union {
Flags : u32,
s : struct {
LongFunction : ,
Persistent : ,
Private : ,
},
},
CallbackPriority : TP_CALLBACK_PRIORITY,
Size : u32,
};
TP_CALLBACK_ENVIRON :: TP_CALLBACK_ENVIRON_V3;
PTP_CALLBACK_ENVIRON :: ^TP_CALLBACK_ENVIRON_V3;
TP_WORK :: struct {};
PTP_WORK :: ^TP_WORK;
PTP_WORK_CALLBACK :: proc(Instance : PTP_CALLBACK_INSTANCE, Context : PVOID, Work : PTP_WORK);
TP_TIMER :: struct {};
PTP_TIMER :: ^TP_TIMER;
PTP_TIMER_CALLBACK :: proc(Instance : PTP_CALLBACK_INSTANCE, Context : PVOID, Timer : PTP_TIMER);
TP_WAIT_RESULT :: u32;
TP_WAIT :: struct {};
PTP_WAIT :: ^TP_WAIT;
PTP_WAIT_CALLBACK :: proc(Instance : PTP_CALLBACK_INSTANCE, Context : PVOID, Wait : PTP_WAIT, WaitResult : TP_WAIT_RESULT);
TP_IO :: struct {};
PTP_IO :: ^TP_IO;
WPARAM :: UINT_PTR;
LPARAM :: LONG_PTR;
LRESULT :: LONG_PTR;
SPHANDLE :: ^HANDLE;
LPHANDLE :: ^HANDLE;
HGLOBAL :: HANDLE;
HLOCAL :: HANDLE;
GLOBALHANDLE :: HANDLE;
LOCALHANDLE :: HANDLE;
FARPROC :: (proc() -> i32);
NEARPROC :: (proc() -> i32);
PROC :: (proc() -> i32);
ATOM :: u16;
HKEY__ :: struct {
unused : i32,
};
HKEY :: ^HKEY__;
PHKEY :: ^HKEY;
HMETAFILE__ :: struct {
unused : i32,
};
HMETAFILE :: ^HMETAFILE__;
HINSTANCE__ :: struct {
unused : i32,
};
HINSTANCE :: ^HINSTANCE__;
HMODULE :: HINSTANCE;
HRGN__ :: struct {
unused : i32,
};
HRGN :: ^HRGN__;
HRSRC__ :: struct {
unused : i32,
};
HRSRC :: ^HRSRC__;
HSPRITE__ :: struct {
unused : i32,
};
HSPRITE :: ^HSPRITE__;
HLSURF__ :: struct {
unused : i32,
};
HLSURF :: ^HLSURF__;
HSTR__ :: struct {
unused : i32,
};
HSTR :: ^HSTR__;
HTASK__ :: struct {
unused : i32,
};
HTASK :: ^HTASK__;
HWINSTA__ :: struct {
unused : i32,
};
HWINSTA :: ^HWINSTA__;
HKL__ :: struct {
unused : i32,
};
HKL :: ^HKL__;
HFILE :: i32;
FILETIME :: struct {
dwLowDateTime : u32,
dwHighDateTime : u32,
};
PFILETIME :: ^struct {
dwLowDateTime : u32,
dwHighDateTime : u32,
};
LPFILETIME :: ^struct {
dwLowDateTime : u32,
dwHighDateTime : u32,
};
HWND__ :: struct {
unused : i32,
};
HWND :: ^HWND__;
HHOOK__ :: struct {
unused : i32,
};
HHOOK :: ^HHOOK__;
HGDIOBJ :: rawptr;
HACCEL__ :: struct {
unused : i32,
};
HACCEL :: ^HACCEL__;
HBITMAP__ :: struct {
unused : i32,
};
HBITMAP :: ^HBITMAP__;
HBRUSH__ :: struct {
unused : i32,
};
HBRUSH :: ^HBRUSH__;
HCOLORSPACE__ :: struct {
unused : i32,
};
HCOLORSPACE :: ^HCOLORSPACE__;
HDC__ :: struct {
unused : i32,
};
HDC :: ^HDC__;
HGLRC__ :: struct {
unused : i32,
};
HGLRC :: ^HGLRC__;
HDESK__ :: struct {
unused : i32,
};
HDESK :: ^HDESK__;
HENHMETAFILE__ :: struct {
unused : i32,
};
HENHMETAFILE :: ^HENHMETAFILE__;
HFONT__ :: struct {
unused : i32,
};
HFONT :: ^HFONT__;
HICON__ :: struct {
unused : i32,
};
HICON :: ^HICON__;
HMENU__ :: struct {
unused : i32,
};
HMENU :: ^HMENU__;
HPALETTE__ :: struct {
unused : i32,
};
HPALETTE :: ^HPALETTE__;
HPEN__ :: struct {
unused : i32,
};
HPEN :: ^HPEN__;
HWINEVENTHOOK__ :: struct {
unused : i32,
};
HWINEVENTHOOK :: ^HWINEVENTHOOK__;
HMONITOR__ :: struct {
unused : i32,
};
HMONITOR :: ^HMONITOR__;
HUMPD__ :: struct {
unused : i32,
};
HUMPD :: ^HUMPD__;
HCURSOR :: HICON;
COLORREF :: u32;
LPCOLORREF :: ^u32;
RECT :: struct {
left : LONG,
top : LONG,
right : LONG,
bottom : LONG,
};
PRECT :: ^struct {
left : LONG,
top : LONG,
right : LONG,
bottom : LONG,
};
NPRECT :: ^struct {
left : LONG,
top : LONG,
right : LONG,
bottom : LONG,
};
LPRECT :: ^struct {
left : LONG,
top : LONG,
right : LONG,
bottom : LONG,
};
LPCRECT :: ^RECT;
RECTL :: struct {
left : LONG,
top : LONG,
right : LONG,
bottom : LONG,
};
PRECTL :: ^struct {
left : LONG,
top : LONG,
right : LONG,
bottom : LONG,
};
LPRECTL :: ^struct {
left : LONG,
top : LONG,
right : LONG,
bottom : LONG,
};
LPCRECTL :: ^RECTL;
POINT :: struct {
x : LONG,
y : LONG,
};
PPOINT :: ^struct {
x : LONG,
y : LONG,
};
NPPOINT :: ^struct {
x : LONG,
y : LONG,
};
LPPOINT :: ^struct {
x : LONG,
y : LONG,
};
POINTL :: struct {
x : LONG,
y : LONG,
};
PPOINTL :: ^struct {
x : LONG,
y : LONG,
};
SIZE :: struct {
cx : LONG,
cy : LONG,
};
PSIZE :: ^struct {
cx : LONG,
cy : LONG,
};
LPSIZE :: ^struct {
cx : LONG,
cy : LONG,
};
SIZEL :: SIZE;
PSIZEL :: ^SIZE;
LPSIZEL :: ^SIZE;
POINTS :: struct {
x : SHORT,
y : SHORT,
};
PPOINTS :: ^struct {
x : SHORT,
y : SHORT,
};
LPPOINTS :: ^struct {
x : SHORT,
y : SHORT,
};
DPI_AWARENESS_CONTEXT__ :: struct {
unused : i32,
};
DPI_AWARENESS_CONTEXT :: ^DPI_AWARENESS_CONTEXT__;
DPI_AWARENESS :: enum {
DPI_AWARENESS_INVALID = -1,
DPI_AWARENESS_UNAWARE = 0,
DPI_AWARENESS_SYSTEM_AWARE = 1,
DPI_AWARENESS_PER_MONITOR_AWARE = 2,
};
DPI_HOSTING_BEHAVIOR :: enum {
DPI_HOSTING_BEHAVIOR_INVALID = -1,
DPI_HOSTING_BEHAVIOR_DEFAULT = 0,
DPI_HOSTING_BEHAVIOR_MIXED = 1,
};
SECURITY_ATTRIBUTES :: struct {
nLength : u32,
lpSecurityDescriptor : LPVOID,
bInheritHandle : BOOL,
};
PSECURITY_ATTRIBUTES :: ^struct {
nLength : u32,
lpSecurityDescriptor : LPVOID,
bInheritHandle : BOOL,
};
LPSECURITY_ATTRIBUTES :: ^struct {
nLength : u32,
lpSecurityDescriptor : LPVOID,
bInheritHandle : BOOL,
};
OVERLAPPED :: struct {
Internal : ULONG_PTR,
InternalHigh : ULONG_PTR,
u : struct #raw_union {
s : struct {
Offset : u32,
OffsetHigh : u32,
},
Pointer : PVOID,
},
hEvent : HANDLE,
};
LPOVERLAPPED :: ^struct {
Internal : ULONG_PTR,
InternalHigh : ULONG_PTR,
u : struct #raw_union {
s : struct {
Offset : u32,
OffsetHigh : u32,
},
Pointer : PVOID,
},
hEvent : HANDLE,
};
OVERLAPPED_ENTRY :: struct {
lpCompletionKey : ULONG_PTR,
lpOverlapped : LPOVERLAPPED,
Internal : ULONG_PTR,
dwNumberOfBytesTransferred : u32,
};
LPOVERLAPPED_ENTRY :: ^struct {
lpCompletionKey : ULONG_PTR,
lpOverlapped : LPOVERLAPPED,
Internal : ULONG_PTR,
dwNumberOfBytesTransferred : u32,
};
SYSTEMTIME :: struct {
wYear : u16,
wMonth : u16,
wDayOfWeek : u16,
wDay : u16,
wHour : u16,
wMinute : u16,
wSecond : u16,
wMilliseconds : u16,
};
PSYSTEMTIME :: ^struct {
wYear : u16,
wMonth : u16,
wDayOfWeek : u16,
wDay : u16,
wHour : u16,
wMinute : u16,
wSecond : u16,
wMilliseconds : u16,
};
LPSYSTEMTIME :: ^struct {
wYear : u16,
wMonth : u16,
wDayOfWeek : u16,
wDay : u16,
wHour : u16,
wMinute : u16,
wSecond : u16,
wMilliseconds : u16,
};
WIN32_FIND_DATAA :: struct {
dwFileAttributes : u32,
ftCreationTime : FILETIME,
ftLastAccessTime : FILETIME,
ftLastWriteTime : FILETIME,
nFileSizeHigh : u32,
nFileSizeLow : u32,
dwReserved0 : u32,
dwReserved1 : u32,
cFileName : [260]CHAR,
cAlternateFileName : [14]CHAR,
};
PWIN32_FIND_DATAA :: ^struct {
dwFileAttributes : u32,
ftCreationTime : FILETIME,
ftLastAccessTime : FILETIME,
ftLastWriteTime : FILETIME,
nFileSizeHigh : u32,
nFileSizeLow : u32,
dwReserved0 : u32,
dwReserved1 : u32,
cFileName : [260]CHAR,
cAlternateFileName : [14]CHAR,
};
LPWIN32_FIND_DATAA :: ^struct {
dwFileAttributes : u32,
ftCreationTime : FILETIME,
ftLastAccessTime : FILETIME,
ftLastWriteTime : FILETIME,
nFileSizeHigh : u32,
nFileSizeLow : u32,
dwReserved0 : u32,
dwReserved1 : u32,
cFileName : [260]CHAR,
cAlternateFileName : [14]CHAR,
};
WIN32_FIND_DATAW :: struct {
dwFileAttributes : u32,
ftCreationTime : FILETIME,
ftLastAccessTime : FILETIME,
ftLastWriteTime : FILETIME,
nFileSizeHigh : u32,
nFileSizeLow : u32,
dwReserved0 : u32,
dwReserved1 : u32,
cFileName : [260]WCHAR,
cAlternateFileName : [14]WCHAR,
};
PWIN32_FIND_DATAW :: ^struct {
dwFileAttributes : u32,
ftCreationTime : FILETIME,
ftLastAccessTime : FILETIME,
ftLastWriteTime : FILETIME,
nFileSizeHigh : u32,
nFileSizeLow : u32,
dwReserved0 : u32,
dwReserved1 : u32,
cFileName : [260]WCHAR,
cAlternateFileName : [14]WCHAR,
};
LPWIN32_FIND_DATAW :: ^struct {
dwFileAttributes : u32,
ftCreationTime : FILETIME,
ftLastAccessTime : FILETIME,
ftLastWriteTime : FILETIME,
nFileSizeHigh : u32,
nFileSizeLow : u32,
dwReserved0 : u32,
dwReserved1 : u32,
cFileName : [260]WCHAR,
cAlternateFileName : [14]WCHAR,
};
WIN32_FIND_DATA :: WIN32_FIND_DATAA;
PWIN32_FIND_DATA :: PWIN32_FIND_DATAA;
LPWIN32_FIND_DATA :: LPWIN32_FIND_DATAA;
FINDEX_INFO_LEVELS :: enum {
FindExInfoStandard,
FindExInfoBasic,
FindExInfoMaxInfoLevel,
};
FINDEX_SEARCH_OPS :: enum {
FindExSearchNameMatch,
FindExSearchLimitToDirectories,
FindExSearchLimitToDevices,
FindExSearchMaxSearchOp,
};
READ_DIRECTORY_NOTIFY_INFORMATION_CLASS :: enum {
ReadDirectoryNotifyInformation = 1,
ReadDirectoryNotifyExtendedInformation,
};
PREAD_DIRECTORY_NOTIFY_INFORMATION_CLASS :: ^enum {
ReadDirectoryNotifyInformation = 1,
ReadDirectoryNotifyExtendedInformation,
};
GET_FILEEX_INFO_LEVELS :: enum {
GetFileExInfoStandard,
GetFileExMaxInfoLevel,
};
FILE_INFO_BY_HANDLE_CLASS :: enum {
FileBasicInfo,
FileStandardInfo,
FileNameInfo,
FileRenameInfo,
FileDispositionInfo,
FileAllocationInfo,
FileEndOfFileInfo,
FileStreamInfo,
FileCompressionInfo,
FileAttributeTagInfo,
FileIdBothDirectoryInfo,
FileIdBothDirectoryRestartInfo,
FileIoPriorityHintInfo,
FileRemoteProtocolInfo,
FileFullDirectoryInfo,
FileFullDirectoryRestartInfo,
FileStorageInfo,
FileAlignmentInfo,
FileIdInfo,
FileIdExtdDirectoryInfo,
FileIdExtdDirectoryRestartInfo,
FileDispositionInfoEx,
FileRenameInfoEx,
FileCaseSensitiveInfo,
FileNormalizedNameInfo,
MaximumFileInfoByHandleClass,
};
PFILE_INFO_BY_HANDLE_CLASS :: ^enum {
FileBasicInfo,
FileStandardInfo,
FileNameInfo,
FileRenameInfo,
FileDispositionInfo,
FileAllocationInfo,
FileEndOfFileInfo,
FileStreamInfo,
FileCompressionInfo,
FileAttributeTagInfo,
FileIdBothDirectoryInfo,
FileIdBothDirectoryRestartInfo,
FileIoPriorityHintInfo,
FileRemoteProtocolInfo,
FileFullDirectoryInfo,
FileFullDirectoryRestartInfo,
FileStorageInfo,
FileAlignmentInfo,
FileIdInfo,
FileIdExtdDirectoryInfo,
FileIdExtdDirectoryRestartInfo,
FileDispositionInfoEx,
FileRenameInfoEx,
FileCaseSensitiveInfo,
FileNormalizedNameInfo,
MaximumFileInfoByHandleClass,
};
CRITICAL_SECTION :: RTL_CRITICAL_SECTION;
PCRITICAL_SECTION :: PRTL_CRITICAL_SECTION;
LPCRITICAL_SECTION :: PRTL_CRITICAL_SECTION;
CRITICAL_SECTION_DEBUG :: RTL_CRITICAL_SECTION_DEBUG;
PCRITICAL_SECTION_DEBUG :: PRTL_CRITICAL_SECTION_DEBUG;
LPCRITICAL_SECTION_DEBUG :: PRTL_CRITICAL_SECTION_DEBUG;
LPOVERLAPPED_COMPLETION_ROUTINE :: proc(dwErrorCode : u32, dwNumberOfBytesTransfered : u32, lpOverlapped : LPOVERLAPPED);
PROCESS_HEAP_ENTRY :: struct {
lpData : PVOID,
cbData : u32,
cbOverhead : BYTE,
iRegionIndex : BYTE,
wFlags : u16,
u : struct #raw_union {
Block : struct {
hMem : HANDLE,
dwReserved : [3]u32,
},
Region : struct {
dwCommittedSize : u32,
dwUnCommittedSize : u32,
lpFirstBlock : LPVOID,
lpLastBlock : LPVOID,
},
},
};
LPPROCESS_HEAP_ENTRY :: ^struct {
lpData : PVOID,
cbData : u32,
cbOverhead : BYTE,
iRegionIndex : BYTE,
wFlags : u16,
u : struct #raw_union {
Block : struct {
hMem : HANDLE,
dwReserved : [3]u32,
},
Region : struct {
dwCommittedSize : u32,
dwUnCommittedSize : u32,
lpFirstBlock : LPVOID,
lpLastBlock : LPVOID,
},
},
};
PPROCESS_HEAP_ENTRY :: ^struct {
lpData : PVOID,
cbData : u32,
cbOverhead : BYTE,
iRegionIndex : BYTE,
wFlags : u16,
u : struct #raw_union {
Block : struct {
hMem : HANDLE,
dwReserved : [3]u32,
},
Region : struct {
dwCommittedSize : u32,
dwUnCommittedSize : u32,
lpFirstBlock : LPVOID,
lpLastBlock : LPVOID,
},
},
};
REASON_CONTEXT :: struct {
Version : ULONG,
Flags : u32,
Reason : struct #raw_union {
Detailed : struct {
LocalizedReasonModule : HMODULE,
LocalizedReasonId : ULONG,
ReasonStringCount : ULONG,
ReasonStrings : ^LPWSTR,
},
SimpleReasonString : LPWSTR,
},
};
PREASON_CONTEXT :: ^struct {
Version : ULONG,
Flags : u32,
Reason : struct #raw_union {
Detailed : struct {
LocalizedReasonModule : HMODULE,
LocalizedReasonId : ULONG,
ReasonStringCount : ULONG,
ReasonStrings : ^LPWSTR,
},
SimpleReasonString : LPWSTR,
},
};
PTHREAD_START_ROUTINE :: (proc(lpThreadParameter : LPVOID) -> u32);
LPTHREAD_START_ROUTINE :: PTHREAD_START_ROUTINE;
PENCLAVE_ROUTINE :: (proc(lpThreadParameter : LPVOID) -> LPVOID);
LPENCLAVE_ROUTINE :: PENCLAVE_ROUTINE;
EXCEPTION_DEBUG_INFO :: struct {
ExceptionRecord : EXCEPTION_RECORD,
dwFirstChance : u32,
};
LPEXCEPTION_DEBUG_INFO :: ^struct {
ExceptionRecord : EXCEPTION_RECORD,
dwFirstChance : u32,
};
CREATE_THREAD_DEBUG_INFO :: struct {
hThread : HANDLE,
lpThreadLocalBase : LPVOID,
lpStartAddress : LPTHREAD_START_ROUTINE,
};
LPCREATE_THREAD_DEBUG_INFO :: ^struct {
hThread : HANDLE,
lpThreadLocalBase : LPVOID,
lpStartAddress : LPTHREAD_START_ROUTINE,
};
CREATE_PROCESS_DEBUG_INFO :: struct {
hFile : HANDLE,
hProcess : HANDLE,
hThread : HANDLE,
lpBaseOfImage : LPVOID,
dwDebugInfoFileOffset : u32,
nDebugInfoSize : u32,
lpThreadLocalBase : LPVOID,
lpStartAddress : LPTHREAD_START_ROUTINE,
lpImageName : LPVOID,
fUnicode : u16,
};
LPCREATE_PROCESS_DEBUG_INFO :: ^struct {
hFile : HANDLE,
hProcess : HANDLE,
hThread : HANDLE,
lpBaseOfImage : LPVOID,
dwDebugInfoFileOffset : u32,
nDebugInfoSize : u32,
lpThreadLocalBase : LPVOID,
lpStartAddress : LPTHREAD_START_ROUTINE,
lpImageName : LPVOID,
fUnicode : u16,
};
EXIT_THREAD_DEBUG_INFO :: struct {
dwExitCode : u32,
};
LPEXIT_THREAD_DEBUG_INFO :: ^struct {
dwExitCode : u32,
};
EXIT_PROCESS_DEBUG_INFO :: struct {
dwExitCode : u32,
};
LPEXIT_PROCESS_DEBUG_INFO :: ^struct {
dwExitCode : u32,
};
LOAD_DLL_DEBUG_INFO :: struct {
hFile : HANDLE,
lpBaseOfDll : LPVOID,
dwDebugInfoFileOffset : u32,
nDebugInfoSize : u32,
lpImageName : LPVOID,
fUnicode : u16,
};
LPLOAD_DLL_DEBUG_INFO :: ^struct {
hFile : HANDLE,
lpBaseOfDll : LPVOID,
dwDebugInfoFileOffset : u32,
nDebugInfoSize : u32,
lpImageName : LPVOID,
fUnicode : u16,
};
UNLOAD_DLL_DEBUG_INFO :: struct {
lpBaseOfDll : LPVOID,
};
LPUNLOAD_DLL_DEBUG_INFO :: ^struct {
lpBaseOfDll : LPVOID,
};
OUTPUT_DEBUG_STRING_INFO :: struct {
lpDebugStringData : LPSTR,
fUnicode : u16,
nDebugStringLength : u16,
};
LPOUTPUT_DEBUG_STRING_INFO :: ^struct {
lpDebugStringData : LPSTR,
fUnicode : u16,
nDebugStringLength : u16,
};
RIP_INFO :: struct {
dwError : u32,
dwType : u32,
};
LPRIP_INFO :: ^struct {
dwError : u32,
dwType : u32,
};
DEBUG_EVENT :: struct {
dwDebugEventCode : u32,
dwProcessId : u32,
dwThreadId : u32,
u : struct #raw_union {
Exception : EXCEPTION_DEBUG_INFO,
CreateThread : CREATE_THREAD_DEBUG_INFO,
CreateProcessInfo : CREATE_PROCESS_DEBUG_INFO,
ExitThread : EXIT_THREAD_DEBUG_INFO,
ExitProcess : EXIT_PROCESS_DEBUG_INFO,
LoadDll : LOAD_DLL_DEBUG_INFO,
UnloadDll : UNLOAD_DLL_DEBUG_INFO,
DebugString : OUTPUT_DEBUG_STRING_INFO,
RipInfo : RIP_INFO,
},
};
LPDEBUG_EVENT :: ^struct {
dwDebugEventCode : u32,
dwProcessId : u32,
dwThreadId : u32,
u : struct #raw_union {
Exception : EXCEPTION_DEBUG_INFO,
CreateThread : CREATE_THREAD_DEBUG_INFO,
CreateProcessInfo : CREATE_PROCESS_DEBUG_INFO,
ExitThread : EXIT_THREAD_DEBUG_INFO,
ExitProcess : EXIT_PROCESS_DEBUG_INFO,
LoadDll : LOAD_DLL_DEBUG_INFO,
UnloadDll : UNLOAD_DLL_DEBUG_INFO,
DebugString : OUTPUT_DEBUG_STRING_INFO,
RipInfo : RIP_INFO,
},
};
LPCONTEXT :: PCONTEXT;
DISK_SPACE_INFORMATION :: struct {
ActualTotalAllocationUnits : ULONGLONG,
ActualAvailableAllocationUnits : ULONGLONG,
ActualPoolUnavailableAllocationUnits : ULONGLONG,
CallerTotalAllocationUnits : ULONGLONG,
CallerAvailableAllocationUnits : ULONGLONG,
CallerPoolUnavailableAllocationUnits : ULONGLONG,
UsedAllocationUnits : ULONGLONG,
TotalReservedAllocationUnits : ULONGLONG,
VolumeStorageReserveAllocationUnits : ULONGLONG,
AvailableCommittedAllocationUnits : ULONGLONG,
PoolAvailableAllocationUnits : ULONGLONG,
SectorsPerAllocationUnit : u32,
BytesPerSector : u32,
};
WIN32_FILE_ATTRIBUTE_DATA :: struct {
dwFileAttributes : u32,
ftCreationTime : FILETIME,
ftLastAccessTime : FILETIME,
ftLastWriteTime : FILETIME,
nFileSizeHigh : u32,
nFileSizeLow : u32,
};
LPWIN32_FILE_ATTRIBUTE_DATA :: ^struct {
dwFileAttributes : u32,
ftCreationTime : FILETIME,
ftLastAccessTime : FILETIME,
ftLastWriteTime : FILETIME,
nFileSizeHigh : u32,
nFileSizeLow : u32,
};
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,
};
PBY_HANDLE_FILE_INFORMATION :: ^struct {
dwFileAttributes : u32,
ftCreationTime : FILETIME,
ftLastAccessTime : FILETIME,
ftLastWriteTime : FILETIME,
dwVolumeSerialNumber : u32,
nFileSizeHigh : u32,
nFileSizeLow : u32,
nNumberOfLinks : u32,
nFileIndexHigh : u32,
nFileIndexLow : u32,
};
LPBY_HANDLE_FILE_INFORMATION :: ^struct {
dwFileAttributes : u32,
ftCreationTime : FILETIME,
ftLastAccessTime : FILETIME,
ftLastWriteTime : FILETIME,
dwVolumeSerialNumber : u32,
nFileSizeHigh : u32,
nFileSizeLow : u32,
nNumberOfLinks : u32,
nFileIndexHigh : u32,
nFileIndexLow : u32,
};
CREATEFILE2_EXTENDED_PARAMETERS :: struct {
dwSize : u32,
dwFileAttributes : u32,
dwFileFlags : u32,
dwSecurityQosFlags : u32,
lpSecurityAttributes : LPSECURITY_ATTRIBUTES,
hTemplateFile : HANDLE,
};
PCREATEFILE2_EXTENDED_PARAMETERS :: ^struct {
dwSize : u32,
dwFileAttributes : u32,
dwFileFlags : u32,
dwSecurityQosFlags : u32,
lpSecurityAttributes : LPSECURITY_ATTRIBUTES,
hTemplateFile : HANDLE,
};
LPCREATEFILE2_EXTENDED_PARAMETERS :: ^struct {
dwSize : u32,
dwFileAttributes : u32,
dwFileFlags : u32,
dwSecurityQosFlags : u32,
lpSecurityAttributes : LPSECURITY_ATTRIBUTES,
hTemplateFile : HANDLE,
};
STREAM_INFO_LEVELS :: enum {
FindStreamInfoStandard,
FindStreamInfoMaxInfoLevel,
};
WIN32_FIND_STREAM_DATA :: struct {
StreamSize : LARGE_INTEGER,
cStreamName : [260 + 36]WCHAR,
};
PWIN32_FIND_STREAM_DATA :: ^struct {
StreamSize : LARGE_INTEGER,
cStreamName : [260 + 36]WCHAR,
};
PTOP_LEVEL_EXCEPTION_FILTER :: (proc(ExceptionInfo : ^EXCEPTION_POINTERS) -> LONG);
LPTOP_LEVEL_EXCEPTION_FILTER :: PTOP_LEVEL_EXCEPTION_FILTER;
HEAP_SUMMARY :: struct {
cb : u32,
cbAllocated : SIZE_T,
cbCommitted : SIZE_T,
cbReserved : SIZE_T,
cbMaxReserve : SIZE_T,
};
PHEAP_SUMMARY :: ^struct {
cb : u32,
cbAllocated : SIZE_T,
cbCommitted : SIZE_T,
cbReserved : SIZE_T,
cbMaxReserve : SIZE_T,
};
LPHEAP_SUMMARY :: PHEAP_SUMMARY;
SRWLOCK :: RTL_SRWLOCK;
PSRWLOCK :: ^RTL_SRWLOCK;
INIT_ONCE :: RTL_RUN_ONCE;
PINIT_ONCE :: PRTL_RUN_ONCE;
LPINIT_ONCE :: PRTL_RUN_ONCE;
PINIT_ONCE_FN :: (proc(InitOnce : PINIT_ONCE, Parameter : PVOID, Context : ^PVOID) -> BOOL);
CONDITION_VARIABLE :: RTL_CONDITION_VARIABLE;
PCONDITION_VARIABLE :: ^RTL_CONDITION_VARIABLE;
PTIMERAPCROUTINE :: proc(lpArgToCompletionRoutine : LPVOID, dwTimerLowValue : u32, dwTimerHighValue : u32);
SYNCHRONIZATION_BARRIER :: RTL_BARRIER;
PSYNCHRONIZATION_BARRIER :: PRTL_BARRIER;
LPSYNCHRONIZATION_BARRIER :: PRTL_BARRIER;
PROCESS_INFORMATION :: struct {
hProcess : HANDLE,
hThread : HANDLE,
dwProcessId : u32,
dwThreadId : u32,
};
PPROCESS_INFORMATION :: ^struct {
hProcess : HANDLE,
hThread : HANDLE,
dwProcessId : u32,
dwThreadId : u32,
};
LPPROCESS_INFORMATION :: ^struct {
hProcess : HANDLE,
hThread : HANDLE,
dwProcessId : u32,
dwThreadId : u32,
};
STARTUPINFOA :: struct {
cb : u32,
lpReserved : LPSTR,
lpDesktop : LPSTR,
lpTitle : LPSTR,
dwX : u32,
dwY : u32,
dwXSize : u32,
dwYSize : u32,
dwXCountChars : u32,
dwYCountChars : u32,
dwFillAttribute : u32,
dwFlags : u32,
wShowWindow : u16,
cbReserved2 : u16,
lpReserved2 : LPBYTE,
hStdInput : HANDLE,
hStdOutput : HANDLE,
hStdError : HANDLE,
};
LPSTARTUPINFOA :: ^struct {
cb : u32,
lpReserved : LPSTR,
lpDesktop : LPSTR,
lpTitle : LPSTR,
dwX : u32,
dwY : u32,
dwXSize : u32,
dwYSize : u32,
dwXCountChars : u32,
dwYCountChars : u32,
dwFillAttribute : u32,
dwFlags : u32,
wShowWindow : u16,
cbReserved2 : u16,
lpReserved2 : LPBYTE,
hStdInput : HANDLE,
hStdOutput : HANDLE,
hStdError : HANDLE,
};
STARTUPINFOW :: struct {
cb : u32,
lpReserved : LPWSTR,
lpDesktop : LPWSTR,
lpTitle : LPWSTR,
dwX : u32,
dwY : u32,
dwXSize : u32,
dwYSize : u32,
dwXCountChars : u32,
dwYCountChars : u32,
dwFillAttribute : u32,
dwFlags : u32,
wShowWindow : u16,
cbReserved2 : u16,
lpReserved2 : LPBYTE,
hStdInput : HANDLE,
hStdOutput : HANDLE,
hStdError : HANDLE,
};
LPSTARTUPINFOW :: ^struct {
cb : u32,
lpReserved : LPWSTR,
lpDesktop : LPWSTR,
lpTitle : LPWSTR,
dwX : u32,
dwY : u32,
dwXSize : u32,
dwYSize : u32,
dwXCountChars : u32,
dwYCountChars : u32,
dwFillAttribute : u32,
dwFlags : u32,
wShowWindow : u16,
cbReserved2 : u16,
lpReserved2 : LPBYTE,
hStdInput : HANDLE,
hStdOutput : HANDLE,
hStdError : HANDLE,
};
STARTUPINFO :: STARTUPINFOA;
LPSTARTUPINFO :: LPSTARTUPINFOA;
_PROC_THREAD_ATTRIBUTE_LIST :: struct {};
PPROC_THREAD_ATTRIBUTE_LIST :: ^_PROC_THREAD_ATTRIBUTE_LIST;
LPPROC_THREAD_ATTRIBUTE_LIST :: ^_PROC_THREAD_ATTRIBUTE_LIST;
THREAD_INFORMATION_CLASS :: enum {
ThreadMemoryPriority,
ThreadAbsoluteCpuPriority,
ThreadDynamicCodePolicy,
ThreadPowerThrottling,
ThreadInformationClassMax,
};
MEMORY_PRIORITY_INFORMATION :: struct {
MemoryPriority : ULONG,
};
PMEMORY_PRIORITY_INFORMATION :: ^struct {
MemoryPriority : ULONG,
};
THREAD_POWER_THROTTLING_STATE :: struct {
Version : ULONG,
ControlMask : ULONG,
StateMask : ULONG,
};
PROCESS_INFORMATION_CLASS :: enum {
ProcessMemoryPriority,
ProcessMemoryExhaustionInfo,
ProcessAppMemoryInfo,
ProcessInPrivateInfo,
ProcessPowerThrottling,
ProcessReservedValue1,
ProcessTelemetryCoverageInfo,
ProcessProtectionLevelInfo,
ProcessLeapSecondInfo,
ProcessInformationClassMax,
};
APP_MEMORY_INFORMATION :: struct {
AvailableCommit : ULONG64,
PrivateCommitUsage : ULONG64,
PeakPrivateCommitUsage : ULONG64,
TotalCommitUsage : ULONG64,
};
PAPP_MEMORY_INFORMATION :: ^struct {
AvailableCommit : ULONG64,
PrivateCommitUsage : ULONG64,
PeakPrivateCommitUsage : ULONG64,
TotalCommitUsage : ULONG64,
};
PROCESS_MEMORY_EXHAUSTION_TYPE :: enum {
PMETypeFailFastOnCommitFailure,
PMETypeMax,
};
PPROCESS_MEMORY_EXHAUSTION_TYPE :: ^enum {
PMETypeFailFastOnCommitFailure,
PMETypeMax,
};
PROCESS_MEMORY_EXHAUSTION_INFO :: struct {
Version : USHORT,
Reserved : USHORT,
Type : PROCESS_MEMORY_EXHAUSTION_TYPE,
Value : ULONG_PTR,
};
PPROCESS_MEMORY_EXHAUSTION_INFO :: ^struct {
Version : USHORT,
Reserved : USHORT,
Type : PROCESS_MEMORY_EXHAUSTION_TYPE,
Value : ULONG_PTR,
};
PROCESS_POWER_THROTTLING_STATE :: struct {
Version : ULONG,
ControlMask : ULONG,
StateMask : ULONG,
};
PPROCESS_POWER_THROTTLING_STATE :: ^struct {
Version : ULONG,
ControlMask : ULONG,
StateMask : ULONG,
};
PROCESS_PROTECTION_LEVEL_INFORMATION :: struct {
ProtectionLevel : u32,
};
PROCESS_LEAP_SECOND_INFO :: struct {
Flags : ULONG,
Reserved : ULONG,
};
PPROCESS_LEAP_SECOND_INFO :: ^struct {
Flags : ULONG,
Reserved : ULONG,
};
SYSTEM_INFO :: struct {
u : struct #raw_union {
dwOemId : u32,
s : struct {
wProcessorArchitecture : u16,
wReserved : u16,
},
},
dwPageSize : u32,
lpMinimumApplicationAddress : LPVOID,
lpMaximumApplicationAddress : LPVOID,
dwActiveProcessorMask : DWORD_PTR,
dwNumberOfProcessors : u32,
dwProcessorType : u32,
dwAllocationGranularity : u32,
wProcessorLevel : u16,
wProcessorRevision : u16,
};
LPSYSTEM_INFO :: ^struct {
u : struct #raw_union {
dwOemId : u32,
s : struct {
wProcessorArchitecture : u16,
wReserved : u16,
},
},
dwPageSize : u32,
lpMinimumApplicationAddress : LPVOID,
lpMaximumApplicationAddress : LPVOID,
dwActiveProcessorMask : DWORD_PTR,
dwNumberOfProcessors : u32,
dwProcessorType : u32,
dwAllocationGranularity : u32,
wProcessorLevel : u16,
wProcessorRevision : u16,
};
MEMORYSTATUSEX :: struct {
dwLength : u32,
dwMemoryLoad : u32,
ullTotalPhys : DWORDLONG,
ullAvailPhys : DWORDLONG,
ullTotalPageFile : DWORDLONG,
ullAvailPageFile : DWORDLONG,
ullTotalVirtual : DWORDLONG,
ullAvailVirtual : DWORDLONG,
ullAvailExtendedVirtual : DWORDLONG,
};
LPMEMORYSTATUSEX :: ^struct {
dwLength : u32,
dwMemoryLoad : u32,
ullTotalPhys : DWORDLONG,
ullAvailPhys : DWORDLONG,
ullTotalPageFile : DWORDLONG,
ullAvailPageFile : DWORDLONG,
ullTotalVirtual : DWORDLONG,
ullAvailVirtual : DWORDLONG,
ullAvailExtendedVirtual : DWORDLONG,
};
COMPUTER_NAME_FORMAT :: enum {
ComputerNameNetBIOS,
ComputerNameDnsHostname,
ComputerNameDnsDomain,
ComputerNameDnsFullyQualified,
ComputerNamePhysicalNetBIOS,
ComputerNamePhysicalDnsHostname,
ComputerNamePhysicalDnsDomain,
ComputerNamePhysicalDnsFullyQualified,
ComputerNameMax,
};
MEMORY_RESOURCE_NOTIFICATION_TYPE :: enum {
LowMemoryResourceNotification,
HighMemoryResourceNotification,
};
WIN32_MEMORY_RANGE_ENTRY :: struct {
VirtualAddress : PVOID,
NumberOfBytes : SIZE_T,
};
PWIN32_MEMORY_RANGE_ENTRY :: ^struct {
VirtualAddress : PVOID,
NumberOfBytes : SIZE_T,
};
BAD_MEMORY_CALLBACK_ROUTINE :: #type proc(void);
PBAD_MEMORY_CALLBACK_ROUTINE :: ^BAD_MEMORY_CALLBACK_ROUTINE;
OFFER_PRIORITY :: enum {
VmOfferPriorityVeryLow = 1,
VmOfferPriorityLow,
VmOfferPriorityBelowNormal,
VmOfferPriorityNormal,
};
WIN32_MEMORY_INFORMATION_CLASS :: enum {
MemoryRegionInfo,
};
WIN32_MEMORY_REGION_INFORMATION :: struct {
AllocationBase : PVOID,
AllocationProtect : ULONG,
u : struct #raw_union {
Flags : ULONG,
s : struct {
Private : ,
MappedDataFile : ,
MappedImage : ,
MappedPageFile : ,
MappedPhysical : ,
DirectMapped : ,
Reserved : ,
},
},
RegionSize : SIZE_T,
CommitSize : SIZE_T,
};
PTP_WIN32_IO_CALLBACK :: proc(Instance : PTP_CALLBACK_INSTANCE, Context : PVOID, Overlapped : PVOID, IoResult : ULONG, NumberOfBytesTransferred : ULONG_PTR, Io : PTP_IO);
JOBOBJECT_IO_RATE_CONTROL_INFORMATION :: struct {
MaxIops : LONG64,
MaxBandwidth : LONG64,
ReservationIops : LONG64,
VolumeName : PCWSTR,
BaseIoSize : ULONG,
ControlFlags : ULONG,
};
ENUMUILANG :: struct {
NumOfEnumUILang : ULONG,
SizeOfEnumUIBuffer : ULONG,
pEnumUIBuffer : ^LANGID,
};
PENUMUILANG :: ^struct {
NumOfEnumUILang : ULONG,
SizeOfEnumUIBuffer : ULONG,
pEnumUIBuffer : ^LANGID,
};
ENUMRESLANGPROCA :: (proc(hModule : HMODULE, lpType : LPCSTR, lpName : LPCSTR, wLanguage : u16, lParam : LONG_PTR) -> BOOL);
ENUMRESLANGPROCW :: (proc(hModule : HMODULE, lpType : LPCWSTR, lpName : LPCWSTR, wLanguage : u16, lParam : LONG_PTR) -> BOOL);
ENUMRESNAMEPROCA :: (proc(hModule : HMODULE, lpType : LPCSTR, lpName : LPSTR, lParam : LONG_PTR) -> BOOL);
ENUMRESNAMEPROCW :: (proc(hModule : HMODULE, lpType : LPCWSTR, lpName : LPWSTR, lParam : LONG_PTR) -> BOOL);
ENUMRESTYPEPROCA :: (proc(hModule : HMODULE, lpType : LPSTR, lParam : LONG_PTR) -> BOOL);
ENUMRESTYPEPROCW :: (proc(hModule : HMODULE, lpType : LPWSTR, lParam : LONG_PTR) -> BOOL);
PGET_MODULE_HANDLE_EXA :: (proc(dwFlags : u32, lpModuleName : LPCSTR, phModule : ^HMODULE) -> BOOL);
PGET_MODULE_HANDLE_EXW :: (proc(dwFlags : u32, lpModuleName : LPCWSTR, phModule : ^HMODULE) -> BOOL);
REDIRECTION_FUNCTION_DESCRIPTOR :: struct {
DllName : PCSTR,
FunctionName : PCSTR,
RedirectionTarget : PVOID,
};
PREDIRECTION_FUNCTION_DESCRIPTOR :: ^struct {
DllName : PCSTR,
FunctionName : PCSTR,
RedirectionTarget : PVOID,
};
PCREDIRECTION_FUNCTION_DESCRIPTOR :: ^REDIRECTION_FUNCTION_DESCRIPTOR;
REDIRECTION_DESCRIPTOR :: struct {
Version : ULONG,
FunctionCount : ULONG,
Redirections : PCREDIRECTION_FUNCTION_DESCRIPTOR,
};
PREDIRECTION_DESCRIPTOR :: ^struct {
Version : ULONG,
FunctionCount : ULONG,
Redirections : PCREDIRECTION_FUNCTION_DESCRIPTOR,
};
PCREDIRECTION_DESCRIPTOR :: ^REDIRECTION_DESCRIPTOR;
DLL_DIRECTORY_COOKIE :: PVOID;
PDLL_DIRECTORY_COOKIE :: ^PVOID;
PFIBER_START_ROUTINE :: proc(lpFiberParameter : LPVOID);
LPFIBER_START_ROUTINE :: PFIBER_START_ROUTINE;
PFIBER_CALLOUT_ROUTINE :: (proc(lpParameter : LPVOID) -> LPVOID);
LPLDT_ENTRY :: PLDT_ENTRY;
COMMPROP :: struct {
wPacketLength : u16,
wPacketVersion : u16,
dwServiceMask : u32,
dwReserved1 : u32,
dwMaxTxQueue : u32,
dwMaxRxQueue : u32,
dwMaxBaud : u32,
dwProvSubType : u32,
dwProvCapabilities : u32,
dwSettableParams : u32,
dwSettableBaud : u32,
wSettableData : u16,
wSettableStopParity : u16,
dwCurrentTxQueue : u32,
dwCurrentRxQueue : u32,
dwProvSpec1 : u32,
dwProvSpec2 : u32,
wcProvChar : [1]WCHAR,
};
LPCOMMPROP :: ^struct {
wPacketLength : u16,
wPacketVersion : u16,
dwServiceMask : u32,
dwReserved1 : u32,
dwMaxTxQueue : u32,
dwMaxRxQueue : u32,
dwMaxBaud : u32,
dwProvSubType : u32,
dwProvCapabilities : u32,
dwSettableParams : u32,
dwSettableBaud : u32,
wSettableData : u16,
wSettableStopParity : u16,
dwCurrentTxQueue : u32,
dwCurrentRxQueue : u32,
dwProvSpec1 : u32,
dwProvSpec2 : u32,
wcProvChar : [1]WCHAR,
};
COMSTAT :: struct {
fCtsHold : ,
fDsrHold : ,
fRlsdHold : ,
fXoffHold : ,
fXoffSent : ,
fEof : ,
fTxim : ,
fReserved : ,
cbInQue : u32,
cbOutQue : u32,
};
LPCOMSTAT :: ^struct {
fCtsHold : ,
fDsrHold : ,
fRlsdHold : ,
fXoffHold : ,
fXoffSent : ,
fEof : ,
fTxim : ,
fReserved : ,
cbInQue : u32,
cbOutQue : u32,
};
DCB :: struct {
DCBlength : u32,
BaudRate : u32,
fBinary : ,
fParity : ,
fOutxCtsFlow : ,
fOutxDsrFlow : ,
fDtrControl : ,
fDsrSensitivity : ,
fTXContinueOnXoff : ,
fOutX : ,
fInX : ,
fErrorChar : ,
fNull : ,
fRtsControl : ,
fAbortOnError : ,
fDummy2 : ,
wReserved : u16,
XonLim : u16,
XoffLim : u16,
ByteSize : BYTE,
Parity : BYTE,
StopBits : BYTE,
XonChar : u8,
XoffChar : u8,
ErrorChar : u8,
EofChar : u8,
EvtChar : u8,
wReserved1 : u16,
};
LPDCB :: ^struct {
DCBlength : u32,
BaudRate : u32,
fBinary : ,
fParity : ,
fOutxCtsFlow : ,
fOutxDsrFlow : ,
fDtrControl : ,
fDsrSensitivity : ,
fTXContinueOnXoff : ,
fOutX : ,
fInX : ,
fErrorChar : ,
fNull : ,
fRtsControl : ,
fAbortOnError : ,
fDummy2 : ,
wReserved : u16,
XonLim : u16,
XoffLim : u16,
ByteSize : BYTE,
Parity : BYTE,
StopBits : BYTE,
XonChar : u8,
XoffChar : u8,
ErrorChar : u8,
EofChar : u8,
EvtChar : u8,
wReserved1 : u16,
};
COMMTIMEOUTS :: struct {
ReadIntervalTimeout : u32,
ReadTotalTimeoutMultiplier : u32,
ReadTotalTimeoutConstant : u32,
WriteTotalTimeoutMultiplier : u32,
WriteTotalTimeoutConstant : u32,
};
LPCOMMTIMEOUTS :: ^struct {
ReadIntervalTimeout : u32,
ReadTotalTimeoutMultiplier : u32,
ReadTotalTimeoutConstant : u32,
WriteTotalTimeoutMultiplier : u32,
WriteTotalTimeoutConstant : u32,
};
COMMCONFIG :: struct {
dwSize : u32,
wVersion : u16,
wReserved : u16,
dcb : DCB,
dwProviderSubType : u32,
dwProviderOffset : u32,
dwProviderSize : u32,
wcProviderData : [1]WCHAR,
};
LPCOMMCONFIG :: ^struct {
dwSize : u32,
wVersion : u16,
wReserved : u16,
dcb : DCB,
dwProviderSubType : u32,
dwProviderOffset : u32,
dwProviderSize : u32,
wcProviderData : [1]WCHAR,
};
MEMORYSTATUS :: struct {
dwLength : u32,
dwMemoryLoad : u32,
dwTotalPhys : SIZE_T,
dwAvailPhys : SIZE_T,
dwTotalPageFile : SIZE_T,
dwAvailPageFile : SIZE_T,
dwTotalVirtual : SIZE_T,
dwAvailVirtual : SIZE_T,
};
LPMEMORYSTATUS :: ^struct {
dwLength : u32,
dwMemoryLoad : u32,
dwTotalPhys : SIZE_T,
dwAvailPhys : SIZE_T,
dwTotalPageFile : SIZE_T,
dwAvailPageFile : SIZE_T,
dwTotalVirtual : SIZE_T,
dwAvailVirtual : SIZE_T,
};
JIT_DEBUG_INFO :: struct {
dwSize : u32,
dwProcessorArchitecture : u32,
dwThreadID : u32,
dwReserved0 : u32,
lpExceptionAddress : ULONG64,
lpExceptionRecord : ULONG64,
lpContextRecord : ULONG64,
};
LPJIT_DEBUG_INFO :: ^struct {
dwSize : u32,
dwProcessorArchitecture : u32,
dwThreadID : u32,
dwReserved0 : u32,
lpExceptionAddress : ULONG64,
lpExceptionRecord : ULONG64,
lpContextRecord : ULONG64,
};
JIT_DEBUG_INFO32 :: JIT_DEBUG_INFO;
LPJIT_DEBUG_INFO32 :: ^JIT_DEBUG_INFO;
JIT_DEBUG_INFO64 :: JIT_DEBUG_INFO;
LPJIT_DEBUG_INFO64 :: ^JIT_DEBUG_INFO;
LPEXCEPTION_RECORD :: PEXCEPTION_RECORD;
LPEXCEPTION_POINTERS :: PEXCEPTION_POINTERS;
OFSTRUCT :: struct {
cBytes : BYTE,
fFixedDisk : BYTE,
nErrCode : u16,
Reserved1 : u16,
Reserved2 : u16,
szPathName : [128]CHAR,
};
LPOFSTRUCT :: ^struct {
cBytes : BYTE,
fFixedDisk : BYTE,
nErrCode : u16,
Reserved1 : u16,
Reserved2 : u16,
szPathName : [128]CHAR,
};
POFSTRUCT :: ^struct {
cBytes : BYTE,
fFixedDisk : BYTE,
nErrCode : u16,
Reserved1 : u16,
Reserved2 : u16,
szPathName : [128]CHAR,
};
PUMS_CONTEXT :: rawptr;
PUMS_COMPLETION_LIST :: rawptr;
UMS_THREAD_INFO_CLASS :: struct {};
PUMS_THREAD_INFO_CLASS :: ^UMS_THREAD_INFO_CLASS;
UMS_SCHEDULER_REASON :: struct {};
;
PUMS_SCHEDULER_ENTRY_POINT :: PRTL_UMS_SCHEDULER_ENTRY_POINT;
UMS_SCHEDULER_STARTUP_INFO :: struct {
UmsVersion : ULONG,
CompletionList : PUMS_COMPLETION_LIST,
SchedulerProc : PUMS_SCHEDULER_ENTRY_POINT,
SchedulerParam : PVOID,
};
PUMS_SCHEDULER_STARTUP_INFO :: ^struct {
UmsVersion : ULONG,
CompletionList : PUMS_COMPLETION_LIST,
SchedulerProc : PUMS_SCHEDULER_ENTRY_POINT,
SchedulerParam : PVOID,
};
UMS_SYSTEM_THREAD_INFORMATION :: struct {
UmsVersion : ULONG,
u : struct #raw_union {
s : struct {
IsUmsSchedulerThread : ,
IsUmsWorkerThread : ,
},
ThreadUmsFlags : ULONG,
},
};
PUMS_SYSTEM_THREAD_INFORMATION :: ^struct {
UmsVersion : ULONG,
u : struct #raw_union {
s : struct {
IsUmsSchedulerThread : ,
IsUmsWorkerThread : ,
},
ThreadUmsFlags : ULONG,
},
};
POWER_REQUEST_CONTEXT :: REASON_CONTEXT;
PPOWER_REQUEST_CONTEXT :: ^REASON_CONTEXT;
LPPOWER_REQUEST_CONTEXT :: ^REASON_CONTEXT;
DEP_SYSTEM_POLICY_TYPE :: enum {
DEPPolicyAlwaysOff = 0,
DEPPolicyAlwaysOn,
DEPPolicyOptIn,
DEPPolicyOptOut,
DEPTotalPolicyCount,
};
PFE_EXPORT_FUNC :: (proc(pbData : PBYTE, pvCallbackContext : PVOID, ulLength : ULONG) -> u32);
PFE_IMPORT_FUNC :: (proc(pbData : PBYTE, pvCallbackContext : PVOID, ulLength : PULONG) -> u32);
WIN32_STREAM_ID :: struct {
dwStreamId : u32,
dwStreamAttributes : u32,
Size : LARGE_INTEGER,
dwStreamNameSize : u32,
cStreamName : [1]WCHAR,
};
LPWIN32_STREAM_ID :: ^struct {
dwStreamId : u32,
dwStreamAttributes : u32,
Size : LARGE_INTEGER,
dwStreamNameSize : u32,
cStreamName : [1]WCHAR,
};
STARTUPINFOEXA :: struct {
StartupInfo : STARTUPINFOA,
lpAttributeList : LPPROC_THREAD_ATTRIBUTE_LIST,
};
LPSTARTUPINFOEXA :: ^struct {
StartupInfo : STARTUPINFOA,
lpAttributeList : LPPROC_THREAD_ATTRIBUTE_LIST,
};
STARTUPINFOEXW :: struct {
StartupInfo : STARTUPINFOW,
lpAttributeList : LPPROC_THREAD_ATTRIBUTE_LIST,
};
LPSTARTUPINFOEXW :: ^struct {
StartupInfo : STARTUPINFOW,
lpAttributeList : LPPROC_THREAD_ATTRIBUTE_LIST,
};
STARTUPINFOEX :: STARTUPINFOEXA;
LPSTARTUPINFOEX :: LPSTARTUPINFOEXA;
PROC_THREAD_ATTRIBUTE_NUM :: enum {
ProcThreadAttributeParentProcess = 0,
ProcThreadAttributeHandleList = 2,
ProcThreadAttributeGroupAffinity = 3,
ProcThreadAttributePreferredNode = 4,
ProcThreadAttributeIdealProcessor = 5,
ProcThreadAttributeUmsThread = 6,
ProcThreadAttributeMitigationPolicy = 7,
ProcThreadAttributeSecurityCapabilities = 9,
ProcThreadAttributeProtectionLevel = 11,
ProcThreadAttributeJobList = 13,
ProcThreadAttributeChildProcessPolicy = 14,
ProcThreadAttributeAllApplicationPackagesPolicy = 15,
ProcThreadAttributeWin32kFilter = 16,
ProcThreadAttributeSafeOpenPromptOriginClaim = 17,
ProcThreadAttributeDesktopAppPolicy = 18,
ProcThreadAttributePseudoConsole = 22,
};
PGET_SYSTEM_WOW64_DIRECTORY_A :: (proc(lpBuffer : LPSTR, uSize : UINT) -> UINT);
PGET_SYSTEM_WOW64_DIRECTORY_W :: (proc(lpBuffer : LPWSTR, uSize : UINT) -> UINT);
LPPROGRESS_ROUTINE :: (proc(TotalFileSize : LARGE_INTEGER, TotalBytesTransferred : LARGE_INTEGER, StreamSize : LARGE_INTEGER, StreamBytesTransferred : LARGE_INTEGER, dwStreamNumber : u32, dwCallbackReason : u32, hSourceFile : HANDLE, hDestinationFile : HANDLE, lpData : LPVOID) -> u32);
COPYFILE2_MESSAGE_TYPE :: enum {
COPYFILE2_CALLBACK_NONE = 0,
COPYFILE2_CALLBACK_CHUNK_STARTED,
COPYFILE2_CALLBACK_CHUNK_FINISHED,
COPYFILE2_CALLBACK_STREAM_STARTED,
COPYFILE2_CALLBACK_STREAM_FINISHED,
COPYFILE2_CALLBACK_POLL_CONTINUE,
COPYFILE2_CALLBACK_ERROR,
COPYFILE2_CALLBACK_MAX,
};
COPYFILE2_MESSAGE_ACTION :: enum {
COPYFILE2_PROGRESS_CONTINUE = 0,
COPYFILE2_PROGRESS_CANCEL,
COPYFILE2_PROGRESS_STOP,
COPYFILE2_PROGRESS_QUIET,
COPYFILE2_PROGRESS_PAUSE,
};
COPYFILE2_COPY_PHASE :: enum {
COPYFILE2_PHASE_NONE = 0,
COPYFILE2_PHASE_PREPARE_SOURCE,
COPYFILE2_PHASE_PREPARE_DEST,
COPYFILE2_PHASE_READ_SOURCE,
COPYFILE2_PHASE_WRITE_DESTINATION,
COPYFILE2_PHASE_SERVER_COPY,
COPYFILE2_PHASE_NAMEGRAFT_COPY,
COPYFILE2_PHASE_MAX,
};
COPYFILE2_MESSAGE :: struct {
Type : COPYFILE2_MESSAGE_TYPE,
dwPadding : u32,
Info : struct #raw_union {
ChunkStarted : struct {
dwStreamNumber : u32,
dwReserved : u32,
hSourceFile : HANDLE,
hDestinationFile : HANDLE,
uliChunkNumber : ULARGE_INTEGER,
uliChunkSize : ULARGE_INTEGER,
uliStreamSize : ULARGE_INTEGER,
uliTotalFileSize : ULARGE_INTEGER,
},
ChunkFinished : struct {
dwStreamNumber : u32,
dwFlags : u32,
hSourceFile : HANDLE,
hDestinationFile : HANDLE,
uliChunkNumber : ULARGE_INTEGER,
uliChunkSize : ULARGE_INTEGER,
uliStreamSize : ULARGE_INTEGER,
uliStreamBytesTransferred : ULARGE_INTEGER,
uliTotalFileSize : ULARGE_INTEGER,
uliTotalBytesTransferred : ULARGE_INTEGER,
},
StreamStarted : struct {
dwStreamNumber : u32,
dwReserved : u32,
hSourceFile : HANDLE,
hDestinationFile : HANDLE,
uliStreamSize : ULARGE_INTEGER,
uliTotalFileSize : ULARGE_INTEGER,
},
StreamFinished : struct {
dwStreamNumber : u32,
dwReserved : u32,
hSourceFile : HANDLE,
hDestinationFile : HANDLE,
uliStreamSize : ULARGE_INTEGER,
uliStreamBytesTransferred : ULARGE_INTEGER,
uliTotalFileSize : ULARGE_INTEGER,
uliTotalBytesTransferred : ULARGE_INTEGER,
},
PollContinue : struct {
dwReserved : u32,
},
Error : struct {
CopyPhase : COPYFILE2_COPY_PHASE,
dwStreamNumber : u32,
hrFailure : HRESULT,
dwReserved : u32,
uliChunkNumber : ULARGE_INTEGER,
uliStreamSize : ULARGE_INTEGER,
uliStreamBytesTransferred : ULARGE_INTEGER,
uliTotalFileSize : ULARGE_INTEGER,
uliTotalBytesTransferred : ULARGE_INTEGER,
},
},
};
PCOPYFILE2_PROGRESS_ROUTINE :: (proc(pMessage : ^COPYFILE2_MESSAGE, pvCallbackContext : PVOID) -> COPYFILE2_MESSAGE_ACTION);
COPYFILE2_EXTENDED_PARAMETERS :: struct {
dwSize : u32,
dwCopyFlags : u32,
pfCancel : ^BOOL,
pProgressRoutine : PCOPYFILE2_PROGRESS_ROUTINE,
pvCallbackContext : PVOID,
};
EVENTLOG_FULL_INFORMATION :: struct {
dwFull : u32,
};
LPEVENTLOG_FULL_INFORMATION :: ^struct {
dwFull : u32,
};
OPERATION_ID :: ULONG;
OPERATION_START_PARAMETERS :: struct {
Version : ULONG,
OperationId : OPERATION_ID,
Flags : ULONG,
};
POPERATION_START_PARAMETERS :: ^struct {
Version : ULONG,
OperationId : OPERATION_ID,
Flags : ULONG,
};
OPERATION_END_PARAMETERS :: struct {
Version : ULONG,
OperationId : OPERATION_ID,
Flags : ULONG,
};
POPERATION_END_PARAMETERS :: ^struct {
Version : ULONG,
OperationId : OPERATION_ID,
Flags : ULONG,
};
HW_PROFILE_INFOA :: struct {
dwDockInfo : u32,
szHwProfileGuid : [39]CHAR,
szHwProfileName : [80]CHAR,
};
LPHW_PROFILE_INFOA :: ^struct {
dwDockInfo : u32,
szHwProfileGuid : [39]CHAR,
szHwProfileName : [80]CHAR,
};
HW_PROFILE_INFOW :: struct {
dwDockInfo : u32,
szHwProfileGuid : [39]WCHAR,
szHwProfileName : [80]WCHAR,
};
LPHW_PROFILE_INFOW :: ^struct {
dwDockInfo : u32,
szHwProfileGuid : [39]WCHAR,
szHwProfileName : [80]WCHAR,
};
HW_PROFILE_INFO :: HW_PROFILE_INFOA;
LPHW_PROFILE_INFO :: LPHW_PROFILE_INFOA;
TIME_ZONE_INFORMATION :: struct {
Bias : LONG,
StandardName : [32]WCHAR,
StandardDate : SYSTEMTIME,
StandardBias : LONG,
DaylightName : [32]WCHAR,
DaylightDate : SYSTEMTIME,
DaylightBias : LONG,
};
PTIME_ZONE_INFORMATION :: ^struct {
Bias : LONG,
StandardName : [32]WCHAR,
StandardDate : SYSTEMTIME,
StandardBias : LONG,
DaylightName : [32]WCHAR,
DaylightDate : SYSTEMTIME,
DaylightBias : LONG,
};
LPTIME_ZONE_INFORMATION :: ^struct {
Bias : LONG,
StandardName : [32]WCHAR,
StandardDate : SYSTEMTIME,
StandardBias : LONG,
DaylightName : [32]WCHAR,
DaylightDate : SYSTEMTIME,
DaylightBias : LONG,
};
DYNAMIC_TIME_ZONE_INFORMATION :: struct {
Bias : LONG,
StandardName : [32]WCHAR,
StandardDate : SYSTEMTIME,
StandardBias : LONG,
DaylightName : [32]WCHAR,
DaylightDate : SYSTEMTIME,
DaylightBias : LONG,
TimeZoneKeyName : [128]WCHAR,
DynamicDaylightTimeDisabled : BOOLEAN,
};
PDYNAMIC_TIME_ZONE_INFORMATION :: ^struct {
Bias : LONG,
StandardName : [32]WCHAR,
StandardDate : SYSTEMTIME,
StandardBias : LONG,
DaylightName : [32]WCHAR,
DaylightDate : SYSTEMTIME,
DaylightBias : LONG,
TimeZoneKeyName : [128]WCHAR,
DynamicDaylightTimeDisabled : BOOLEAN,
};
SYSTEM_POWER_STATUS :: struct {
ACLineStatus : BYTE,
BatteryFlag : BYTE,
BatteryLifePercent : BYTE,
SystemStatusFlag : BYTE,
BatteryLifeTime : u32,
BatteryFullLifeTime : u32,
};
LPSYSTEM_POWER_STATUS :: ^struct {
ACLineStatus : BYTE,
BatteryFlag : BYTE,
BatteryLifePercent : BYTE,
SystemStatusFlag : BYTE,
BatteryLifeTime : u32,
BatteryFullLifeTime : u32,
};
ACTCTXA :: struct {
cbSize : ULONG,
dwFlags : u32,
lpSource : LPCSTR,
wProcessorArchitecture : USHORT,
wLangId : LANGID,
lpAssemblyDirectory : LPCSTR,
lpResourceName : LPCSTR,
lpApplicationName : LPCSTR,
hModule : HMODULE,
};
PACTCTXA :: ^struct {
cbSize : ULONG,
dwFlags : u32,
lpSource : LPCSTR,
wProcessorArchitecture : USHORT,
wLangId : LANGID,
lpAssemblyDirectory : LPCSTR,
lpResourceName : LPCSTR,
lpApplicationName : LPCSTR,
hModule : HMODULE,
};
ACTCTXW :: struct {
cbSize : ULONG,
dwFlags : u32,
lpSource : LPCWSTR,
wProcessorArchitecture : USHORT,
wLangId : LANGID,
lpAssemblyDirectory : LPCWSTR,
lpResourceName : LPCWSTR,
lpApplicationName : LPCWSTR,
hModule : HMODULE,
};
PACTCTXW :: ^struct {
cbSize : ULONG,
dwFlags : u32,
lpSource : LPCWSTR,
wProcessorArchitecture : USHORT,
wLangId : LANGID,
lpAssemblyDirectory : LPCWSTR,
lpResourceName : LPCWSTR,
lpApplicationName : LPCWSTR,
hModule : HMODULE,
};
ACTCTX :: ACTCTXA;
PACTCTX :: PACTCTXA;
PCACTCTXA :: ^ACTCTXA;
PCACTCTXW :: ^ACTCTXW;
PCACTCTX :: PCACTCTXA;
ACTCTX_SECTION_KEYED_DATA_2600 :: struct {
cbSize : ULONG,
ulDataFormatVersion : ULONG,
lpData : PVOID,
ulLength : ULONG,
lpSectionGlobalData : PVOID,
ulSectionGlobalDataLength : ULONG,
lpSectionBase : PVOID,
ulSectionTotalLength : ULONG,
hActCtx : HANDLE,
ulAssemblyRosterIndex : ULONG,
};
PACTCTX_SECTION_KEYED_DATA_2600 :: ^struct {
cbSize : ULONG,
ulDataFormatVersion : ULONG,
lpData : PVOID,
ulLength : ULONG,
lpSectionGlobalData : PVOID,
ulSectionGlobalDataLength : ULONG,
lpSectionBase : PVOID,
ulSectionTotalLength : ULONG,
hActCtx : HANDLE,
ulAssemblyRosterIndex : ULONG,
};
PCACTCTX_SECTION_KEYED_DATA_2600 :: ^ACTCTX_SECTION_KEYED_DATA_2600;
ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA :: struct {
lpInformation : PVOID,
lpSectionBase : PVOID,
ulSectionLength : ULONG,
lpSectionGlobalDataBase : PVOID,
ulSectionGlobalDataLength : ULONG,
};
PACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA :: ^struct {
lpInformation : PVOID,
lpSectionBase : PVOID,
ulSectionLength : ULONG,
lpSectionGlobalDataBase : PVOID,
ulSectionGlobalDataLength : ULONG,
};
PCACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA :: ^ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA;
ACTCTX_SECTION_KEYED_DATA :: struct {
cbSize : ULONG,
ulDataFormatVersion : ULONG,
lpData : PVOID,
ulLength : ULONG,
lpSectionGlobalData : PVOID,
ulSectionGlobalDataLength : ULONG,
lpSectionBase : PVOID,
ulSectionTotalLength : ULONG,
hActCtx : HANDLE,
ulAssemblyRosterIndex : ULONG,
ulFlags : ULONG,
AssemblyMetadata : ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA,
};
PACTCTX_SECTION_KEYED_DATA :: ^struct {
cbSize : ULONG,
ulDataFormatVersion : ULONG,
lpData : PVOID,
ulLength : ULONG,
lpSectionGlobalData : PVOID,
ulSectionGlobalDataLength : ULONG,
lpSectionBase : PVOID,
ulSectionTotalLength : ULONG,
hActCtx : HANDLE,
ulAssemblyRosterIndex : ULONG,
ulFlags : ULONG,
AssemblyMetadata : ACTCTX_SECTION_KEYED_DATA_ASSEMBLY_METADATA,
};
PCACTCTX_SECTION_KEYED_DATA :: ^ACTCTX_SECTION_KEYED_DATA;
ACTIVATION_CONTEXT_BASIC_INFORMATION :: struct {
hActCtx : HANDLE,
dwFlags : u32,
};
PACTIVATION_CONTEXT_BASIC_INFORMATION :: ^struct {
hActCtx : HANDLE,
dwFlags : u32,
};
PCACTIVATION_CONTEXT_BASIC_INFORMATION :: ^ACTIVATION_CONTEXT_BASIC_INFORMATION;
PQUERYACTCTXW_FUNC :: (proc(dwFlags : u32, hActCtx : HANDLE, pvSubInstance : PVOID, ulInfoClass : ULONG, pvBuffer : PVOID, cbBuffer : SIZE_T, pcbWrittenOrRequired : ^SIZE_T) -> BOOL);
APPLICATION_RECOVERY_CALLBACK :: (proc(pvParameter : PVOID) -> u32);
FILE_BASIC_INFO :: struct {
CreationTime : LARGE_INTEGER,
LastAccessTime : LARGE_INTEGER,
LastWriteTime : LARGE_INTEGER,
ChangeTime : LARGE_INTEGER,
FileAttributes : u32,
};
PFILE_BASIC_INFO :: ^struct {
CreationTime : LARGE_INTEGER,
LastAccessTime : LARGE_INTEGER,
LastWriteTime : LARGE_INTEGER,
ChangeTime : LARGE_INTEGER,
FileAttributes : u32,
};
FILE_STANDARD_INFO :: struct {
AllocationSize : LARGE_INTEGER,
EndOfFile : LARGE_INTEGER,
NumberOfLinks : u32,
DeletePending : BOOLEAN,
Directory : BOOLEAN,
};
PFILE_STANDARD_INFO :: ^struct {
AllocationSize : LARGE_INTEGER,
EndOfFile : LARGE_INTEGER,
NumberOfLinks : u32,
DeletePending : BOOLEAN,
Directory : BOOLEAN,
};
FILE_NAME_INFO :: struct {
FileNameLength : u32,
FileName : [1]WCHAR,
};
PFILE_NAME_INFO :: ^struct {
FileNameLength : u32,
FileName : [1]WCHAR,
};
FILE_CASE_SENSITIVE_INFO :: struct {
Flags : ULONG,
};
PFILE_CASE_SENSITIVE_INFO :: ^struct {
Flags : ULONG,
};
FILE_RENAME_INFO :: struct {
u : struct #raw_union {
ReplaceIfExists : BOOLEAN,
Flags : u32,
},
RootDirectory : HANDLE,
FileNameLength : u32,
FileName : [1]WCHAR,
};
PFILE_RENAME_INFO :: ^struct {
u : struct #raw_union {
ReplaceIfExists : BOOLEAN,
Flags : u32,
},
RootDirectory : HANDLE,
FileNameLength : u32,
FileName : [1]WCHAR,
};
FILE_ALLOCATION_INFO :: struct {
AllocationSize : LARGE_INTEGER,
};
PFILE_ALLOCATION_INFO :: ^struct {
AllocationSize : LARGE_INTEGER,
};
FILE_END_OF_FILE_INFO :: struct {
EndOfFile : LARGE_INTEGER,
};
PFILE_END_OF_FILE_INFO :: ^struct {
EndOfFile : LARGE_INTEGER,
};
FILE_STREAM_INFO :: struct {
NextEntryOffset : u32,
StreamNameLength : u32,
StreamSize : LARGE_INTEGER,
StreamAllocationSize : LARGE_INTEGER,
StreamName : [1]WCHAR,
};
PFILE_STREAM_INFO :: ^struct {
NextEntryOffset : u32,
StreamNameLength : u32,
StreamSize : LARGE_INTEGER,
StreamAllocationSize : LARGE_INTEGER,
StreamName : [1]WCHAR,
};
FILE_COMPRESSION_INFO :: struct {
CompressedFileSize : LARGE_INTEGER,
CompressionFormat : u16,
CompressionUnitShift : UCHAR,
ChunkShift : UCHAR,
ClusterShift : UCHAR,
Reserved : [3]UCHAR,
};
PFILE_COMPRESSION_INFO :: ^struct {
CompressedFileSize : LARGE_INTEGER,
CompressionFormat : u16,
CompressionUnitShift : UCHAR,
ChunkShift : UCHAR,
ClusterShift : UCHAR,
Reserved : [3]UCHAR,
};
FILE_ATTRIBUTE_TAG_INFO :: struct {
FileAttributes : u32,
ReparseTag : u32,
};
PFILE_ATTRIBUTE_TAG_INFO :: ^struct {
FileAttributes : u32,
ReparseTag : u32,
};
FILE_DISPOSITION_INFO :: struct {
DeleteFileA : BOOLEAN,
};
PFILE_DISPOSITION_INFO :: ^struct {
DeleteFileA : BOOLEAN,
};
FILE_DISPOSITION_INFO_EX :: struct {
Flags : u32,
};
PFILE_DISPOSITION_INFO_EX :: ^struct {
Flags : u32,
};
FILE_ID_BOTH_DIR_INFO :: 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,
ShortNameLength : CCHAR,
ShortName : [12]WCHAR,
FileId : LARGE_INTEGER,
FileName : [1]WCHAR,
};
PFILE_ID_BOTH_DIR_INFO :: ^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,
ShortNameLength : CCHAR,
ShortName : [12]WCHAR,
FileId : LARGE_INTEGER,
FileName : [1]WCHAR,
};
FILE_FULL_DIR_INFO :: struct {
NextEntryOffset : ULONG,
FileIndex : ULONG,
CreationTime : LARGE_INTEGER,
LastAccessTime : LARGE_INTEGER,
LastWriteTime : LARGE_INTEGER,
ChangeTime : LARGE_INTEGER,
EndOfFile : LARGE_INTEGER,
AllocationSize : LARGE_INTEGER,
FileAttributes : ULONG,
FileNameLength : ULONG,
EaSize : ULONG,
FileName : [1]WCHAR,
};
PFILE_FULL_DIR_INFO :: ^struct {
NextEntryOffset : ULONG,
FileIndex : ULONG,
CreationTime : LARGE_INTEGER,
LastAccessTime : LARGE_INTEGER,
LastWriteTime : LARGE_INTEGER,
ChangeTime : LARGE_INTEGER,
EndOfFile : LARGE_INTEGER,
AllocationSize : LARGE_INTEGER,
FileAttributes : ULONG,
FileNameLength : ULONG,
EaSize : ULONG,
FileName : [1]WCHAR,
};
PRIORITY_HINT :: enum {
IoPriorityHintVeryLow = 0,
IoPriorityHintLow,
IoPriorityHintNormal,
MaximumIoPriorityHintType,
};
FILE_IO_PRIORITY_HINT_INFO :: struct {
PriorityHint : PRIORITY_HINT,
};
PFILE_IO_PRIORITY_HINT_INFO :: ^struct {
PriorityHint : PRIORITY_HINT,
};
FILE_ALIGNMENT_INFO :: struct {
AlignmentRequirement : ULONG,
};
PFILE_ALIGNMENT_INFO :: ^struct {
AlignmentRequirement : ULONG,
};
FILE_STORAGE_INFO :: struct {
LogicalBytesPerSector : ULONG,
PhysicalBytesPerSectorForAtomicity : ULONG,
PhysicalBytesPerSectorForPerformance : ULONG,
FileSystemEffectivePhysicalBytesPerSectorForAtomicity : ULONG,
Flags : ULONG,
ByteOffsetForSectorAlignment : ULONG,
ByteOffsetForPartitionAlignment : ULONG,
};
PFILE_STORAGE_INFO :: ^struct {
LogicalBytesPerSector : ULONG,
PhysicalBytesPerSectorForAtomicity : ULONG,
PhysicalBytesPerSectorForPerformance : ULONG,
FileSystemEffectivePhysicalBytesPerSectorForAtomicity : ULONG,
Flags : ULONG,
ByteOffsetForSectorAlignment : ULONG,
ByteOffsetForPartitionAlignment : ULONG,
};
FILE_ID_INFO :: struct {
VolumeSerialNumber : ULONGLONG,
FileId : FILE_ID_128,
};
PFILE_ID_INFO :: ^struct {
VolumeSerialNumber : ULONGLONG,
FileId : FILE_ID_128,
};
FILE_ID_EXTD_DIR_INFO :: struct {
NextEntryOffset : ULONG,
FileIndex : ULONG,
CreationTime : LARGE_INTEGER,
LastAccessTime : LARGE_INTEGER,
LastWriteTime : LARGE_INTEGER,
ChangeTime : LARGE_INTEGER,
EndOfFile : LARGE_INTEGER,
AllocationSize : LARGE_INTEGER,
FileAttributes : ULONG,
FileNameLength : ULONG,
EaSize : ULONG,
ReparsePointTag : ULONG,
FileId : FILE_ID_128,
FileName : [1]WCHAR,
};
PFILE_ID_EXTD_DIR_INFO :: ^struct {
NextEntryOffset : ULONG,
FileIndex : ULONG,
CreationTime : LARGE_INTEGER,
LastAccessTime : LARGE_INTEGER,
LastWriteTime : LARGE_INTEGER,
ChangeTime : LARGE_INTEGER,
EndOfFile : LARGE_INTEGER,
AllocationSize : LARGE_INTEGER,
FileAttributes : ULONG,
FileNameLength : ULONG,
EaSize : ULONG,
ReparsePointTag : ULONG,
FileId : FILE_ID_128,
FileName : [1]WCHAR,
};
FILE_REMOTE_PROTOCOL_INFO :: struct {
StructureVersion : USHORT,
StructureSize : USHORT,
Protocol : ULONG,
ProtocolMajorVersion : USHORT,
ProtocolMinorVersion : USHORT,
ProtocolRevision : USHORT,
Reserved : USHORT,
Flags : ULONG,
GenericReserved : struct {
Reserved : [8]ULONG,
},
ProtocolSpecific : struct #raw_union {
Smb2 : struct {
Server : struct {
Capabilities : ULONG,
},
Share : struct {
Capabilities : ULONG,
CachingFlags : ULONG,
},
},
Reserved : [16]ULONG,
},
};
PFILE_REMOTE_PROTOCOL_INFO :: ^struct {
StructureVersion : USHORT,
StructureSize : USHORT,
Protocol : ULONG,
ProtocolMajorVersion : USHORT,
ProtocolMinorVersion : USHORT,
ProtocolRevision : USHORT,
Reserved : USHORT,
Flags : ULONG,
GenericReserved : struct {
Reserved : [8]ULONG,
},
ProtocolSpecific : struct #raw_union {
Smb2 : struct {
Server : struct {
Capabilities : ULONG,
},
Share : struct {
Capabilities : ULONG,
CachingFlags : ULONG,
},
},
Reserved : [16]ULONG,
},
};
FILE_ID_TYPE :: enum {
FileIdType,
ObjectIdType,
ExtendedFileIdType,
MaximumFileIdType,
};
PFILE_ID_TYPE :: ^enum {
FileIdType,
ObjectIdType,
ExtendedFileIdType,
MaximumFileIdType,
};
FILE_ID_DESCRIPTOR :: struct {
dwSize : u32,
Type : FILE_ID_TYPE,
u : struct #raw_union {
FileId : LARGE_INTEGER,
ObjectId : GUID,
ExtendedFileId : FILE_ID_128,
},
};
LPFILE_ID_DESCRIPTOR :: ^struct {
dwSize : u32,
Type : FILE_ID_TYPE,
u : struct #raw_union {
FileId : LARGE_INTEGER,
ObjectId : GUID,
ExtendedFileId : FILE_ID_128,
},
};
DRAWPATRECT :: struct {
ptPosition : POINT,
ptSize : POINT,
wStyle : u16,
wPattern : u16,
};
PDRAWPATRECT :: ^struct {
ptPosition : POINT,
ptSize : POINT,
wStyle : u16,
wPattern : u16,
};
PSINJECTDATA :: struct {
DataBytes : u32,
InjectionPoint : u16,
PageNumber : u16,
};
PPSINJECTDATA :: ^struct {
DataBytes : u32,
InjectionPoint : u16,
PageNumber : u16,
};
PSFEATURE_OUTPUT :: struct {
bPageIndependent : BOOL,
bSetPageDevice : BOOL,
};
PPSFEATURE_OUTPUT :: ^struct {
bPageIndependent : BOOL,
bSetPageDevice : BOOL,
};
PSFEATURE_CUSTPAPER :: struct {
lOrientation : LONG,
lWidth : LONG,
lHeight : LONG,
lWidthOffset : LONG,
lHeightOffset : LONG,
};
PPSFEATURE_CUSTPAPER :: ^struct {
lOrientation : LONG,
lWidth : LONG,
lHeight : LONG,
lWidthOffset : LONG,
lHeightOffset : LONG,
};
XFORM :: struct {
eM11 : FLOAT,
eM12 : FLOAT,
eM21 : FLOAT,
eM22 : FLOAT,
eDx : FLOAT,
eDy : FLOAT,
};
PXFORM :: ^struct {
eM11 : FLOAT,
eM12 : FLOAT,
eM21 : FLOAT,
eM22 : FLOAT,
eDx : FLOAT,
eDy : FLOAT,
};
LPXFORM :: ^struct {
eM11 : FLOAT,
eM12 : FLOAT,
eM21 : FLOAT,
eM22 : FLOAT,
eDx : FLOAT,
eDy : FLOAT,
};
BITMAP :: struct {
bmType : LONG,
bmWidth : LONG,
bmHeight : LONG,
bmWidthBytes : LONG,
bmPlanes : u16,
bmBitsPixel : u16,
bmBits : LPVOID,
};
PBITMAP :: ^struct {
bmType : LONG,
bmWidth : LONG,
bmHeight : LONG,
bmWidthBytes : LONG,
bmPlanes : u16,
bmBitsPixel : u16,
bmBits : LPVOID,
};
NPBITMAP :: ^struct {
bmType : LONG,
bmWidth : LONG,
bmHeight : LONG,
bmWidthBytes : LONG,
bmPlanes : u16,
bmBitsPixel : u16,
bmBits : LPVOID,
};
LPBITMAP :: ^struct {
bmType : LONG,
bmWidth : LONG,
bmHeight : LONG,
bmWidthBytes : LONG,
bmPlanes : u16,
bmBitsPixel : u16,
bmBits : LPVOID,
};
RGBTRIPLE :: struct {
rgbtBlue : BYTE,
rgbtGreen : BYTE,
rgbtRed : BYTE,
};
PRGBTRIPLE :: ^struct {
rgbtBlue : BYTE,
rgbtGreen : BYTE,
rgbtRed : BYTE,
};
NPRGBTRIPLE :: ^struct {
rgbtBlue : BYTE,
rgbtGreen : BYTE,
rgbtRed : BYTE,
};
LPRGBTRIPLE :: ^struct {
rgbtBlue : BYTE,
rgbtGreen : BYTE,
rgbtRed : BYTE,
};
RGBQUAD :: struct {
rgbBlue : BYTE,
rgbGreen : BYTE,
rgbRed : BYTE,
rgbReserved : BYTE,
};
LPRGBQUAD :: ^RGBQUAD;
LCSCSTYPE :: LONG;
LCSGAMUTMATCH :: LONG;
FXPT16DOT16 :: i64;
LPFXPT16DOT16 :: ^i64;
FXPT2DOT30 :: i64;
LPFXPT2DOT30 :: ^i64;
CIEXYZ :: struct {
ciexyzX : FXPT2DOT30,
ciexyzY : FXPT2DOT30,
ciexyzZ : FXPT2DOT30,
};
LPCIEXYZ :: ^CIEXYZ;
CIEXYZTRIPLE :: struct {
ciexyzRed : CIEXYZ,
ciexyzGreen : CIEXYZ,
ciexyzBlue : CIEXYZ,
};
LPCIEXYZTRIPLE :: ^CIEXYZTRIPLE;
LOGCOLORSPACEA :: struct {
lcsSignature : u32,
lcsVersion : u32,
lcsSize : u32,
lcsCSType : LCSCSTYPE,
lcsIntent : LCSGAMUTMATCH,
lcsEndpoints : CIEXYZTRIPLE,
lcsGammaRed : u32,
lcsGammaGreen : u32,
lcsGammaBlue : u32,
lcsFilename : [260]CHAR,
};
LPLOGCOLORSPACEA :: ^struct {
lcsSignature : u32,
lcsVersion : u32,
lcsSize : u32,
lcsCSType : LCSCSTYPE,
lcsIntent : LCSGAMUTMATCH,
lcsEndpoints : CIEXYZTRIPLE,
lcsGammaRed : u32,
lcsGammaGreen : u32,
lcsGammaBlue : u32,
lcsFilename : [260]CHAR,
};
LOGCOLORSPACEW :: struct {
lcsSignature : u32,
lcsVersion : u32,
lcsSize : u32,
lcsCSType : LCSCSTYPE,
lcsIntent : LCSGAMUTMATCH,
lcsEndpoints : CIEXYZTRIPLE,
lcsGammaRed : u32,
lcsGammaGreen : u32,
lcsGammaBlue : u32,
lcsFilename : [260]WCHAR,
};
LPLOGCOLORSPACEW :: ^struct {
lcsSignature : u32,
lcsVersion : u32,
lcsSize : u32,
lcsCSType : LCSCSTYPE,
lcsIntent : LCSGAMUTMATCH,
lcsEndpoints : CIEXYZTRIPLE,
lcsGammaRed : u32,
lcsGammaGreen : u32,
lcsGammaBlue : u32,
lcsFilename : [260]WCHAR,
};
LOGCOLORSPACE :: LOGCOLORSPACEA;
LPLOGCOLORSPACE :: LPLOGCOLORSPACEA;
BITMAPCOREHEADER :: struct {
bcSize : u32,
bcWidth : u16,
bcHeight : u16,
bcPlanes : u16,
bcBitCount : u16,
};
LPBITMAPCOREHEADER :: ^struct {
bcSize : u32,
bcWidth : u16,
bcHeight : u16,
bcPlanes : u16,
bcBitCount : u16,
};
PBITMAPCOREHEADER :: ^struct {
bcSize : u32,
bcWidth : u16,
bcHeight : u16,
bcPlanes : u16,
bcBitCount : u16,
};
BITMAPINFOHEADER :: struct {
biSize : u32,
biWidth : LONG,
biHeight : LONG,
biPlanes : u16,
biBitCount : u16,
biCompression : u32,
biSizeImage : u32,
biXPelsPerMeter : LONG,
biYPelsPerMeter : LONG,
biClrUsed : u32,
biClrImportant : u32,
};
LPBITMAPINFOHEADER :: ^struct {
biSize : u32,
biWidth : LONG,
biHeight : LONG,
biPlanes : u16,
biBitCount : u16,
biCompression : u32,
biSizeImage : u32,
biXPelsPerMeter : LONG,
biYPelsPerMeter : LONG,
biClrUsed : u32,
biClrImportant : u32,
};
PBITMAPINFOHEADER :: ^struct {
biSize : u32,
biWidth : LONG,
biHeight : LONG,
biPlanes : u16,
biBitCount : u16,
biCompression : u32,
biSizeImage : u32,
biXPelsPerMeter : LONG,
biYPelsPerMeter : LONG,
biClrUsed : u32,
biClrImportant : u32,
};
BITMAPV4HEADER :: struct {
bV4Size : u32,
bV4Width : LONG,
bV4Height : LONG,
bV4Planes : u16,
bV4BitCount : u16,
bV4V4Compression : u32,
bV4SizeImage : u32,
bV4XPelsPerMeter : LONG,
bV4YPelsPerMeter : LONG,
bV4ClrUsed : u32,
bV4ClrImportant : u32,
bV4RedMask : u32,
bV4GreenMask : u32,
bV4BlueMask : u32,
bV4AlphaMask : u32,
bV4CSType : u32,
bV4Endpoints : CIEXYZTRIPLE,
bV4GammaRed : u32,
bV4GammaGreen : u32,
bV4GammaBlue : u32,
};
LPBITMAPV4HEADER :: ^struct {
bV4Size : u32,
bV4Width : LONG,
bV4Height : LONG,
bV4Planes : u16,
bV4BitCount : u16,
bV4V4Compression : u32,
bV4SizeImage : u32,
bV4XPelsPerMeter : LONG,
bV4YPelsPerMeter : LONG,
bV4ClrUsed : u32,
bV4ClrImportant : u32,
bV4RedMask : u32,
bV4GreenMask : u32,
bV4BlueMask : u32,
bV4AlphaMask : u32,
bV4CSType : u32,
bV4Endpoints : CIEXYZTRIPLE,
bV4GammaRed : u32,
bV4GammaGreen : u32,
bV4GammaBlue : u32,
};
PBITMAPV4HEADER :: ^struct {
bV4Size : u32,
bV4Width : LONG,
bV4Height : LONG,
bV4Planes : u16,
bV4BitCount : u16,
bV4V4Compression : u32,
bV4SizeImage : u32,
bV4XPelsPerMeter : LONG,
bV4YPelsPerMeter : LONG,
bV4ClrUsed : u32,
bV4ClrImportant : u32,
bV4RedMask : u32,
bV4GreenMask : u32,
bV4BlueMask : u32,
bV4AlphaMask : u32,
bV4CSType : u32,
bV4Endpoints : CIEXYZTRIPLE,
bV4GammaRed : u32,
bV4GammaGreen : u32,
bV4GammaBlue : u32,
};
BITMAPV5HEADER :: struct {
bV5Size : u32,
bV5Width : LONG,
bV5Height : LONG,
bV5Planes : u16,
bV5BitCount : u16,
bV5Compression : u32,
bV5SizeImage : u32,
bV5XPelsPerMeter : LONG,
bV5YPelsPerMeter : LONG,
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,
};
LPBITMAPV5HEADER :: ^struct {
bV5Size : u32,
bV5Width : LONG,
bV5Height : LONG,
bV5Planes : u16,
bV5BitCount : u16,
bV5Compression : u32,
bV5SizeImage : u32,
bV5XPelsPerMeter : LONG,
bV5YPelsPerMeter : LONG,
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,
};
PBITMAPV5HEADER :: ^struct {
bV5Size : u32,
bV5Width : LONG,
bV5Height : LONG,
bV5Planes : u16,
bV5BitCount : u16,
bV5Compression : u32,
bV5SizeImage : u32,
bV5XPelsPerMeter : LONG,
bV5YPelsPerMeter : LONG,
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,
};
BITMAPINFO :: struct {
bmiHeader : BITMAPINFOHEADER,
bmiColors : [1]RGBQUAD,
};
LPBITMAPINFO :: ^struct {
bmiHeader : BITMAPINFOHEADER,
bmiColors : [1]RGBQUAD,
};
PBITMAPINFO :: ^struct {
bmiHeader : BITMAPINFOHEADER,
bmiColors : [1]RGBQUAD,
};
BITMAPCOREINFO :: struct {
bmciHeader : BITMAPCOREHEADER,
bmciColors : [1]RGBTRIPLE,
};
LPBITMAPCOREINFO :: ^struct {
bmciHeader : BITMAPCOREHEADER,
bmciColors : [1]RGBTRIPLE,
};
PBITMAPCOREINFO :: ^struct {
bmciHeader : BITMAPCOREHEADER,
bmciColors : [1]RGBTRIPLE,
};
BITMAPFILEHEADER :: struct {
bfType : u16,
bfSize : u32,
bfReserved1 : u16,
bfReserved2 : u16,
bfOffBits : u32,
};
LPBITMAPFILEHEADER :: ^struct {
bfType : u16,
bfSize : u32,
bfReserved1 : u16,
bfReserved2 : u16,
bfOffBits : u32,
};
PBITMAPFILEHEADER :: ^struct {
bfType : u16,
bfSize : u32,
bfReserved1 : u16,
bfReserved2 : u16,
bfOffBits : u32,
};
FONTSIGNATURE :: struct {
fsUsb : [4]u32,
fsCsb : [2]u32,
};
PFONTSIGNATURE :: ^struct {
fsUsb : [4]u32,
fsCsb : [2]u32,
};
LPFONTSIGNATURE :: ^struct {
fsUsb : [4]u32,
fsCsb : [2]u32,
};
CHARSETINFO :: struct {
ciCharset : UINT,
ciACP : UINT,
fs : FONTSIGNATURE,
};
PCHARSETINFO :: ^struct {
ciCharset : UINT,
ciACP : UINT,
fs : FONTSIGNATURE,
};
NPCHARSETINFO :: ^struct {
ciCharset : UINT,
ciACP : UINT,
fs : FONTSIGNATURE,
};
LPCHARSETINFO :: ^struct {
ciCharset : UINT,
ciACP : UINT,
fs : FONTSIGNATURE,
};
LOCALESIGNATURE :: struct {
lsUsb : [4]u32,
lsCsbDefault : [2]u32,
lsCsbSupported : [2]u32,
};
PLOCALESIGNATURE :: ^struct {
lsUsb : [4]u32,
lsCsbDefault : [2]u32,
lsCsbSupported : [2]u32,
};
LPLOCALESIGNATURE :: ^struct {
lsUsb : [4]u32,
lsCsbDefault : [2]u32,
lsCsbSupported : [2]u32,
};
HANDLETABLE :: struct {
objectHandle : [1]HGDIOBJ,
};
PHANDLETABLE :: ^struct {
objectHandle : [1]HGDIOBJ,
};
LPHANDLETABLE :: ^struct {
objectHandle : [1]HGDIOBJ,
};
METARECORD :: struct {
rdSize : u32,
rdFunction : u16,
rdParm : [1]u16,
};
PMETARECORD :: ^METARECORD;
LPMETARECORD :: ^METARECORD;
METAFILEPICT :: struct {
mm : LONG,
xExt : LONG,
yExt : LONG,
hMF : HMETAFILE,
};
LPMETAFILEPICT :: ^struct {
mm : LONG,
xExt : LONG,
yExt : LONG,
hMF : HMETAFILE,
};
METAHEADER :: struct {
mtType : u16,
mtHeaderSize : u16,
mtVersion : u16,
mtSize : u32,
mtNoObjects : u16,
mtMaxRecord : u32,
mtNoParameters : u16,
};
PMETAHEADER :: ^METAHEADER;
LPMETAHEADER :: ^METAHEADER;
ENHMETARECORD :: struct {
iType : u32,
nSize : u32,
dParm : [1]u32,
};
PENHMETARECORD :: ^struct {
iType : u32,
nSize : u32,
dParm : [1]u32,
};
LPENHMETARECORD :: ^struct {
iType : u32,
nSize : u32,
dParm : [1]u32,
};
ENHMETAHEADER :: struct {
iType : u32,
nSize : u32,
rclBounds : RECTL,
rclFrame : RECTL,
dSignature : u32,
nVersion : u32,
nBytes : u32,
nRecords : u32,
nHandles : u16,
sReserved : u16,
nDescription : u32,
offDescription : u32,
nPalEntries : u32,
szlDevice : SIZEL,
szlMillimeters : SIZEL,
cbPixelFormat : u32,
offPixelFormat : u32,
bOpenGL : u32,
szlMicrometers : SIZEL,
};
PENHMETAHEADER :: ^struct {
iType : u32,
nSize : u32,
rclBounds : RECTL,
rclFrame : RECTL,
dSignature : u32,
nVersion : u32,
nBytes : u32,
nRecords : u32,
nHandles : u16,
sReserved : u16,
nDescription : u32,
offDescription : u32,
nPalEntries : u32,
szlDevice : SIZEL,
szlMillimeters : SIZEL,
cbPixelFormat : u32,
offPixelFormat : u32,
bOpenGL : u32,
szlMicrometers : SIZEL,
};
LPENHMETAHEADER :: ^struct {
iType : u32,
nSize : u32,
rclBounds : RECTL,
rclFrame : RECTL,
dSignature : u32,
nVersion : u32,
nBytes : u32,
nRecords : u32,
nHandles : u16,
sReserved : u16,
nDescription : u32,
offDescription : u32,
nPalEntries : u32,
szlDevice : SIZEL,
szlMillimeters : SIZEL,
cbPixelFormat : u32,
offPixelFormat : u32,
bOpenGL : u32,
szlMicrometers : SIZEL,
};
BCHAR :: BYTE;
TEXTMETRICA :: struct {
tmHeight : LONG,
tmAscent : LONG,
tmDescent : LONG,
tmInternalLeading : LONG,
tmExternalLeading : LONG,
tmAveCharWidth : LONG,
tmMaxCharWidth : LONG,
tmWeight : LONG,
tmOverhang : LONG,
tmDigitizedAspectX : LONG,
tmDigitizedAspectY : LONG,
tmFirstChar : BYTE,
tmLastChar : BYTE,
tmDefaultChar : BYTE,
tmBreakChar : BYTE,
tmItalic : BYTE,
tmUnderlined : BYTE,
tmStruckOut : BYTE,
tmPitchAndFamily : BYTE,
tmCharSet : BYTE,
};
PTEXTMETRICA :: ^struct {
tmHeight : LONG,
tmAscent : LONG,
tmDescent : LONG,
tmInternalLeading : LONG,
tmExternalLeading : LONG,
tmAveCharWidth : LONG,
tmMaxCharWidth : LONG,
tmWeight : LONG,
tmOverhang : LONG,
tmDigitizedAspectX : LONG,
tmDigitizedAspectY : LONG,
tmFirstChar : BYTE,
tmLastChar : BYTE,
tmDefaultChar : BYTE,
tmBreakChar : BYTE,
tmItalic : BYTE,
tmUnderlined : BYTE,
tmStruckOut : BYTE,
tmPitchAndFamily : BYTE,
tmCharSet : BYTE,
};
NPTEXTMETRICA :: ^struct {
tmHeight : LONG,
tmAscent : LONG,
tmDescent : LONG,
tmInternalLeading : LONG,
tmExternalLeading : LONG,
tmAveCharWidth : LONG,
tmMaxCharWidth : LONG,
tmWeight : LONG,
tmOverhang : LONG,
tmDigitizedAspectX : LONG,
tmDigitizedAspectY : LONG,
tmFirstChar : BYTE,
tmLastChar : BYTE,
tmDefaultChar : BYTE,
tmBreakChar : BYTE,
tmItalic : BYTE,
tmUnderlined : BYTE,
tmStruckOut : BYTE,
tmPitchAndFamily : BYTE,
tmCharSet : BYTE,
};
LPTEXTMETRICA :: ^struct {
tmHeight : LONG,
tmAscent : LONG,
tmDescent : LONG,
tmInternalLeading : LONG,
tmExternalLeading : LONG,
tmAveCharWidth : LONG,
tmMaxCharWidth : LONG,
tmWeight : LONG,
tmOverhang : LONG,
tmDigitizedAspectX : LONG,
tmDigitizedAspectY : LONG,
tmFirstChar : BYTE,
tmLastChar : BYTE,
tmDefaultChar : BYTE,
tmBreakChar : BYTE,
tmItalic : BYTE,
tmUnderlined : BYTE,
tmStruckOut : BYTE,
tmPitchAndFamily : BYTE,
tmCharSet : BYTE,
};
TEXTMETRICW :: struct {
tmHeight : LONG,
tmAscent : LONG,
tmDescent : LONG,
tmInternalLeading : LONG,
tmExternalLeading : LONG,
tmAveCharWidth : LONG,
tmMaxCharWidth : LONG,
tmWeight : LONG,
tmOverhang : LONG,
tmDigitizedAspectX : LONG,
tmDigitizedAspectY : LONG,
tmFirstChar : WCHAR,
tmLastChar : WCHAR,
tmDefaultChar : WCHAR,
tmBreakChar : WCHAR,
tmItalic : BYTE,
tmUnderlined : BYTE,
tmStruckOut : BYTE,
tmPitchAndFamily : BYTE,
tmCharSet : BYTE,
};
PTEXTMETRICW :: ^struct {
tmHeight : LONG,
tmAscent : LONG,
tmDescent : LONG,
tmInternalLeading : LONG,
tmExternalLeading : LONG,
tmAveCharWidth : LONG,
tmMaxCharWidth : LONG,
tmWeight : LONG,
tmOverhang : LONG,
tmDigitizedAspectX : LONG,
tmDigitizedAspectY : LONG,
tmFirstChar : WCHAR,
tmLastChar : WCHAR,
tmDefaultChar : WCHAR,
tmBreakChar : WCHAR,
tmItalic : BYTE,
tmUnderlined : BYTE,
tmStruckOut : BYTE,
tmPitchAndFamily : BYTE,
tmCharSet : BYTE,
};
NPTEXTMETRICW :: ^struct {
tmHeight : LONG,
tmAscent : LONG,
tmDescent : LONG,
tmInternalLeading : LONG,
tmExternalLeading : LONG,
tmAveCharWidth : LONG,
tmMaxCharWidth : LONG,
tmWeight : LONG,
tmOverhang : LONG,
tmDigitizedAspectX : LONG,
tmDigitizedAspectY : LONG,
tmFirstChar : WCHAR,
tmLastChar : WCHAR,
tmDefaultChar : WCHAR,
tmBreakChar : WCHAR,
tmItalic : BYTE,
tmUnderlined : BYTE,
tmStruckOut : BYTE,
tmPitchAndFamily : BYTE,
tmCharSet : BYTE,
};
LPTEXTMETRICW :: ^struct {
tmHeight : LONG,
tmAscent : LONG,
tmDescent : LONG,
tmInternalLeading : LONG,
tmExternalLeading : LONG,
tmAveCharWidth : LONG,
tmMaxCharWidth : LONG,
tmWeight : LONG,
tmOverhang : LONG,
tmDigitizedAspectX : LONG,
tmDigitizedAspectY : LONG,
tmFirstChar : WCHAR,
tmLastChar : WCHAR,
tmDefaultChar : WCHAR,
tmBreakChar : WCHAR,
tmItalic : BYTE,
tmUnderlined : BYTE,
tmStruckOut : BYTE,
tmPitchAndFamily : BYTE,
tmCharSet : BYTE,
};
TEXTMETRIC :: TEXTMETRICA;
PTEXTMETRIC :: PTEXTMETRICA;
NPTEXTMETRIC :: NPTEXTMETRICA;
LPTEXTMETRIC :: LPTEXTMETRICA;
NEWTEXTMETRICA :: struct {
tmHeight : LONG,
tmAscent : LONG,
tmDescent : LONG,
tmInternalLeading : LONG,
tmExternalLeading : LONG,
tmAveCharWidth : LONG,
tmMaxCharWidth : LONG,
tmWeight : LONG,
tmOverhang : LONG,
tmDigitizedAspectX : LONG,
tmDigitizedAspectY : LONG,
tmFirstChar : BYTE,
tmLastChar : BYTE,
tmDefaultChar : BYTE,
tmBreakChar : BYTE,
tmItalic : BYTE,
tmUnderlined : BYTE,
tmStruckOut : BYTE,
tmPitchAndFamily : BYTE,
tmCharSet : BYTE,
ntmFlags : u32,
ntmSizeEM : UINT,
ntmCellHeight : UINT,
ntmAvgWidth : UINT,
};
PNEWTEXTMETRICA :: ^struct {
tmHeight : LONG,
tmAscent : LONG,
tmDescent : LONG,
tmInternalLeading : LONG,
tmExternalLeading : LONG,
tmAveCharWidth : LONG,
tmMaxCharWidth : LONG,
tmWeight : LONG,
tmOverhang : LONG,
tmDigitizedAspectX : LONG,
tmDigitizedAspectY : LONG,
tmFirstChar : BYTE,
tmLastChar : BYTE,
tmDefaultChar : BYTE,
tmBreakChar : BYTE,
tmItalic : BYTE,
tmUnderlined : BYTE,
tmStruckOut : BYTE,
tmPitchAndFamily : BYTE,
tmCharSet : BYTE,
ntmFlags : u32,
ntmSizeEM : UINT,
ntmCellHeight : UINT,
ntmAvgWidth : UINT,
};
NPNEWTEXTMETRICA :: ^struct {
tmHeight : LONG,
tmAscent : LONG,
tmDescent : LONG,
tmInternalLeading : LONG,
tmExternalLeading : LONG,
tmAveCharWidth : LONG,
tmMaxCharWidth : LONG,
tmWeight : LONG,
tmOverhang : LONG,
tmDigitizedAspectX : LONG,
tmDigitizedAspectY : LONG,
tmFirstChar : BYTE,
tmLastChar : BYTE,
tmDefaultChar : BYTE,
tmBreakChar : BYTE,
tmItalic : BYTE,
tmUnderlined : BYTE,
tmStruckOut : BYTE,
tmPitchAndFamily : BYTE,
tmCharSet : BYTE,
ntmFlags : u32,
ntmSizeEM : UINT,
ntmCellHeight : UINT,
ntmAvgWidth : UINT,
};
LPNEWTEXTMETRICA :: ^struct {
tmHeight : LONG,
tmAscent : LONG,
tmDescent : LONG,
tmInternalLeading : LONG,
tmExternalLeading : LONG,
tmAveCharWidth : LONG,
tmMaxCharWidth : LONG,
tmWeight : LONG,
tmOverhang : LONG,
tmDigitizedAspectX : LONG,
tmDigitizedAspectY : LONG,
tmFirstChar : BYTE,
tmLastChar : BYTE,
tmDefaultChar : BYTE,
tmBreakChar : BYTE,
tmItalic : BYTE,
tmUnderlined : BYTE,
tmStruckOut : BYTE,
tmPitchAndFamily : BYTE,
tmCharSet : BYTE,
ntmFlags : u32,
ntmSizeEM : UINT,
ntmCellHeight : UINT,
ntmAvgWidth : UINT,
};
NEWTEXTMETRICW :: struct {
tmHeight : LONG,
tmAscent : LONG,
tmDescent : LONG,
tmInternalLeading : LONG,
tmExternalLeading : LONG,
tmAveCharWidth : LONG,
tmMaxCharWidth : LONG,
tmWeight : LONG,
tmOverhang : LONG,
tmDigitizedAspectX : LONG,
tmDigitizedAspectY : LONG,
tmFirstChar : WCHAR,
tmLastChar : WCHAR,
tmDefaultChar : WCHAR,
tmBreakChar : WCHAR,
tmItalic : BYTE,
tmUnderlined : BYTE,
tmStruckOut : BYTE,
tmPitchAndFamily : BYTE,
tmCharSet : BYTE,
ntmFlags : u32,
ntmSizeEM : UINT,
ntmCellHeight : UINT,
ntmAvgWidth : UINT,
};
PNEWTEXTMETRICW :: ^struct {
tmHeight : LONG,
tmAscent : LONG,
tmDescent : LONG,
tmInternalLeading : LONG,
tmExternalLeading : LONG,
tmAveCharWidth : LONG,
tmMaxCharWidth : LONG,
tmWeight : LONG,
tmOverhang : LONG,
tmDigitizedAspectX : LONG,
tmDigitizedAspectY : LONG,
tmFirstChar : WCHAR,
tmLastChar : WCHAR,
tmDefaultChar : WCHAR,
tmBreakChar : WCHAR,
tmItalic : BYTE,
tmUnderlined : BYTE,
tmStruckOut : BYTE,
tmPitchAndFamily : BYTE,
tmCharSet : BYTE,
ntmFlags : u32,
ntmSizeEM : UINT,
ntmCellHeight : UINT,
ntmAvgWidth : UINT,
};
NPNEWTEXTMETRICW :: ^struct {
tmHeight : LONG,
tmAscent : LONG,
tmDescent : LONG,
tmInternalLeading : LONG,
tmExternalLeading : LONG,
tmAveCharWidth : LONG,
tmMaxCharWidth : LONG,
tmWeight : LONG,
tmOverhang : LONG,
tmDigitizedAspectX : LONG,
tmDigitizedAspectY : LONG,
tmFirstChar : WCHAR,
tmLastChar : WCHAR,
tmDefaultChar : WCHAR,
tmBreakChar : WCHAR,
tmItalic : BYTE,
tmUnderlined : BYTE,
tmStruckOut : BYTE,
tmPitchAndFamily : BYTE,
tmCharSet : BYTE,
ntmFlags : u32,
ntmSizeEM : UINT,
ntmCellHeight : UINT,
ntmAvgWidth : UINT,
};
LPNEWTEXTMETRICW :: ^struct {
tmHeight : LONG,
tmAscent : LONG,
tmDescent : LONG,
tmInternalLeading : LONG,
tmExternalLeading : LONG,
tmAveCharWidth : LONG,
tmMaxCharWidth : LONG,
tmWeight : LONG,
tmOverhang : LONG,
tmDigitizedAspectX : LONG,
tmDigitizedAspectY : LONG,
tmFirstChar : WCHAR,
tmLastChar : WCHAR,
tmDefaultChar : WCHAR,
tmBreakChar : WCHAR,
tmItalic : BYTE,
tmUnderlined : BYTE,
tmStruckOut : BYTE,
tmPitchAndFamily : BYTE,
tmCharSet : BYTE,
ntmFlags : u32,
ntmSizeEM : UINT,
ntmCellHeight : UINT,
ntmAvgWidth : UINT,
};
NEWTEXTMETRIC :: NEWTEXTMETRICA;
PNEWTEXTMETRIC :: PNEWTEXTMETRICA;
NPNEWTEXTMETRIC :: NPNEWTEXTMETRICA;
LPNEWTEXTMETRIC :: LPNEWTEXTMETRICA;
NEWTEXTMETRICEXA :: struct {
ntmTm : NEWTEXTMETRICA,
ntmFontSig : FONTSIGNATURE,
};
NEWTEXTMETRICEXW :: struct {
ntmTm : NEWTEXTMETRICW,
ntmFontSig : FONTSIGNATURE,
};
NEWTEXTMETRICEX :: NEWTEXTMETRICEXA;
PELARRAY :: struct {
paXCount : LONG,
paYCount : LONG,
paXExt : LONG,
paYExt : LONG,
paRGBs : BYTE,
};
PPELARRAY :: ^struct {
paXCount : LONG,
paYCount : LONG,
paXExt : LONG,
paYExt : LONG,
paRGBs : BYTE,
};
NPPELARRAY :: ^struct {
paXCount : LONG,
paYCount : LONG,
paXExt : LONG,
paYExt : LONG,
paRGBs : BYTE,
};
LPPELARRAY :: ^struct {
paXCount : LONG,
paYCount : LONG,
paXExt : LONG,
paYExt : LONG,
paRGBs : BYTE,
};
LOGBRUSH :: struct {
lbStyle : UINT,
lbColor : COLORREF,
lbHatch : ULONG_PTR,
};
PLOGBRUSH :: ^struct {
lbStyle : UINT,
lbColor : COLORREF,
lbHatch : ULONG_PTR,
};
NPLOGBRUSH :: ^struct {
lbStyle : UINT,
lbColor : COLORREF,
lbHatch : ULONG_PTR,
};
LPLOGBRUSH :: ^struct {
lbStyle : UINT,
lbColor : COLORREF,
lbHatch : ULONG_PTR,
};
LOGBRUSH32 :: struct {
lbStyle : UINT,
lbColor : COLORREF,
lbHatch : ULONG,
};
PLOGBRUSH32 :: ^struct {
lbStyle : UINT,
lbColor : COLORREF,
lbHatch : ULONG,
};
NPLOGBRUSH32 :: ^struct {
lbStyle : UINT,
lbColor : COLORREF,
lbHatch : ULONG,
};
LPLOGBRUSH32 :: ^struct {
lbStyle : UINT,
lbColor : COLORREF,
lbHatch : ULONG,
};
PATTERN :: LOGBRUSH;
PPATTERN :: ^PATTERN;
NPPATTERN :: ^PATTERN;
LPPATTERN :: ^PATTERN;
LOGPEN :: struct {
lopnStyle : UINT,
lopnWidth : POINT,
lopnColor : COLORREF,
};
PLOGPEN :: ^struct {
lopnStyle : UINT,
lopnWidth : POINT,
lopnColor : COLORREF,
};
NPLOGPEN :: ^struct {
lopnStyle : UINT,
lopnWidth : POINT,
lopnColor : COLORREF,
};
LPLOGPEN :: ^struct {
lopnStyle : UINT,
lopnWidth : POINT,
lopnColor : COLORREF,
};
EXTLOGPEN :: struct {
elpPenStyle : u32,
elpWidth : u32,
elpBrushStyle : UINT,
elpColor : COLORREF,
elpHatch : ULONG_PTR,
elpNumEntries : u32,
elpStyleEntry : [1]u32,
};
PEXTLOGPEN :: ^struct {
elpPenStyle : u32,
elpWidth : u32,
elpBrushStyle : UINT,
elpColor : COLORREF,
elpHatch : ULONG_PTR,
elpNumEntries : u32,
elpStyleEntry : [1]u32,
};
NPEXTLOGPEN :: ^struct {
elpPenStyle : u32,
elpWidth : u32,
elpBrushStyle : UINT,
elpColor : COLORREF,
elpHatch : ULONG_PTR,
elpNumEntries : u32,
elpStyleEntry : [1]u32,
};
LPEXTLOGPEN :: ^struct {
elpPenStyle : u32,
elpWidth : u32,
elpBrushStyle : UINT,
elpColor : COLORREF,
elpHatch : ULONG_PTR,
elpNumEntries : u32,
elpStyleEntry : [1]u32,
};
EXTLOGPEN32 :: struct {
elpPenStyle : u32,
elpWidth : u32,
elpBrushStyle : UINT,
elpColor : COLORREF,
elpHatch : ULONG,
elpNumEntries : u32,
elpStyleEntry : [1]u32,
};
PEXTLOGPEN32 :: ^struct {
elpPenStyle : u32,
elpWidth : u32,
elpBrushStyle : UINT,
elpColor : COLORREF,
elpHatch : ULONG,
elpNumEntries : u32,
elpStyleEntry : [1]u32,
};
NPEXTLOGPEN32 :: ^struct {
elpPenStyle : u32,
elpWidth : u32,
elpBrushStyle : UINT,
elpColor : COLORREF,
elpHatch : ULONG,
elpNumEntries : u32,
elpStyleEntry : [1]u32,
};
LPEXTLOGPEN32 :: ^struct {
elpPenStyle : u32,
elpWidth : u32,
elpBrushStyle : UINT,
elpColor : COLORREF,
elpHatch : ULONG,
elpNumEntries : u32,
elpStyleEntry : [1]u32,
};
PALETTEENTRY :: struct {
peRed : BYTE,
peGreen : BYTE,
peBlue : BYTE,
peFlags : BYTE,
};
PPALETTEENTRY :: ^struct {
peRed : BYTE,
peGreen : BYTE,
peBlue : BYTE,
peFlags : BYTE,
};
LPPALETTEENTRY :: ^struct {
peRed : BYTE,
peGreen : BYTE,
peBlue : BYTE,
peFlags : BYTE,
};
LOGPALETTE :: struct {
palVersion : u16,
palNumEntries : u16,
palPalEntry : [1]PALETTEENTRY,
};
PLOGPALETTE :: ^struct {
palVersion : u16,
palNumEntries : u16,
palPalEntry : [1]PALETTEENTRY,
};
NPLOGPALETTE :: ^struct {
palVersion : u16,
palNumEntries : u16,
palPalEntry : [1]PALETTEENTRY,
};
LPLOGPALETTE :: ^struct {
palVersion : u16,
palNumEntries : u16,
palPalEntry : [1]PALETTEENTRY,
};
LOGFONTA :: struct {
lfHeight : LONG,
lfWidth : LONG,
lfEscapement : LONG,
lfOrientation : LONG,
lfWeight : LONG,
lfItalic : BYTE,
lfUnderline : BYTE,
lfStrikeOut : BYTE,
lfCharSet : BYTE,
lfOutPrecision : BYTE,
lfClipPrecision : BYTE,
lfQuality : BYTE,
lfPitchAndFamily : BYTE,
lfFaceName : [32]CHAR,
};
PLOGFONTA :: ^struct {
lfHeight : LONG,
lfWidth : LONG,
lfEscapement : LONG,
lfOrientation : LONG,
lfWeight : LONG,
lfItalic : BYTE,
lfUnderline : BYTE,
lfStrikeOut : BYTE,
lfCharSet : BYTE,
lfOutPrecision : BYTE,
lfClipPrecision : BYTE,
lfQuality : BYTE,
lfPitchAndFamily : BYTE,
lfFaceName : [32]CHAR,
};
NPLOGFONTA :: ^struct {
lfHeight : LONG,
lfWidth : LONG,
lfEscapement : LONG,
lfOrientation : LONG,
lfWeight : LONG,
lfItalic : BYTE,
lfUnderline : BYTE,
lfStrikeOut : BYTE,
lfCharSet : BYTE,
lfOutPrecision : BYTE,
lfClipPrecision : BYTE,
lfQuality : BYTE,
lfPitchAndFamily : BYTE,
lfFaceName : [32]CHAR,
};
LPLOGFONTA :: ^struct {
lfHeight : LONG,
lfWidth : LONG,
lfEscapement : LONG,
lfOrientation : LONG,
lfWeight : LONG,
lfItalic : BYTE,
lfUnderline : BYTE,
lfStrikeOut : BYTE,
lfCharSet : BYTE,
lfOutPrecision : BYTE,
lfClipPrecision : BYTE,
lfQuality : BYTE,
lfPitchAndFamily : BYTE,
lfFaceName : [32]CHAR,
};
LOGFONTW :: struct {
lfHeight : LONG,
lfWidth : LONG,
lfEscapement : LONG,
lfOrientation : LONG,
lfWeight : LONG,
lfItalic : BYTE,
lfUnderline : BYTE,
lfStrikeOut : BYTE,
lfCharSet : BYTE,
lfOutPrecision : BYTE,
lfClipPrecision : BYTE,
lfQuality : BYTE,
lfPitchAndFamily : BYTE,
lfFaceName : [32]WCHAR,
};
PLOGFONTW :: ^struct {
lfHeight : LONG,
lfWidth : LONG,
lfEscapement : LONG,
lfOrientation : LONG,
lfWeight : LONG,
lfItalic : BYTE,
lfUnderline : BYTE,
lfStrikeOut : BYTE,
lfCharSet : BYTE,
lfOutPrecision : BYTE,
lfClipPrecision : BYTE,
lfQuality : BYTE,
lfPitchAndFamily : BYTE,
lfFaceName : [32]WCHAR,
};
NPLOGFONTW :: ^struct {
lfHeight : LONG,
lfWidth : LONG,
lfEscapement : LONG,
lfOrientation : LONG,
lfWeight : LONG,
lfItalic : BYTE,
lfUnderline : BYTE,
lfStrikeOut : BYTE,
lfCharSet : BYTE,
lfOutPrecision : BYTE,
lfClipPrecision : BYTE,
lfQuality : BYTE,
lfPitchAndFamily : BYTE,
lfFaceName : [32]WCHAR,
};
LPLOGFONTW :: ^struct {
lfHeight : LONG,
lfWidth : LONG,
lfEscapement : LONG,
lfOrientation : LONG,
lfWeight : LONG,
lfItalic : BYTE,
lfUnderline : BYTE,
lfStrikeOut : BYTE,
lfCharSet : BYTE,
lfOutPrecision : BYTE,
lfClipPrecision : BYTE,
lfQuality : BYTE,
lfPitchAndFamily : BYTE,
lfFaceName : [32]WCHAR,
};
LOGFONT :: LOGFONTA;
PLOGFONT :: PLOGFONTA;
NPLOGFONT :: NPLOGFONTA;
LPLOGFONT :: LPLOGFONTA;
ENUMLOGFONTA :: struct {
elfLogFont : LOGFONTA,
elfFullName : [64]BYTE,
elfStyle : [32]BYTE,
};
LPENUMLOGFONTA :: ^struct {
elfLogFont : LOGFONTA,
elfFullName : [64]BYTE,
elfStyle : [32]BYTE,
};
ENUMLOGFONTW :: struct {
elfLogFont : LOGFONTW,
elfFullName : [64]WCHAR,
elfStyle : [32]WCHAR,
};
LPENUMLOGFONTW :: ^struct {
elfLogFont : LOGFONTW,
elfFullName : [64]WCHAR,
elfStyle : [32]WCHAR,
};
ENUMLOGFONT :: ENUMLOGFONTA;
LPENUMLOGFONT :: LPENUMLOGFONTA;
ENUMLOGFONTEXA :: struct {
elfLogFont : LOGFONTA,
elfFullName : [64]BYTE,
elfStyle : [32]BYTE,
elfScript : [32]BYTE,
};
LPENUMLOGFONTEXA :: ^struct {
elfLogFont : LOGFONTA,
elfFullName : [64]BYTE,
elfStyle : [32]BYTE,
elfScript : [32]BYTE,
};
ENUMLOGFONTEXW :: struct {
elfLogFont : LOGFONTW,
elfFullName : [64]WCHAR,
elfStyle : [32]WCHAR,
elfScript : [32]WCHAR,
};
LPENUMLOGFONTEXW :: ^struct {
elfLogFont : LOGFONTW,
elfFullName : [64]WCHAR,
elfStyle : [32]WCHAR,
elfScript : [32]WCHAR,
};
ENUMLOGFONTEX :: ENUMLOGFONTEXA;
LPENUMLOGFONTEX :: LPENUMLOGFONTEXA;
PANOSE :: struct {
bFamilyType : BYTE,
bSerifStyle : BYTE,
bWeight : BYTE,
bProportion : BYTE,
bContrast : BYTE,
bStrokeVariation : BYTE,
bArmStyle : BYTE,
bLetterform : BYTE,
bMidline : BYTE,
bXHeight : BYTE,
};
LPPANOSE :: ^struct {
bFamilyType : BYTE,
bSerifStyle : BYTE,
bWeight : BYTE,
bProportion : BYTE,
bContrast : BYTE,
bStrokeVariation : BYTE,
bArmStyle : BYTE,
bLetterform : BYTE,
bMidline : BYTE,
bXHeight : BYTE,
};
EXTLOGFONTA :: struct {
elfLogFont : LOGFONTA,
elfFullName : [64]BYTE,
elfStyle : [32]BYTE,
elfVersion : u32,
elfStyleSize : u32,
elfMatch : u32,
elfReserved : u32,
elfVendorId : [4]BYTE,
elfCulture : u32,
elfPanose : PANOSE,
};
PEXTLOGFONTA :: ^struct {
elfLogFont : LOGFONTA,
elfFullName : [64]BYTE,
elfStyle : [32]BYTE,
elfVersion : u32,
elfStyleSize : u32,
elfMatch : u32,
elfReserved : u32,
elfVendorId : [4]BYTE,
elfCulture : u32,
elfPanose : PANOSE,
};
NPEXTLOGFONTA :: ^struct {
elfLogFont : LOGFONTA,
elfFullName : [64]BYTE,
elfStyle : [32]BYTE,
elfVersion : u32,
elfStyleSize : u32,
elfMatch : u32,
elfReserved : u32,
elfVendorId : [4]BYTE,
elfCulture : u32,
elfPanose : PANOSE,
};
LPEXTLOGFONTA :: ^struct {
elfLogFont : LOGFONTA,
elfFullName : [64]BYTE,
elfStyle : [32]BYTE,
elfVersion : u32,
elfStyleSize : u32,
elfMatch : u32,
elfReserved : u32,
elfVendorId : [4]BYTE,
elfCulture : u32,
elfPanose : PANOSE,
};
EXTLOGFONTW :: struct {
elfLogFont : LOGFONTW,
elfFullName : [64]WCHAR,
elfStyle : [32]WCHAR,
elfVersion : u32,
elfStyleSize : u32,
elfMatch : u32,
elfReserved : u32,
elfVendorId : [4]BYTE,
elfCulture : u32,
elfPanose : PANOSE,
};
PEXTLOGFONTW :: ^struct {
elfLogFont : LOGFONTW,
elfFullName : [64]WCHAR,
elfStyle : [32]WCHAR,
elfVersion : u32,
elfStyleSize : u32,
elfMatch : u32,
elfReserved : u32,
elfVendorId : [4]BYTE,
elfCulture : u32,
elfPanose : PANOSE,
};
NPEXTLOGFONTW :: ^struct {
elfLogFont : LOGFONTW,
elfFullName : [64]WCHAR,
elfStyle : [32]WCHAR,
elfVersion : u32,
elfStyleSize : u32,
elfMatch : u32,
elfReserved : u32,
elfVendorId : [4]BYTE,
elfCulture : u32,
elfPanose : PANOSE,
};
LPEXTLOGFONTW :: ^struct {
elfLogFont : LOGFONTW,
elfFullName : [64]WCHAR,
elfStyle : [32]WCHAR,
elfVersion : u32,
elfStyleSize : u32,
elfMatch : u32,
elfReserved : u32,
elfVendorId : [4]BYTE,
elfCulture : u32,
elfPanose : PANOSE,
};
EXTLOGFONT :: EXTLOGFONTA;
PEXTLOGFONT :: PEXTLOGFONTA;
NPEXTLOGFONT :: NPEXTLOGFONTA;
LPEXTLOGFONT :: LPEXTLOGFONTA;
DEVMODEA :: struct {
dmDeviceName : [32]BYTE,
dmSpecVersion : u16,
dmDriverVersion : u16,
dmSize : u16,
dmDriverExtra : u16,
dmFields : u32,
u : struct #raw_union {
s : struct {
dmOrientation : i16,
dmPaperSize : i16,
dmPaperLength : i16,
dmPaperWidth : i16,
dmScale : i16,
dmCopies : i16,
dmDefaultSource : i16,
dmPrintQuality : i16,
},
s2 : struct {
dmPosition : POINTL,
dmDisplayOrientation : u32,
dmDisplayFixedOutput : u32,
},
},
dmColor : i16,
dmDuplex : i16,
dmYResolution : i16,
dmTTOption : i16,
dmCollate : i16,
dmFormName : [32]BYTE,
dmLogPixels : u16,
dmBitsPerPel : u32,
dmPelsWidth : u32,
dmPelsHeight : u32,
u2 : 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,
};
PDEVMODEA :: ^struct {
dmDeviceName : [32]BYTE,
dmSpecVersion : u16,
dmDriverVersion : u16,
dmSize : u16,
dmDriverExtra : u16,
dmFields : u32,
u : struct #raw_union {
s : struct {
dmOrientation : i16,
dmPaperSize : i16,
dmPaperLength : i16,
dmPaperWidth : i16,
dmScale : i16,
dmCopies : i16,
dmDefaultSource : i16,
dmPrintQuality : i16,
},
s2 : struct {
dmPosition : POINTL,
dmDisplayOrientation : u32,
dmDisplayFixedOutput : u32,
},
},
dmColor : i16,
dmDuplex : i16,
dmYResolution : i16,
dmTTOption : i16,
dmCollate : i16,
dmFormName : [32]BYTE,
dmLogPixels : u16,
dmBitsPerPel : u32,
dmPelsWidth : u32,
dmPelsHeight : u32,
u2 : 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,
};
NPDEVMODEA :: ^struct {
dmDeviceName : [32]BYTE,
dmSpecVersion : u16,
dmDriverVersion : u16,
dmSize : u16,
dmDriverExtra : u16,
dmFields : u32,
u : struct #raw_union {
s : struct {
dmOrientation : i16,
dmPaperSize : i16,
dmPaperLength : i16,
dmPaperWidth : i16,
dmScale : i16,
dmCopies : i16,
dmDefaultSource : i16,
dmPrintQuality : i16,
},
s2 : struct {
dmPosition : POINTL,
dmDisplayOrientation : u32,
dmDisplayFixedOutput : u32,
},
},
dmColor : i16,
dmDuplex : i16,
dmYResolution : i16,
dmTTOption : i16,
dmCollate : i16,
dmFormName : [32]BYTE,
dmLogPixels : u16,
dmBitsPerPel : u32,
dmPelsWidth : u32,
dmPelsHeight : u32,
u2 : 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,
};
LPDEVMODEA :: ^struct {
dmDeviceName : [32]BYTE,
dmSpecVersion : u16,
dmDriverVersion : u16,
dmSize : u16,
dmDriverExtra : u16,
dmFields : u32,
u : struct #raw_union {
s : struct {
dmOrientation : i16,
dmPaperSize : i16,
dmPaperLength : i16,
dmPaperWidth : i16,
dmScale : i16,
dmCopies : i16,
dmDefaultSource : i16,
dmPrintQuality : i16,
},
s2 : struct {
dmPosition : POINTL,
dmDisplayOrientation : u32,
dmDisplayFixedOutput : u32,
},
},
dmColor : i16,
dmDuplex : i16,
dmYResolution : i16,
dmTTOption : i16,
dmCollate : i16,
dmFormName : [32]BYTE,
dmLogPixels : u16,
dmBitsPerPel : u32,
dmPelsWidth : u32,
dmPelsHeight : u32,
u2 : 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,
};
DEVMODEW :: struct {
dmDeviceName : [32]WCHAR,
dmSpecVersion : u16,
dmDriverVersion : u16,
dmSize : u16,
dmDriverExtra : u16,
dmFields : u32,
u : struct #raw_union {
s : struct {
dmOrientation : i16,
dmPaperSize : i16,
dmPaperLength : i16,
dmPaperWidth : i16,
dmScale : i16,
dmCopies : i16,
dmDefaultSource : i16,
dmPrintQuality : i16,
},
s2 : struct {
dmPosition : POINTL,
dmDisplayOrientation : u32,
dmDisplayFixedOutput : u32,
},
},
dmColor : i16,
dmDuplex : i16,
dmYResolution : i16,
dmTTOption : i16,
dmCollate : i16,
dmFormName : [32]WCHAR,
dmLogPixels : u16,
dmBitsPerPel : u32,
dmPelsWidth : u32,
dmPelsHeight : u32,
u2 : 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,
};
PDEVMODEW :: ^struct {
dmDeviceName : [32]WCHAR,
dmSpecVersion : u16,
dmDriverVersion : u16,
dmSize : u16,
dmDriverExtra : u16,
dmFields : u32,
u : struct #raw_union {
s : struct {
dmOrientation : i16,
dmPaperSize : i16,
dmPaperLength : i16,
dmPaperWidth : i16,
dmScale : i16,
dmCopies : i16,
dmDefaultSource : i16,
dmPrintQuality : i16,
},
s2 : struct {
dmPosition : POINTL,
dmDisplayOrientation : u32,
dmDisplayFixedOutput : u32,
},
},
dmColor : i16,
dmDuplex : i16,
dmYResolution : i16,
dmTTOption : i16,
dmCollate : i16,
dmFormName : [32]WCHAR,
dmLogPixels : u16,
dmBitsPerPel : u32,
dmPelsWidth : u32,
dmPelsHeight : u32,
u2 : 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,
};
NPDEVMODEW :: ^struct {
dmDeviceName : [32]WCHAR,
dmSpecVersion : u16,
dmDriverVersion : u16,
dmSize : u16,
dmDriverExtra : u16,
dmFields : u32,
u : struct #raw_union {
s : struct {
dmOrientation : i16,
dmPaperSize : i16,
dmPaperLength : i16,
dmPaperWidth : i16,
dmScale : i16,
dmCopies : i16,
dmDefaultSource : i16,
dmPrintQuality : i16,
},
s2 : struct {
dmPosition : POINTL,
dmDisplayOrientation : u32,
dmDisplayFixedOutput : u32,
},
},
dmColor : i16,
dmDuplex : i16,
dmYResolution : i16,
dmTTOption : i16,
dmCollate : i16,
dmFormName : [32]WCHAR,
dmLogPixels : u16,
dmBitsPerPel : u32,
dmPelsWidth : u32,
dmPelsHeight : u32,
u2 : 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,
};
LPDEVMODEW :: ^struct {
dmDeviceName : [32]WCHAR,
dmSpecVersion : u16,
dmDriverVersion : u16,
dmSize : u16,
dmDriverExtra : u16,
dmFields : u32,
u : struct #raw_union {
s : struct {
dmOrientation : i16,
dmPaperSize : i16,
dmPaperLength : i16,
dmPaperWidth : i16,
dmScale : i16,
dmCopies : i16,
dmDefaultSource : i16,
dmPrintQuality : i16,
},
s2 : struct {
dmPosition : POINTL,
dmDisplayOrientation : u32,
dmDisplayFixedOutput : u32,
},
},
dmColor : i16,
dmDuplex : i16,
dmYResolution : i16,
dmTTOption : i16,
dmCollate : i16,
dmFormName : [32]WCHAR,
dmLogPixels : u16,
dmBitsPerPel : u32,
dmPelsWidth : u32,
dmPelsHeight : u32,
u2 : 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,
};
DEVMODE :: DEVMODEA;
PDEVMODE :: PDEVMODEA;
NPDEVMODE :: NPDEVMODEA;
LPDEVMODE :: LPDEVMODEA;
DISPLAY_DEVICEA :: struct {
cb : u32,
DeviceName : [32]CHAR,
DeviceString : [128]CHAR,
StateFlags : u32,
DeviceID : [128]CHAR,
DeviceKey : [128]CHAR,
};
PDISPLAY_DEVICEA :: ^struct {
cb : u32,
DeviceName : [32]CHAR,
DeviceString : [128]CHAR,
StateFlags : u32,
DeviceID : [128]CHAR,
DeviceKey : [128]CHAR,
};
LPDISPLAY_DEVICEA :: ^struct {
cb : u32,
DeviceName : [32]CHAR,
DeviceString : [128]CHAR,
StateFlags : u32,
DeviceID : [128]CHAR,
DeviceKey : [128]CHAR,
};
DISPLAY_DEVICEW :: struct {
cb : u32,
DeviceName : [32]WCHAR,
DeviceString : [128]WCHAR,
StateFlags : u32,
DeviceID : [128]WCHAR,
DeviceKey : [128]WCHAR,
};
PDISPLAY_DEVICEW :: ^struct {
cb : u32,
DeviceName : [32]WCHAR,
DeviceString : [128]WCHAR,
StateFlags : u32,
DeviceID : [128]WCHAR,
DeviceKey : [128]WCHAR,
};
LPDISPLAY_DEVICEW :: ^struct {
cb : u32,
DeviceName : [32]WCHAR,
DeviceString : [128]WCHAR,
StateFlags : u32,
DeviceID : [128]WCHAR,
DeviceKey : [128]WCHAR,
};
DISPLAY_DEVICE :: DISPLAY_DEVICEA;
PDISPLAY_DEVICE :: PDISPLAY_DEVICEA;
LPDISPLAY_DEVICE :: LPDISPLAY_DEVICEA;
DISPLAYCONFIG_RATIONAL :: struct {
Numerator : UINT32,
Denominator : UINT32,
};
DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY :: enum {
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_OTHER = -1,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HD15 = 0,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SVIDEO = 1,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPOSITE_VIDEO = 2,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPONENT_VIDEO = 3,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DVI = 4,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HDMI = 5,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_LVDS = 6,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_D_JPN = 8,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDI = 9,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EXTERNAL = 10,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED = 11,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EXTERNAL = 12,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EMBEDDED = 13,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDTVDONGLE = 14,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_MIRACAST = 15,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INDIRECT_WIRED = 16,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INDIRECT_VIRTUAL = 17,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL = 0x80000000,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_FORCE_UINT32 = 0xFFFFFFFF,
};
DISPLAYCONFIG_SCANLINE_ORDERING :: enum {
DISPLAYCONFIG_SCANLINE_ORDERING_UNSPECIFIED = 0,
DISPLAYCONFIG_SCANLINE_ORDERING_PROGRESSIVE = 1,
DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED = 2,
DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_UPPERFIELDFIRST = DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED,
DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_LOWERFIELDFIRST = 3,
DISPLAYCONFIG_SCANLINE_ORDERING_FORCE_UINT32 = 0xFFFFFFFF,
};
DISPLAYCONFIG_2DREGION :: struct {
cx : UINT32,
cy : UINT32,
};
DISPLAYCONFIG_VIDEO_SIGNAL_INFO :: struct {
pixelRate : UINT64,
hSyncFreq : DISPLAYCONFIG_RATIONAL,
vSyncFreq : DISPLAYCONFIG_RATIONAL,
activeSize : DISPLAYCONFIG_2DREGION,
totalSize : DISPLAYCONFIG_2DREGION,
u : struct #raw_union {
AdditionalSignalInfo : struct {
videoStandard : ,
vSyncFreqDivider : ,
reserved : ,
},
videoStandard : UINT32,
},
scanLineOrdering : DISPLAYCONFIG_SCANLINE_ORDERING,
};
DISPLAYCONFIG_SCALING :: enum {
DISPLAYCONFIG_SCALING_IDENTITY = 1,
DISPLAYCONFIG_SCALING_CENTERED = 2,
DISPLAYCONFIG_SCALING_STRETCHED = 3,
DISPLAYCONFIG_SCALING_ASPECTRATIOCENTEREDMAX = 4,
DISPLAYCONFIG_SCALING_CUSTOM = 5,
DISPLAYCONFIG_SCALING_PREFERRED = 128,
DISPLAYCONFIG_SCALING_FORCE_UINT32 = 0xFFFFFFFF,
};
DISPLAYCONFIG_ROTATION :: enum {
DISPLAYCONFIG_ROTATION_IDENTITY = 1,
DISPLAYCONFIG_ROTATION_ROTATE90 = 2,
DISPLAYCONFIG_ROTATION_ROTATE180 = 3,
DISPLAYCONFIG_ROTATION_ROTATE270 = 4,
DISPLAYCONFIG_ROTATION_FORCE_UINT32 = 0xFFFFFFFF,
};
DISPLAYCONFIG_MODE_INFO_TYPE :: enum {
DISPLAYCONFIG_MODE_INFO_TYPE_SOURCE = 1,
DISPLAYCONFIG_MODE_INFO_TYPE_TARGET = 2,
DISPLAYCONFIG_MODE_INFO_TYPE_DESKTOP_IMAGE = 3,
DISPLAYCONFIG_MODE_INFO_TYPE_FORCE_UINT32 = 0xFFFFFFFF,
};
DISPLAYCONFIG_PIXELFORMAT :: enum {
DISPLAYCONFIG_PIXELFORMAT_8BPP = 1,
DISPLAYCONFIG_PIXELFORMAT_16BPP = 2,
DISPLAYCONFIG_PIXELFORMAT_24BPP = 3,
DISPLAYCONFIG_PIXELFORMAT_32BPP = 4,
DISPLAYCONFIG_PIXELFORMAT_NONGDI = 5,
DISPLAYCONFIG_PIXELFORMAT_FORCE_UINT32 = 0xffffffff,
};
DISPLAYCONFIG_SOURCE_MODE :: struct {
width : UINT32,
height : UINT32,
pixelFormat : DISPLAYCONFIG_PIXELFORMAT,
position : POINTL,
};
DISPLAYCONFIG_TARGET_MODE :: struct {
targetVideoSignalInfo : DISPLAYCONFIG_VIDEO_SIGNAL_INFO,
};
DISPLAYCONFIG_DESKTOP_IMAGE_INFO :: struct {
PathSourceSize : POINTL,
DesktopImageRegion : RECTL,
DesktopImageClip : RECTL,
};
DISPLAYCONFIG_MODE_INFO :: struct {
infoType : DISPLAYCONFIG_MODE_INFO_TYPE,
id : UINT32,
adapterId : LUID,
u : struct #raw_union {
targetMode : DISPLAYCONFIG_TARGET_MODE,
sourceMode : DISPLAYCONFIG_SOURCE_MODE,
desktopImageInfo : DISPLAYCONFIG_DESKTOP_IMAGE_INFO,
},
};
DISPLAYCONFIG_PATH_SOURCE_INFO :: struct {
adapterId : LUID,
id : UINT32,
u : struct #raw_union {
modeInfoIdx : UINT32,
s : struct {
cloneGroupId : ,
sourceModeInfoIdx : ,
},
},
statusFlags : UINT32,
};
DISPLAYCONFIG_PATH_TARGET_INFO :: struct {
adapterId : LUID,
id : UINT32,
u : struct #raw_union {
modeInfoIdx : UINT32,
s : struct {
desktopModeInfoIdx : ,
targetModeInfoIdx : ,
},
},
outputTechnology : DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY,
rotation : DISPLAYCONFIG_ROTATION,
scaling : DISPLAYCONFIG_SCALING,
refreshRate : DISPLAYCONFIG_RATIONAL,
scanLineOrdering : DISPLAYCONFIG_SCANLINE_ORDERING,
targetAvailable : BOOL,
statusFlags : UINT32,
};
DISPLAYCONFIG_PATH_INFO :: struct {
sourceInfo : DISPLAYCONFIG_PATH_SOURCE_INFO,
targetInfo : DISPLAYCONFIG_PATH_TARGET_INFO,
flags : UINT32,
};
DISPLAYCONFIG_TOPOLOGY_ID :: enum {
DISPLAYCONFIG_TOPOLOGY_INTERNAL = 0x00000001,
DISPLAYCONFIG_TOPOLOGY_CLONE = 0x00000002,
DISPLAYCONFIG_TOPOLOGY_EXTEND = 0x00000004,
DISPLAYCONFIG_TOPOLOGY_EXTERNAL = 0x00000008,
DISPLAYCONFIG_TOPOLOGY_FORCE_UINT32 = 0xFFFFFFFF,
};
DISPLAYCONFIG_DEVICE_INFO_TYPE :: enum {
DISPLAYCONFIG_DEVICE_INFO_GET_SOURCE_NAME = 1,
DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_NAME = 2,
DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_PREFERRED_MODE = 3,
DISPLAYCONFIG_DEVICE_INFO_GET_ADAPTER_NAME = 4,
DISPLAYCONFIG_DEVICE_INFO_SET_TARGET_PERSISTENCE = 5,
DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_BASE_TYPE = 6,
DISPLAYCONFIG_DEVICE_INFO_GET_SUPPORT_VIRTUAL_RESOLUTION = 7,
DISPLAYCONFIG_DEVICE_INFO_SET_SUPPORT_VIRTUAL_RESOLUTION = 8,
DISPLAYCONFIG_DEVICE_INFO_GET_ADVANCED_COLOR_INFO = 9,
DISPLAYCONFIG_DEVICE_INFO_SET_ADVANCED_COLOR_STATE = 10,
DISPLAYCONFIG_DEVICE_INFO_GET_SDR_WHITE_LEVEL = 11,
DISPLAYCONFIG_DEVICE_INFO_FORCE_UINT32 = 0xFFFFFFFF,
};
DISPLAYCONFIG_DEVICE_INFO_HEADER :: struct {
kind : DISPLAYCONFIG_DEVICE_INFO_TYPE,
size : UINT32,
adapterId : LUID,
id : UINT32,
};
DISPLAYCONFIG_SOURCE_DEVICE_NAME :: struct {
header : DISPLAYCONFIG_DEVICE_INFO_HEADER,
viewGdiDeviceName : [32]WCHAR,
};
DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS :: struct {
u : struct #raw_union {
s : struct {
friendlyNameFromEdid : ,
friendlyNameForced : ,
edidIdsValid : ,
reserved : ,
},
value : UINT32,
},
};
DISPLAYCONFIG_TARGET_DEVICE_NAME :: struct {
header : DISPLAYCONFIG_DEVICE_INFO_HEADER,
flags : DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS,
outputTechnology : DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY,
edidManufactureId : UINT16,
edidProductCodeId : UINT16,
connectorInstance : UINT32,
monitorFriendlyDeviceName : [64]WCHAR,
monitorDevicePath : [128]WCHAR,
};
DISPLAYCONFIG_TARGET_PREFERRED_MODE :: struct {
header : DISPLAYCONFIG_DEVICE_INFO_HEADER,
width : UINT32,
height : UINT32,
targetMode : DISPLAYCONFIG_TARGET_MODE,
};
DISPLAYCONFIG_ADAPTER_NAME :: struct {
header : DISPLAYCONFIG_DEVICE_INFO_HEADER,
adapterDevicePath : [128]WCHAR,
};
DISPLAYCONFIG_TARGET_BASE_TYPE :: struct {
header : DISPLAYCONFIG_DEVICE_INFO_HEADER,
baseOutputTechnology : DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY,
};
DISPLAYCONFIG_SET_TARGET_PERSISTENCE :: struct {
header : DISPLAYCONFIG_DEVICE_INFO_HEADER,
u : struct #raw_union {
s : struct {
bootPersistenceOn : ,
reserved : ,
},
value : UINT32,
},
};
DISPLAYCONFIG_SUPPORT_VIRTUAL_RESOLUTION :: struct {
header : DISPLAYCONFIG_DEVICE_INFO_HEADER,
s : struct #raw_union {
s : struct {
disableMonitorVirtualResolution : ,
reserved : ,
},
value : UINT32,
},
};
DISPLAYCONFIG_COLOR_ENCODING :: enum {
DISPLAYCONFIG_COLOR_ENCODING_RGB = 0,
DISPLAYCONFIG_COLOR_ENCODING_YCBCR444 = 1,
DISPLAYCONFIG_COLOR_ENCODING_YCBCR422 = 2,
DISPLAYCONFIG_COLOR_ENCODING_YCBCR420 = 3,
DISPLAYCONFIG_COLOR_ENCODING_INTENSITY = 4,
DISPLAYCONFIG_COLOR_ENCODING_FORCE_UINT32 = 0xFFFFFFFF,
};
DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO :: struct {
header : DISPLAYCONFIG_DEVICE_INFO_HEADER,
u : struct #raw_union {
s : struct {
advancedColorSupported : ,
advancedColorEnabled : ,
wideColorEnforced : ,
advancedColorForceDisabled : ,
reserved : ,
},
value : UINT32,
},
colorEncoding : DISPLAYCONFIG_COLOR_ENCODING,
bitsPerColorChannel : UINT32,
};
DISPLAYCONFIG_SET_ADVANCED_COLOR_STATE :: struct {
header : DISPLAYCONFIG_DEVICE_INFO_HEADER,
u : struct #raw_union {
s : struct {
enableAdvancedColor : ,
reserved : ,
},
value : UINT32,
},
};
DISPLAYCONFIG_SDR_WHITE_LEVEL :: struct {
header : DISPLAYCONFIG_DEVICE_INFO_HEADER,
SDRWhiteLevel : ULONG,
};
RGNDATAHEADER :: struct {
dwSize : u32,
iType : u32,
nCount : u32,
nRgnSize : u32,
rcBound : RECT,
};
PRGNDATAHEADER :: ^struct {
dwSize : u32,
iType : u32,
nCount : u32,
nRgnSize : u32,
rcBound : RECT,
};
RGNDATA :: struct {
rdh : RGNDATAHEADER,
Buffer : [1]u8,
};
PRGNDATA :: ^struct {
rdh : RGNDATAHEADER,
Buffer : [1]u8,
};
NPRGNDATA :: ^struct {
rdh : RGNDATAHEADER,
Buffer : [1]u8,
};
LPRGNDATA :: ^struct {
rdh : RGNDATAHEADER,
Buffer : [1]u8,
};
ABC :: struct {
abcA : i32,
abcB : UINT,
abcC : i32,
};
PABC :: ^struct {
abcA : i32,
abcB : UINT,
abcC : i32,
};
NPABC :: ^struct {
abcA : i32,
abcB : UINT,
abcC : i32,
};
LPABC :: ^struct {
abcA : i32,
abcB : UINT,
abcC : i32,
};
ABCFLOAT :: struct {
abcfA : FLOAT,
abcfB : FLOAT,
abcfC : FLOAT,
};
PABCFLOAT :: ^struct {
abcfA : FLOAT,
abcfB : FLOAT,
abcfC : FLOAT,
};
NPABCFLOAT :: ^struct {
abcfA : FLOAT,
abcfB : FLOAT,
abcfC : FLOAT,
};
LPABCFLOAT :: ^struct {
abcfA : FLOAT,
abcfB : FLOAT,
abcfC : FLOAT,
};
OUTLINETEXTMETRICA :: struct {
otmSize : UINT,
otmTextMetrics : TEXTMETRICA,
otmFiller : BYTE,
otmPanoseNumber : PANOSE,
otmfsSelection : UINT,
otmfsType : UINT,
otmsCharSlopeRise : i32,
otmsCharSlopeRun : i32,
otmItalicAngle : i32,
otmEMSquare : UINT,
otmAscent : i32,
otmDescent : i32,
otmLineGap : UINT,
otmsCapEmHeight : UINT,
otmsXHeight : UINT,
otmrcFontBox : RECT,
otmMacAscent : i32,
otmMacDescent : i32,
otmMacLineGap : UINT,
otmusMinimumPPEM : UINT,
otmptSubscriptSize : POINT,
otmptSubscriptOffset : POINT,
otmptSuperscriptSize : POINT,
otmptSuperscriptOffset : POINT,
otmsStrikeoutSize : UINT,
otmsStrikeoutPosition : i32,
otmsUnderscoreSize : i32,
otmsUnderscorePosition : i32,
otmpFamilyName : PSTR,
otmpFaceName : PSTR,
otmpStyleName : PSTR,
otmpFullName : PSTR,
};
POUTLINETEXTMETRICA :: ^struct {
otmSize : UINT,
otmTextMetrics : TEXTMETRICA,
otmFiller : BYTE,
otmPanoseNumber : PANOSE,
otmfsSelection : UINT,
otmfsType : UINT,
otmsCharSlopeRise : i32,
otmsCharSlopeRun : i32,
otmItalicAngle : i32,
otmEMSquare : UINT,
otmAscent : i32,
otmDescent : i32,
otmLineGap : UINT,
otmsCapEmHeight : UINT,
otmsXHeight : UINT,
otmrcFontBox : RECT,
otmMacAscent : i32,
otmMacDescent : i32,
otmMacLineGap : UINT,
otmusMinimumPPEM : UINT,
otmptSubscriptSize : POINT,
otmptSubscriptOffset : POINT,
otmptSuperscriptSize : POINT,
otmptSuperscriptOffset : POINT,
otmsStrikeoutSize : UINT,
otmsStrikeoutPosition : i32,
otmsUnderscoreSize : i32,
otmsUnderscorePosition : i32,
otmpFamilyName : PSTR,
otmpFaceName : PSTR,
otmpStyleName : PSTR,
otmpFullName : PSTR,
};
NPOUTLINETEXTMETRICA :: ^struct {
otmSize : UINT,
otmTextMetrics : TEXTMETRICA,
otmFiller : BYTE,
otmPanoseNumber : PANOSE,
otmfsSelection : UINT,
otmfsType : UINT,
otmsCharSlopeRise : i32,
otmsCharSlopeRun : i32,
otmItalicAngle : i32,
otmEMSquare : UINT,
otmAscent : i32,
otmDescent : i32,
otmLineGap : UINT,
otmsCapEmHeight : UINT,
otmsXHeight : UINT,
otmrcFontBox : RECT,
otmMacAscent : i32,
otmMacDescent : i32,
otmMacLineGap : UINT,
otmusMinimumPPEM : UINT,
otmptSubscriptSize : POINT,
otmptSubscriptOffset : POINT,
otmptSuperscriptSize : POINT,
otmptSuperscriptOffset : POINT,
otmsStrikeoutSize : UINT,
otmsStrikeoutPosition : i32,
otmsUnderscoreSize : i32,
otmsUnderscorePosition : i32,
otmpFamilyName : PSTR,
otmpFaceName : PSTR,
otmpStyleName : PSTR,
otmpFullName : PSTR,
};
LPOUTLINETEXTMETRICA :: ^struct {
otmSize : UINT,
otmTextMetrics : TEXTMETRICA,
otmFiller : BYTE,
otmPanoseNumber : PANOSE,
otmfsSelection : UINT,
otmfsType : UINT,
otmsCharSlopeRise : i32,
otmsCharSlopeRun : i32,
otmItalicAngle : i32,
otmEMSquare : UINT,
otmAscent : i32,
otmDescent : i32,
otmLineGap : UINT,
otmsCapEmHeight : UINT,
otmsXHeight : UINT,
otmrcFontBox : RECT,
otmMacAscent : i32,
otmMacDescent : i32,
otmMacLineGap : UINT,
otmusMinimumPPEM : UINT,
otmptSubscriptSize : POINT,
otmptSubscriptOffset : POINT,
otmptSuperscriptSize : POINT,
otmptSuperscriptOffset : POINT,
otmsStrikeoutSize : UINT,
otmsStrikeoutPosition : i32,
otmsUnderscoreSize : i32,
otmsUnderscorePosition : i32,
otmpFamilyName : PSTR,
otmpFaceName : PSTR,
otmpStyleName : PSTR,
otmpFullName : PSTR,
};
OUTLINETEXTMETRICW :: struct {
otmSize : UINT,
otmTextMetrics : TEXTMETRICW,
otmFiller : BYTE,
otmPanoseNumber : PANOSE,
otmfsSelection : UINT,
otmfsType : UINT,
otmsCharSlopeRise : i32,
otmsCharSlopeRun : i32,
otmItalicAngle : i32,
otmEMSquare : UINT,
otmAscent : i32,
otmDescent : i32,
otmLineGap : UINT,
otmsCapEmHeight : UINT,
otmsXHeight : UINT,
otmrcFontBox : RECT,
otmMacAscent : i32,
otmMacDescent : i32,
otmMacLineGap : UINT,
otmusMinimumPPEM : UINT,
otmptSubscriptSize : POINT,
otmptSubscriptOffset : POINT,
otmptSuperscriptSize : POINT,
otmptSuperscriptOffset : POINT,
otmsStrikeoutSize : UINT,
otmsStrikeoutPosition : i32,
otmsUnderscoreSize : i32,
otmsUnderscorePosition : i32,
otmpFamilyName : PSTR,
otmpFaceName : PSTR,
otmpStyleName : PSTR,
otmpFullName : PSTR,
};
POUTLINETEXTMETRICW :: ^struct {
otmSize : UINT,
otmTextMetrics : TEXTMETRICW,
otmFiller : BYTE,
otmPanoseNumber : PANOSE,
otmfsSelection : UINT,
otmfsType : UINT,
otmsCharSlopeRise : i32,
otmsCharSlopeRun : i32,
otmItalicAngle : i32,
otmEMSquare : UINT,
otmAscent : i32,
otmDescent : i32,
otmLineGap : UINT,
otmsCapEmHeight : UINT,
otmsXHeight : UINT,
otmrcFontBox : RECT,
otmMacAscent : i32,
otmMacDescent : i32,
otmMacLineGap : UINT,
otmusMinimumPPEM : UINT,
otmptSubscriptSize : POINT,
otmptSubscriptOffset : POINT,
otmptSuperscriptSize : POINT,
otmptSuperscriptOffset : POINT,
otmsStrikeoutSize : UINT,
otmsStrikeoutPosition : i32,
otmsUnderscoreSize : i32,
otmsUnderscorePosition : i32,
otmpFamilyName : PSTR,
otmpFaceName : PSTR,
otmpStyleName : PSTR,
otmpFullName : PSTR,
};
NPOUTLINETEXTMETRICW :: ^struct {
otmSize : UINT,
otmTextMetrics : TEXTMETRICW,
otmFiller : BYTE,
otmPanoseNumber : PANOSE,
otmfsSelection : UINT,
otmfsType : UINT,
otmsCharSlopeRise : i32,
otmsCharSlopeRun : i32,
otmItalicAngle : i32,
otmEMSquare : UINT,
otmAscent : i32,
otmDescent : i32,
otmLineGap : UINT,
otmsCapEmHeight : UINT,
otmsXHeight : UINT,
otmrcFontBox : RECT,
otmMacAscent : i32,
otmMacDescent : i32,
otmMacLineGap : UINT,
otmusMinimumPPEM : UINT,
otmptSubscriptSize : POINT,
otmptSubscriptOffset : POINT,
otmptSuperscriptSize : POINT,
otmptSuperscriptOffset : POINT,
otmsStrikeoutSize : UINT,
otmsStrikeoutPosition : i32,
otmsUnderscoreSize : i32,
otmsUnderscorePosition : i32,
otmpFamilyName : PSTR,
otmpFaceName : PSTR,
otmpStyleName : PSTR,
otmpFullName : PSTR,
};
LPOUTLINETEXTMETRICW :: ^struct {
otmSize : UINT,
otmTextMetrics : TEXTMETRICW,
otmFiller : BYTE,
otmPanoseNumber : PANOSE,
otmfsSelection : UINT,
otmfsType : UINT,
otmsCharSlopeRise : i32,
otmsCharSlopeRun : i32,
otmItalicAngle : i32,
otmEMSquare : UINT,
otmAscent : i32,
otmDescent : i32,
otmLineGap : UINT,
otmsCapEmHeight : UINT,
otmsXHeight : UINT,
otmrcFontBox : RECT,
otmMacAscent : i32,
otmMacDescent : i32,
otmMacLineGap : UINT,
otmusMinimumPPEM : UINT,
otmptSubscriptSize : POINT,
otmptSubscriptOffset : POINT,
otmptSuperscriptSize : POINT,
otmptSuperscriptOffset : POINT,
otmsStrikeoutSize : UINT,
otmsStrikeoutPosition : i32,
otmsUnderscoreSize : i32,
otmsUnderscorePosition : i32,
otmpFamilyName : PSTR,
otmpFaceName : PSTR,
otmpStyleName : PSTR,
otmpFullName : PSTR,
};
OUTLINETEXTMETRIC :: OUTLINETEXTMETRICA;
POUTLINETEXTMETRIC :: POUTLINETEXTMETRICA;
NPOUTLINETEXTMETRIC :: NPOUTLINETEXTMETRICA;
LPOUTLINETEXTMETRIC :: LPOUTLINETEXTMETRICA;
POLYTEXTA :: struct {
x : i32,
y : i32,
n : UINT,
lpstr : LPCSTR,
uiFlags : UINT,
rcl : RECT,
pdx : ^i32,
};
PPOLYTEXTA :: ^struct {
x : i32,
y : i32,
n : UINT,
lpstr : LPCSTR,
uiFlags : UINT,
rcl : RECT,
pdx : ^i32,
};
NPPOLYTEXTA :: ^struct {
x : i32,
y : i32,
n : UINT,
lpstr : LPCSTR,
uiFlags : UINT,
rcl : RECT,
pdx : ^i32,
};
LPPOLYTEXTA :: ^struct {
x : i32,
y : i32,
n : UINT,
lpstr : LPCSTR,
uiFlags : UINT,
rcl : RECT,
pdx : ^i32,
};
POLYTEXTW :: struct {
x : i32,
y : i32,
n : UINT,
lpstr : LPCWSTR,
uiFlags : UINT,
rcl : RECT,
pdx : ^i32,
};
PPOLYTEXTW :: ^struct {
x : i32,
y : i32,
n : UINT,
lpstr : LPCWSTR,
uiFlags : UINT,
rcl : RECT,
pdx : ^i32,
};
NPPOLYTEXTW :: ^struct {
x : i32,
y : i32,
n : UINT,
lpstr : LPCWSTR,
uiFlags : UINT,
rcl : RECT,
pdx : ^i32,
};
LPPOLYTEXTW :: ^struct {
x : i32,
y : i32,
n : UINT,
lpstr : LPCWSTR,
uiFlags : UINT,
rcl : RECT,
pdx : ^i32,
};
POLYTEXT :: POLYTEXTA;
PPOLYTEXT :: PPOLYTEXTA;
NPPOLYTEXT :: NPPOLYTEXTA;
LPPOLYTEXT :: LPPOLYTEXTA;
FIXED :: struct {
fract : u16,
value : i16,
};
MAT2 :: struct {
eM11 : FIXED,
eM12 : FIXED,
eM21 : FIXED,
eM22 : FIXED,
};
LPMAT2 :: ^struct {
eM11 : FIXED,
eM12 : FIXED,
eM21 : FIXED,
eM22 : FIXED,
};
GLYPHMETRICS :: struct {
gmBlackBoxX : UINT,
gmBlackBoxY : UINT,
gmptGlyphOrigin : POINT,
gmCellIncX : i16,
gmCellIncY : i16,
};
LPGLYPHMETRICS :: ^struct {
gmBlackBoxX : UINT,
gmBlackBoxY : UINT,
gmptGlyphOrigin : POINT,
gmCellIncX : i16,
gmCellIncY : i16,
};
POINTFX :: struct {
x : FIXED,
y : FIXED,
};
LPPOINTFX :: ^struct {
x : FIXED,
y : FIXED,
};
TTPOLYCURVE :: struct {
wType : u16,
cpfx : u16,
apfx : [1]POINTFX,
};
LPTTPOLYCURVE :: ^struct {
wType : u16,
cpfx : u16,
apfx : [1]POINTFX,
};
TTPOLYGONHEADER :: struct {
cb : u32,
dwType : u32,
pfxStart : POINTFX,
};
LPTTPOLYGONHEADER :: ^struct {
cb : u32,
dwType : u32,
pfxStart : POINTFX,
};
GCP_RESULTSA :: struct {
lStructSize : u32,
lpOutString : LPSTR,
lpOrder : ^UINT,
lpDx : ^i32,
lpCaretPos : ^i32,
lpClass : LPSTR,
lpGlyphs : LPWSTR,
nGlyphs : UINT,
nMaxFit : i32,
};
LPGCP_RESULTSA :: ^struct {
lStructSize : u32,
lpOutString : LPSTR,
lpOrder : ^UINT,
lpDx : ^i32,
lpCaretPos : ^i32,
lpClass : LPSTR,
lpGlyphs : LPWSTR,
nGlyphs : UINT,
nMaxFit : i32,
};
GCP_RESULTSW :: struct {
lStructSize : u32,
lpOutString : LPWSTR,
lpOrder : ^UINT,
lpDx : ^i32,
lpCaretPos : ^i32,
lpClass : LPSTR,
lpGlyphs : LPWSTR,
nGlyphs : UINT,
nMaxFit : i32,
};
LPGCP_RESULTSW :: ^struct {
lStructSize : u32,
lpOutString : LPWSTR,
lpOrder : ^UINT,
lpDx : ^i32,
lpCaretPos : ^i32,
lpClass : LPSTR,
lpGlyphs : LPWSTR,
nGlyphs : UINT,
nMaxFit : i32,
};
GCP_RESULTS :: GCP_RESULTSA;
LPGCP_RESULTS :: LPGCP_RESULTSA;
RASTERIZER_STATUS :: struct {
nSize : i16,
wFlags : i16,
nLanguageID : i16,
};
LPRASTERIZER_STATUS :: ^struct {
nSize : i16,
wFlags : i16,
nLanguageID : i16,
};
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,
};
PPIXELFORMATDESCRIPTOR :: ^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,
};
LPPIXELFORMATDESCRIPTOR :: ^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,
};
OLDFONTENUMPROCA :: (proc(^LOGFONTA, ^TEXTMETRICA, u32, LPARAM) -> i32);
OLDFONTENUMPROCW :: (proc(^LOGFONTW, ^TEXTMETRICW, u32, LPARAM) -> i32);
FONTENUMPROCA :: OLDFONTENUMPROCA;
FONTENUMPROCW :: OLDFONTENUMPROCW;
FONTENUMPROC :: FONTENUMPROCA;
GOBJENUMPROC :: (proc(LPVOID, LPARAM) -> i32);
LINEDDAPROC :: proc(i32, i32, LPARAM);
LPFNDEVMODE :: (proc(HWND, HMODULE, LPDEVMODE, LPSTR, LPSTR, LPDEVMODE, LPSTR, UINT) -> UINT);
LPFNDEVCAPS :: (proc(LPSTR, LPSTR, UINT, LPSTR, LPDEVMODE) -> u32);
WCRANGE :: struct {
wcLow : WCHAR,
cGlyphs : USHORT,
};
PWCRANGE :: ^struct {
wcLow : WCHAR,
cGlyphs : USHORT,
};
LPWCRANGE :: ^struct {
wcLow : WCHAR,
cGlyphs : USHORT,
};
GLYPHSET :: struct {
cbThis : u32,
flAccel : u32,
cGlyphsSupported : u32,
cRanges : u32,
ranges : [1]WCRANGE,
};
PGLYPHSET :: ^struct {
cbThis : u32,
flAccel : u32,
cGlyphsSupported : u32,
cRanges : u32,
ranges : [1]WCRANGE,
};
LPGLYPHSET :: ^struct {
cbThis : u32,
flAccel : u32,
cGlyphsSupported : u32,
cRanges : u32,
ranges : [1]WCRANGE,
};
DESIGNVECTOR :: struct {
dvReserved : u32,
dvNumAxes : u32,
dvValues : [16]LONG,
};
PDESIGNVECTOR :: ^struct {
dvReserved : u32,
dvNumAxes : u32,
dvValues : [16]LONG,
};
LPDESIGNVECTOR :: ^struct {
dvReserved : u32,
dvNumAxes : u32,
dvValues : [16]LONG,
};
AXISINFOA :: struct {
axMinValue : LONG,
axMaxValue : LONG,
axAxisName : [16]BYTE,
};
PAXISINFOA :: ^struct {
axMinValue : LONG,
axMaxValue : LONG,
axAxisName : [16]BYTE,
};
LPAXISINFOA :: ^struct {
axMinValue : LONG,
axMaxValue : LONG,
axAxisName : [16]BYTE,
};
AXISINFOW :: struct {
axMinValue : LONG,
axMaxValue : LONG,
axAxisName : [16]WCHAR,
};
PAXISINFOW :: ^struct {
axMinValue : LONG,
axMaxValue : LONG,
axAxisName : [16]WCHAR,
};
LPAXISINFOW :: ^struct {
axMinValue : LONG,
axMaxValue : LONG,
axAxisName : [16]WCHAR,
};
AXISINFO :: AXISINFOA;
PAXISINFO :: PAXISINFOA;
LPAXISINFO :: LPAXISINFOA;
AXESLISTA :: struct {
axlReserved : u32,
axlNumAxes : u32,
axlAxisInfo : [16]AXISINFOA,
};
PAXESLISTA :: ^struct {
axlReserved : u32,
axlNumAxes : u32,
axlAxisInfo : [16]AXISINFOA,
};
LPAXESLISTA :: ^struct {
axlReserved : u32,
axlNumAxes : u32,
axlAxisInfo : [16]AXISINFOA,
};
AXESLISTW :: struct {
axlReserved : u32,
axlNumAxes : u32,
axlAxisInfo : [16]AXISINFOW,
};
PAXESLISTW :: ^struct {
axlReserved : u32,
axlNumAxes : u32,
axlAxisInfo : [16]AXISINFOW,
};
LPAXESLISTW :: ^struct {
axlReserved : u32,
axlNumAxes : u32,
axlAxisInfo : [16]AXISINFOW,
};
AXESLIST :: AXESLISTA;
PAXESLIST :: PAXESLISTA;
LPAXESLIST :: LPAXESLISTA;
ENUMLOGFONTEXDVA :: struct {
elfEnumLogfontEx : ENUMLOGFONTEXA,
elfDesignVector : DESIGNVECTOR,
};
PENUMLOGFONTEXDVA :: ^struct {
elfEnumLogfontEx : ENUMLOGFONTEXA,
elfDesignVector : DESIGNVECTOR,
};
LPENUMLOGFONTEXDVA :: ^struct {
elfEnumLogfontEx : ENUMLOGFONTEXA,
elfDesignVector : DESIGNVECTOR,
};
ENUMLOGFONTEXDVW :: struct {
elfEnumLogfontEx : ENUMLOGFONTEXW,
elfDesignVector : DESIGNVECTOR,
};
PENUMLOGFONTEXDVW :: ^struct {
elfEnumLogfontEx : ENUMLOGFONTEXW,
elfDesignVector : DESIGNVECTOR,
};
LPENUMLOGFONTEXDVW :: ^struct {
elfEnumLogfontEx : ENUMLOGFONTEXW,
elfDesignVector : DESIGNVECTOR,
};
ENUMLOGFONTEXDV :: ENUMLOGFONTEXDVA;
PENUMLOGFONTEXDV :: PENUMLOGFONTEXDVA;
LPENUMLOGFONTEXDV :: LPENUMLOGFONTEXDVA;
ENUMTEXTMETRICA :: struct {
etmNewTextMetricEx : NEWTEXTMETRICEXA,
etmAxesList : AXESLISTA,
};
PENUMTEXTMETRICA :: ^struct {
etmNewTextMetricEx : NEWTEXTMETRICEXA,
etmAxesList : AXESLISTA,
};
LPENUMTEXTMETRICA :: ^struct {
etmNewTextMetricEx : NEWTEXTMETRICEXA,
etmAxesList : AXESLISTA,
};
ENUMTEXTMETRICW :: struct {
etmNewTextMetricEx : NEWTEXTMETRICEXW,
etmAxesList : AXESLISTW,
};
PENUMTEXTMETRICW :: ^struct {
etmNewTextMetricEx : NEWTEXTMETRICEXW,
etmAxesList : AXESLISTW,
};
LPENUMTEXTMETRICW :: ^struct {
etmNewTextMetricEx : NEWTEXTMETRICEXW,
etmAxesList : AXESLISTW,
};
ENUMTEXTMETRIC :: ENUMTEXTMETRICA;
PENUMTEXTMETRIC :: PENUMTEXTMETRICA;
LPENUMTEXTMETRIC :: LPENUMTEXTMETRICA;
COLOR16 :: USHORT;
TRIVERTEX :: struct {
x : LONG,
y : LONG,
Red : COLOR16,
Green : COLOR16,
Blue : COLOR16,
Alpha : COLOR16,
};
PTRIVERTEX :: ^struct {
x : LONG,
y : LONG,
Red : COLOR16,
Green : COLOR16,
Blue : COLOR16,
Alpha : COLOR16,
};
LPTRIVERTEX :: ^struct {
x : LONG,
y : LONG,
Red : COLOR16,
Green : COLOR16,
Blue : COLOR16,
Alpha : COLOR16,
};
GRADIENT_TRIANGLE :: struct {
Vertex1 : ULONG,
Vertex2 : ULONG,
Vertex3 : ULONG,
};
PGRADIENT_TRIANGLE :: ^struct {
Vertex1 : ULONG,
Vertex2 : ULONG,
Vertex3 : ULONG,
};
LPGRADIENT_TRIANGLE :: ^struct {
Vertex1 : ULONG,
Vertex2 : ULONG,
Vertex3 : ULONG,
};
GRADIENT_RECT :: struct {
UpperLeft : ULONG,
LowerRight : ULONG,
};
PGRADIENT_RECT :: ^struct {
UpperLeft : ULONG,
LowerRight : ULONG,
};
LPGRADIENT_RECT :: ^struct {
UpperLeft : ULONG,
LowerRight : ULONG,
};
BLENDFUNCTION :: struct {
BlendOp : BYTE,
BlendFlags : BYTE,
SourceConstantAlpha : BYTE,
AlphaFormat : BYTE,
};
PBLENDFUNCTION :: ^struct {
BlendOp : BYTE,
BlendFlags : BYTE,
SourceConstantAlpha : BYTE,
AlphaFormat : BYTE,
};
MFENUMPROC :: (proc(hdc : HDC, lpht : ^HANDLETABLE, lpMR : ^METARECORD, nObj : i32, param : LPARAM) -> i32);
ENHMFENUMPROC :: (proc(hdc : HDC, lpht : ^HANDLETABLE, lpmr : ^ENHMETARECORD, nHandles : i32, data : LPARAM) -> i32);
DIBSECTION :: struct {
dsBm : BITMAP,
dsBmih : BITMAPINFOHEADER,
dsBitfields : [3]u32,
dshSection : HANDLE,
dsOffset : u32,
};
LPDIBSECTION :: ^struct {
dsBm : BITMAP,
dsBmih : BITMAPINFOHEADER,
dsBitfields : [3]u32,
dshSection : HANDLE,
dsOffset : u32,
};
PDIBSECTION :: ^struct {
dsBm : BITMAP,
dsBmih : BITMAPINFOHEADER,
dsBitfields : [3]u32,
dshSection : HANDLE,
dsOffset : u32,
};
COLORADJUSTMENT :: struct {
caSize : u16,
caFlags : u16,
caIlluminantIndex : u16,
caRedGamma : u16,
caGreenGamma : u16,
caBlueGamma : u16,
caReferenceBlack : u16,
caReferenceWhite : u16,
caContrast : SHORT,
caBrightness : SHORT,
caColorfulness : SHORT,
caRedGreenTint : SHORT,
};
PCOLORADJUSTMENT :: ^struct {
caSize : u16,
caFlags : u16,
caIlluminantIndex : u16,
caRedGamma : u16,
caGreenGamma : u16,
caBlueGamma : u16,
caReferenceBlack : u16,
caReferenceWhite : u16,
caContrast : SHORT,
caBrightness : SHORT,
caColorfulness : SHORT,
caRedGreenTint : SHORT,
};
LPCOLORADJUSTMENT :: ^struct {
caSize : u16,
caFlags : u16,
caIlluminantIndex : u16,
caRedGamma : u16,
caGreenGamma : u16,
caBlueGamma : u16,
caReferenceBlack : u16,
caReferenceWhite : u16,
caContrast : SHORT,
caBrightness : SHORT,
caColorfulness : SHORT,
caRedGreenTint : SHORT,
};
ABORTPROC :: (proc(HDC, i32) -> BOOL);
DOCINFOA :: struct {
cbSize : i32,
lpszDocName : LPCSTR,
lpszOutput : LPCSTR,
lpszDatatype : LPCSTR,
fwType : u32,
};
LPDOCINFOA :: ^struct {
cbSize : i32,
lpszDocName : LPCSTR,
lpszOutput : LPCSTR,
lpszDatatype : LPCSTR,
fwType : u32,
};
DOCINFOW :: struct {
cbSize : i32,
lpszDocName : LPCWSTR,
lpszOutput : LPCWSTR,
lpszDatatype : LPCWSTR,
fwType : u32,
};
LPDOCINFOW :: ^struct {
cbSize : i32,
lpszDocName : LPCWSTR,
lpszOutput : LPCWSTR,
lpszDatatype : LPCWSTR,
fwType : u32,
};
DOCINFO :: DOCINFOA;
LPDOCINFO :: LPDOCINFOA;
KERNINGPAIR :: struct {
wFirst : u16,
wSecond : u16,
iKernAmount : i32,
};
LPKERNINGPAIR :: ^struct {
wFirst : u16,
wSecond : u16,
iKernAmount : i32,
};
ICMENUMPROCA :: (proc(LPSTR, LPARAM) -> i32);
ICMENUMPROCW :: (proc(LPWSTR, LPARAM) -> i32);
EMR :: struct {
iType : u32,
nSize : u32,
};
PEMR :: ^struct {
iType : u32,
nSize : u32,
};
EMRTEXT :: struct {
ptlReference : POINTL,
nChars : u32,
offString : u32,
fOptions : u32,
rcl : RECTL,
offDx : u32,
};
PEMRTEXT :: ^struct {
ptlReference : POINTL,
nChars : u32,
offString : u32,
fOptions : u32,
rcl : RECTL,
offDx : u32,
};
EMRABORTPATH :: struct {
emr : EMR,
};
PEMRABORTPATH :: ^struct {
emr : EMR,
};
EMRBEGINPATH :: struct {
emr : EMR,
};
PEMRBEGINPATH :: ^struct {
emr : EMR,
};
EMRENDPATH :: struct {
emr : EMR,
};
PEMRENDPATH :: ^struct {
emr : EMR,
};
EMRCLOSEFIGURE :: struct {
emr : EMR,
};
PEMRCLOSEFIGURE :: ^struct {
emr : EMR,
};
EMRFLATTENPATH :: struct {
emr : EMR,
};
PEMRFLATTENPATH :: ^struct {
emr : EMR,
};
EMRWIDENPATH :: struct {
emr : EMR,
};
PEMRWIDENPATH :: ^struct {
emr : EMR,
};
EMRSETMETARGN :: struct {
emr : EMR,
};
PEMRSETMETARGN :: ^struct {
emr : EMR,
};
EMRSAVEDC :: struct {
emr : EMR,
};
PEMRSAVEDC :: ^struct {
emr : EMR,
};
EMRREALIZEPALETTE :: struct {
emr : EMR,
};
PEMRREALIZEPALETTE :: ^struct {
emr : EMR,
};
EMRSELECTCLIPPATH :: struct {
emr : EMR,
iMode : u32,
};
PEMRSELECTCLIPPATH :: ^struct {
emr : EMR,
iMode : u32,
};
EMRSETBKMODE :: struct {
emr : EMR,
iMode : u32,
};
PEMRSETBKMODE :: ^struct {
emr : EMR,
iMode : u32,
};
EMRSETMAPMODE :: struct {
emr : EMR,
iMode : u32,
};
PEMRSETMAPMODE :: ^struct {
emr : EMR,
iMode : u32,
};
EMRSETLAYOUT :: struct {
emr : EMR,
iMode : u32,
};
PEMRSETLAYOUT :: ^struct {
emr : EMR,
iMode : u32,
};
EMRSETPOLYFILLMODE :: struct {
emr : EMR,
iMode : u32,
};
PEMRSETPOLYFILLMODE :: ^struct {
emr : EMR,
iMode : u32,
};
EMRSETROP2 :: struct {
emr : EMR,
iMode : u32,
};
PEMRSETROP2 :: ^struct {
emr : EMR,
iMode : u32,
};
EMRSETSTRETCHBLTMODE :: struct {
emr : EMR,
iMode : u32,
};
PEMRSETSTRETCHBLTMODE :: ^struct {
emr : EMR,
iMode : u32,
};
EMRSETICMMODE :: struct {
emr : EMR,
iMode : u32,
};
PEMRSETICMMODE :: ^struct {
emr : EMR,
iMode : u32,
};
EMRSETTEXTALIGN :: struct {
emr : EMR,
iMode : u32,
};
PEMRSETTEXTALIGN :: ^struct {
emr : EMR,
iMode : u32,
};
EMRSETMITERLIMIT :: struct {
emr : EMR,
eMiterLimit : FLOAT,
};
PEMRSETMITERLIMIT :: ^struct {
emr : EMR,
eMiterLimit : FLOAT,
};
EMRRESTOREDC :: struct {
emr : EMR,
iRelative : LONG,
};
PEMRRESTOREDC :: ^struct {
emr : EMR,
iRelative : LONG,
};
EMRSETARCDIRECTION :: struct {
emr : EMR,
iArcDirection : u32,
};
PEMRSETARCDIRECTION :: ^struct {
emr : EMR,
iArcDirection : u32,
};
EMRSETMAPPERFLAGS :: struct {
emr : EMR,
dwFlags : u32,
};
PEMRSETMAPPERFLAGS :: ^struct {
emr : EMR,
dwFlags : u32,
};
EMRSETBKCOLOR :: struct {
emr : EMR,
crColor : COLORREF,
};
PEMRSETBKCOLOR :: ^struct {
emr : EMR,
crColor : COLORREF,
};
EMRSETTEXTCOLOR :: struct {
emr : EMR,
crColor : COLORREF,
};
PEMRSETTEXTCOLOR :: ^struct {
emr : EMR,
crColor : COLORREF,
};
EMRSELECTOBJECT :: struct {
emr : EMR,
ihObject : u32,
};
PEMRSELECTOBJECT :: ^struct {
emr : EMR,
ihObject : u32,
};
EMRDELETEOBJECT :: struct {
emr : EMR,
ihObject : u32,
};
PEMRDELETEOBJECT :: ^struct {
emr : EMR,
ihObject : u32,
};
EMRSELECTPALETTE :: struct {
emr : EMR,
ihPal : u32,
};
PEMRSELECTPALETTE :: ^struct {
emr : EMR,
ihPal : u32,
};
EMRRESIZEPALETTE :: struct {
emr : EMR,
ihPal : u32,
cEntries : u32,
};
PEMRRESIZEPALETTE :: ^struct {
emr : EMR,
ihPal : u32,
cEntries : u32,
};
EMRSETPALETTEENTRIES :: struct {
emr : EMR,
ihPal : u32,
iStart : u32,
cEntries : u32,
aPalEntries : [1]PALETTEENTRY,
};
PEMRSETPALETTEENTRIES :: ^struct {
emr : EMR,
ihPal : u32,
iStart : u32,
cEntries : u32,
aPalEntries : [1]PALETTEENTRY,
};
EMRSETCOLORADJUSTMENT :: struct {
emr : EMR,
ColorAdjustment : COLORADJUSTMENT,
};
PEMRSETCOLORADJUSTMENT :: ^struct {
emr : EMR,
ColorAdjustment : COLORADJUSTMENT,
};
EMRGDICOMMENT :: struct {
emr : EMR,
cbData : u32,
Data : [1]BYTE,
};
PEMRGDICOMMENT :: ^struct {
emr : EMR,
cbData : u32,
Data : [1]BYTE,
};
EMREOF :: struct {
emr : EMR,
nPalEntries : u32,
offPalEntries : u32,
nSizeLast : u32,
};
PEMREOF :: ^struct {
emr : EMR,
nPalEntries : u32,
offPalEntries : u32,
nSizeLast : u32,
};
EMRLINETO :: struct {
emr : EMR,
ptl : POINTL,
};
PEMRLINETO :: ^struct {
emr : EMR,
ptl : POINTL,
};
EMRMOVETOEX :: struct {
emr : EMR,
ptl : POINTL,
};
PEMRMOVETOEX :: ^struct {
emr : EMR,
ptl : POINTL,
};
EMROFFSETCLIPRGN :: struct {
emr : EMR,
ptlOffset : POINTL,
};
PEMROFFSETCLIPRGN :: ^struct {
emr : EMR,
ptlOffset : POINTL,
};
EMRFILLPATH :: struct {
emr : EMR,
rclBounds : RECTL,
};
PEMRFILLPATH :: ^struct {
emr : EMR,
rclBounds : RECTL,
};
EMRSTROKEANDFILLPATH :: struct {
emr : EMR,
rclBounds : RECTL,
};
PEMRSTROKEANDFILLPATH :: ^struct {
emr : EMR,
rclBounds : RECTL,
};
EMRSTROKEPATH :: struct {
emr : EMR,
rclBounds : RECTL,
};
PEMRSTROKEPATH :: ^struct {
emr : EMR,
rclBounds : RECTL,
};
EMREXCLUDECLIPRECT :: struct {
emr : EMR,
rclClip : RECTL,
};
PEMREXCLUDECLIPRECT :: ^struct {
emr : EMR,
rclClip : RECTL,
};
EMRINTERSECTCLIPRECT :: struct {
emr : EMR,
rclClip : RECTL,
};
PEMRINTERSECTCLIPRECT :: ^struct {
emr : EMR,
rclClip : RECTL,
};
EMRSETVIEWPORTORGEX :: struct {
emr : EMR,
ptlOrigin : POINTL,
};
PEMRSETVIEWPORTORGEX :: ^struct {
emr : EMR,
ptlOrigin : POINTL,
};
EMRSETWINDOWORGEX :: struct {
emr : EMR,
ptlOrigin : POINTL,
};
PEMRSETWINDOWORGEX :: ^struct {
emr : EMR,
ptlOrigin : POINTL,
};
EMRSETBRUSHORGEX :: struct {
emr : EMR,
ptlOrigin : POINTL,
};
PEMRSETBRUSHORGEX :: ^struct {
emr : EMR,
ptlOrigin : POINTL,
};
EMRSETVIEWPORTEXTEX :: struct {
emr : EMR,
szlExtent : SIZEL,
};
PEMRSETVIEWPORTEXTEX :: ^struct {
emr : EMR,
szlExtent : SIZEL,
};
EMRSETWINDOWEXTEX :: struct {
emr : EMR,
szlExtent : SIZEL,
};
PEMRSETWINDOWEXTEX :: ^struct {
emr : EMR,
szlExtent : SIZEL,
};
EMRSCALEVIEWPORTEXTEX :: struct {
emr : EMR,
xNum : LONG,
xDenom : LONG,
yNum : LONG,
yDenom : LONG,
};
PEMRSCALEVIEWPORTEXTEX :: ^struct {
emr : EMR,
xNum : LONG,
xDenom : LONG,
yNum : LONG,
yDenom : LONG,
};
EMRSCALEWINDOWEXTEX :: struct {
emr : EMR,
xNum : LONG,
xDenom : LONG,
yNum : LONG,
yDenom : LONG,
};
PEMRSCALEWINDOWEXTEX :: ^struct {
emr : EMR,
xNum : LONG,
xDenom : LONG,
yNum : LONG,
yDenom : LONG,
};
EMRSETWORLDTRANSFORM :: struct {
emr : EMR,
xform : XFORM,
};
PEMRSETWORLDTRANSFORM :: ^struct {
emr : EMR,
xform : XFORM,
};
EMRMODIFYWORLDTRANSFORM :: struct {
emr : EMR,
xform : XFORM,
iMode : u32,
};
PEMRMODIFYWORLDTRANSFORM :: ^struct {
emr : EMR,
xform : XFORM,
iMode : u32,
};
EMRSETPIXELV :: struct {
emr : EMR,
ptlPixel : POINTL,
crColor : COLORREF,
};
PEMRSETPIXELV :: ^struct {
emr : EMR,
ptlPixel : POINTL,
crColor : COLORREF,
};
EMREXTFLOODFILL :: struct {
emr : EMR,
ptlStart : POINTL,
crColor : COLORREF,
iMode : u32,
};
PEMREXTFLOODFILL :: ^struct {
emr : EMR,
ptlStart : POINTL,
crColor : COLORREF,
iMode : u32,
};
EMRELLIPSE :: struct {
emr : EMR,
rclBox : RECTL,
};
PEMRELLIPSE :: ^struct {
emr : EMR,
rclBox : RECTL,
};
EMRRECTANGLE :: struct {
emr : EMR,
rclBox : RECTL,
};
PEMRRECTANGLE :: ^struct {
emr : EMR,
rclBox : RECTL,
};
EMRROUNDRECT :: struct {
emr : EMR,
rclBox : RECTL,
szlCorner : SIZEL,
};
PEMRROUNDRECT :: ^struct {
emr : EMR,
rclBox : RECTL,
szlCorner : SIZEL,
};
EMRARC :: struct {
emr : EMR,
rclBox : RECTL,
ptlStart : POINTL,
ptlEnd : POINTL,
};
PEMRARC :: ^struct {
emr : EMR,
rclBox : RECTL,
ptlStart : POINTL,
ptlEnd : POINTL,
};
EMRARCTO :: struct {
emr : EMR,
rclBox : RECTL,
ptlStart : POINTL,
ptlEnd : POINTL,
};
PEMRARCTO :: ^struct {
emr : EMR,
rclBox : RECTL,
ptlStart : POINTL,
ptlEnd : POINTL,
};
EMRCHORD :: struct {
emr : EMR,
rclBox : RECTL,
ptlStart : POINTL,
ptlEnd : POINTL,
};
PEMRCHORD :: ^struct {
emr : EMR,
rclBox : RECTL,
ptlStart : POINTL,
ptlEnd : POINTL,
};
EMRPIE :: struct {
emr : EMR,
rclBox : RECTL,
ptlStart : POINTL,
ptlEnd : POINTL,
};
PEMRPIE :: ^struct {
emr : EMR,
rclBox : RECTL,
ptlStart : POINTL,
ptlEnd : POINTL,
};
EMRANGLEARC :: struct {
emr : EMR,
ptlCenter : POINTL,
nRadius : u32,
eStartAngle : FLOAT,
eSweepAngle : FLOAT,
};
PEMRANGLEARC :: ^struct {
emr : EMR,
ptlCenter : POINTL,
nRadius : u32,
eStartAngle : FLOAT,
eSweepAngle : FLOAT,
};
EMRPOLYLINE :: struct {
emr : EMR,
rclBounds : RECTL,
cptl : u32,
aptl : [1]POINTL,
};
PEMRPOLYLINE :: ^struct {
emr : EMR,
rclBounds : RECTL,
cptl : u32,
aptl : [1]POINTL,
};
EMRPOLYBEZIER :: struct {
emr : EMR,
rclBounds : RECTL,
cptl : u32,
aptl : [1]POINTL,
};
PEMRPOLYBEZIER :: ^struct {
emr : EMR,
rclBounds : RECTL,
cptl : u32,
aptl : [1]POINTL,
};
EMRPOLYGON :: struct {
emr : EMR,
rclBounds : RECTL,
cptl : u32,
aptl : [1]POINTL,
};
PEMRPOLYGON :: ^struct {
emr : EMR,
rclBounds : RECTL,
cptl : u32,
aptl : [1]POINTL,
};
EMRPOLYBEZIERTO :: struct {
emr : EMR,
rclBounds : RECTL,
cptl : u32,
aptl : [1]POINTL,
};
PEMRPOLYBEZIERTO :: ^struct {
emr : EMR,
rclBounds : RECTL,
cptl : u32,
aptl : [1]POINTL,
};
EMRPOLYLINETO :: struct {
emr : EMR,
rclBounds : RECTL,
cptl : u32,
aptl : [1]POINTL,
};
PEMRPOLYLINETO :: ^struct {
emr : EMR,
rclBounds : RECTL,
cptl : u32,
aptl : [1]POINTL,
};
EMRPOLYLINE16 :: struct {
emr : EMR,
rclBounds : RECTL,
cpts : u32,
apts : [1]POINTS,
};
PEMRPOLYLINE16 :: ^struct {
emr : EMR,
rclBounds : RECTL,
cpts : u32,
apts : [1]POINTS,
};
EMRPOLYBEZIER16 :: struct {
emr : EMR,
rclBounds : RECTL,
cpts : u32,
apts : [1]POINTS,
};
PEMRPOLYBEZIER16 :: ^struct {
emr : EMR,
rclBounds : RECTL,
cpts : u32,
apts : [1]POINTS,
};
EMRPOLYGON16 :: struct {
emr : EMR,
rclBounds : RECTL,
cpts : u32,
apts : [1]POINTS,
};
PEMRPOLYGON16 :: ^struct {
emr : EMR,
rclBounds : RECTL,
cpts : u32,
apts : [1]POINTS,
};
EMRPOLYBEZIERTO16 :: struct {
emr : EMR,
rclBounds : RECTL,
cpts : u32,
apts : [1]POINTS,
};
PEMRPOLYBEZIERTO16 :: ^struct {
emr : EMR,
rclBounds : RECTL,
cpts : u32,
apts : [1]POINTS,
};
EMRPOLYLINETO16 :: struct {
emr : EMR,
rclBounds : RECTL,
cpts : u32,
apts : [1]POINTS,
};
PEMRPOLYLINETO16 :: ^struct {
emr : EMR,
rclBounds : RECTL,
cpts : u32,
apts : [1]POINTS,
};
EMRPOLYDRAW :: struct {
emr : EMR,
rclBounds : RECTL,
cptl : u32,
aptl : [1]POINTL,
abTypes : [1]BYTE,
};
PEMRPOLYDRAW :: ^struct {
emr : EMR,
rclBounds : RECTL,
cptl : u32,
aptl : [1]POINTL,
abTypes : [1]BYTE,
};
EMRPOLYDRAW16 :: struct {
emr : EMR,
rclBounds : RECTL,
cpts : u32,
apts : [1]POINTS,
abTypes : [1]BYTE,
};
PEMRPOLYDRAW16 :: ^struct {
emr : EMR,
rclBounds : RECTL,
cpts : u32,
apts : [1]POINTS,
abTypes : [1]BYTE,
};
EMRPOLYPOLYLINE :: struct {
emr : EMR,
rclBounds : RECTL,
nPolys : u32,
cptl : u32,
aPolyCounts : [1]u32,
aptl : [1]POINTL,
};
PEMRPOLYPOLYLINE :: ^struct {
emr : EMR,
rclBounds : RECTL,
nPolys : u32,
cptl : u32,
aPolyCounts : [1]u32,
aptl : [1]POINTL,
};
EMRPOLYPOLYGON :: struct {
emr : EMR,
rclBounds : RECTL,
nPolys : u32,
cptl : u32,
aPolyCounts : [1]u32,
aptl : [1]POINTL,
};
PEMRPOLYPOLYGON :: ^struct {
emr : EMR,
rclBounds : RECTL,
nPolys : u32,
cptl : u32,
aPolyCounts : [1]u32,
aptl : [1]POINTL,
};
EMRPOLYPOLYLINE16 :: struct {
emr : EMR,
rclBounds : RECTL,
nPolys : u32,
cpts : u32,
aPolyCounts : [1]u32,
apts : [1]POINTS,
};
PEMRPOLYPOLYLINE16 :: ^struct {
emr : EMR,
rclBounds : RECTL,
nPolys : u32,
cpts : u32,
aPolyCounts : [1]u32,
apts : [1]POINTS,
};
EMRPOLYPOLYGON16 :: struct {
emr : EMR,
rclBounds : RECTL,
nPolys : u32,
cpts : u32,
aPolyCounts : [1]u32,
apts : [1]POINTS,
};
PEMRPOLYPOLYGON16 :: ^struct {
emr : EMR,
rclBounds : RECTL,
nPolys : u32,
cpts : u32,
aPolyCounts : [1]u32,
apts : [1]POINTS,
};
EMRINVERTRGN :: struct {
emr : EMR,
rclBounds : RECTL,
cbRgnData : u32,
RgnData : [1]BYTE,
};
PEMRINVERTRGN :: ^struct {
emr : EMR,
rclBounds : RECTL,
cbRgnData : u32,
RgnData : [1]BYTE,
};
EMRPAINTRGN :: struct {
emr : EMR,
rclBounds : RECTL,
cbRgnData : u32,
RgnData : [1]BYTE,
};
PEMRPAINTRGN :: ^struct {
emr : EMR,
rclBounds : RECTL,
cbRgnData : u32,
RgnData : [1]BYTE,
};
EMRFILLRGN :: struct {
emr : EMR,
rclBounds : RECTL,
cbRgnData : u32,
ihBrush : u32,
RgnData : [1]BYTE,
};
PEMRFILLRGN :: ^struct {
emr : EMR,
rclBounds : RECTL,
cbRgnData : u32,
ihBrush : u32,
RgnData : [1]BYTE,
};
EMRFRAMERGN :: struct {
emr : EMR,
rclBounds : RECTL,
cbRgnData : u32,
ihBrush : u32,
szlStroke : SIZEL,
RgnData : [1]BYTE,
};
PEMRFRAMERGN :: ^struct {
emr : EMR,
rclBounds : RECTL,
cbRgnData : u32,
ihBrush : u32,
szlStroke : SIZEL,
RgnData : [1]BYTE,
};
EMREXTSELECTCLIPRGN :: struct {
emr : EMR,
cbRgnData : u32,
iMode : u32,
RgnData : [1]BYTE,
};
PEMREXTSELECTCLIPRGN :: ^struct {
emr : EMR,
cbRgnData : u32,
iMode : u32,
RgnData : [1]BYTE,
};
EMREXTTEXTOUTA :: struct {
emr : EMR,
rclBounds : RECTL,
iGraphicsMode : u32,
exScale : FLOAT,
eyScale : FLOAT,
emrtext : EMRTEXT,
};
PEMREXTTEXTOUTA :: ^struct {
emr : EMR,
rclBounds : RECTL,
iGraphicsMode : u32,
exScale : FLOAT,
eyScale : FLOAT,
emrtext : EMRTEXT,
};
EMREXTTEXTOUTW :: struct {
emr : EMR,
rclBounds : RECTL,
iGraphicsMode : u32,
exScale : FLOAT,
eyScale : FLOAT,
emrtext : EMRTEXT,
};
PEMREXTTEXTOUTW :: ^struct {
emr : EMR,
rclBounds : RECTL,
iGraphicsMode : u32,
exScale : FLOAT,
eyScale : FLOAT,
emrtext : EMRTEXT,
};
EMRPOLYTEXTOUTA :: struct {
emr : EMR,
rclBounds : RECTL,
iGraphicsMode : u32,
exScale : FLOAT,
eyScale : FLOAT,
cStrings : LONG,
aemrtext : [1]EMRTEXT,
};
PEMRPOLYTEXTOUTA :: ^struct {
emr : EMR,
rclBounds : RECTL,
iGraphicsMode : u32,
exScale : FLOAT,
eyScale : FLOAT,
cStrings : LONG,
aemrtext : [1]EMRTEXT,
};
EMRPOLYTEXTOUTW :: struct {
emr : EMR,
rclBounds : RECTL,
iGraphicsMode : u32,
exScale : FLOAT,
eyScale : FLOAT,
cStrings : LONG,
aemrtext : [1]EMRTEXT,
};
PEMRPOLYTEXTOUTW :: ^struct {
emr : EMR,
rclBounds : RECTL,
iGraphicsMode : u32,
exScale : FLOAT,
eyScale : FLOAT,
cStrings : LONG,
aemrtext : [1]EMRTEXT,
};
EMRBITBLT :: struct {
emr : EMR,
rclBounds : RECTL,
xDest : LONG,
yDest : LONG,
cxDest : LONG,
cyDest : LONG,
dwRop : u32,
xSrc : LONG,
ySrc : LONG,
xformSrc : XFORM,
crBkColorSrc : COLORREF,
iUsageSrc : u32,
offBmiSrc : u32,
cbBmiSrc : u32,
offBitsSrc : u32,
cbBitsSrc : u32,
};
PEMRBITBLT :: ^struct {
emr : EMR,
rclBounds : RECTL,
xDest : LONG,
yDest : LONG,
cxDest : LONG,
cyDest : LONG,
dwRop : u32,
xSrc : LONG,
ySrc : LONG,
xformSrc : XFORM,
crBkColorSrc : COLORREF,
iUsageSrc : u32,
offBmiSrc : u32,
cbBmiSrc : u32,
offBitsSrc : u32,
cbBitsSrc : u32,
};
EMRSTRETCHBLT :: struct {
emr : EMR,
rclBounds : RECTL,
xDest : LONG,
yDest : LONG,
cxDest : LONG,
cyDest : LONG,
dwRop : u32,
xSrc : LONG,
ySrc : LONG,
xformSrc : XFORM,
crBkColorSrc : COLORREF,
iUsageSrc : u32,
offBmiSrc : u32,
cbBmiSrc : u32,
offBitsSrc : u32,
cbBitsSrc : u32,
cxSrc : LONG,
cySrc : LONG,
};
PEMRSTRETCHBLT :: ^struct {
emr : EMR,
rclBounds : RECTL,
xDest : LONG,
yDest : LONG,
cxDest : LONG,
cyDest : LONG,
dwRop : u32,
xSrc : LONG,
ySrc : LONG,
xformSrc : XFORM,
crBkColorSrc : COLORREF,
iUsageSrc : u32,
offBmiSrc : u32,
cbBmiSrc : u32,
offBitsSrc : u32,
cbBitsSrc : u32,
cxSrc : LONG,
cySrc : LONG,
};
EMRMASKBLT :: struct {
emr : EMR,
rclBounds : RECTL,
xDest : LONG,
yDest : LONG,
cxDest : LONG,
cyDest : LONG,
dwRop : u32,
xSrc : LONG,
ySrc : LONG,
xformSrc : XFORM,
crBkColorSrc : COLORREF,
iUsageSrc : u32,
offBmiSrc : u32,
cbBmiSrc : u32,
offBitsSrc : u32,
cbBitsSrc : u32,
xMask : LONG,
yMask : LONG,
iUsageMask : u32,
offBmiMask : u32,
cbBmiMask : u32,
offBitsMask : u32,
cbBitsMask : u32,
};
PEMRMASKBLT :: ^struct {
emr : EMR,
rclBounds : RECTL,
xDest : LONG,
yDest : LONG,
cxDest : LONG,
cyDest : LONG,
dwRop : u32,
xSrc : LONG,
ySrc : LONG,
xformSrc : XFORM,
crBkColorSrc : COLORREF,
iUsageSrc : u32,
offBmiSrc : u32,
cbBmiSrc : u32,
offBitsSrc : u32,
cbBitsSrc : u32,
xMask : LONG,
yMask : LONG,
iUsageMask : u32,
offBmiMask : u32,
cbBmiMask : u32,
offBitsMask : u32,
cbBitsMask : u32,
};
EMRPLGBLT :: struct {
emr : EMR,
rclBounds : RECTL,
aptlDest : [3]POINTL,
xSrc : LONG,
ySrc : LONG,
cxSrc : LONG,
cySrc : LONG,
xformSrc : XFORM,
crBkColorSrc : COLORREF,
iUsageSrc : u32,
offBmiSrc : u32,
cbBmiSrc : u32,
offBitsSrc : u32,
cbBitsSrc : u32,
xMask : LONG,
yMask : LONG,
iUsageMask : u32,
offBmiMask : u32,
cbBmiMask : u32,
offBitsMask : u32,
cbBitsMask : u32,
};
PEMRPLGBLT :: ^struct {
emr : EMR,
rclBounds : RECTL,
aptlDest : [3]POINTL,
xSrc : LONG,
ySrc : LONG,
cxSrc : LONG,
cySrc : LONG,
xformSrc : XFORM,
crBkColorSrc : COLORREF,
iUsageSrc : u32,
offBmiSrc : u32,
cbBmiSrc : u32,
offBitsSrc : u32,
cbBitsSrc : u32,
xMask : LONG,
yMask : LONG,
iUsageMask : u32,
offBmiMask : u32,
cbBmiMask : u32,
offBitsMask : u32,
cbBitsMask : u32,
};
EMRSETDIBITSTODEVICE :: struct {
emr : EMR,
rclBounds : RECTL,
xDest : LONG,
yDest : LONG,
xSrc : LONG,
ySrc : LONG,
cxSrc : LONG,
cySrc : LONG,
offBmiSrc : u32,
cbBmiSrc : u32,
offBitsSrc : u32,
cbBitsSrc : u32,
iUsageSrc : u32,
iStartScan : u32,
cScans : u32,
};
PEMRSETDIBITSTODEVICE :: ^struct {
emr : EMR,
rclBounds : RECTL,
xDest : LONG,
yDest : LONG,
xSrc : LONG,
ySrc : LONG,
cxSrc : LONG,
cySrc : LONG,
offBmiSrc : u32,
cbBmiSrc : u32,
offBitsSrc : u32,
cbBitsSrc : u32,
iUsageSrc : u32,
iStartScan : u32,
cScans : u32,
};
EMRSTRETCHDIBITS :: struct {
emr : EMR,
rclBounds : RECTL,
xDest : LONG,
yDest : LONG,
xSrc : LONG,
ySrc : LONG,
cxSrc : LONG,
cySrc : LONG,
offBmiSrc : u32,
cbBmiSrc : u32,
offBitsSrc : u32,
cbBitsSrc : u32,
iUsageSrc : u32,
dwRop : u32,
cxDest : LONG,
cyDest : LONG,
};
PEMRSTRETCHDIBITS :: ^struct {
emr : EMR,
rclBounds : RECTL,
xDest : LONG,
yDest : LONG,
xSrc : LONG,
ySrc : LONG,
cxSrc : LONG,
cySrc : LONG,
offBmiSrc : u32,
cbBmiSrc : u32,
offBitsSrc : u32,
cbBitsSrc : u32,
iUsageSrc : u32,
dwRop : u32,
cxDest : LONG,
cyDest : LONG,
};
EMREXTCREATEFONTINDIRECTW :: struct {
emr : EMR,
ihFont : u32,
elfw : EXTLOGFONTW,
};
PEMREXTCREATEFONTINDIRECTW :: ^struct {
emr : EMR,
ihFont : u32,
elfw : EXTLOGFONTW,
};
EMRCREATEPALETTE :: struct {
emr : EMR,
ihPal : u32,
lgpl : LOGPALETTE,
};
PEMRCREATEPALETTE :: ^struct {
emr : EMR,
ihPal : u32,
lgpl : LOGPALETTE,
};
EMRCREATEPEN :: struct {
emr : EMR,
ihPen : u32,
lopn : LOGPEN,
};
PEMRCREATEPEN :: ^struct {
emr : EMR,
ihPen : u32,
lopn : LOGPEN,
};
EMREXTCREATEPEN :: struct {
emr : EMR,
ihPen : u32,
offBmi : u32,
cbBmi : u32,
offBits : u32,
cbBits : u32,
elp : EXTLOGPEN32,
};
PEMREXTCREATEPEN :: ^struct {
emr : EMR,
ihPen : u32,
offBmi : u32,
cbBmi : u32,
offBits : u32,
cbBits : u32,
elp : EXTLOGPEN32,
};
EMRCREATEBRUSHINDIRECT :: struct {
emr : EMR,
ihBrush : u32,
lb : LOGBRUSH32,
};
PEMRCREATEBRUSHINDIRECT :: ^struct {
emr : EMR,
ihBrush : u32,
lb : LOGBRUSH32,
};
EMRCREATEMONOBRUSH :: struct {
emr : EMR,
ihBrush : u32,
iUsage : u32,
offBmi : u32,
cbBmi : u32,
offBits : u32,
cbBits : u32,
};
PEMRCREATEMONOBRUSH :: ^struct {
emr : EMR,
ihBrush : u32,
iUsage : u32,
offBmi : u32,
cbBmi : u32,
offBits : u32,
cbBits : u32,
};
EMRCREATEDIBPATTERNBRUSHPT :: struct {
emr : EMR,
ihBrush : u32,
iUsage : u32,
offBmi : u32,
cbBmi : u32,
offBits : u32,
cbBits : u32,
};
PEMRCREATEDIBPATTERNBRUSHPT :: ^struct {
emr : EMR,
ihBrush : u32,
iUsage : u32,
offBmi : u32,
cbBmi : u32,
offBits : u32,
cbBits : u32,
};
EMRFORMAT :: struct {
dSignature : u32,
nVersion : u32,
cbData : u32,
offData : u32,
};
PEMRFORMAT :: ^struct {
dSignature : u32,
nVersion : u32,
cbData : u32,
offData : u32,
};
EMRGLSRECORD :: struct {
emr : EMR,
cbData : u32,
Data : [1]BYTE,
};
PEMRGLSRECORD :: ^struct {
emr : EMR,
cbData : u32,
Data : [1]BYTE,
};
EMRGLSBOUNDEDRECORD :: struct {
emr : EMR,
rclBounds : RECTL,
cbData : u32,
Data : [1]BYTE,
};
PEMRGLSBOUNDEDRECORD :: ^struct {
emr : EMR,
rclBounds : RECTL,
cbData : u32,
Data : [1]BYTE,
};
EMRPIXELFORMAT :: struct {
emr : EMR,
pfd : PIXELFORMATDESCRIPTOR,
};
PEMRPIXELFORMAT :: ^struct {
emr : EMR,
pfd : PIXELFORMATDESCRIPTOR,
};
EMRCREATECOLORSPACE :: struct {
emr : EMR,
ihCS : u32,
lcs : LOGCOLORSPACEA,
};
PEMRCREATECOLORSPACE :: ^struct {
emr : EMR,
ihCS : u32,
lcs : LOGCOLORSPACEA,
};
EMRSETCOLORSPACE :: struct {
emr : EMR,
ihCS : u32,
};
PEMRSETCOLORSPACE :: ^struct {
emr : EMR,
ihCS : u32,
};
EMRSELECTCOLORSPACE :: struct {
emr : EMR,
ihCS : u32,
};
PEMRSELECTCOLORSPACE :: ^struct {
emr : EMR,
ihCS : u32,
};
EMRDELETECOLORSPACE :: struct {
emr : EMR,
ihCS : u32,
};
PEMRDELETECOLORSPACE :: ^struct {
emr : EMR,
ihCS : u32,
};
EMREXTESCAPE :: struct {
emr : EMR,
iEscape : INT,
cbEscData : INT,
EscData : [1]BYTE,
};
PEMREXTESCAPE :: ^struct {
emr : EMR,
iEscape : INT,
cbEscData : INT,
EscData : [1]BYTE,
};
EMRDRAWESCAPE :: struct {
emr : EMR,
iEscape : INT,
cbEscData : INT,
EscData : [1]BYTE,
};
PEMRDRAWESCAPE :: ^struct {
emr : EMR,
iEscape : INT,
cbEscData : INT,
EscData : [1]BYTE,
};
EMRNAMEDESCAPE :: struct {
emr : EMR,
iEscape : INT,
cbDriver : INT,
cbEscData : INT,
EscData : [1]BYTE,
};
PEMRNAMEDESCAPE :: ^struct {
emr : EMR,
iEscape : INT,
cbDriver : INT,
cbEscData : INT,
EscData : [1]BYTE,
};
EMRSETICMPROFILE :: struct {
emr : EMR,
dwFlags : u32,
cbName : u32,
cbData : u32,
Data : [1]BYTE,
};
PEMRSETICMPROFILE :: ^struct {
emr : EMR,
dwFlags : u32,
cbName : u32,
cbData : u32,
Data : [1]BYTE,
};
EMRSETICMPROFILEA :: struct {
emr : EMR,
dwFlags : u32,
cbName : u32,
cbData : u32,
Data : [1]BYTE,
};
PEMRSETICMPROFILEA :: ^struct {
emr : EMR,
dwFlags : u32,
cbName : u32,
cbData : u32,
Data : [1]BYTE,
};
EMRSETICMPROFILEW :: struct {
emr : EMR,
dwFlags : u32,
cbName : u32,
cbData : u32,
Data : [1]BYTE,
};
PEMRSETICMPROFILEW :: ^struct {
emr : EMR,
dwFlags : u32,
cbName : u32,
cbData : u32,
Data : [1]BYTE,
};
EMRCREATECOLORSPACEW :: struct {
emr : EMR,
ihCS : u32,
lcs : LOGCOLORSPACEW,
dwFlags : u32,
cbData : u32,
Data : [1]BYTE,
};
PEMRCREATECOLORSPACEW :: ^struct {
emr : EMR,
ihCS : u32,
lcs : LOGCOLORSPACEW,
dwFlags : u32,
cbData : u32,
Data : [1]BYTE,
};
EMRCOLORMATCHTOTARGET :: struct {
emr : EMR,
dwAction : u32,
dwFlags : u32,
cbName : u32,
cbData : u32,
Data : [1]BYTE,
};
PEMRCOLORMATCHTOTARGET :: ^struct {
emr : EMR,
dwAction : u32,
dwFlags : u32,
cbName : u32,
cbData : u32,
Data : [1]BYTE,
};
EMRCOLORCORRECTPALETTE :: struct {
emr : EMR,
ihPalette : u32,
nFirstEntry : u32,
nPalEntries : u32,
nReserved : u32,
};
PEMRCOLORCORRECTPALETTE :: ^struct {
emr : EMR,
ihPalette : u32,
nFirstEntry : u32,
nPalEntries : u32,
nReserved : u32,
};
EMRALPHABLEND :: struct {
emr : EMR,
rclBounds : RECTL,
xDest : LONG,
yDest : LONG,
cxDest : LONG,
cyDest : LONG,
dwRop : u32,
xSrc : LONG,
ySrc : LONG,
xformSrc : XFORM,
crBkColorSrc : COLORREF,
iUsageSrc : u32,
offBmiSrc : u32,
cbBmiSrc : u32,
offBitsSrc : u32,
cbBitsSrc : u32,
cxSrc : LONG,
cySrc : LONG,
};
PEMRALPHABLEND :: ^struct {
emr : EMR,
rclBounds : RECTL,
xDest : LONG,
yDest : LONG,
cxDest : LONG,
cyDest : LONG,
dwRop : u32,
xSrc : LONG,
ySrc : LONG,
xformSrc : XFORM,
crBkColorSrc : COLORREF,
iUsageSrc : u32,
offBmiSrc : u32,
cbBmiSrc : u32,
offBitsSrc : u32,
cbBitsSrc : u32,
cxSrc : LONG,
cySrc : LONG,
};
EMRGRADIENTFILL :: struct {
emr : EMR,
rclBounds : RECTL,
nVer : u32,
nTri : u32,
ulMode : ULONG,
Ver : [1]TRIVERTEX,
};
PEMRGRADIENTFILL :: ^struct {
emr : EMR,
rclBounds : RECTL,
nVer : u32,
nTri : u32,
ulMode : ULONG,
Ver : [1]TRIVERTEX,
};
EMRTRANSPARENTBLT :: struct {
emr : EMR,
rclBounds : RECTL,
xDest : LONG,
yDest : LONG,
cxDest : LONG,
cyDest : LONG,
dwRop : u32,
xSrc : LONG,
ySrc : LONG,
xformSrc : XFORM,
crBkColorSrc : COLORREF,
iUsageSrc : u32,
offBmiSrc : u32,
cbBmiSrc : u32,
offBitsSrc : u32,
cbBitsSrc : u32,
cxSrc : LONG,
cySrc : LONG,
};
PEMRTRANSPARENTBLT :: ^struct {
emr : EMR,
rclBounds : RECTL,
xDest : LONG,
yDest : LONG,
cxDest : LONG,
cyDest : LONG,
dwRop : u32,
xSrc : LONG,
ySrc : LONG,
xformSrc : XFORM,
crBkColorSrc : COLORREF,
iUsageSrc : u32,
offBmiSrc : u32,
cbBmiSrc : u32,
offBitsSrc : u32,
cbBitsSrc : u32,
cxSrc : LONG,
cySrc : LONG,
};
POINTFLOAT :: struct {
x : FLOAT,
y : FLOAT,
};
PPOINTFLOAT :: ^struct {
x : FLOAT,
y : FLOAT,
};
GLYPHMETRICSFLOAT :: struct {
gmfBlackBoxX : FLOAT,
gmfBlackBoxY : FLOAT,
gmfptGlyphOrigin : POINTFLOAT,
gmfCellIncX : FLOAT,
gmfCellIncY : FLOAT,
};
PGLYPHMETRICSFLOAT :: ^struct {
gmfBlackBoxX : FLOAT,
gmfBlackBoxY : FLOAT,
gmfptGlyphOrigin : POINTFLOAT,
gmfCellIncX : FLOAT,
gmfCellIncY : FLOAT,
};
LPGLYPHMETRICSFLOAT :: ^struct {
gmfBlackBoxX : FLOAT,
gmfBlackBoxY : FLOAT,
gmfptGlyphOrigin : POINTFLOAT,
gmfCellIncX : FLOAT,
gmfCellIncY : FLOAT,
};
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 : COLORREF,
};
PLAYERPLANEDESCRIPTOR :: ^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 : COLORREF,
};
LPLAYERPLANEDESCRIPTOR :: ^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 : COLORREF,
};
WGLSWAP :: struct {
hdc : HDC,
uiFlags : UINT,
};
PWGLSWAP :: ^struct {
hdc : HDC,
uiFlags : UINT,
};
LPWGLSWAP :: ^struct {
hdc : HDC,
uiFlags : UINT,
};
HDWP :: HANDLE;
MENUTEMPLATEA :: void;
MENUTEMPLATEW :: void;
MENUTEMPLATE :: MENUTEMPLATEA;
LPMENUTEMPLATEA :: PVOID;
LPMENUTEMPLATEW :: PVOID;
LPMENUTEMPLATE :: LPMENUTEMPLATEA;
WNDPROC :: (proc(HWND, UINT, WPARAM, LPARAM) -> LRESULT);
DLGPROC :: (proc(HWND, UINT, WPARAM, LPARAM) -> INT_PTR);
TIMERPROC :: proc(HWND, UINT, UINT_PTR, u32);
GRAYSTRINGPROC :: (proc(HDC, LPARAM, i32) -> BOOL);
WNDENUMPROC :: (proc(HWND, LPARAM) -> BOOL);
HOOKPROC :: (proc(code : i32, wParam : WPARAM, lParam : LPARAM) -> LRESULT);
SENDASYNCPROC :: proc(HWND, UINT, ULONG_PTR, LRESULT);
PROPENUMPROCA :: (proc(HWND, LPCSTR, HANDLE) -> BOOL);
PROPENUMPROCW :: (proc(HWND, LPCWSTR, HANDLE) -> BOOL);
PROPENUMPROCEXA :: (proc(HWND, LPSTR, HANDLE, ULONG_PTR) -> BOOL);
PROPENUMPROCEXW :: (proc(HWND, LPWSTR, HANDLE, ULONG_PTR) -> BOOL);
EDITWORDBREAKPROCA :: (proc(lpch : LPSTR, ichCurrent : i32, cch : i32, code : i32) -> i32);
EDITWORDBREAKPROCW :: (proc(lpch : LPWSTR, ichCurrent : i32, cch : i32, code : i32) -> i32);
DRAWSTATEPROC :: (proc(hdc : HDC, lData : LPARAM, wData : WPARAM, cx : i32, cy : i32) -> BOOL);
PROPENUMPROC :: PROPENUMPROCA;
PROPENUMPROCEX :: PROPENUMPROCEXA;
EDITWORDBREAKPROC :: EDITWORDBREAKPROCA;
NAMEENUMPROCA :: (proc(LPSTR, LPARAM) -> BOOL);
NAMEENUMPROCW :: (proc(LPWSTR, LPARAM) -> BOOL);
WINSTAENUMPROCA :: NAMEENUMPROCA;
DESKTOPENUMPROCA :: NAMEENUMPROCA;
WINSTAENUMPROCW :: NAMEENUMPROCW;
DESKTOPENUMPROCW :: NAMEENUMPROCW;
WINSTAENUMPROC :: WINSTAENUMPROCA;
DESKTOPENUMPROC :: DESKTOPENUMPROCA;
CBT_CREATEWNDA :: struct {
lpcs : ^CREATESTRUCTA,
hwndInsertAfter : HWND,
};
LPCBT_CREATEWNDA :: ^struct {
lpcs : ^CREATESTRUCTA,
hwndInsertAfter : HWND,
};
CBT_CREATEWNDW :: struct {
lpcs : ^CREATESTRUCTW,
hwndInsertAfter : HWND,
};
LPCBT_CREATEWNDW :: ^struct {
lpcs : ^CREATESTRUCTW,
hwndInsertAfter : HWND,
};
CBT_CREATEWND :: CBT_CREATEWNDA;
LPCBT_CREATEWND :: LPCBT_CREATEWNDA;
CBTACTIVATESTRUCT :: struct {
fMouse : BOOL,
hWndActive : HWND,
};
LPCBTACTIVATESTRUCT :: ^struct {
fMouse : BOOL,
hWndActive : HWND,
};
WTSSESSION_NOTIFICATION :: struct {
cbSize : u32,
dwSessionId : u32,
};
PWTSSESSION_NOTIFICATION :: ^struct {
cbSize : u32,
dwSessionId : u32,
};
SHELLHOOKINFO :: struct {
hwnd : HWND,
rc : RECT,
};
LPSHELLHOOKINFO :: ^struct {
hwnd : HWND,
rc : RECT,
};
EVENTMSG :: struct {
message : UINT,
paramL : UINT,
paramH : UINT,
time : u32,
hwnd : HWND,
};
PEVENTMSGMSG :: ^struct {
message : UINT,
paramL : UINT,
paramH : UINT,
time : u32,
hwnd : HWND,
};
NPEVENTMSGMSG :: ^struct {
message : UINT,
paramL : UINT,
paramH : UINT,
time : u32,
hwnd : HWND,
};
LPEVENTMSGMSG :: ^struct {
message : UINT,
paramL : UINT,
paramH : UINT,
time : u32,
hwnd : HWND,
};
PEVENTMSG :: ^EVENTMSG;
NPEVENTMSG :: ^EVENTMSG;
LPEVENTMSG :: ^EVENTMSG;
CWPSTRUCT :: struct {
lParam : LPARAM,
wParam : WPARAM,
message : UINT,
hwnd : HWND,
};
PCWPSTRUCT :: ^struct {
lParam : LPARAM,
wParam : WPARAM,
message : UINT,
hwnd : HWND,
};
NPCWPSTRUCT :: ^struct {
lParam : LPARAM,
wParam : WPARAM,
message : UINT,
hwnd : HWND,
};
LPCWPSTRUCT :: ^struct {
lParam : LPARAM,
wParam : WPARAM,
message : UINT,
hwnd : HWND,
};
CWPRETSTRUCT :: struct {
lResult : LRESULT,
lParam : LPARAM,
wParam : WPARAM,
message : UINT,
hwnd : HWND,
};
PCWPRETSTRUCT :: ^struct {
lResult : LRESULT,
lParam : LPARAM,
wParam : WPARAM,
message : UINT,
hwnd : HWND,
};
NPCWPRETSTRUCT :: ^struct {
lResult : LRESULT,
lParam : LPARAM,
wParam : WPARAM,
message : UINT,
hwnd : HWND,
};
LPCWPRETSTRUCT :: ^struct {
lResult : LRESULT,
lParam : LPARAM,
wParam : WPARAM,
message : UINT,
hwnd : HWND,
};
KBDLLHOOKSTRUCT :: struct {
vkCode : u32,
scanCode : u32,
flags : u32,
time : u32,
dwExtraInfo : ULONG_PTR,
};
LPKBDLLHOOKSTRUCT :: ^struct {
vkCode : u32,
scanCode : u32,
flags : u32,
time : u32,
dwExtraInfo : ULONG_PTR,
};
PKBDLLHOOKSTRUCT :: ^struct {
vkCode : u32,
scanCode : u32,
flags : u32,
time : u32,
dwExtraInfo : ULONG_PTR,
};
MSLLHOOKSTRUCT :: struct {
pt : POINT,
mouseData : u32,
flags : u32,
time : u32,
dwExtraInfo : ULONG_PTR,
};
LPMSLLHOOKSTRUCT :: ^struct {
pt : POINT,
mouseData : u32,
flags : u32,
time : u32,
dwExtraInfo : ULONG_PTR,
};
PMSLLHOOKSTRUCT :: ^struct {
pt : POINT,
mouseData : u32,
flags : u32,
time : u32,
dwExtraInfo : ULONG_PTR,
};
DEBUGHOOKINFO :: struct {
idThread : u32,
idThreadInstaller : u32,
lParam : LPARAM,
wParam : WPARAM,
code : i32,
};
PDEBUGHOOKINFO :: ^struct {
idThread : u32,
idThreadInstaller : u32,
lParam : LPARAM,
wParam : WPARAM,
code : i32,
};
NPDEBUGHOOKINFO :: ^struct {
idThread : u32,
idThreadInstaller : u32,
lParam : LPARAM,
wParam : WPARAM,
code : i32,
};
LPDEBUGHOOKINFO :: ^struct {
idThread : u32,
idThreadInstaller : u32,
lParam : LPARAM,
wParam : WPARAM,
code : i32,
};
MOUSEHOOKSTRUCT :: struct {
pt : POINT,
hwnd : HWND,
wHitTestCode : UINT,
dwExtraInfo : ULONG_PTR,
};
LPMOUSEHOOKSTRUCT :: ^struct {
pt : POINT,
hwnd : HWND,
wHitTestCode : UINT,
dwExtraInfo : ULONG_PTR,
};
PMOUSEHOOKSTRUCT :: ^struct {
pt : POINT,
hwnd : HWND,
wHitTestCode : UINT,
dwExtraInfo : ULONG_PTR,
};
MOUSEHOOKSTRUCTEX :: struct {
s : MOUSEHOOKSTRUCT,
mouseData : u32,
};
LPMOUSEHOOKSTRUCTEX :: ^struct {
s : MOUSEHOOKSTRUCT,
mouseData : u32,
};
PMOUSEHOOKSTRUCTEX :: ^struct {
s : MOUSEHOOKSTRUCT,
mouseData : u32,
};
HARDWAREHOOKSTRUCT :: struct {
hwnd : HWND,
message : UINT,
wParam : WPARAM,
lParam : LPARAM,
};
LPHARDWAREHOOKSTRUCT :: ^struct {
hwnd : HWND,
message : UINT,
wParam : WPARAM,
lParam : LPARAM,
};
PHARDWAREHOOKSTRUCT :: ^struct {
hwnd : HWND,
message : UINT,
wParam : WPARAM,
lParam : LPARAM,
};
MOUSEMOVEPOINT :: struct {
x : i32,
y : i32,
time : u32,
dwExtraInfo : ULONG_PTR,
};
PMOUSEMOVEPOINT :: ^struct {
x : i32,
y : i32,
time : u32,
dwExtraInfo : ULONG_PTR,
};
LPMOUSEMOVEPOINT :: ^struct {
x : i32,
y : i32,
time : u32,
dwExtraInfo : ULONG_PTR,
};
USEROBJECTFLAGS :: struct {
fInherit : BOOL,
fReserved : BOOL,
dwFlags : u32,
};
PUSEROBJECTFLAGS :: ^struct {
fInherit : BOOL,
fReserved : BOOL,
dwFlags : u32,
};
WNDCLASSEXA :: struct {
cbSize : UINT,
style : UINT,
lpfnWndProc : WNDPROC,
cbClsExtra : i32,
cbWndExtra : i32,
hInstance : HINSTANCE,
hIcon : HICON,
hCursor : HCURSOR,
hbrBackground : HBRUSH,
lpszMenuName : LPCSTR,
lpszClassName : LPCSTR,
hIconSm : HICON,
};
PWNDCLASSEXA :: ^struct {
cbSize : UINT,
style : UINT,
lpfnWndProc : WNDPROC,
cbClsExtra : i32,
cbWndExtra : i32,
hInstance : HINSTANCE,
hIcon : HICON,
hCursor : HCURSOR,
hbrBackground : HBRUSH,
lpszMenuName : LPCSTR,
lpszClassName : LPCSTR,
hIconSm : HICON,
};
NPWNDCLASSEXA :: ^struct {
cbSize : UINT,
style : UINT,
lpfnWndProc : WNDPROC,
cbClsExtra : i32,
cbWndExtra : i32,
hInstance : HINSTANCE,
hIcon : HICON,
hCursor : HCURSOR,
hbrBackground : HBRUSH,
lpszMenuName : LPCSTR,
lpszClassName : LPCSTR,
hIconSm : HICON,
};
LPWNDCLASSEXA :: ^struct {
cbSize : UINT,
style : UINT,
lpfnWndProc : WNDPROC,
cbClsExtra : i32,
cbWndExtra : i32,
hInstance : HINSTANCE,
hIcon : HICON,
hCursor : HCURSOR,
hbrBackground : HBRUSH,
lpszMenuName : LPCSTR,
lpszClassName : LPCSTR,
hIconSm : HICON,
};
WNDCLASSEXW :: struct {
cbSize : UINT,
style : UINT,
lpfnWndProc : WNDPROC,
cbClsExtra : i32,
cbWndExtra : i32,
hInstance : HINSTANCE,
hIcon : HICON,
hCursor : HCURSOR,
hbrBackground : HBRUSH,
lpszMenuName : LPCWSTR,
lpszClassName : LPCWSTR,
hIconSm : HICON,
};
PWNDCLASSEXW :: ^struct {
cbSize : UINT,
style : UINT,
lpfnWndProc : WNDPROC,
cbClsExtra : i32,
cbWndExtra : i32,
hInstance : HINSTANCE,
hIcon : HICON,
hCursor : HCURSOR,
hbrBackground : HBRUSH,
lpszMenuName : LPCWSTR,
lpszClassName : LPCWSTR,
hIconSm : HICON,
};
NPWNDCLASSEXW :: ^struct {
cbSize : UINT,
style : UINT,
lpfnWndProc : WNDPROC,
cbClsExtra : i32,
cbWndExtra : i32,
hInstance : HINSTANCE,
hIcon : HICON,
hCursor : HCURSOR,
hbrBackground : HBRUSH,
lpszMenuName : LPCWSTR,
lpszClassName : LPCWSTR,
hIconSm : HICON,
};
LPWNDCLASSEXW :: ^struct {
cbSize : UINT,
style : UINT,
lpfnWndProc : WNDPROC,
cbClsExtra : i32,
cbWndExtra : i32,
hInstance : HINSTANCE,
hIcon : HICON,
hCursor : HCURSOR,
hbrBackground : HBRUSH,
lpszMenuName : LPCWSTR,
lpszClassName : LPCWSTR,
hIconSm : HICON,
};
WNDCLASSEX :: WNDCLASSEXA;
PWNDCLASSEX :: PWNDCLASSEXA;
NPWNDCLASSEX :: NPWNDCLASSEXA;
LPWNDCLASSEX :: LPWNDCLASSEXA;
WNDCLASSA :: struct {
style : UINT,
lpfnWndProc : WNDPROC,
cbClsExtra : i32,
cbWndExtra : i32,
hInstance : HINSTANCE,
hIcon : HICON,
hCursor : HCURSOR,
hbrBackground : HBRUSH,
lpszMenuName : LPCSTR,
lpszClassName : LPCSTR,
};
PWNDCLASSA :: ^struct {
style : UINT,
lpfnWndProc : WNDPROC,
cbClsExtra : i32,
cbWndExtra : i32,
hInstance : HINSTANCE,
hIcon : HICON,
hCursor : HCURSOR,
hbrBackground : HBRUSH,
lpszMenuName : LPCSTR,
lpszClassName : LPCSTR,
};
NPWNDCLASSA :: ^struct {
style : UINT,
lpfnWndProc : WNDPROC,
cbClsExtra : i32,
cbWndExtra : i32,
hInstance : HINSTANCE,
hIcon : HICON,
hCursor : HCURSOR,
hbrBackground : HBRUSH,
lpszMenuName : LPCSTR,
lpszClassName : LPCSTR,
};
LPWNDCLASSA :: ^struct {
style : UINT,
lpfnWndProc : WNDPROC,
cbClsExtra : i32,
cbWndExtra : i32,
hInstance : HINSTANCE,
hIcon : HICON,
hCursor : HCURSOR,
hbrBackground : HBRUSH,
lpszMenuName : LPCSTR,
lpszClassName : LPCSTR,
};
WNDCLASSW :: struct {
style : UINT,
lpfnWndProc : WNDPROC,
cbClsExtra : i32,
cbWndExtra : i32,
hInstance : HINSTANCE,
hIcon : HICON,
hCursor : HCURSOR,
hbrBackground : HBRUSH,
lpszMenuName : LPCWSTR,
lpszClassName : LPCWSTR,
};
PWNDCLASSW :: ^struct {
style : UINT,
lpfnWndProc : WNDPROC,
cbClsExtra : i32,
cbWndExtra : i32,
hInstance : HINSTANCE,
hIcon : HICON,
hCursor : HCURSOR,
hbrBackground : HBRUSH,
lpszMenuName : LPCWSTR,
lpszClassName : LPCWSTR,
};
NPWNDCLASSW :: ^struct {
style : UINT,
lpfnWndProc : WNDPROC,
cbClsExtra : i32,
cbWndExtra : i32,
hInstance : HINSTANCE,
hIcon : HICON,
hCursor : HCURSOR,
hbrBackground : HBRUSH,
lpszMenuName : LPCWSTR,
lpszClassName : LPCWSTR,
};
LPWNDCLASSW :: ^struct {
style : UINT,
lpfnWndProc : WNDPROC,
cbClsExtra : i32,
cbWndExtra : i32,
hInstance : HINSTANCE,
hIcon : HICON,
hCursor : HCURSOR,
hbrBackground : HBRUSH,
lpszMenuName : LPCWSTR,
lpszClassName : LPCWSTR,
};
WNDCLASS :: WNDCLASSA;
PWNDCLASS :: PWNDCLASSA;
NPWNDCLASS :: NPWNDCLASSA;
LPWNDCLASS :: LPWNDCLASSA;
MSG :: struct {
hwnd : HWND,
message : UINT,
wParam : WPARAM,
lParam : LPARAM,
time : u32,
pt : POINT,
};
PMSG :: ^struct {
hwnd : HWND,
message : UINT,
wParam : WPARAM,
lParam : LPARAM,
time : u32,
pt : POINT,
};
NPMSG :: ^struct {
hwnd : HWND,
message : UINT,
wParam : WPARAM,
lParam : LPARAM,
time : u32,
pt : POINT,
};
LPMSG :: ^struct {
hwnd : HWND,
message : UINT,
wParam : WPARAM,
lParam : LPARAM,
time : u32,
pt : POINT,
};
MINMAXINFO :: struct {
ptReserved : POINT,
ptMaxSize : POINT,
ptMaxPosition : POINT,
ptMinTrackSize : POINT,
ptMaxTrackSize : POINT,
};
PMINMAXINFO :: ^struct {
ptReserved : POINT,
ptMaxSize : POINT,
ptMaxPosition : POINT,
ptMinTrackSize : POINT,
ptMaxTrackSize : POINT,
};
LPMINMAXINFO :: ^struct {
ptReserved : POINT,
ptMaxSize : POINT,
ptMaxPosition : POINT,
ptMinTrackSize : POINT,
ptMaxTrackSize : POINT,
};
COPYDATASTRUCT :: struct {
dwData : ULONG_PTR,
cbData : u32,
lpData : PVOID,
};
PCOPYDATASTRUCT :: ^struct {
dwData : ULONG_PTR,
cbData : u32,
lpData : PVOID,
};
MDINEXTMENU :: struct {
hmenuIn : HMENU,
hmenuNext : HMENU,
hwndNext : HWND,
};
PMDINEXTMENU :: ^struct {
hmenuIn : HMENU,
hmenuNext : HMENU,
hwndNext : HWND,
};
LPMDINEXTMENU :: ^struct {
hmenuIn : HMENU,
hmenuNext : HMENU,
hwndNext : HWND,
};
POWERBROADCAST_SETTING :: struct {
PowerSetting : GUID,
DataLength : u32,
Data : [1]UCHAR,
};
PPOWERBROADCAST_SETTING :: ^struct {
PowerSetting : GUID,
DataLength : u32,
Data : [1]UCHAR,
};
WINDOWPOS :: struct {
hwnd : HWND,
hwndInsertAfter : HWND,
x : i32,
y : i32,
cx : i32,
cy : i32,
flags : UINT,
};
LPWINDOWPOS :: ^struct {
hwnd : HWND,
hwndInsertAfter : HWND,
x : i32,
y : i32,
cx : i32,
cy : i32,
flags : UINT,
};
PWINDOWPOS :: ^struct {
hwnd : HWND,
hwndInsertAfter : HWND,
x : i32,
y : i32,
cx : i32,
cy : i32,
flags : UINT,
};
NCCALCSIZE_PARAMS :: struct {
rgrc : [3]RECT,
lppos : PWINDOWPOS,
};
LPNCCALCSIZE_PARAMS :: ^struct {
rgrc : [3]RECT,
lppos : PWINDOWPOS,
};
TRACKMOUSEEVENT :: struct {
cbSize : u32,
dwFlags : u32,
hwndTrack : HWND,
dwHoverTime : u32,
};
LPTRACKMOUSEEVENT :: ^struct {
cbSize : u32,
dwFlags : u32,
hwndTrack : HWND,
dwHoverTime : u32,
};
ACCEL :: struct {
fVirt : BYTE,
key : u16,
cmd : u16,
};
LPACCEL :: ^struct {
fVirt : BYTE,
key : u16,
cmd : u16,
};
PAINTSTRUCT :: struct {
hdc : HDC,
fErase : BOOL,
rcPaint : RECT,
fRestore : BOOL,
fIncUpdate : BOOL,
rgbReserved : [32]BYTE,
};
PPAINTSTRUCT :: ^struct {
hdc : HDC,
fErase : BOOL,
rcPaint : RECT,
fRestore : BOOL,
fIncUpdate : BOOL,
rgbReserved : [32]BYTE,
};
NPPAINTSTRUCT :: ^struct {
hdc : HDC,
fErase : BOOL,
rcPaint : RECT,
fRestore : BOOL,
fIncUpdate : BOOL,
rgbReserved : [32]BYTE,
};
LPPAINTSTRUCT :: ^struct {
hdc : HDC,
fErase : BOOL,
rcPaint : RECT,
fRestore : BOOL,
fIncUpdate : BOOL,
rgbReserved : [32]BYTE,
};
CREATESTRUCTA :: struct {
lpCreateParams : LPVOID,
hInstance : HINSTANCE,
hMenu : HMENU,
hwndParent : HWND,
cy : i32,
cx : i32,
y : i32,
x : i32,
style : LONG,
lpszName : LPCSTR,
lpszClass : LPCSTR,
dwExStyle : u32,
};
LPCREATESTRUCTA :: ^struct {
lpCreateParams : LPVOID,
hInstance : HINSTANCE,
hMenu : HMENU,
hwndParent : HWND,
cy : i32,
cx : i32,
y : i32,
x : i32,
style : LONG,
lpszName : LPCSTR,
lpszClass : LPCSTR,
dwExStyle : u32,
};
CREATESTRUCTW :: struct {
lpCreateParams : LPVOID,
hInstance : HINSTANCE,
hMenu : HMENU,
hwndParent : HWND,
cy : i32,
cx : i32,
y : i32,
x : i32,
style : LONG,
lpszName : LPCWSTR,
lpszClass : LPCWSTR,
dwExStyle : u32,
};
LPCREATESTRUCTW :: ^struct {
lpCreateParams : LPVOID,
hInstance : HINSTANCE,
hMenu : HMENU,
hwndParent : HWND,
cy : i32,
cx : i32,
y : i32,
x : i32,
style : LONG,
lpszName : LPCWSTR,
lpszClass : LPCWSTR,
dwExStyle : u32,
};
CREATESTRUCT :: CREATESTRUCTA;
LPCREATESTRUCT :: LPCREATESTRUCTA;
WINDOWPLACEMENT :: struct {
length : UINT,
flags : UINT,
showCmd : UINT,
ptMinPosition : POINT,
ptMaxPosition : POINT,
rcNormalPosition : RECT,
};
PWINDOWPLACEMENT :: ^WINDOWPLACEMENT;
LPWINDOWPLACEMENT :: ^WINDOWPLACEMENT;
NMHDR :: struct {
hwndFrom : HWND,
idFrom : UINT_PTR,
code : UINT,
};
LPNMHDR :: ^NMHDR;
STYLESTRUCT :: struct {
styleOld : u32,
styleNew : u32,
};
LPSTYLESTRUCT :: ^struct {
styleOld : u32,
styleNew : u32,
};
MEASUREITEMSTRUCT :: struct {
CtlType : UINT,
CtlID : UINT,
itemID : UINT,
itemWidth : UINT,
itemHeight : UINT,
itemData : ULONG_PTR,
};
PMEASUREITEMSTRUCT :: ^struct {
CtlType : UINT,
CtlID : UINT,
itemID : UINT,
itemWidth : UINT,
itemHeight : UINT,
itemData : ULONG_PTR,
};
LPMEASUREITEMSTRUCT :: ^struct {
CtlType : UINT,
CtlID : UINT,
itemID : UINT,
itemWidth : UINT,
itemHeight : UINT,
itemData : ULONG_PTR,
};
DRAWITEMSTRUCT :: struct {
CtlType : UINT,
CtlID : UINT,
itemID : UINT,
itemAction : UINT,
itemState : UINT,
hwndItem : HWND,
hDC : HDC,
rcItem : RECT,
itemData : ULONG_PTR,
};
PDRAWITEMSTRUCT :: ^struct {
CtlType : UINT,
CtlID : UINT,
itemID : UINT,
itemAction : UINT,
itemState : UINT,
hwndItem : HWND,
hDC : HDC,
rcItem : RECT,
itemData : ULONG_PTR,
};
LPDRAWITEMSTRUCT :: ^struct {
CtlType : UINT,
CtlID : UINT,
itemID : UINT,
itemAction : UINT,
itemState : UINT,
hwndItem : HWND,
hDC : HDC,
rcItem : RECT,
itemData : ULONG_PTR,
};
DELETEITEMSTRUCT :: struct {
CtlType : UINT,
CtlID : UINT,
itemID : UINT,
hwndItem : HWND,
itemData : ULONG_PTR,
};
PDELETEITEMSTRUCT :: ^struct {
CtlType : UINT,
CtlID : UINT,
itemID : UINT,
hwndItem : HWND,
itemData : ULONG_PTR,
};
LPDELETEITEMSTRUCT :: ^struct {
CtlType : UINT,
CtlID : UINT,
itemID : UINT,
hwndItem : HWND,
itemData : ULONG_PTR,
};
COMPAREITEMSTRUCT :: struct {
CtlType : UINT,
CtlID : UINT,
hwndItem : HWND,
itemID1 : UINT,
itemData1 : ULONG_PTR,
itemID2 : UINT,
itemData2 : ULONG_PTR,
dwLocaleId : u32,
};
PCOMPAREITEMSTRUCT :: ^struct {
CtlType : UINT,
CtlID : UINT,
hwndItem : HWND,
itemID1 : UINT,
itemData1 : ULONG_PTR,
itemID2 : UINT,
itemData2 : ULONG_PTR,
dwLocaleId : u32,
};
LPCOMPAREITEMSTRUCT :: ^struct {
CtlType : UINT,
CtlID : UINT,
hwndItem : HWND,
itemID1 : UINT,
itemData1 : ULONG_PTR,
itemID2 : UINT,
itemData2 : ULONG_PTR,
dwLocaleId : u32,
};
BSMINFO :: struct {
cbSize : UINT,
hdesk : HDESK,
hwnd : HWND,
luid : LUID,
};
PBSMINFO :: ^struct {
cbSize : UINT,
hdesk : HDESK,
hwnd : HWND,
luid : LUID,
};
HDEVNOTIFY :: PVOID;
PHDEVNOTIFY :: ^HDEVNOTIFY;
HPOWERNOTIFY :: PVOID;
PHPOWERNOTIFY :: ^HPOWERNOTIFY;
PREGISTERCLASSNAMEW :: (proc(LPCWSTR) -> BOOLEAN);
UPDATELAYEREDWINDOWINFO :: struct {
cbSize : u32,
hdcDst : HDC,
pptDst : ^POINT,
psize : ^SIZE,
hdcSrc : HDC,
pptSrc : ^POINT,
crKey : COLORREF,
pblend : ^BLENDFUNCTION,
dwFlags : u32,
prcDirty : ^RECT,
};
PUPDATELAYEREDWINDOWINFO :: ^struct {
cbSize : u32,
hdcDst : HDC,
pptDst : ^POINT,
psize : ^SIZE,
hdcSrc : HDC,
pptSrc : ^POINT,
crKey : COLORREF,
pblend : ^BLENDFUNCTION,
dwFlags : u32,
prcDirty : ^RECT,
};
FLASHWINFO :: struct {
cbSize : UINT,
hwnd : HWND,
dwFlags : u32,
uCount : UINT,
dwTimeout : u32,
};
PFLASHWINFO :: ^struct {
cbSize : UINT,
hwnd : HWND,
dwFlags : u32,
uCount : UINT,
dwTimeout : u32,
};
DLGTEMPLATE :: struct {
style : u32,
dwExtendedStyle : u32,
cdit : u16,
x : i16,
y : i16,
cx : i16,
cy : i16,
};
LPDLGTEMPLATEA :: ^DLGTEMPLATE;
LPDLGTEMPLATEW :: ^DLGTEMPLATE;
LPDLGTEMPLATE :: LPDLGTEMPLATEA;
LPCDLGTEMPLATEA :: ^DLGTEMPLATE;
LPCDLGTEMPLATEW :: ^DLGTEMPLATE;
LPCDLGTEMPLATE :: LPCDLGTEMPLATEA;
DLGITEMTEMPLATE :: struct {
style : u32,
dwExtendedStyle : u32,
x : i16,
y : i16,
cx : i16,
cy : i16,
id : u16,
};
PDLGITEMTEMPLATEA :: ^DLGITEMTEMPLATE;
PDLGITEMTEMPLATEW :: ^DLGITEMTEMPLATE;
PDLGITEMTEMPLATE :: PDLGITEMTEMPLATEA;
LPDLGITEMTEMPLATEA :: ^DLGITEMTEMPLATE;
LPDLGITEMTEMPLATEW :: ^DLGITEMTEMPLATE;
LPDLGITEMTEMPLATE :: LPDLGITEMTEMPLATEA;
DIALOG_CONTROL_DPI_CHANGE_BEHAVIORS :: enum {
DCDC_DEFAULT = 0x0000,
DCDC_DISABLE_FONT_UPDATE = 0x0001,
DCDC_DISABLE_RELAYOUT = 0x0002,
};
DIALOG_DPI_CHANGE_BEHAVIORS :: enum {
DDC_DEFAULT = 0x0000,
DDC_DISABLE_ALL = 0x0001,
DDC_DISABLE_RESIZE = 0x0002,
DDC_DISABLE_CONTROL_RELAYOUT = 0x0004,
};
MOUSEINPUT :: struct {
dx : LONG,
dy : LONG,
mouseData : u32,
dwFlags : u32,
time : u32,
dwExtraInfo : ULONG_PTR,
};
PMOUSEINPUT :: ^struct {
dx : LONG,
dy : LONG,
mouseData : u32,
dwFlags : u32,
time : u32,
dwExtraInfo : ULONG_PTR,
};
LPMOUSEINPUT :: ^struct {
dx : LONG,
dy : LONG,
mouseData : u32,
dwFlags : u32,
time : u32,
dwExtraInfo : ULONG_PTR,
};
KEYBDINPUT :: struct {
wVk : u16,
wScan : u16,
dwFlags : u32,
time : u32,
dwExtraInfo : ULONG_PTR,
};
PKEYBDINPUT :: ^struct {
wVk : u16,
wScan : u16,
dwFlags : u32,
time : u32,
dwExtraInfo : ULONG_PTR,
};
LPKEYBDINPUT :: ^struct {
wVk : u16,
wScan : u16,
dwFlags : u32,
time : u32,
dwExtraInfo : ULONG_PTR,
};
HARDWAREINPUT :: struct {
uMsg : u32,
wParamL : u16,
wParamH : u16,
};
PHARDWAREINPUT :: ^struct {
uMsg : u32,
wParamL : u16,
wParamH : u16,
};
LPHARDWAREINPUT :: ^struct {
uMsg : u32,
wParamL : u16,
wParamH : u16,
};
INPUT :: struct {
kind : u32,
u : struct #raw_union {
mi : MOUSEINPUT,
ki : KEYBDINPUT,
hi : HARDWAREINPUT,
},
};
PINPUT :: ^struct {
kind : u32,
u : struct #raw_union {
mi : MOUSEINPUT,
ki : KEYBDINPUT,
hi : HARDWAREINPUT,
},
};
LPINPUT :: ^struct {
kind : u32,
u : struct #raw_union {
mi : MOUSEINPUT,
ki : KEYBDINPUT,
hi : HARDWAREINPUT,
},
};
HTOUCHINPUT__ :: struct {
unused : i32,
};
HTOUCHINPUT :: ^HTOUCHINPUT__;
TOUCHINPUT :: struct {
x : LONG,
y : LONG,
hSource : HANDLE,
dwID : u32,
dwFlags : u32,
dwMask : u32,
dwTime : u32,
dwExtraInfo : ULONG_PTR,
cxContact : u32,
cyContact : u32,
};
PTOUCHINPUT :: ^struct {
x : LONG,
y : LONG,
hSource : HANDLE,
dwID : u32,
dwFlags : u32,
dwMask : u32,
dwTime : u32,
dwExtraInfo : ULONG_PTR,
cxContact : u32,
cyContact : u32,
};
PCTOUCHINPUT :: ^TOUCHINPUT;
tagPOINTER_INPUT_TYPE :: enum {
PT_POINTER = 1,
PT_TOUCH = 2,
PT_PEN = 3,
PT_MOUSE = 4,
PT_TOUCHPAD = 5,
};
POINTER_INPUT_TYPE :: u32;
POINTER_FLAGS :: UINT32;
POINTER_BUTTON_CHANGE_TYPE :: enum {
POINTER_CHANGE_NONE,
POINTER_CHANGE_FIRSTBUTTON_DOWN,
POINTER_CHANGE_FIRSTBUTTON_UP,
POINTER_CHANGE_SECONDBUTTON_DOWN,
POINTER_CHANGE_SECONDBUTTON_UP,
POINTER_CHANGE_THIRDBUTTON_DOWN,
POINTER_CHANGE_THIRDBUTTON_UP,
POINTER_CHANGE_FOURTHBUTTON_DOWN,
POINTER_CHANGE_FOURTHBUTTON_UP,
POINTER_CHANGE_FIFTHBUTTON_DOWN,
POINTER_CHANGE_FIFTHBUTTON_UP,
};
POINTER_INFO :: struct {
pointerType : POINTER_INPUT_TYPE,
pointerId : UINT32,
frameId : UINT32,
pointerFlags : POINTER_FLAGS,
sourceDevice : HANDLE,
hwndTarget : HWND,
ptPixelLocation : POINT,
ptHimetricLocation : POINT,
ptPixelLocationRaw : POINT,
ptHimetricLocationRaw : POINT,
dwTime : u32,
historyCount : UINT32,
InputData : INT32,
dwKeyStates : u32,
PerformanceCount : UINT64,
ButtonChangeType : POINTER_BUTTON_CHANGE_TYPE,
};
TOUCH_FLAGS :: UINT32;
TOUCH_MASK :: UINT32;
POINTER_TOUCH_INFO :: struct {
pointerInfo : POINTER_INFO,
touchFlags : TOUCH_FLAGS,
touchMask : TOUCH_MASK,
rcContact : RECT,
rcContactRaw : RECT,
orientation : UINT32,
pressure : UINT32,
};
PEN_FLAGS :: UINT32;
PEN_MASK :: UINT32;
POINTER_PEN_INFO :: struct {
pointerInfo : POINTER_INFO,
penFlags : PEN_FLAGS,
penMask : PEN_MASK,
pressure : UINT32,
rotation : UINT32,
tiltX : INT32,
tiltY : INT32,
};
POINTER_FEEDBACK_MODE :: enum {
POINTER_FEEDBACK_DEFAULT = 1,
POINTER_FEEDBACK_INDIRECT = 2,
POINTER_FEEDBACK_NONE = 3,
};
USAGE_PROPERTIES :: struct {
level : USHORT,
page : USHORT,
usage : USHORT,
logicalMinimum : INT32,
logicalMaximum : INT32,
unit : USHORT,
exponent : USHORT,
count : BYTE,
physicalMinimum : INT32,
physicalMaximum : INT32,
};
PUSAGE_PROPERTIES :: ^struct {
level : USHORT,
page : USHORT,
usage : USHORT,
logicalMinimum : INT32,
logicalMaximum : INT32,
unit : USHORT,
exponent : USHORT,
count : BYTE,
physicalMinimum : INT32,
physicalMaximum : INT32,
};
POINTER_TYPE_INFO :: struct {
kind : POINTER_INPUT_TYPE,
u : struct #raw_union {
touchInfo : POINTER_TOUCH_INFO,
penInfo : POINTER_PEN_INFO,
},
};
PPOINTER_TYPE_INFO :: ^struct {
kind : POINTER_INPUT_TYPE,
u : struct #raw_union {
touchInfo : POINTER_TOUCH_INFO,
penInfo : POINTER_PEN_INFO,
},
};
INPUT_INJECTION_VALUE :: struct {
page : USHORT,
usage : USHORT,
value : INT32,
index : USHORT,
};
PINPUT_INJECTION_VALUE :: ^struct {
page : USHORT,
usage : USHORT,
value : INT32,
index : USHORT,
};
HSYNTHETICPOINTERDEVICE__ :: struct {
unused : i32,
};
HSYNTHETICPOINTERDEVICE :: ^HSYNTHETICPOINTERDEVICE__;
TOUCH_HIT_TESTING_PROXIMITY_EVALUATION :: struct {
score : UINT16,
adjustedPoint : POINT,
};
PTOUCH_HIT_TESTING_PROXIMITY_EVALUATION :: ^struct {
score : UINT16,
adjustedPoint : POINT,
};
TOUCH_HIT_TESTING_INPUT :: struct {
pointerId : UINT32,
point : POINT,
boundingBox : RECT,
nonOccludedBoundingBox : RECT,
orientation : UINT32,
};
PTOUCH_HIT_TESTING_INPUT :: ^struct {
pointerId : UINT32,
point : POINT,
boundingBox : RECT,
nonOccludedBoundingBox : RECT,
orientation : UINT32,
};
FEEDBACK_TYPE :: enum {
FEEDBACK_TOUCH_CONTACTVISUALIZATION = 1,
FEEDBACK_PEN_BARRELVISUALIZATION = 2,
FEEDBACK_PEN_TAP = 3,
FEEDBACK_PEN_DOUBLETAP = 4,
FEEDBACK_PEN_PRESSANDHOLD = 5,
FEEDBACK_PEN_RIGHTTAP = 6,
FEEDBACK_TOUCH_TAP = 7,
FEEDBACK_TOUCH_DOUBLETAP = 8,
FEEDBACK_TOUCH_PRESSANDHOLD = 9,
FEEDBACK_TOUCH_RIGHTTAP = 10,
FEEDBACK_GESTURE_PRESSANDTAP = 11,
FEEDBACK_MAX = 0xFFFFFFFF,
};
INPUT_TRANSFORM :: struct {
u : struct #raw_union {
s : struct {
_11 : f32,
_12 : f32,
_13 : f32,
_14 : f32,
_21 : f32,
_22 : f32,
_23 : f32,
_24 : f32,
_31 : f32,
_32 : f32,
_33 : f32,
_34 : f32,
_41 : f32,
_42 : f32,
_43 : f32,
_44 : f32,
},
m : [4][4]f32,
},
};
LASTINPUTINFO :: struct {
cbSize : UINT,
dwTime : u32,
};
PLASTINPUTINFO :: ^struct {
cbSize : UINT,
dwTime : u32,
};
TPMPARAMS :: struct {
cbSize : UINT,
rcExclude : RECT,
};
LPTPMPARAMS :: ^TPMPARAMS;
MENUINFO :: struct {
cbSize : u32,
fMask : u32,
dwStyle : u32,
cyMax : UINT,
hbrBack : HBRUSH,
dwContextHelpID : u32,
dwMenuData : ULONG_PTR,
};
LPMENUINFO :: ^struct {
cbSize : u32,
fMask : u32,
dwStyle : u32,
cyMax : UINT,
hbrBack : HBRUSH,
dwContextHelpID : u32,
dwMenuData : ULONG_PTR,
};
LPCMENUINFO :: ^MENUINFO;
MENUGETOBJECTINFO :: struct {
dwFlags : u32,
uPos : UINT,
hmenu : HMENU,
riid : PVOID,
pvObj : PVOID,
};
PMENUGETOBJECTINFO :: ^struct {
dwFlags : u32,
uPos : UINT,
hmenu : HMENU,
riid : PVOID,
pvObj : PVOID,
};
MENUITEMINFOA :: struct {
cbSize : UINT,
fMask : UINT,
fType : UINT,
fState : UINT,
wID : UINT,
hSubMenu : HMENU,
hbmpChecked : HBITMAP,
hbmpUnchecked : HBITMAP,
dwItemData : ULONG_PTR,
dwTypeData : LPSTR,
cch : UINT,
hbmpItem : HBITMAP,
};
LPMENUITEMINFOA :: ^struct {
cbSize : UINT,
fMask : UINT,
fType : UINT,
fState : UINT,
wID : UINT,
hSubMenu : HMENU,
hbmpChecked : HBITMAP,
hbmpUnchecked : HBITMAP,
dwItemData : ULONG_PTR,
dwTypeData : LPSTR,
cch : UINT,
hbmpItem : HBITMAP,
};
MENUITEMINFOW :: struct {
cbSize : UINT,
fMask : UINT,
fType : UINT,
fState : UINT,
wID : UINT,
hSubMenu : HMENU,
hbmpChecked : HBITMAP,
hbmpUnchecked : HBITMAP,
dwItemData : ULONG_PTR,
dwTypeData : LPWSTR,
cch : UINT,
hbmpItem : HBITMAP,
};
LPMENUITEMINFOW :: ^struct {
cbSize : UINT,
fMask : UINT,
fType : UINT,
fState : UINT,
wID : UINT,
hSubMenu : HMENU,
hbmpChecked : HBITMAP,
hbmpUnchecked : HBITMAP,
dwItemData : ULONG_PTR,
dwTypeData : LPWSTR,
cch : UINT,
hbmpItem : HBITMAP,
};
MENUITEMINFO :: MENUITEMINFOA;
LPMENUITEMINFO :: LPMENUITEMINFOA;
LPCMENUITEMINFOA :: ^MENUITEMINFOA;
LPCMENUITEMINFOW :: ^MENUITEMINFOW;
LPCMENUITEMINFO :: LPCMENUITEMINFOA;
DROPSTRUCT :: struct {
hwndSource : HWND,
hwndSink : HWND,
wFmt : u32,
dwData : ULONG_PTR,
ptDrop : POINT,
dwControlData : u32,
};
PDROPSTRUCT :: ^struct {
hwndSource : HWND,
hwndSink : HWND,
wFmt : u32,
dwData : ULONG_PTR,
ptDrop : POINT,
dwControlData : u32,
};
LPDROPSTRUCT :: ^struct {
hwndSource : HWND,
hwndSink : HWND,
wFmt : u32,
dwData : ULONG_PTR,
ptDrop : POINT,
dwControlData : u32,
};
DRAWTEXTPARAMS :: struct {
cbSize : UINT,
iTabLength : i32,
iLeftMargin : i32,
iRightMargin : i32,
uiLengthDrawn : UINT,
};
LPDRAWTEXTPARAMS :: ^struct {
cbSize : UINT,
iTabLength : i32,
iLeftMargin : i32,
iRightMargin : i32,
uiLengthDrawn : UINT,
};
HELPINFO :: struct {
cbSize : UINT,
iContextType : i32,
iCtrlId : i32,
hItemHandle : HANDLE,
dwContextId : DWORD_PTR,
MousePos : POINT,
};
LPHELPINFO :: ^struct {
cbSize : UINT,
iContextType : i32,
iCtrlId : i32,
hItemHandle : HANDLE,
dwContextId : DWORD_PTR,
MousePos : POINT,
};
MSGBOXCALLBACK :: proc(lpHelpInfo : LPHELPINFO);
MSGBOXPARAMSA :: struct {
cbSize : UINT,
hwndOwner : HWND,
hInstance : HINSTANCE,
lpszText : LPCSTR,
lpszCaption : LPCSTR,
dwStyle : u32,
lpszIcon : LPCSTR,
dwContextHelpId : DWORD_PTR,
lpfnMsgBoxCallback : MSGBOXCALLBACK,
dwLanguageId : u32,
};
PMSGBOXPARAMSA :: ^struct {
cbSize : UINT,
hwndOwner : HWND,
hInstance : HINSTANCE,
lpszText : LPCSTR,
lpszCaption : LPCSTR,
dwStyle : u32,
lpszIcon : LPCSTR,
dwContextHelpId : DWORD_PTR,
lpfnMsgBoxCallback : MSGBOXCALLBACK,
dwLanguageId : u32,
};
LPMSGBOXPARAMSA :: ^struct {
cbSize : UINT,
hwndOwner : HWND,
hInstance : HINSTANCE,
lpszText : LPCSTR,
lpszCaption : LPCSTR,
dwStyle : u32,
lpszIcon : LPCSTR,
dwContextHelpId : DWORD_PTR,
lpfnMsgBoxCallback : MSGBOXCALLBACK,
dwLanguageId : u32,
};
MSGBOXPARAMSW :: struct {
cbSize : UINT,
hwndOwner : HWND,
hInstance : HINSTANCE,
lpszText : LPCWSTR,
lpszCaption : LPCWSTR,
dwStyle : u32,
lpszIcon : LPCWSTR,
dwContextHelpId : DWORD_PTR,
lpfnMsgBoxCallback : MSGBOXCALLBACK,
dwLanguageId : u32,
};
PMSGBOXPARAMSW :: ^struct {
cbSize : UINT,
hwndOwner : HWND,
hInstance : HINSTANCE,
lpszText : LPCWSTR,
lpszCaption : LPCWSTR,
dwStyle : u32,
lpszIcon : LPCWSTR,
dwContextHelpId : DWORD_PTR,
lpfnMsgBoxCallback : MSGBOXCALLBACK,
dwLanguageId : u32,
};
LPMSGBOXPARAMSW :: ^struct {
cbSize : UINT,
hwndOwner : HWND,
hInstance : HINSTANCE,
lpszText : LPCWSTR,
lpszCaption : LPCWSTR,
dwStyle : u32,
lpszIcon : LPCWSTR,
dwContextHelpId : DWORD_PTR,
lpfnMsgBoxCallback : MSGBOXCALLBACK,
dwLanguageId : u32,
};
MSGBOXPARAMS :: MSGBOXPARAMSA;
PMSGBOXPARAMS :: PMSGBOXPARAMSA;
LPMSGBOXPARAMS :: LPMSGBOXPARAMSA;
MENUITEMTEMPLATEHEADER :: struct {
versionNumber : u16,
offset : u16,
};
PMENUITEMTEMPLATEHEADER :: ^struct {
versionNumber : u16,
offset : u16,
};
MENUITEMTEMPLATE :: struct {
mtOption : u16,
mtID : u16,
mtString : [1]WCHAR,
};
PMENUITEMTEMPLATE :: ^struct {
mtOption : u16,
mtID : u16,
mtString : [1]WCHAR,
};
ICONINFO :: struct {
fIcon : BOOL,
xHotspot : u32,
yHotspot : u32,
hbmMask : HBITMAP,
hbmColor : HBITMAP,
};
PICONINFO :: ^ICONINFO;
CURSORSHAPE :: struct {
xHotSpot : i32,
yHotSpot : i32,
cx : i32,
cy : i32,
cbWidth : i32,
Planes : BYTE,
BitsPixel : BYTE,
};
LPCURSORSHAPE :: ^struct {
xHotSpot : i32,
yHotSpot : i32,
cx : i32,
cy : i32,
cbWidth : i32,
Planes : BYTE,
BitsPixel : BYTE,
};
ICONINFOEXA :: struct {
cbSize : u32,
fIcon : BOOL,
xHotspot : u32,
yHotspot : u32,
hbmMask : HBITMAP,
hbmColor : HBITMAP,
wResID : u16,
szModName : [260]CHAR,
szResName : [260]CHAR,
};
PICONINFOEXA :: ^struct {
cbSize : u32,
fIcon : BOOL,
xHotspot : u32,
yHotspot : u32,
hbmMask : HBITMAP,
hbmColor : HBITMAP,
wResID : u16,
szModName : [260]CHAR,
szResName : [260]CHAR,
};
ICONINFOEXW :: struct {
cbSize : u32,
fIcon : BOOL,
xHotspot : u32,
yHotspot : u32,
hbmMask : HBITMAP,
hbmColor : HBITMAP,
wResID : u16,
szModName : [260]WCHAR,
szResName : [260]WCHAR,
};
PICONINFOEXW :: ^struct {
cbSize : u32,
fIcon : BOOL,
xHotspot : u32,
yHotspot : u32,
hbmMask : HBITMAP,
hbmColor : HBITMAP,
wResID : u16,
szModName : [260]WCHAR,
szResName : [260]WCHAR,
};
ICONINFOEX :: ICONINFOEXA;
PICONINFOEX :: PICONINFOEXA;
EDIT_CONTROL_FEATURE :: enum {
EDIT_CONTROL_FEATURE_ENTERPRISE_DATA_PROTECTION_PASTE_SUPPORT = 0,
EDIT_CONTROL_FEATURE_PASTE_NOTIFICATIONS = 1,
};
SCROLLINFO :: struct {
cbSize : UINT,
fMask : UINT,
nMin : i32,
nMax : i32,
nPage : UINT,
nPos : i32,
nTrackPos : i32,
};
LPSCROLLINFO :: ^struct {
cbSize : UINT,
fMask : UINT,
nMin : i32,
nMax : i32,
nPage : UINT,
nPos : i32,
nTrackPos : i32,
};
LPCSCROLLINFO :: ^SCROLLINFO;
MDICREATESTRUCTA :: struct {
szClass : LPCSTR,
szTitle : LPCSTR,
hOwner : HANDLE,
x : i32,
y : i32,
cx : i32,
cy : i32,
style : u32,
lParam : LPARAM,
};
LPMDICREATESTRUCTA :: ^struct {
szClass : LPCSTR,
szTitle : LPCSTR,
hOwner : HANDLE,
x : i32,
y : i32,
cx : i32,
cy : i32,
style : u32,
lParam : LPARAM,
};
MDICREATESTRUCTW :: struct {
szClass : LPCWSTR,
szTitle : LPCWSTR,
hOwner : HANDLE,
x : i32,
y : i32,
cx : i32,
cy : i32,
style : u32,
lParam : LPARAM,
};
LPMDICREATESTRUCTW :: ^struct {
szClass : LPCWSTR,
szTitle : LPCWSTR,
hOwner : HANDLE,
x : i32,
y : i32,
cx : i32,
cy : i32,
style : u32,
lParam : LPARAM,
};
MDICREATESTRUCT :: MDICREATESTRUCTA;
LPMDICREATESTRUCT :: LPMDICREATESTRUCTA;
CLIENTCREATESTRUCT :: struct {
hWindowMenu : HANDLE,
idFirstChild : UINT,
};
LPCLIENTCREATESTRUCT :: ^struct {
hWindowMenu : HANDLE,
idFirstChild : UINT,
};
HELPPOLY :: u32;
MULTIKEYHELPA :: struct {
mkSize : u32,
mkKeylist : CHAR,
szKeyphrase : [1]CHAR,
};
PMULTIKEYHELPA :: ^struct {
mkSize : u32,
mkKeylist : CHAR,
szKeyphrase : [1]CHAR,
};
LPMULTIKEYHELPA :: ^struct {
mkSize : u32,
mkKeylist : CHAR,
szKeyphrase : [1]CHAR,
};
MULTIKEYHELPW :: struct {
mkSize : u32,
mkKeylist : WCHAR,
szKeyphrase : [1]WCHAR,
};
PMULTIKEYHELPW :: ^struct {
mkSize : u32,
mkKeylist : WCHAR,
szKeyphrase : [1]WCHAR,
};
LPMULTIKEYHELPW :: ^struct {
mkSize : u32,
mkKeylist : WCHAR,
szKeyphrase : [1]WCHAR,
};
MULTIKEYHELP :: MULTIKEYHELPA;
PMULTIKEYHELP :: PMULTIKEYHELPA;
LPMULTIKEYHELP :: LPMULTIKEYHELPA;
HELPWININFOA :: struct {
wStructSize : i32,
x : i32,
y : i32,
dx : i32,
dy : i32,
wMax : i32,
rgchMember : [2]CHAR,
};
PHELPWININFOA :: ^struct {
wStructSize : i32,
x : i32,
y : i32,
dx : i32,
dy : i32,
wMax : i32,
rgchMember : [2]CHAR,
};
LPHELPWININFOA :: ^struct {
wStructSize : i32,
x : i32,
y : i32,
dx : i32,
dy : i32,
wMax : i32,
rgchMember : [2]CHAR,
};
HELPWININFOW :: struct {
wStructSize : i32,
x : i32,
y : i32,
dx : i32,
dy : i32,
wMax : i32,
rgchMember : [2]WCHAR,
};
PHELPWININFOW :: ^struct {
wStructSize : i32,
x : i32,
y : i32,
dx : i32,
dy : i32,
wMax : i32,
rgchMember : [2]WCHAR,
};
LPHELPWININFOW :: ^struct {
wStructSize : i32,
x : i32,
y : i32,
dx : i32,
dy : i32,
wMax : i32,
rgchMember : [2]WCHAR,
};
HELPWININFO :: HELPWININFOA;
PHELPWININFO :: PHELPWININFOA;
LPHELPWININFO :: LPHELPWININFOA;
TOUCHPREDICTIONPARAMETERS :: struct {
cbSize : UINT,
dwLatency : UINT,
dwSampleTime : UINT,
bUseHWTimeStamp : UINT,
};
PTOUCHPREDICTIONPARAMETERS :: ^struct {
cbSize : UINT,
dwLatency : UINT,
dwSampleTime : UINT,
bUseHWTimeStamp : UINT,
};
HANDEDNESS :: enum {
HANDEDNESS_LEFT = 0,
HANDEDNESS_RIGHT,
};
PHANDEDNESS :: ^enum {
HANDEDNESS_LEFT = 0,
HANDEDNESS_RIGHT,
};
NONCLIENTMETRICSA :: struct {
cbSize : UINT,
iBorderWidth : i32,
iScrollWidth : i32,
iScrollHeight : i32,
iCaptionWidth : i32,
iCaptionHeight : i32,
lfCaptionFont : LOGFONTA,
iSmCaptionWidth : i32,
iSmCaptionHeight : i32,
lfSmCaptionFont : LOGFONTA,
iMenuWidth : i32,
iMenuHeight : i32,
lfMenuFont : LOGFONTA,
lfStatusFont : LOGFONTA,
lfMessageFont : LOGFONTA,
iPaddedBorderWidth : i32,
};
PNONCLIENTMETRICSA :: ^struct {
cbSize : UINT,
iBorderWidth : i32,
iScrollWidth : i32,
iScrollHeight : i32,
iCaptionWidth : i32,
iCaptionHeight : i32,
lfCaptionFont : LOGFONTA,
iSmCaptionWidth : i32,
iSmCaptionHeight : i32,
lfSmCaptionFont : LOGFONTA,
iMenuWidth : i32,
iMenuHeight : i32,
lfMenuFont : LOGFONTA,
lfStatusFont : LOGFONTA,
lfMessageFont : LOGFONTA,
iPaddedBorderWidth : i32,
};
LPNONCLIENTMETRICSA :: ^struct {
cbSize : UINT,
iBorderWidth : i32,
iScrollWidth : i32,
iScrollHeight : i32,
iCaptionWidth : i32,
iCaptionHeight : i32,
lfCaptionFont : LOGFONTA,
iSmCaptionWidth : i32,
iSmCaptionHeight : i32,
lfSmCaptionFont : LOGFONTA,
iMenuWidth : i32,
iMenuHeight : i32,
lfMenuFont : LOGFONTA,
lfStatusFont : LOGFONTA,
lfMessageFont : LOGFONTA,
iPaddedBorderWidth : i32,
};
NONCLIENTMETRICSW :: struct {
cbSize : UINT,
iBorderWidth : i32,
iScrollWidth : i32,
iScrollHeight : i32,
iCaptionWidth : i32,
iCaptionHeight : i32,
lfCaptionFont : LOGFONTW,
iSmCaptionWidth : i32,
iSmCaptionHeight : i32,
lfSmCaptionFont : LOGFONTW,
iMenuWidth : i32,
iMenuHeight : i32,
lfMenuFont : LOGFONTW,
lfStatusFont : LOGFONTW,
lfMessageFont : LOGFONTW,
iPaddedBorderWidth : i32,
};
PNONCLIENTMETRICSW :: ^struct {
cbSize : UINT,
iBorderWidth : i32,
iScrollWidth : i32,
iScrollHeight : i32,
iCaptionWidth : i32,
iCaptionHeight : i32,
lfCaptionFont : LOGFONTW,
iSmCaptionWidth : i32,
iSmCaptionHeight : i32,
lfSmCaptionFont : LOGFONTW,
iMenuWidth : i32,
iMenuHeight : i32,
lfMenuFont : LOGFONTW,
lfStatusFont : LOGFONTW,
lfMessageFont : LOGFONTW,
iPaddedBorderWidth : i32,
};
LPNONCLIENTMETRICSW :: ^struct {
cbSize : UINT,
iBorderWidth : i32,
iScrollWidth : i32,
iScrollHeight : i32,
iCaptionWidth : i32,
iCaptionHeight : i32,
lfCaptionFont : LOGFONTW,
iSmCaptionWidth : i32,
iSmCaptionHeight : i32,
lfSmCaptionFont : LOGFONTW,
iMenuWidth : i32,
iMenuHeight : i32,
lfMenuFont : LOGFONTW,
lfStatusFont : LOGFONTW,
lfMessageFont : LOGFONTW,
iPaddedBorderWidth : i32,
};
NONCLIENTMETRICS :: NONCLIENTMETRICSA;
PNONCLIENTMETRICS :: PNONCLIENTMETRICSA;
LPNONCLIENTMETRICS :: LPNONCLIENTMETRICSA;
MINIMIZEDMETRICS :: struct {
cbSize : UINT,
iWidth : i32,
iHorzGap : i32,
iVertGap : i32,
iArrange : i32,
};
PMINIMIZEDMETRICS :: ^struct {
cbSize : UINT,
iWidth : i32,
iHorzGap : i32,
iVertGap : i32,
iArrange : i32,
};
LPMINIMIZEDMETRICS :: ^struct {
cbSize : UINT,
iWidth : i32,
iHorzGap : i32,
iVertGap : i32,
iArrange : i32,
};
ICONMETRICSA :: struct {
cbSize : UINT,
iHorzSpacing : i32,
iVertSpacing : i32,
iTitleWrap : i32,
lfFont : LOGFONTA,
};
PICONMETRICSA :: ^struct {
cbSize : UINT,
iHorzSpacing : i32,
iVertSpacing : i32,
iTitleWrap : i32,
lfFont : LOGFONTA,
};
LPICONMETRICSA :: ^struct {
cbSize : UINT,
iHorzSpacing : i32,
iVertSpacing : i32,
iTitleWrap : i32,
lfFont : LOGFONTA,
};
ICONMETRICSW :: struct {
cbSize : UINT,
iHorzSpacing : i32,
iVertSpacing : i32,
iTitleWrap : i32,
lfFont : LOGFONTW,
};
PICONMETRICSW :: ^struct {
cbSize : UINT,
iHorzSpacing : i32,
iVertSpacing : i32,
iTitleWrap : i32,
lfFont : LOGFONTW,
};
LPICONMETRICSW :: ^struct {
cbSize : UINT,
iHorzSpacing : i32,
iVertSpacing : i32,
iTitleWrap : i32,
lfFont : LOGFONTW,
};
ICONMETRICS :: ICONMETRICSA;
PICONMETRICS :: PICONMETRICSA;
LPICONMETRICS :: LPICONMETRICSA;
ANIMATIONINFO :: struct {
cbSize : UINT,
iMinAnimate : i32,
};
LPANIMATIONINFO :: ^struct {
cbSize : UINT,
iMinAnimate : i32,
};
SERIALKEYSA :: struct {
cbSize : UINT,
dwFlags : u32,
lpszActivePort : LPSTR,
lpszPort : LPSTR,
iBaudRate : UINT,
iPortState : UINT,
iActive : UINT,
};
LPSERIALKEYSA :: ^struct {
cbSize : UINT,
dwFlags : u32,
lpszActivePort : LPSTR,
lpszPort : LPSTR,
iBaudRate : UINT,
iPortState : UINT,
iActive : UINT,
};
SERIALKEYSW :: struct {
cbSize : UINT,
dwFlags : u32,
lpszActivePort : LPWSTR,
lpszPort : LPWSTR,
iBaudRate : UINT,
iPortState : UINT,
iActive : UINT,
};
LPSERIALKEYSW :: ^struct {
cbSize : UINT,
dwFlags : u32,
lpszActivePort : LPWSTR,
lpszPort : LPWSTR,
iBaudRate : UINT,
iPortState : UINT,
iActive : UINT,
};
SERIALKEYS :: SERIALKEYSA;
LPSERIALKEYS :: LPSERIALKEYSA;
HIGHCONTRASTA :: struct {
cbSize : UINT,
dwFlags : u32,
lpszDefaultScheme : LPSTR,
};
LPHIGHCONTRASTA :: ^struct {
cbSize : UINT,
dwFlags : u32,
lpszDefaultScheme : LPSTR,
};
HIGHCONTRASTW :: struct {
cbSize : UINT,
dwFlags : u32,
lpszDefaultScheme : LPWSTR,
};
LPHIGHCONTRASTW :: ^struct {
cbSize : UINT,
dwFlags : u32,
lpszDefaultScheme : LPWSTR,
};
HIGHCONTRAST :: HIGHCONTRASTA;
LPHIGHCONTRAST :: LPHIGHCONTRASTA;
VIDEOPARAMETERS :: struct {
Guid : GUID,
dwOffset : ULONG,
dwCommand : ULONG,
dwFlags : ULONG,
dwMode : ULONG,
dwTVStandard : ULONG,
dwAvailableModes : ULONG,
dwAvailableTVStandard : ULONG,
dwFlickerFilter : ULONG,
dwOverScanX : ULONG,
dwOverScanY : ULONG,
dwMaxUnscaledX : ULONG,
dwMaxUnscaledY : ULONG,
dwPositionX : ULONG,
dwPositionY : ULONG,
dwBrightness : ULONG,
dwContrast : ULONG,
dwCPType : ULONG,
dwCPCommand : ULONG,
dwCPStandard : ULONG,
dwCPKey : ULONG,
bCP_APSTriggerBits : ULONG,
bOEMCopyProtection : [256]UCHAR,
};
PVIDEOPARAMETERS :: ^struct {
Guid : GUID,
dwOffset : ULONG,
dwCommand : ULONG,
dwFlags : ULONG,
dwMode : ULONG,
dwTVStandard : ULONG,
dwAvailableModes : ULONG,
dwAvailableTVStandard : ULONG,
dwFlickerFilter : ULONG,
dwOverScanX : ULONG,
dwOverScanY : ULONG,
dwMaxUnscaledX : ULONG,
dwMaxUnscaledY : ULONG,
dwPositionX : ULONG,
dwPositionY : ULONG,
dwBrightness : ULONG,
dwContrast : ULONG,
dwCPType : ULONG,
dwCPCommand : ULONG,
dwCPStandard : ULONG,
dwCPKey : ULONG,
bCP_APSTriggerBits : ULONG,
bOEMCopyProtection : [256]UCHAR,
};
LPVIDEOPARAMETERS :: ^struct {
Guid : GUID,
dwOffset : ULONG,
dwCommand : ULONG,
dwFlags : ULONG,
dwMode : ULONG,
dwTVStandard : ULONG,
dwAvailableModes : ULONG,
dwAvailableTVStandard : ULONG,
dwFlickerFilter : ULONG,
dwOverScanX : ULONG,
dwOverScanY : ULONG,
dwMaxUnscaledX : ULONG,
dwMaxUnscaledY : ULONG,
dwPositionX : ULONG,
dwPositionY : ULONG,
dwBrightness : ULONG,
dwContrast : ULONG,
dwCPType : ULONG,
dwCPCommand : ULONG,
dwCPStandard : ULONG,
dwCPKey : ULONG,
bCP_APSTriggerBits : ULONG,
bOEMCopyProtection : [256]UCHAR,
};
FILTERKEYS :: struct {
cbSize : UINT,
dwFlags : u32,
iWaitMSec : u32,
iDelayMSec : u32,
iRepeatMSec : u32,
iBounceMSec : u32,
};
LPFILTERKEYS :: ^struct {
cbSize : UINT,
dwFlags : u32,
iWaitMSec : u32,
iDelayMSec : u32,
iRepeatMSec : u32,
iBounceMSec : u32,
};
STICKYKEYS :: struct {
cbSize : UINT,
dwFlags : u32,
};
LPSTICKYKEYS :: ^struct {
cbSize : UINT,
dwFlags : u32,
};
MOUSEKEYS :: struct {
cbSize : UINT,
dwFlags : u32,
iMaxSpeed : u32,
iTimeToMaxSpeed : u32,
iCtrlSpeed : u32,
dwReserved1 : u32,
dwReserved2 : u32,
};
LPMOUSEKEYS :: ^struct {
cbSize : UINT,
dwFlags : u32,
iMaxSpeed : u32,
iTimeToMaxSpeed : u32,
iCtrlSpeed : u32,
dwReserved1 : u32,
dwReserved2 : u32,
};
ACCESSTIMEOUT :: struct {
cbSize : UINT,
dwFlags : u32,
iTimeOutMSec : u32,
};
LPACCESSTIMEOUT :: ^struct {
cbSize : UINT,
dwFlags : u32,
iTimeOutMSec : u32,
};
SOUNDSENTRYA :: struct {
cbSize : UINT,
dwFlags : u32,
iFSTextEffect : u32,
iFSTextEffectMSec : u32,
iFSTextEffectColorBits : u32,
iFSGrafEffect : u32,
iFSGrafEffectMSec : u32,
iFSGrafEffectColor : u32,
iWindowsEffect : u32,
iWindowsEffectMSec : u32,
lpszWindowsEffectDLL : LPSTR,
iWindowsEffectOrdinal : u32,
};
LPSOUNDSENTRYA :: ^struct {
cbSize : UINT,
dwFlags : u32,
iFSTextEffect : u32,
iFSTextEffectMSec : u32,
iFSTextEffectColorBits : u32,
iFSGrafEffect : u32,
iFSGrafEffectMSec : u32,
iFSGrafEffectColor : u32,
iWindowsEffect : u32,
iWindowsEffectMSec : u32,
lpszWindowsEffectDLL : LPSTR,
iWindowsEffectOrdinal : u32,
};
SOUNDSENTRYW :: struct {
cbSize : UINT,
dwFlags : u32,
iFSTextEffect : u32,
iFSTextEffectMSec : u32,
iFSTextEffectColorBits : u32,
iFSGrafEffect : u32,
iFSGrafEffectMSec : u32,
iFSGrafEffectColor : u32,
iWindowsEffect : u32,
iWindowsEffectMSec : u32,
lpszWindowsEffectDLL : LPWSTR,
iWindowsEffectOrdinal : u32,
};
LPSOUNDSENTRYW :: ^struct {
cbSize : UINT,
dwFlags : u32,
iFSTextEffect : u32,
iFSTextEffectMSec : u32,
iFSTextEffectColorBits : u32,
iFSGrafEffect : u32,
iFSGrafEffectMSec : u32,
iFSGrafEffectColor : u32,
iWindowsEffect : u32,
iWindowsEffectMSec : u32,
lpszWindowsEffectDLL : LPWSTR,
iWindowsEffectOrdinal : u32,
};
SOUNDSENTRY :: SOUNDSENTRYA;
LPSOUNDSENTRY :: LPSOUNDSENTRYA;
TOGGLEKEYS :: struct {
cbSize : UINT,
dwFlags : u32,
};
LPTOGGLEKEYS :: ^struct {
cbSize : UINT,
dwFlags : u32,
};
AUDIODESCRIPTION :: struct {
cbSize : UINT,
Enabled : BOOL,
Locale : LCID,
};
LPAUDIODESCRIPTION :: ^struct {
cbSize : UINT,
Enabled : BOOL,
Locale : LCID,
};
MONITORINFO :: struct {
cbSize : u32,
rcMonitor : RECT,
rcWork : RECT,
dwFlags : u32,
};
LPMONITORINFO :: ^struct {
cbSize : u32,
rcMonitor : RECT,
rcWork : RECT,
dwFlags : u32,
};
MONITORINFOEXA :: struct {
s : MONITORINFO,
szDevice : [32]CHAR,
};
LPMONITORINFOEXA :: ^struct {
s : MONITORINFO,
szDevice : [32]CHAR,
};
MONITORINFOEXW :: struct {
s : MONITORINFO,
szDevice : [32]WCHAR,
};
LPMONITORINFOEXW :: ^struct {
s : MONITORINFO,
szDevice : [32]WCHAR,
};
MONITORINFOEX :: MONITORINFOEXA;
LPMONITORINFOEX :: LPMONITORINFOEXA;
MONITORENUMPROC :: (proc(HMONITOR, HDC, LPRECT, LPARAM) -> BOOL);
WINEVENTPROC :: proc(hWinEventHook : HWINEVENTHOOK, event : u32, hwnd : HWND, idObject : LONG, idChild : LONG, idEventThread : u32, dwmsEventTime : u32);
GUITHREADINFO :: struct {
cbSize : u32,
flags : u32,
hwndActive : HWND,
hwndFocus : HWND,
hwndCapture : HWND,
hwndMenuOwner : HWND,
hwndMoveSize : HWND,
hwndCaret : HWND,
rcCaret : RECT,
};
PGUITHREADINFO :: ^struct {
cbSize : u32,
flags : u32,
hwndActive : HWND,
hwndFocus : HWND,
hwndCapture : HWND,
hwndMenuOwner : HWND,
hwndMoveSize : HWND,
hwndCaret : HWND,
rcCaret : RECT,
};
LPGUITHREADINFO :: ^struct {
cbSize : u32,
flags : u32,
hwndActive : HWND,
hwndFocus : HWND,
hwndCapture : HWND,
hwndMenuOwner : HWND,
hwndMoveSize : HWND,
hwndCaret : HWND,
rcCaret : RECT,
};
CURSORINFO :: struct {
cbSize : u32,
flags : u32,
hCursor : HCURSOR,
ptScreenPos : POINT,
};
PCURSORINFO :: ^struct {
cbSize : u32,
flags : u32,
hCursor : HCURSOR,
ptScreenPos : POINT,
};
LPCURSORINFO :: ^struct {
cbSize : u32,
flags : u32,
hCursor : HCURSOR,
ptScreenPos : POINT,
};
WINDOWINFO :: struct {
cbSize : u32,
rcWindow : RECT,
rcClient : RECT,
dwStyle : u32,
dwExStyle : u32,
dwWindowStatus : u32,
cxWindowBorders : UINT,
cyWindowBorders : UINT,
atomWindowType : ATOM,
wCreatorVersion : u16,
};
PWINDOWINFO :: ^struct {
cbSize : u32,
rcWindow : RECT,
rcClient : RECT,
dwStyle : u32,
dwExStyle : u32,
dwWindowStatus : u32,
cxWindowBorders : UINT,
cyWindowBorders : UINT,
atomWindowType : ATOM,
wCreatorVersion : u16,
};
LPWINDOWINFO :: ^struct {
cbSize : u32,
rcWindow : RECT,
rcClient : RECT,
dwStyle : u32,
dwExStyle : u32,
dwWindowStatus : u32,
cxWindowBorders : UINT,
cyWindowBorders : UINT,
atomWindowType : ATOM,
wCreatorVersion : u16,
};
TITLEBARINFO :: struct {
cbSize : u32,
rcTitleBar : RECT,
rgstate : [5 + 1]u32,
};
PTITLEBARINFO :: ^struct {
cbSize : u32,
rcTitleBar : RECT,
rgstate : [5 + 1]u32,
};
LPTITLEBARINFO :: ^struct {
cbSize : u32,
rcTitleBar : RECT,
rgstate : [5 + 1]u32,
};
TITLEBARINFOEX :: struct {
cbSize : u32,
rcTitleBar : RECT,
rgstate : [5 + 1]u32,
rgrect : [5 + 1]RECT,
};
PTITLEBARINFOEX :: ^struct {
cbSize : u32,
rcTitleBar : RECT,
rgstate : [5 + 1]u32,
rgrect : [5 + 1]RECT,
};
LPTITLEBARINFOEX :: ^struct {
cbSize : u32,
rcTitleBar : RECT,
rgstate : [5 + 1]u32,
rgrect : [5 + 1]RECT,
};
MENUBARINFO :: struct {
cbSize : u32,
rcBar : RECT,
hMenu : HMENU,
hwndMenu : HWND,
fBarFocused : ,
fFocused : ,
};
PMENUBARINFO :: ^struct {
cbSize : u32,
rcBar : RECT,
hMenu : HMENU,
hwndMenu : HWND,
fBarFocused : ,
fFocused : ,
};
LPMENUBARINFO :: ^struct {
cbSize : u32,
rcBar : RECT,
hMenu : HMENU,
hwndMenu : HWND,
fBarFocused : ,
fFocused : ,
};
SCROLLBARINFO :: struct {
cbSize : u32,
rcScrollBar : RECT,
dxyLineButton : i32,
xyThumbTop : i32,
xyThumbBottom : i32,
reserved : i32,
rgstate : [5 + 1]u32,
};
PSCROLLBARINFO :: ^struct {
cbSize : u32,
rcScrollBar : RECT,
dxyLineButton : i32,
xyThumbTop : i32,
xyThumbBottom : i32,
reserved : i32,
rgstate : [5 + 1]u32,
};
LPSCROLLBARINFO :: ^struct {
cbSize : u32,
rcScrollBar : RECT,
dxyLineButton : i32,
xyThumbTop : i32,
xyThumbBottom : i32,
reserved : i32,
rgstate : [5 + 1]u32,
};
COMBOBOXINFO :: struct {
cbSize : u32,
rcItem : RECT,
rcButton : RECT,
stateButton : u32,
hwndCombo : HWND,
hwndItem : HWND,
hwndList : HWND,
};
PCOMBOBOXINFO :: ^struct {
cbSize : u32,
rcItem : RECT,
rcButton : RECT,
stateButton : u32,
hwndCombo : HWND,
hwndItem : HWND,
hwndList : HWND,
};
LPCOMBOBOXINFO :: ^struct {
cbSize : u32,
rcItem : RECT,
rcButton : RECT,
stateButton : u32,
hwndCombo : HWND,
hwndItem : HWND,
hwndList : HWND,
};
ALTTABINFO :: struct {
cbSize : u32,
cItems : i32,
cColumns : i32,
cRows : i32,
iColFocus : i32,
iRowFocus : i32,
cxItem : i32,
cyItem : i32,
ptStart : POINT,
};
PALTTABINFO :: ^struct {
cbSize : u32,
cItems : i32,
cColumns : i32,
cRows : i32,
iColFocus : i32,
iRowFocus : i32,
cxItem : i32,
cyItem : i32,
ptStart : POINT,
};
LPALTTABINFO :: ^struct {
cbSize : u32,
cItems : i32,
cColumns : i32,
cRows : i32,
iColFocus : i32,
iRowFocus : i32,
cxItem : i32,
cyItem : i32,
ptStart : POINT,
};
HRAWINPUT__ :: struct {
unused : i32,
};
HRAWINPUT :: ^HRAWINPUT__;
RAWINPUTHEADER :: struct {
dwType : u32,
dwSize : u32,
hDevice : HANDLE,
wParam : WPARAM,
};
PRAWINPUTHEADER :: ^struct {
dwType : u32,
dwSize : u32,
hDevice : HANDLE,
wParam : WPARAM,
};
LPRAWINPUTHEADER :: ^struct {
dwType : u32,
dwSize : u32,
hDevice : HANDLE,
wParam : WPARAM,
};
RAWMOUSE :: struct {
usFlags : USHORT,
u : struct #raw_union {
ulButtons : ULONG,
s : struct {
usButtonFlags : USHORT,
usButtonData : USHORT,
},
},
ulRawButtons : ULONG,
lLastX : LONG,
lLastY : LONG,
ulExtraInformation : ULONG,
};
PRAWMOUSE :: ^struct {
usFlags : USHORT,
u : struct #raw_union {
ulButtons : ULONG,
s : struct {
usButtonFlags : USHORT,
usButtonData : USHORT,
},
},
ulRawButtons : ULONG,
lLastX : LONG,
lLastY : LONG,
ulExtraInformation : ULONG,
};
LPRAWMOUSE :: ^struct {
usFlags : USHORT,
u : struct #raw_union {
ulButtons : ULONG,
s : struct {
usButtonFlags : USHORT,
usButtonData : USHORT,
},
},
ulRawButtons : ULONG,
lLastX : LONG,
lLastY : LONG,
ulExtraInformation : ULONG,
};
RAWKEYBOARD :: struct {
MakeCode : USHORT,
Flags : USHORT,
Reserved : USHORT,
VKey : USHORT,
Message : UINT,
ExtraInformation : ULONG,
};
PRAWKEYBOARD :: ^struct {
MakeCode : USHORT,
Flags : USHORT,
Reserved : USHORT,
VKey : USHORT,
Message : UINT,
ExtraInformation : ULONG,
};
LPRAWKEYBOARD :: ^struct {
MakeCode : USHORT,
Flags : USHORT,
Reserved : USHORT,
VKey : USHORT,
Message : UINT,
ExtraInformation : ULONG,
};
RAWHID :: struct {
dwSizeHid : u32,
dwCount : u32,
bRawData : [1]BYTE,
};
PRAWHID :: ^struct {
dwSizeHid : u32,
dwCount : u32,
bRawData : [1]BYTE,
};
LPRAWHID :: ^struct {
dwSizeHid : u32,
dwCount : u32,
bRawData : [1]BYTE,
};
RAWINPUT :: struct {
header : RAWINPUTHEADER,
data : struct #raw_union {
mouse : RAWMOUSE,
keyboard : RAWKEYBOARD,
hid : RAWHID,
},
};
PRAWINPUT :: ^struct {
header : RAWINPUTHEADER,
data : struct #raw_union {
mouse : RAWMOUSE,
keyboard : RAWKEYBOARD,
hid : RAWHID,
},
};
LPRAWINPUT :: ^struct {
header : RAWINPUTHEADER,
data : struct #raw_union {
mouse : RAWMOUSE,
keyboard : RAWKEYBOARD,
hid : RAWHID,
},
};
RID_DEVICE_INFO_MOUSE :: struct {
dwId : u32,
dwNumberOfButtons : u32,
dwSampleRate : u32,
fHasHorizontalWheel : BOOL,
};
PRID_DEVICE_INFO_MOUSE :: ^struct {
dwId : u32,
dwNumberOfButtons : u32,
dwSampleRate : u32,
fHasHorizontalWheel : BOOL,
};
RID_DEVICE_INFO_KEYBOARD :: struct {
dwType : u32,
dwSubType : u32,
dwKeyboardMode : u32,
dwNumberOfFunctionKeys : u32,
dwNumberOfIndicators : u32,
dwNumberOfKeysTotal : u32,
};
PRID_DEVICE_INFO_KEYBOARD :: ^struct {
dwType : u32,
dwSubType : u32,
dwKeyboardMode : u32,
dwNumberOfFunctionKeys : u32,
dwNumberOfIndicators : u32,
dwNumberOfKeysTotal : u32,
};
RID_DEVICE_INFO_HID :: struct {
dwVendorId : u32,
dwProductId : u32,
dwVersionNumber : u32,
usUsagePage : USHORT,
usUsage : USHORT,
};
PRID_DEVICE_INFO_HID :: ^struct {
dwVendorId : u32,
dwProductId : u32,
dwVersionNumber : u32,
usUsagePage : USHORT,
usUsage : USHORT,
};
RID_DEVICE_INFO :: struct {
cbSize : u32,
dwType : u32,
u : struct #raw_union {
mouse : RID_DEVICE_INFO_MOUSE,
keyboard : RID_DEVICE_INFO_KEYBOARD,
hid : RID_DEVICE_INFO_HID,
},
};
PRID_DEVICE_INFO :: ^struct {
cbSize : u32,
dwType : u32,
u : struct #raw_union {
mouse : RID_DEVICE_INFO_MOUSE,
keyboard : RID_DEVICE_INFO_KEYBOARD,
hid : RID_DEVICE_INFO_HID,
},
};
LPRID_DEVICE_INFO :: ^struct {
cbSize : u32,
dwType : u32,
u : struct #raw_union {
mouse : RID_DEVICE_INFO_MOUSE,
keyboard : RID_DEVICE_INFO_KEYBOARD,
hid : RID_DEVICE_INFO_HID,
},
};
RAWINPUTDEVICE :: struct {
usUsagePage : USHORT,
usUsage : USHORT,
dwFlags : u32,
hwndTarget : HWND,
};
PRAWINPUTDEVICE :: ^struct {
usUsagePage : USHORT,
usUsage : USHORT,
dwFlags : u32,
hwndTarget : HWND,
};
LPRAWINPUTDEVICE :: ^struct {
usUsagePage : USHORT,
usUsage : USHORT,
dwFlags : u32,
hwndTarget : HWND,
};
PCRAWINPUTDEVICE :: ^RAWINPUTDEVICE;
RAWINPUTDEVICELIST :: struct {
hDevice : HANDLE,
dwType : u32,
};
PRAWINPUTDEVICELIST :: ^struct {
hDevice : HANDLE,
dwType : u32,
};
POINTER_DEVICE_TYPE :: enum {
POINTER_DEVICE_TYPE_INTEGRATED_PEN = 0x00000001,
POINTER_DEVICE_TYPE_EXTERNAL_PEN = 0x00000002,
POINTER_DEVICE_TYPE_TOUCH = 0x00000003,
POINTER_DEVICE_TYPE_TOUCH_PAD = 0x00000004,
POINTER_DEVICE_TYPE_MAX = 0xFFFFFFFF,
};
POINTER_DEVICE_INFO :: struct {
displayOrientation : u32,
device : HANDLE,
pointerDeviceType : POINTER_DEVICE_TYPE,
monitor : HMONITOR,
startingCursorId : ULONG,
maxActiveContacts : USHORT,
productString : [520]WCHAR,
};
POINTER_DEVICE_PROPERTY :: struct {
logicalMin : INT32,
logicalMax : INT32,
physicalMin : INT32,
physicalMax : INT32,
unit : UINT32,
unitExponent : UINT32,
usagePageId : USHORT,
usageId : USHORT,
};
POINTER_DEVICE_CURSOR_TYPE :: enum {
POINTER_DEVICE_CURSOR_TYPE_UNKNOWN = 0x00000000,
POINTER_DEVICE_CURSOR_TYPE_TIP = 0x00000001,
POINTER_DEVICE_CURSOR_TYPE_ERASER = 0x00000002,
POINTER_DEVICE_CURSOR_TYPE_MAX = 0xFFFFFFFF,
};
POINTER_DEVICE_CURSOR_INFO :: struct {
cursorId : UINT32,
cursor : POINTER_DEVICE_CURSOR_TYPE,
};
CHANGEFILTERSTRUCT :: struct {
cbSize : u32,
ExtStatus : u32,
};
PCHANGEFILTERSTRUCT :: ^struct {
cbSize : u32,
ExtStatus : u32,
};
HGESTUREINFO__ :: struct {
unused : i32,
};
HGESTUREINFO :: ^HGESTUREINFO__;
GESTUREINFO :: struct {
cbSize : UINT,
dwFlags : u32,
dwID : u32,
hwndTarget : HWND,
ptsLocation : POINTS,
dwInstanceID : u32,
dwSequenceID : u32,
ullArguments : ULONGLONG,
cbExtraArgs : UINT,
};
PGESTUREINFO :: ^struct {
cbSize : UINT,
dwFlags : u32,
dwID : u32,
hwndTarget : HWND,
ptsLocation : POINTS,
dwInstanceID : u32,
dwSequenceID : u32,
ullArguments : ULONGLONG,
cbExtraArgs : UINT,
};
PCGESTUREINFO :: ^GESTUREINFO;
GESTURENOTIFYSTRUCT :: struct {
cbSize : UINT,
dwFlags : u32,
hwndTarget : HWND,
ptsLocation : POINTS,
dwInstanceID : u32,
};
PGESTURENOTIFYSTRUCT :: ^struct {
cbSize : UINT,
dwFlags : u32,
hwndTarget : HWND,
ptsLocation : POINTS,
dwInstanceID : u32,
};
GESTURECONFIG :: struct {
dwID : u32,
dwWant : u32,
dwBlock : u32,
};
PGESTURECONFIG :: ^struct {
dwID : u32,
dwWant : u32,
dwBlock : u32,
};
INPUT_MESSAGE_DEVICE_TYPE :: enum {
IMDT_UNAVAILABLE = 0x00000000,
IMDT_KEYBOARD = 0x00000001,
IMDT_MOUSE = 0x00000002,
IMDT_TOUCH = 0x00000004,
IMDT_PEN = 0x00000008,
IMDT_TOUCHPAD = 0x00000010,
};
INPUT_MESSAGE_ORIGIN_ID :: enum {
IMO_UNAVAILABLE = 0x00000000,
IMO_HARDWARE = 0x00000001,
IMO_INJECTED = 0x00000002,
IMO_SYSTEM = 0x00000004,
};
INPUT_MESSAGE_SOURCE :: struct {
deviceType : INPUT_MESSAGE_DEVICE_TYPE,
originId : INPUT_MESSAGE_ORIGIN_ID,
};
AR_STATE :: enum {
AR_ENABLED = 0x0,
AR_DISABLED = 0x1,
AR_SUPPRESSED = 0x2,
AR_REMOTESESSION = 0x4,
AR_MULTIMON = 0x8,
AR_NOSENSOR = 0x10,
AR_NOT_SUPPORTED = 0x20,
AR_DOCKED = 0x40,
AR_LAPTOP = 0x80,
};
PAR_STATE :: ^enum {
AR_ENABLED = 0x0,
AR_DISABLED = 0x1,
AR_SUPPRESSED = 0x2,
AR_REMOTESESSION = 0x4,
AR_MULTIMON = 0x8,
AR_NOSENSOR = 0x10,
AR_NOT_SUPPORTED = 0x20,
AR_DOCKED = 0x40,
AR_LAPTOP = 0x80,
};
ORIENTATION_PREFERENCE :: enum {
ORIENTATION_PREFERENCE_NONE = 0x0,
ORIENTATION_PREFERENCE_LANDSCAPE = 0x1,
ORIENTATION_PREFERENCE_PORTRAIT = 0x2,
ORIENTATION_PREFERENCE_LANDSCAPE_FLIPPED = 0x4,
ORIENTATION_PREFERENCE_PORTRAIT_FLIPPED = 0x8,
};
LGRPID :: u32;
LCTYPE :: u32;
CALTYPE :: u32;
CALID :: u32;
CPINFO :: struct {
MaxCharSize : UINT,
DefaultChar : [2]BYTE,
LeadByte : [12]BYTE,
};
LPCPINFO :: ^struct {
MaxCharSize : UINT,
DefaultChar : [2]BYTE,
LeadByte : [12]BYTE,
};
GEOTYPE :: u32;
GEOCLASS :: u32;
GEOID :: LONG;
CPINFOEXA :: struct {
MaxCharSize : UINT,
DefaultChar : [2]BYTE,
LeadByte : [12]BYTE,
UnicodeDefaultChar : WCHAR,
CodePage : UINT,
CodePageName : [260]CHAR,
};
LPCPINFOEXA :: ^struct {
MaxCharSize : UINT,
DefaultChar : [2]BYTE,
LeadByte : [12]BYTE,
UnicodeDefaultChar : WCHAR,
CodePage : UINT,
CodePageName : [260]CHAR,
};
CPINFOEXW :: struct {
MaxCharSize : UINT,
DefaultChar : [2]BYTE,
LeadByte : [12]BYTE,
UnicodeDefaultChar : WCHAR,
CodePage : UINT,
CodePageName : [260]WCHAR,
};
LPCPINFOEXW :: ^struct {
MaxCharSize : UINT,
DefaultChar : [2]BYTE,
LeadByte : [12]BYTE,
UnicodeDefaultChar : WCHAR,
CodePage : UINT,
CodePageName : [260]WCHAR,
};
CPINFOEX :: CPINFOEXA;
LPCPINFOEX :: LPCPINFOEXA;
NUMBERFMTA :: struct {
NumDigits : UINT,
LeadingZero : UINT,
Grouping : UINT,
lpDecimalSep : LPSTR,
lpThousandSep : LPSTR,
NegativeOrder : UINT,
};
LPNUMBERFMTA :: ^struct {
NumDigits : UINT,
LeadingZero : UINT,
Grouping : UINT,
lpDecimalSep : LPSTR,
lpThousandSep : LPSTR,
NegativeOrder : UINT,
};
NUMBERFMTW :: struct {
NumDigits : UINT,
LeadingZero : UINT,
Grouping : UINT,
lpDecimalSep : LPWSTR,
lpThousandSep : LPWSTR,
NegativeOrder : UINT,
};
LPNUMBERFMTW :: ^struct {
NumDigits : UINT,
LeadingZero : UINT,
Grouping : UINT,
lpDecimalSep : LPWSTR,
lpThousandSep : LPWSTR,
NegativeOrder : UINT,
};
NUMBERFMT :: NUMBERFMTA;
LPNUMBERFMT :: LPNUMBERFMTA;
CURRENCYFMTA :: struct {
NumDigits : UINT,
LeadingZero : UINT,
Grouping : UINT,
lpDecimalSep : LPSTR,
lpThousandSep : LPSTR,
NegativeOrder : UINT,
PositiveOrder : UINT,
lpCurrencySymbol : LPSTR,
};
LPCURRENCYFMTA :: ^struct {
NumDigits : UINT,
LeadingZero : UINT,
Grouping : UINT,
lpDecimalSep : LPSTR,
lpThousandSep : LPSTR,
NegativeOrder : UINT,
PositiveOrder : UINT,
lpCurrencySymbol : LPSTR,
};
CURRENCYFMTW :: struct {
NumDigits : UINT,
LeadingZero : UINT,
Grouping : UINT,
lpDecimalSep : LPWSTR,
lpThousandSep : LPWSTR,
NegativeOrder : UINT,
PositiveOrder : UINT,
lpCurrencySymbol : LPWSTR,
};
LPCURRENCYFMTW :: ^struct {
NumDigits : UINT,
LeadingZero : UINT,
Grouping : UINT,
lpDecimalSep : LPWSTR,
lpThousandSep : LPWSTR,
NegativeOrder : UINT,
PositiveOrder : UINT,
lpCurrencySymbol : LPWSTR,
};
CURRENCYFMT :: CURRENCYFMTA;
LPCURRENCYFMT :: LPCURRENCYFMTA;
SYSNLS_FUNCTION :: enum {
COMPARE_STRING = 0x0001,
};
NLS_FUNCTION :: u32;
NLSVERSIONINFO :: struct {
dwNLSVersionInfoSize : u32,
dwNLSVersion : u32,
dwDefinedVersion : u32,
dwEffectiveId : u32,
guidCustomVersion : GUID,
};
LPNLSVERSIONINFO :: ^struct {
dwNLSVersionInfoSize : u32,
dwNLSVersion : u32,
dwDefinedVersion : u32,
dwEffectiveId : u32,
guidCustomVersion : GUID,
};
NLSVERSIONINFOEX :: struct {
dwNLSVersionInfoSize : u32,
dwNLSVersion : u32,
dwDefinedVersion : u32,
dwEffectiveId : u32,
guidCustomVersion : GUID,
};
LPNLSVERSIONINFOEX :: ^struct {
dwNLSVersionInfoSize : u32,
dwNLSVersion : u32,
dwDefinedVersion : u32,
dwEffectiveId : u32,
guidCustomVersion : GUID,
};
SYSGEOTYPE :: enum {
GEO_NATION = 0x0001,
GEO_LATITUDE = 0x0002,
GEO_LONGITUDE = 0x0003,
GEO_ISO2 = 0x0004,
GEO_ISO3 = 0x0005,
GEO_RFC1766 = 0x0006,
GEO_LCID = 0x0007,
GEO_FRIENDLYNAME = 0x0008,
GEO_OFFICIALNAME = 0x0009,
GEO_TIMEZONES = 0x000A,
GEO_OFFICIALLANGUAGES = 0x000B,
GEO_ISO_UN_NUMBER = 0x000C,
GEO_PARENT = 0x000D,
GEO_DIALINGCODE = 0x000E,
GEO_CURRENCYCODE = 0x000F,
GEO_CURRENCYSYMBOL = 0x0010,
GEO_NAME = 0x0011,
GEO_ID = 0x0012,
};
SYSGEOCLASS :: enum {
GEOCLASS_NATION = 16,
GEOCLASS_REGION = 14,
GEOCLASS_ALL = 0,
};
NORM_FORM :: enum {
NormalizationOther = 0,
NormalizationC = 0x1,
NormalizationD = 0x2,
NormalizationKC = 0x5,
NormalizationKD = 0x6,
};
LANGUAGEGROUP_ENUMPROCA :: (proc(LGRPID, LPSTR, LPSTR, u32, LONG_PTR) -> BOOL);
LANGGROUPLOCALE_ENUMPROCA :: (proc(LGRPID, LCID, LPSTR, LONG_PTR) -> BOOL);
UILANGUAGE_ENUMPROCA :: (proc(LPSTR, LONG_PTR) -> BOOL);
CODEPAGE_ENUMPROCA :: (proc(LPSTR) -> BOOL);
DATEFMT_ENUMPROCA :: (proc(LPSTR) -> BOOL);
DATEFMT_ENUMPROCEXA :: (proc(LPSTR, CALID) -> BOOL);
TIMEFMT_ENUMPROCA :: (proc(LPSTR) -> BOOL);
CALINFO_ENUMPROCA :: (proc(LPSTR) -> BOOL);
CALINFO_ENUMPROCEXA :: (proc(LPSTR, CALID) -> BOOL);
LOCALE_ENUMPROCA :: (proc(LPSTR) -> BOOL);
LOCALE_ENUMPROCW :: (proc(LPWSTR) -> BOOL);
LANGUAGEGROUP_ENUMPROCW :: (proc(LGRPID, LPWSTR, LPWSTR, u32, LONG_PTR) -> BOOL);
LANGGROUPLOCALE_ENUMPROCW :: (proc(LGRPID, LCID, LPWSTR, LONG_PTR) -> BOOL);
UILANGUAGE_ENUMPROCW :: (proc(LPWSTR, LONG_PTR) -> BOOL);
CODEPAGE_ENUMPROCW :: (proc(LPWSTR) -> BOOL);
DATEFMT_ENUMPROCW :: (proc(LPWSTR) -> BOOL);
DATEFMT_ENUMPROCEXW :: (proc(LPWSTR, CALID) -> BOOL);
TIMEFMT_ENUMPROCW :: (proc(LPWSTR) -> BOOL);
CALINFO_ENUMPROCW :: (proc(LPWSTR) -> BOOL);
CALINFO_ENUMPROCEXW :: (proc(LPWSTR, CALID) -> BOOL);
GEO_ENUMPROC :: (proc(GEOID) -> BOOL);
GEO_ENUMNAMEPROC :: (proc(PWSTR, LPARAM) -> BOOL);
FILEMUIINFO :: struct {
dwSize : u32,
dwVersion : u32,
dwFileType : u32,
pChecksum : [16]BYTE,
pServiceChecksum : [16]BYTE,
dwLanguageNameOffset : u32,
dwTypeIDMainSize : u32,
dwTypeIDMainOffset : u32,
dwTypeNameMainOffset : u32,
dwTypeIDMUISize : u32,
dwTypeIDMUIOffset : u32,
dwTypeNameMUIOffset : u32,
abBuffer : [8]BYTE,
};
PFILEMUIINFO :: ^struct {
dwSize : u32,
dwVersion : u32,
dwFileType : u32,
pChecksum : [16]BYTE,
pServiceChecksum : [16]BYTE,
dwLanguageNameOffset : u32,
dwTypeIDMainSize : u32,
dwTypeIDMainOffset : u32,
dwTypeNameMainOffset : u32,
dwTypeIDMUISize : u32,
dwTypeIDMUIOffset : u32,
dwTypeNameMUIOffset : u32,
abBuffer : [8]BYTE,
};
CALINFO_ENUMPROCEXEX :: (proc(LPWSTR, CALID, LPWSTR, LPARAM) -> BOOL);
DATEFMT_ENUMPROCEXEX :: (proc(LPWSTR, CALID, LPARAM) -> BOOL);
TIMEFMT_ENUMPROCEX :: (proc(LPWSTR, LPARAM) -> BOOL);
LOCALE_ENUMPROCEX :: (proc(LPWSTR, u32, LPARAM) -> BOOL);
COORD :: struct {
X : SHORT,
Y : SHORT,
};
PCOORD :: ^struct {
X : SHORT,
Y : SHORT,
};
SMALL_RECT :: struct {
Left : SHORT,
Top : SHORT,
Right : SHORT,
Bottom : SHORT,
};
PSMALL_RECT :: ^struct {
Left : SHORT,
Top : SHORT,
Right : SHORT,
Bottom : SHORT,
};
KEY_EVENT_RECORD :: struct {
bKeyDown : BOOL,
wRepeatCount : u16,
wVirtualKeyCode : u16,
wVirtualScanCode : u16,
uChar : struct #raw_union {
UnicodeChar : WCHAR,
AsciiChar : CHAR,
},
dwControlKeyState : u32,
};
PKEY_EVENT_RECORD :: ^struct {
bKeyDown : BOOL,
wRepeatCount : u16,
wVirtualKeyCode : u16,
wVirtualScanCode : u16,
uChar : struct #raw_union {
UnicodeChar : WCHAR,
AsciiChar : CHAR,
},
dwControlKeyState : u32,
};
MOUSE_EVENT_RECORD :: struct {
dwMousePosition : COORD,
dwButtonState : u32,
dwControlKeyState : u32,
dwEventFlags : u32,
};
PMOUSE_EVENT_RECORD :: ^struct {
dwMousePosition : COORD,
dwButtonState : u32,
dwControlKeyState : u32,
dwEventFlags : u32,
};
WINDOW_BUFFER_SIZE_RECORD :: struct {
dwSize : COORD,
};
PWINDOW_BUFFER_SIZE_RECORD :: ^struct {
dwSize : COORD,
};
MENU_EVENT_RECORD :: struct {
dwCommandId : UINT,
};
PMENU_EVENT_RECORD :: ^struct {
dwCommandId : UINT,
};
FOCUS_EVENT_RECORD :: struct {
bSetFocus : BOOL,
};
PFOCUS_EVENT_RECORD :: ^struct {
bSetFocus : BOOL,
};
INPUT_RECORD :: struct {
EventType : u16,
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,
},
};
PINPUT_RECORD :: ^struct {
EventType : u16,
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,
},
};
CHAR_INFO :: struct {
Char : struct #raw_union {
UnicodeChar : WCHAR,
AsciiChar : CHAR,
},
Attributes : u16,
};
PCHAR_INFO :: ^struct {
Char : struct #raw_union {
UnicodeChar : WCHAR,
AsciiChar : CHAR,
},
Attributes : u16,
};
CONSOLE_FONT_INFO :: struct {
nFont : u32,
dwFontSize : COORD,
};
PCONSOLE_FONT_INFO :: ^struct {
nFont : u32,
dwFontSize : COORD,
};
HPCON :: rawptr;
CONSOLE_READCONSOLE_CONTROL :: struct {
nLength : ULONG,
nInitialChars : ULONG,
dwCtrlWakeupMask : ULONG,
dwControlKeyState : ULONG,
};
PCONSOLE_READCONSOLE_CONTROL :: ^struct {
nLength : ULONG,
nInitialChars : ULONG,
dwCtrlWakeupMask : ULONG,
dwControlKeyState : ULONG,
};
PHANDLER_ROUTINE :: (proc(CtrlType : u32) -> BOOL);
CONSOLE_CURSOR_INFO :: struct {
dwSize : u32,
bVisible : BOOL,
};
PCONSOLE_CURSOR_INFO :: ^struct {
dwSize : u32,
bVisible : BOOL,
};
CONSOLE_SCREEN_BUFFER_INFO :: struct {
dwSize : COORD,
dwCursorPosition : COORD,
wAttributes : u16,
srWindow : SMALL_RECT,
dwMaximumWindowSize : COORD,
};
PCONSOLE_SCREEN_BUFFER_INFO :: ^struct {
dwSize : COORD,
dwCursorPosition : COORD,
wAttributes : u16,
srWindow : SMALL_RECT,
dwMaximumWindowSize : COORD,
};
CONSOLE_SCREEN_BUFFER_INFOEX :: struct {
cbSize : ULONG,
dwSize : COORD,
dwCursorPosition : COORD,
wAttributes : u16,
srWindow : SMALL_RECT,
dwMaximumWindowSize : COORD,
wPopupAttributes : u16,
bFullscreenSupported : BOOL,
ColorTable : [16]COLORREF,
};
PCONSOLE_SCREEN_BUFFER_INFOEX :: ^struct {
cbSize : ULONG,
dwSize : COORD,
dwCursorPosition : COORD,
wAttributes : u16,
srWindow : SMALL_RECT,
dwMaximumWindowSize : COORD,
wPopupAttributes : u16,
bFullscreenSupported : BOOL,
ColorTable : [16]COLORREF,
};
CONSOLE_FONT_INFOEX :: struct {
cbSize : ULONG,
nFont : u32,
dwFontSize : COORD,
FontFamily : UINT,
FontWeight : UINT,
FaceName : [32]WCHAR,
};
PCONSOLE_FONT_INFOEX :: ^struct {
cbSize : ULONG,
nFont : u32,
dwFontSize : COORD,
FontFamily : UINT,
FontWeight : UINT,
FaceName : [32]WCHAR,
};
CONSOLE_SELECTION_INFO :: struct {
dwFlags : u32,
dwSelectionAnchor : COORD,
srSelection : SMALL_RECT,
};
PCONSOLE_SELECTION_INFO :: ^struct {
dwFlags : u32,
dwSelectionAnchor : COORD,
srSelection : SMALL_RECT,
};
CONSOLE_HISTORY_INFO :: struct {
cbSize : UINT,
HistoryBufferSize : UINT,
NumberOfHistoryBuffers : UINT,
dwFlags : u32,
};
PCONSOLE_HISTORY_INFO :: ^struct {
cbSize : UINT,
HistoryBufferSize : UINT,
NumberOfHistoryBuffers : UINT,
dwFlags : u32,
};
VS_FIXEDFILEINFO :: struct {
dwSignature : u32,
dwStrucVersion : u32,
dwFileVersionMS : u32,
dwFileVersionLS : u32,
dwProductVersionMS : u32,
dwProductVersionLS : u32,
dwFileFlagsMask : u32,
dwFileFlags : u32,
dwFileOS : u32,
dwFileType : u32,
dwFileSubtype : u32,
dwFileDateMS : u32,
dwFileDateLS : u32,
};
LSTATUS :: LONG;
REGSAM :: ACCESS_MASK;
val_context :: struct {
valuelen : i32,
value_context : LPVOID,
val_buff_ptr : LPVOID,
};
PVALCONTEXT :: ^val_context;
PVALUEA :: struct {
pv_valuename : LPSTR,
pv_valuelen : i32,
pv_value_context : LPVOID,
pv_type : u32,
};
PPVALUEA :: ^struct {
pv_valuename : LPSTR,
pv_valuelen : i32,
pv_value_context : LPVOID,
pv_type : u32,
};
PVALUEW :: struct {
pv_valuename : LPWSTR,
pv_valuelen : i32,
pv_value_context : LPVOID,
pv_type : u32,
};
PPVALUEW :: ^struct {
pv_valuename : LPWSTR,
pv_valuelen : i32,
pv_value_context : LPVOID,
pv_type : u32,
};
PVALUE :: PVALUEA;
PPVALUE :: PPVALUEA;
QUERYHANDLER :: #type (proc(keycontext : LPVOID, val_list : PVALCONTEXT, num_vals : u32, outputbuffer : LPVOID, total_outlen : ^u32, input_blen : u32) -> u32);
PQUERYHANDLER :: ^QUERYHANDLER;
REG_PROVIDER :: struct {
pi_R0_1val : PQUERYHANDLER,
pi_R0_allvals : PQUERYHANDLER,
pi_R3_1val : PQUERYHANDLER,
pi_R3_allvals : PQUERYHANDLER,
pi_flags : u32,
pi_key_context : LPVOID,
};
PPROVIDER :: ^REG_PROVIDER;
VALENTA :: struct {
ve_valuename : LPSTR,
ve_valuelen : u32,
ve_valueptr : DWORD_PTR,
ve_type : u32,
};
PVALENTA :: ^struct {
ve_valuename : LPSTR,
ve_valuelen : u32,
ve_valueptr : DWORD_PTR,
ve_type : u32,
};
VALENTW :: struct {
ve_valuename : LPWSTR,
ve_valuelen : u32,
ve_valueptr : DWORD_PTR,
ve_type : u32,
};
PVALENTW :: ^struct {
ve_valuename : LPWSTR,
ve_valuelen : u32,
ve_valueptr : DWORD_PTR,
ve_type : u32,
};
VALENT :: VALENTA;
PVALENT :: PVALENTA;
NETRESOURCEA :: struct {
dwScope : u32,
dwType : u32,
dwDisplayType : u32,
dwUsage : u32,
lpLocalName : LPSTR,
lpRemoteName : LPSTR,
lpComment : LPSTR,
lpProvider : LPSTR,
};
LPNETRESOURCEA :: ^struct {
dwScope : u32,
dwType : u32,
dwDisplayType : u32,
dwUsage : u32,
lpLocalName : LPSTR,
lpRemoteName : LPSTR,
lpComment : LPSTR,
lpProvider : LPSTR,
};
NETRESOURCEW :: struct {
dwScope : u32,
dwType : u32,
dwDisplayType : u32,
dwUsage : u32,
lpLocalName : LPWSTR,
lpRemoteName : LPWSTR,
lpComment : LPWSTR,
lpProvider : LPWSTR,
};
LPNETRESOURCEW :: ^struct {
dwScope : u32,
dwType : u32,
dwDisplayType : u32,
dwUsage : u32,
lpLocalName : LPWSTR,
lpRemoteName : LPWSTR,
lpComment : LPWSTR,
lpProvider : LPWSTR,
};
NETRESOURCE :: NETRESOURCEA;
LPNETRESOURCE :: LPNETRESOURCEA;
CONNECTDLGSTRUCTA :: struct {
cbStructure : u32,
hwndOwner : HWND,
lpConnRes : LPNETRESOURCEA,
dwFlags : u32,
dwDevNum : u32,
};
LPCONNECTDLGSTRUCTA :: ^struct {
cbStructure : u32,
hwndOwner : HWND,
lpConnRes : LPNETRESOURCEA,
dwFlags : u32,
dwDevNum : u32,
};
CONNECTDLGSTRUCTW :: struct {
cbStructure : u32,
hwndOwner : HWND,
lpConnRes : LPNETRESOURCEW,
dwFlags : u32,
dwDevNum : u32,
};
LPCONNECTDLGSTRUCTW :: ^struct {
cbStructure : u32,
hwndOwner : HWND,
lpConnRes : LPNETRESOURCEW,
dwFlags : u32,
dwDevNum : u32,
};
CONNECTDLGSTRUCT :: CONNECTDLGSTRUCTA;
LPCONNECTDLGSTRUCT :: LPCONNECTDLGSTRUCTA;
DISCDLGSTRUCTA :: struct {
cbStructure : u32,
hwndOwner : HWND,
lpLocalName : LPSTR,
lpRemoteName : LPSTR,
dwFlags : u32,
};
LPDISCDLGSTRUCTA :: ^struct {
cbStructure : u32,
hwndOwner : HWND,
lpLocalName : LPSTR,
lpRemoteName : LPSTR,
dwFlags : u32,
};
DISCDLGSTRUCTW :: struct {
cbStructure : u32,
hwndOwner : HWND,
lpLocalName : LPWSTR,
lpRemoteName : LPWSTR,
dwFlags : u32,
};
LPDISCDLGSTRUCTW :: ^struct {
cbStructure : u32,
hwndOwner : HWND,
lpLocalName : LPWSTR,
lpRemoteName : LPWSTR,
dwFlags : u32,
};
DISCDLGSTRUCT :: DISCDLGSTRUCTA;
LPDISCDLGSTRUCT :: LPDISCDLGSTRUCTA;
UNIVERSAL_NAME_INFOA :: struct {
lpUniversalName : LPSTR,
};
LPUNIVERSAL_NAME_INFOA :: ^struct {
lpUniversalName : LPSTR,
};
UNIVERSAL_NAME_INFOW :: struct {
lpUniversalName : LPWSTR,
};
LPUNIVERSAL_NAME_INFOW :: ^struct {
lpUniversalName : LPWSTR,
};
UNIVERSAL_NAME_INFO :: UNIVERSAL_NAME_INFOA;
LPUNIVERSAL_NAME_INFO :: LPUNIVERSAL_NAME_INFOA;
REMOTE_NAME_INFOA :: struct {
lpUniversalName : LPSTR,
lpConnectionName : LPSTR,
lpRemainingPath : LPSTR,
};
LPREMOTE_NAME_INFOA :: ^struct {
lpUniversalName : LPSTR,
lpConnectionName : LPSTR,
lpRemainingPath : LPSTR,
};
REMOTE_NAME_INFOW :: struct {
lpUniversalName : LPWSTR,
lpConnectionName : LPWSTR,
lpRemainingPath : LPWSTR,
};
LPREMOTE_NAME_INFOW :: ^struct {
lpUniversalName : LPWSTR,
lpConnectionName : LPWSTR,
lpRemainingPath : LPWSTR,
};
REMOTE_NAME_INFO :: REMOTE_NAME_INFOA;
LPREMOTE_NAME_INFO :: LPREMOTE_NAME_INFOA;
NETINFOSTRUCT :: struct {
cbStructure : u32,
dwProviderVersion : u32,
dwStatus : u32,
dwCharacteristics : u32,
dwHandle : ULONG_PTR,
wNetType : u16,
dwPrinters : u32,
dwDrives : u32,
};
LPNETINFOSTRUCT :: ^struct {
cbStructure : u32,
dwProviderVersion : u32,
dwStatus : u32,
dwCharacteristics : u32,
dwHandle : ULONG_PTR,
wNetType : u16,
dwPrinters : u32,
dwDrives : u32,
};
NETCONNECTINFOSTRUCT :: struct {
cbStructure : u32,
dwFlags : u32,
dwSpeed : u32,
dwDelay : u32,
dwOptDataSize : u32,
};
LPNETCONNECTINFOSTRUCT :: ^struct {
cbStructure : u32,
dwFlags : u32,
dwSpeed : u32,
dwDelay : u32,
dwOptDataSize : u32,
};
DDEACK :: struct {
bAppReturnCode : ,
reserved : ,
fBusy : ,
fAck : ,
};
DDEADVISE :: struct {
reserved : ,
fDeferUpd : ,
fAckReq : ,
cfFormat : i16,
};
DDEDATA :: struct {
unused : ,
fResponse : ,
fRelease : ,
reserved : ,
fAckReq : ,
cfFormat : i16,
Value : [1]BYTE,
};
DDEPOKE :: struct {
unused : ,
fRelease : ,
fReserved : ,
cfFormat : i16,
Value : [1]BYTE,
};
DDELN :: struct {
unused : ,
fRelease : ,
fDeferUpd : ,
fAckReq : ,
cfFormat : i16,
};
DDEUP :: struct {
unused : ,
fAck : ,
fRelease : ,
fReserved : ,
fAckReq : ,
cfFormat : i16,
rgb : [1]BYTE,
};
HCONVLIST__ :: struct {
unused : i32,
};
HCONVLIST :: ^HCONVLIST__;
HCONV__ :: struct {
unused : i32,
};
HCONV :: ^HCONV__;
HSZ__ :: struct {
unused : i32,
};
HSZ :: ^HSZ__;
HDDEDATA__ :: struct {
unused : i32,
};
HDDEDATA :: ^HDDEDATA__;
HSZPAIR :: struct {
hszSvc : HSZ,
hszTopic : HSZ,
};
PHSZPAIR :: ^struct {
hszSvc : HSZ,
hszTopic : HSZ,
};
CONVCONTEXT :: struct {
cb : UINT,
wFlags : UINT,
wCountryID : UINT,
iCodePage : i32,
dwLangID : u32,
dwSecurity : u32,
qos : SECURITY_QUALITY_OF_SERVICE,
};
PCONVCONTEXT :: ^struct {
cb : UINT,
wFlags : UINT,
wCountryID : UINT,
iCodePage : i32,
dwLangID : u32,
dwSecurity : u32,
qos : SECURITY_QUALITY_OF_SERVICE,
};
CONVINFO :: struct {
cb : u32,
hUser : DWORD_PTR,
hConvPartner : HCONV,
hszSvcPartner : HSZ,
hszServiceReq : HSZ,
hszTopic : HSZ,
hszItem : HSZ,
wFmt : UINT,
wType : UINT,
wStatus : UINT,
wConvst : UINT,
wLastError : UINT,
hConvList : HCONVLIST,
ConvCtxt : CONVCONTEXT,
hwnd : HWND,
hwndPartner : HWND,
};
PCONVINFO :: ^struct {
cb : u32,
hUser : DWORD_PTR,
hConvPartner : HCONV,
hszSvcPartner : HSZ,
hszServiceReq : HSZ,
hszTopic : HSZ,
hszItem : HSZ,
wFmt : UINT,
wType : UINT,
wStatus : UINT,
wConvst : UINT,
wLastError : UINT,
hConvList : HCONVLIST,
ConvCtxt : CONVCONTEXT,
hwnd : HWND,
hwndPartner : HWND,
};
FNCALLBACK :: #type (proc(wType : UINT, wFmt : UINT, hConv : HCONV, hsz1 : HSZ, hsz2 : HSZ, hData : HDDEDATA, dwData1 : ULONG_PTR, dwData2 : ULONG_PTR) -> HDDEDATA);
PFNCALLBACK :: (proc(wType : UINT, wFmt : UINT, hConv : HCONV, hsz1 : HSZ, hsz2 : HSZ, hData : HDDEDATA, dwData1 : ULONG_PTR, dwData2 : ULONG_PTR) -> HDDEDATA);
DDEML_MSG_HOOK_DATA :: struct {
uiLo : UINT_PTR,
uiHi : UINT_PTR,
cbData : u32,
Data : [8]u32,
};
PDDEML_MSG_HOOK_DATA :: ^struct {
uiLo : UINT_PTR,
uiHi : UINT_PTR,
cbData : u32,
Data : [8]u32,
};
MONMSGSTRUCT :: struct {
cb : UINT,
hwndTo : HWND,
dwTime : u32,
hTask : HANDLE,
wMsg : UINT,
wParam : WPARAM,
lParam : LPARAM,
dmhd : DDEML_MSG_HOOK_DATA,
};
PMONMSGSTRUCT :: ^struct {
cb : UINT,
hwndTo : HWND,
dwTime : u32,
hTask : HANDLE,
wMsg : UINT,
wParam : WPARAM,
lParam : LPARAM,
dmhd : DDEML_MSG_HOOK_DATA,
};
MONCBSTRUCT :: struct {
cb : UINT,
dwTime : u32,
hTask : HANDLE,
dwRet : u32,
wType : UINT,
wFmt : UINT,
hConv : HCONV,
hsz1 : HSZ,
hsz2 : HSZ,
hData : HDDEDATA,
dwData1 : ULONG_PTR,
dwData2 : ULONG_PTR,
cc : CONVCONTEXT,
cbData : u32,
Data : [8]u32,
};
PMONCBSTRUCT :: ^struct {
cb : UINT,
dwTime : u32,
hTask : HANDLE,
dwRet : u32,
wType : UINT,
wFmt : UINT,
hConv : HCONV,
hsz1 : HSZ,
hsz2 : HSZ,
hData : HDDEDATA,
dwData1 : ULONG_PTR,
dwData2 : ULONG_PTR,
cc : CONVCONTEXT,
cbData : u32,
Data : [8]u32,
};
MONHSZSTRUCTA :: struct {
cb : UINT,
fsAction : BOOL,
dwTime : u32,
hsz : HSZ,
hTask : HANDLE,
str : [1]CHAR,
};
PMONHSZSTRUCTA :: ^struct {
cb : UINT,
fsAction : BOOL,
dwTime : u32,
hsz : HSZ,
hTask : HANDLE,
str : [1]CHAR,
};
MONHSZSTRUCTW :: struct {
cb : UINT,
fsAction : BOOL,
dwTime : u32,
hsz : HSZ,
hTask : HANDLE,
str : [1]WCHAR,
};
PMONHSZSTRUCTW :: ^struct {
cb : UINT,
fsAction : BOOL,
dwTime : u32,
hsz : HSZ,
hTask : HANDLE,
str : [1]WCHAR,
};
MONHSZSTRUCT :: MONHSZSTRUCTA;
PMONHSZSTRUCT :: PMONHSZSTRUCTA;
MONERRSTRUCT :: struct {
cb : UINT,
wLastError : UINT,
dwTime : u32,
hTask : HANDLE,
};
PMONERRSTRUCT :: ^struct {
cb : UINT,
wLastError : UINT,
dwTime : u32,
hTask : HANDLE,
};
MONLINKSTRUCT :: struct {
cb : UINT,
dwTime : u32,
hTask : HANDLE,
fEstablished : BOOL,
fNoData : BOOL,
hszSvc : HSZ,
hszTopic : HSZ,
hszItem : HSZ,
wFmt : UINT,
fServer : BOOL,
hConvServer : HCONV,
hConvClient : HCONV,
};
PMONLINKSTRUCT :: ^struct {
cb : UINT,
dwTime : u32,
hTask : HANDLE,
fEstablished : BOOL,
fNoData : BOOL,
hszSvc : HSZ,
hszTopic : HSZ,
hszItem : HSZ,
wFmt : UINT,
fServer : BOOL,
hConvServer : HCONV,
hConvClient : HCONV,
};
MONCONVSTRUCT :: struct {
cb : UINT,
fConnect : BOOL,
dwTime : u32,
hTask : HANDLE,
hszSvc : HSZ,
hszTopic : HSZ,
hConvClient : HCONV,
hConvServer : HCONV,
};
PMONCONVSTRUCT :: ^struct {
cb : UINT,
fConnect : BOOL,
dwTime : u32,
hTask : HANDLE,
hszSvc : HSZ,
hszTopic : HSZ,
hConvClient : HCONV,
hConvServer : HCONV,
};
CRGB :: struct {
bRed : BYTE,
bGreen : BYTE,
bBlue : BYTE,
bExtra : BYTE,
};
MMVERSION :: UINT;
MMRESULT :: UINT;
LPUINT :: ^UINT;
MMTIME :: struct {
wType : UINT,
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,
},
},
};
PMMTIME :: ^struct {
wType : UINT,
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,
},
},
};
NPMMTIME :: ^struct {
wType : UINT,
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,
},
},
};
LPMMTIME :: ^struct {
wType : UINT,
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,
},
},
};
HDRVR__ :: struct {
unused : i32,
};
HDRVR :: ^HDRVR__;
DRVCALLBACK :: #type proc(hdrvr : HDRVR, uMsg : UINT, dwUser : DWORD_PTR, dw1 : DWORD_PTR, dw2 : DWORD_PTR);
LPDRVCALLBACK :: ^DRVCALLBACK;
PDRVCALLBACK :: ^DRVCALLBACK;
MCIERROR :: u32;
MCIDEVICEID :: UINT;
YIELDPROC :: (proc(mciId : MCIDEVICEID, dwYieldData : u32) -> UINT);
MCI_GENERIC_PARMS :: struct {
dwCallback : DWORD_PTR,
};
PMCI_GENERIC_PARMS :: ^struct {
dwCallback : DWORD_PTR,
};
LPMCI_GENERIC_PARMS :: ^struct {
dwCallback : DWORD_PTR,
};
MCI_OPEN_PARMSA :: struct {
dwCallback : DWORD_PTR,
wDeviceID : MCIDEVICEID,
lpstrDeviceType : LPCSTR,
lpstrElementName : LPCSTR,
lpstrAlias : LPCSTR,
};
PMCI_OPEN_PARMSA :: ^struct {
dwCallback : DWORD_PTR,
wDeviceID : MCIDEVICEID,
lpstrDeviceType : LPCSTR,
lpstrElementName : LPCSTR,
lpstrAlias : LPCSTR,
};
LPMCI_OPEN_PARMSA :: ^struct {
dwCallback : DWORD_PTR,
wDeviceID : MCIDEVICEID,
lpstrDeviceType : LPCSTR,
lpstrElementName : LPCSTR,
lpstrAlias : LPCSTR,
};
MCI_OPEN_PARMSW :: struct {
dwCallback : DWORD_PTR,
wDeviceID : MCIDEVICEID,
lpstrDeviceType : LPCWSTR,
lpstrElementName : LPCWSTR,
lpstrAlias : LPCWSTR,
};
PMCI_OPEN_PARMSW :: ^struct {
dwCallback : DWORD_PTR,
wDeviceID : MCIDEVICEID,
lpstrDeviceType : LPCWSTR,
lpstrElementName : LPCWSTR,
lpstrAlias : LPCWSTR,
};
LPMCI_OPEN_PARMSW :: ^struct {
dwCallback : DWORD_PTR,
wDeviceID : MCIDEVICEID,
lpstrDeviceType : LPCWSTR,
lpstrElementName : LPCWSTR,
lpstrAlias : LPCWSTR,
};
MCI_OPEN_PARMS :: MCI_OPEN_PARMSA;
PMCI_OPEN_PARMS :: PMCI_OPEN_PARMSA;
LPMCI_OPEN_PARMS :: LPMCI_OPEN_PARMSA;
MCI_PLAY_PARMS :: struct {
dwCallback : DWORD_PTR,
dwFrom : u32,
dwTo : u32,
};
PMCI_PLAY_PARMS :: ^struct {
dwCallback : DWORD_PTR,
dwFrom : u32,
dwTo : u32,
};
LPMCI_PLAY_PARMS :: ^struct {
dwCallback : DWORD_PTR,
dwFrom : u32,
dwTo : u32,
};
MCI_SEEK_PARMS :: struct {
dwCallback : DWORD_PTR,
dwTo : u32,
};
PMCI_SEEK_PARMS :: ^struct {
dwCallback : DWORD_PTR,
dwTo : u32,
};
LPMCI_SEEK_PARMS :: ^struct {
dwCallback : DWORD_PTR,
dwTo : u32,
};
MCI_STATUS_PARMS :: struct {
dwCallback : DWORD_PTR,
dwReturn : DWORD_PTR,
dwItem : u32,
dwTrack : u32,
};
PMCI_STATUS_PARMS :: ^struct {
dwCallback : DWORD_PTR,
dwReturn : DWORD_PTR,
dwItem : u32,
dwTrack : u32,
};
LPMCI_STATUS_PARMS :: ^struct {
dwCallback : DWORD_PTR,
dwReturn : DWORD_PTR,
dwItem : u32,
dwTrack : u32,
};
MCI_INFO_PARMSA :: struct {
dwCallback : DWORD_PTR,
lpstrReturn : LPSTR,
dwRetSize : u32,
};
LPMCI_INFO_PARMSA :: ^struct {
dwCallback : DWORD_PTR,
lpstrReturn : LPSTR,
dwRetSize : u32,
};
MCI_INFO_PARMSW :: struct {
dwCallback : DWORD_PTR,
lpstrReturn : LPWSTR,
dwRetSize : u32,
};
LPMCI_INFO_PARMSW :: ^struct {
dwCallback : DWORD_PTR,
lpstrReturn : LPWSTR,
dwRetSize : u32,
};
MCI_INFO_PARMS :: MCI_INFO_PARMSA;
LPMCI_INFO_PARMS :: LPMCI_INFO_PARMSA;
MCI_GETDEVCAPS_PARMS :: struct {
dwCallback : DWORD_PTR,
dwReturn : u32,
dwItem : u32,
};
PMCI_GETDEVCAPS_PARMS :: ^struct {
dwCallback : DWORD_PTR,
dwReturn : u32,
dwItem : u32,
};
LPMCI_GETDEVCAPS_PARMS :: ^struct {
dwCallback : DWORD_PTR,
dwReturn : u32,
dwItem : u32,
};
MCI_SYSINFO_PARMSA :: struct {
dwCallback : DWORD_PTR,
lpstrReturn : LPSTR,
dwRetSize : u32,
dwNumber : u32,
wDeviceType : UINT,
};
PMCI_SYSINFO_PARMSA :: ^struct {
dwCallback : DWORD_PTR,
lpstrReturn : LPSTR,
dwRetSize : u32,
dwNumber : u32,
wDeviceType : UINT,
};
LPMCI_SYSINFO_PARMSA :: ^struct {
dwCallback : DWORD_PTR,
lpstrReturn : LPSTR,
dwRetSize : u32,
dwNumber : u32,
wDeviceType : UINT,
};
MCI_SYSINFO_PARMSW :: struct {
dwCallback : DWORD_PTR,
lpstrReturn : LPWSTR,
dwRetSize : u32,
dwNumber : u32,
wDeviceType : UINT,
};
PMCI_SYSINFO_PARMSW :: ^struct {
dwCallback : DWORD_PTR,
lpstrReturn : LPWSTR,
dwRetSize : u32,
dwNumber : u32,
wDeviceType : UINT,
};
LPMCI_SYSINFO_PARMSW :: ^struct {
dwCallback : DWORD_PTR,
lpstrReturn : LPWSTR,
dwRetSize : u32,
dwNumber : u32,
wDeviceType : UINT,
};
MCI_SYSINFO_PARMS :: MCI_SYSINFO_PARMSA;
PMCI_SYSINFO_PARMS :: PMCI_SYSINFO_PARMSA;
LPMCI_SYSINFO_PARMS :: LPMCI_SYSINFO_PARMSA;
MCI_SET_PARMS :: struct {
dwCallback : DWORD_PTR,
dwTimeFormat : u32,
dwAudio : u32,
};
PMCI_SET_PARMS :: ^struct {
dwCallback : DWORD_PTR,
dwTimeFormat : u32,
dwAudio : u32,
};
LPMCI_SET_PARMS :: ^struct {
dwCallback : DWORD_PTR,
dwTimeFormat : u32,
dwAudio : u32,
};
MCI_BREAK_PARMS :: struct {
dwCallback : DWORD_PTR,
nVirtKey : i32,
hwndBreak : HWND,
};
PMCI_BREAK_PARMS :: ^struct {
dwCallback : DWORD_PTR,
nVirtKey : i32,
hwndBreak : HWND,
};
LPMCI_BREAK_PARMS :: ^struct {
dwCallback : DWORD_PTR,
nVirtKey : i32,
hwndBreak : HWND,
};
MCI_SAVE_PARMSA :: struct {
dwCallback : DWORD_PTR,
lpfilename : LPCSTR,
};
PMCI_SAVE_PARMSA :: ^struct {
dwCallback : DWORD_PTR,
lpfilename : LPCSTR,
};
LPMCI_SAVE_PARMSA :: ^struct {
dwCallback : DWORD_PTR,
lpfilename : LPCSTR,
};
MCI_SAVE_PARMSW :: struct {
dwCallback : DWORD_PTR,
lpfilename : LPCWSTR,
};
PMCI_SAVE_PARMSW :: ^struct {
dwCallback : DWORD_PTR,
lpfilename : LPCWSTR,
};
LPMCI_SAVE_PARMSW :: ^struct {
dwCallback : DWORD_PTR,
lpfilename : LPCWSTR,
};
MCI_SAVE_PARMS :: MCI_SAVE_PARMSA;
PMCI_SAVE_PARMS :: PMCI_SAVE_PARMSA;
LPMCI_SAVE_PARMS :: LPMCI_SAVE_PARMSA;
MCI_LOAD_PARMSA :: struct {
dwCallback : DWORD_PTR,
lpfilename : LPCSTR,
};
PMCI_LOAD_PARMSA :: ^struct {
dwCallback : DWORD_PTR,
lpfilename : LPCSTR,
};
LPMCI_LOAD_PARMSA :: ^struct {
dwCallback : DWORD_PTR,
lpfilename : LPCSTR,
};
MCI_LOAD_PARMSW :: struct {
dwCallback : DWORD_PTR,
lpfilename : LPCWSTR,
};
PMCI_LOAD_PARMSW :: ^struct {
dwCallback : DWORD_PTR,
lpfilename : LPCWSTR,
};
LPMCI_LOAD_PARMSW :: ^struct {
dwCallback : DWORD_PTR,
lpfilename : LPCWSTR,
};
MCI_LOAD_PARMS :: MCI_LOAD_PARMSA;
PMCI_LOAD_PARMS :: PMCI_LOAD_PARMSA;
LPMCI_LOAD_PARMS :: LPMCI_LOAD_PARMSA;
MCI_RECORD_PARMS :: struct {
dwCallback : DWORD_PTR,
dwFrom : u32,
dwTo : u32,
};
LPMCI_RECORD_PARMS :: ^struct {
dwCallback : DWORD_PTR,
dwFrom : u32,
dwTo : u32,
};
MCI_VD_PLAY_PARMS :: struct {
dwCallback : DWORD_PTR,
dwFrom : u32,
dwTo : u32,
dwSpeed : u32,
};
PMCI_VD_PLAY_PARMS :: ^struct {
dwCallback : DWORD_PTR,
dwFrom : u32,
dwTo : u32,
dwSpeed : u32,
};
LPMCI_VD_PLAY_PARMS :: ^struct {
dwCallback : DWORD_PTR,
dwFrom : u32,
dwTo : u32,
dwSpeed : u32,
};
MCI_VD_STEP_PARMS :: struct {
dwCallback : DWORD_PTR,
dwFrames : u32,
};
PMCI_VD_STEP_PARMS :: ^struct {
dwCallback : DWORD_PTR,
dwFrames : u32,
};
LPMCI_VD_STEP_PARMS :: ^struct {
dwCallback : DWORD_PTR,
dwFrames : u32,
};
MCI_VD_ESCAPE_PARMSA :: struct {
dwCallback : DWORD_PTR,
lpstrCommand : LPCSTR,
};
PMCI_VD_ESCAPE_PARMSA :: ^struct {
dwCallback : DWORD_PTR,
lpstrCommand : LPCSTR,
};
LPMCI_VD_ESCAPE_PARMSA :: ^struct {
dwCallback : DWORD_PTR,
lpstrCommand : LPCSTR,
};
MCI_VD_ESCAPE_PARMSW :: struct {
dwCallback : DWORD_PTR,
lpstrCommand : LPCWSTR,
};
PMCI_VD_ESCAPE_PARMSW :: ^struct {
dwCallback : DWORD_PTR,
lpstrCommand : LPCWSTR,
};
LPMCI_VD_ESCAPE_PARMSW :: ^struct {
dwCallback : DWORD_PTR,
lpstrCommand : LPCWSTR,
};
MCI_VD_ESCAPE_PARMS :: MCI_VD_ESCAPE_PARMSA;
PMCI_VD_ESCAPE_PARMS :: PMCI_VD_ESCAPE_PARMSA;
LPMCI_VD_ESCAPE_PARMS :: LPMCI_VD_ESCAPE_PARMSA;
MCI_WAVE_OPEN_PARMSA :: struct {
dwCallback : DWORD_PTR,
wDeviceID : MCIDEVICEID,
lpstrDeviceType : LPCSTR,
lpstrElementName : LPCSTR,
lpstrAlias : LPCSTR,
dwBufferSeconds : u32,
};
PMCI_WAVE_OPEN_PARMSA :: ^struct {
dwCallback : DWORD_PTR,
wDeviceID : MCIDEVICEID,
lpstrDeviceType : LPCSTR,
lpstrElementName : LPCSTR,
lpstrAlias : LPCSTR,
dwBufferSeconds : u32,
};
LPMCI_WAVE_OPEN_PARMSA :: ^struct {
dwCallback : DWORD_PTR,
wDeviceID : MCIDEVICEID,
lpstrDeviceType : LPCSTR,
lpstrElementName : LPCSTR,
lpstrAlias : LPCSTR,
dwBufferSeconds : u32,
};
MCI_WAVE_OPEN_PARMSW :: struct {
dwCallback : DWORD_PTR,
wDeviceID : MCIDEVICEID,
lpstrDeviceType : LPCWSTR,
lpstrElementName : LPCWSTR,
lpstrAlias : LPCWSTR,
dwBufferSeconds : u32,
};
PMCI_WAVE_OPEN_PARMSW :: ^struct {
dwCallback : DWORD_PTR,
wDeviceID : MCIDEVICEID,
lpstrDeviceType : LPCWSTR,
lpstrElementName : LPCWSTR,
lpstrAlias : LPCWSTR,
dwBufferSeconds : u32,
};
LPMCI_WAVE_OPEN_PARMSW :: ^struct {
dwCallback : DWORD_PTR,
wDeviceID : MCIDEVICEID,
lpstrDeviceType : LPCWSTR,
lpstrElementName : LPCWSTR,
lpstrAlias : LPCWSTR,
dwBufferSeconds : u32,
};
MCI_WAVE_OPEN_PARMS :: MCI_WAVE_OPEN_PARMSA;
PMCI_WAVE_OPEN_PARMS :: PMCI_WAVE_OPEN_PARMSA;
LPMCI_WAVE_OPEN_PARMS :: LPMCI_WAVE_OPEN_PARMSA;
MCI_WAVE_DELETE_PARMS :: struct {
dwCallback : DWORD_PTR,
dwFrom : u32,
dwTo : u32,
};
PMCI_WAVE_DELETE_PARMS :: ^struct {
dwCallback : DWORD_PTR,
dwFrom : u32,
dwTo : u32,
};
LPMCI_WAVE_DELETE_PARMS :: ^struct {
dwCallback : DWORD_PTR,
dwFrom : u32,
dwTo : u32,
};
MCI_WAVE_SET_PARMS :: struct {
dwCallback : DWORD_PTR,
dwTimeFormat : u32,
dwAudio : u32,
wInput : UINT,
wOutput : UINT,
wFormatTag : u16,
wReserved2 : u16,
nChannels : u16,
wReserved3 : u16,
nSamplesPerSec : u32,
nAvgBytesPerSec : u32,
nBlockAlign : u16,
wReserved4 : u16,
wBitsPerSample : u16,
wReserved5 : u16,
};
PMCI_WAVE_SET_PARMS :: ^struct {
dwCallback : DWORD_PTR,
dwTimeFormat : u32,
dwAudio : u32,
wInput : UINT,
wOutput : UINT,
wFormatTag : u16,
wReserved2 : u16,
nChannels : u16,
wReserved3 : u16,
nSamplesPerSec : u32,
nAvgBytesPerSec : u32,
nBlockAlign : u16,
wReserved4 : u16,
wBitsPerSample : u16,
wReserved5 : u16,
};
LPMCI_WAVE_SET_PARMS :: ^struct {
dwCallback : DWORD_PTR,
dwTimeFormat : u32,
dwAudio : u32,
wInput : UINT,
wOutput : UINT,
wFormatTag : u16,
wReserved2 : u16,
nChannels : u16,
wReserved3 : u16,
nSamplesPerSec : u32,
nAvgBytesPerSec : u32,
nBlockAlign : u16,
wReserved4 : u16,
wBitsPerSample : u16,
wReserved5 : u16,
};
MCI_SEQ_SET_PARMS :: struct {
dwCallback : DWORD_PTR,
dwTimeFormat : u32,
dwAudio : u32,
dwTempo : u32,
dwPort : u32,
dwSlave : u32,
dwMaster : u32,
dwOffset : u32,
};
PMCI_SEQ_SET_PARMS :: ^struct {
dwCallback : DWORD_PTR,
dwTimeFormat : u32,
dwAudio : u32,
dwTempo : u32,
dwPort : u32,
dwSlave : u32,
dwMaster : u32,
dwOffset : u32,
};
LPMCI_SEQ_SET_PARMS :: ^struct {
dwCallback : DWORD_PTR,
dwTimeFormat : u32,
dwAudio : u32,
dwTempo : u32,
dwPort : u32,
dwSlave : u32,
dwMaster : u32,
dwOffset : u32,
};
MCI_ANIM_OPEN_PARMSA :: struct {
dwCallback : DWORD_PTR,
wDeviceID : MCIDEVICEID,
lpstrDeviceType : LPCSTR,
lpstrElementName : LPCSTR,
lpstrAlias : LPCSTR,
dwStyle : u32,
hWndParent : HWND,
};
PMCI_ANIM_OPEN_PARMSA :: ^struct {
dwCallback : DWORD_PTR,
wDeviceID : MCIDEVICEID,
lpstrDeviceType : LPCSTR,
lpstrElementName : LPCSTR,
lpstrAlias : LPCSTR,
dwStyle : u32,
hWndParent : HWND,
};
LPMCI_ANIM_OPEN_PARMSA :: ^struct {
dwCallback : DWORD_PTR,
wDeviceID : MCIDEVICEID,
lpstrDeviceType : LPCSTR,
lpstrElementName : LPCSTR,
lpstrAlias : LPCSTR,
dwStyle : u32,
hWndParent : HWND,
};
MCI_ANIM_OPEN_PARMSW :: struct {
dwCallback : DWORD_PTR,
wDeviceID : MCIDEVICEID,
lpstrDeviceType : LPCWSTR,
lpstrElementName : LPCWSTR,
lpstrAlias : LPCWSTR,
dwStyle : u32,
hWndParent : HWND,
};
PMCI_ANIM_OPEN_PARMSW :: ^struct {
dwCallback : DWORD_PTR,
wDeviceID : MCIDEVICEID,
lpstrDeviceType : LPCWSTR,
lpstrElementName : LPCWSTR,
lpstrAlias : LPCWSTR,
dwStyle : u32,
hWndParent : HWND,
};
LPMCI_ANIM_OPEN_PARMSW :: ^struct {
dwCallback : DWORD_PTR,
wDeviceID : MCIDEVICEID,
lpstrDeviceType : LPCWSTR,
lpstrElementName : LPCWSTR,
lpstrAlias : LPCWSTR,
dwStyle : u32,
hWndParent : HWND,
};
MCI_ANIM_OPEN_PARMS :: MCI_ANIM_OPEN_PARMSA;
PMCI_ANIM_OPEN_PARMS :: PMCI_ANIM_OPEN_PARMSA;
LPMCI_ANIM_OPEN_PARMS :: LPMCI_ANIM_OPEN_PARMSA;
MCI_ANIM_PLAY_PARMS :: struct {
dwCallback : DWORD_PTR,
dwFrom : u32,
dwTo : u32,
dwSpeed : u32,
};
PMCI_ANIM_PLAY_PARMS :: ^struct {
dwCallback : DWORD_PTR,
dwFrom : u32,
dwTo : u32,
dwSpeed : u32,
};
LPMCI_ANIM_PLAY_PARMS :: ^struct {
dwCallback : DWORD_PTR,
dwFrom : u32,
dwTo : u32,
dwSpeed : u32,
};
MCI_ANIM_STEP_PARMS :: struct {
dwCallback : DWORD_PTR,
dwFrames : u32,
};
PMCI_ANIM_STEP_PARMS :: ^struct {
dwCallback : DWORD_PTR,
dwFrames : u32,
};
LPMCI_ANIM_STEP_PARMS :: ^struct {
dwCallback : DWORD_PTR,
dwFrames : u32,
};
MCI_ANIM_WINDOW_PARMSA :: struct {
dwCallback : DWORD_PTR,
hWnd : HWND,
nCmdShow : UINT,
lpstrText : LPCSTR,
};
PMCI_ANIM_WINDOW_PARMSA :: ^struct {
dwCallback : DWORD_PTR,
hWnd : HWND,
nCmdShow : UINT,
lpstrText : LPCSTR,
};
LPMCI_ANIM_WINDOW_PARMSA :: ^struct {
dwCallback : DWORD_PTR,
hWnd : HWND,
nCmdShow : UINT,
lpstrText : LPCSTR,
};
MCI_ANIM_WINDOW_PARMSW :: struct {
dwCallback : DWORD_PTR,
hWnd : HWND,
nCmdShow : UINT,
lpstrText : LPCWSTR,
};
PMCI_ANIM_WINDOW_PARMSW :: ^struct {
dwCallback : DWORD_PTR,
hWnd : HWND,
nCmdShow : UINT,
lpstrText : LPCWSTR,
};
LPMCI_ANIM_WINDOW_PARMSW :: ^struct {
dwCallback : DWORD_PTR,
hWnd : HWND,
nCmdShow : UINT,
lpstrText : LPCWSTR,
};
MCI_ANIM_WINDOW_PARMS :: MCI_ANIM_WINDOW_PARMSA;
PMCI_ANIM_WINDOW_PARMS :: PMCI_ANIM_WINDOW_PARMSA;
LPMCI_ANIM_WINDOW_PARMS :: LPMCI_ANIM_WINDOW_PARMSA;
MCI_ANIM_RECT_PARMS :: struct {
dwCallback : DWORD_PTR,
rc : RECT,
};
PMCI_ANIM_RECT_PARMS :: ^MCI_ANIM_RECT_PARMS;
LPMCI_ANIM_RECT_PARMS :: ^MCI_ANIM_RECT_PARMS;
MCI_ANIM_UPDATE_PARMS :: struct {
dwCallback : DWORD_PTR,
rc : RECT,
hDC : HDC,
};
PMCI_ANIM_UPDATE_PARMS :: ^struct {
dwCallback : DWORD_PTR,
rc : RECT,
hDC : HDC,
};
LPMCI_ANIM_UPDATE_PARMS :: ^struct {
dwCallback : DWORD_PTR,
rc : RECT,
hDC : HDC,
};
MCI_OVLY_OPEN_PARMSA :: struct {
dwCallback : DWORD_PTR,
wDeviceID : MCIDEVICEID,
lpstrDeviceType : LPCSTR,
lpstrElementName : LPCSTR,
lpstrAlias : LPCSTR,
dwStyle : u32,
hWndParent : HWND,
};
PMCI_OVLY_OPEN_PARMSA :: ^struct {
dwCallback : DWORD_PTR,
wDeviceID : MCIDEVICEID,
lpstrDeviceType : LPCSTR,
lpstrElementName : LPCSTR,
lpstrAlias : LPCSTR,
dwStyle : u32,
hWndParent : HWND,
};
LPMCI_OVLY_OPEN_PARMSA :: ^struct {
dwCallback : DWORD_PTR,
wDeviceID : MCIDEVICEID,
lpstrDeviceType : LPCSTR,
lpstrElementName : LPCSTR,
lpstrAlias : LPCSTR,
dwStyle : u32,
hWndParent : HWND,
};
MCI_OVLY_OPEN_PARMSW :: struct {
dwCallback : DWORD_PTR,
wDeviceID : MCIDEVICEID,
lpstrDeviceType : LPCWSTR,
lpstrElementName : LPCWSTR,
lpstrAlias : LPCWSTR,
dwStyle : u32,
hWndParent : HWND,
};
PMCI_OVLY_OPEN_PARMSW :: ^struct {
dwCallback : DWORD_PTR,
wDeviceID : MCIDEVICEID,
lpstrDeviceType : LPCWSTR,
lpstrElementName : LPCWSTR,
lpstrAlias : LPCWSTR,
dwStyle : u32,
hWndParent : HWND,
};
LPMCI_OVLY_OPEN_PARMSW :: ^struct {
dwCallback : DWORD_PTR,
wDeviceID : MCIDEVICEID,
lpstrDeviceType : LPCWSTR,
lpstrElementName : LPCWSTR,
lpstrAlias : LPCWSTR,
dwStyle : u32,
hWndParent : HWND,
};
MCI_OVLY_OPEN_PARMS :: MCI_OVLY_OPEN_PARMSA;
PMCI_OVLY_OPEN_PARMS :: PMCI_OVLY_OPEN_PARMSA;
LPMCI_OVLY_OPEN_PARMS :: LPMCI_OVLY_OPEN_PARMSA;
MCI_OVLY_WINDOW_PARMSA :: struct {
dwCallback : DWORD_PTR,
hWnd : HWND,
nCmdShow : UINT,
lpstrText : LPCSTR,
};
PMCI_OVLY_WINDOW_PARMSA :: ^struct {
dwCallback : DWORD_PTR,
hWnd : HWND,
nCmdShow : UINT,
lpstrText : LPCSTR,
};
LPMCI_OVLY_WINDOW_PARMSA :: ^struct {
dwCallback : DWORD_PTR,
hWnd : HWND,
nCmdShow : UINT,
lpstrText : LPCSTR,
};
MCI_OVLY_WINDOW_PARMSW :: struct {
dwCallback : DWORD_PTR,
hWnd : HWND,
nCmdShow : UINT,
lpstrText : LPCWSTR,
};
PMCI_OVLY_WINDOW_PARMSW :: ^struct {
dwCallback : DWORD_PTR,
hWnd : HWND,
nCmdShow : UINT,
lpstrText : LPCWSTR,
};
LPMCI_OVLY_WINDOW_PARMSW :: ^struct {
dwCallback : DWORD_PTR,
hWnd : HWND,
nCmdShow : UINT,
lpstrText : LPCWSTR,
};
MCI_OVLY_WINDOW_PARMS :: MCI_OVLY_WINDOW_PARMSA;
PMCI_OVLY_WINDOW_PARMS :: PMCI_OVLY_WINDOW_PARMSA;
LPMCI_OVLY_WINDOW_PARMS :: LPMCI_OVLY_WINDOW_PARMSA;
MCI_OVLY_RECT_PARMS :: struct {
dwCallback : DWORD_PTR,
rc : RECT,
};
PMCI_OVLY_RECT_PARMS :: ^struct {
dwCallback : DWORD_PTR,
rc : RECT,
};
LPMCI_OVLY_RECT_PARMS :: ^struct {
dwCallback : DWORD_PTR,
rc : RECT,
};
MCI_OVLY_SAVE_PARMSA :: struct {
dwCallback : DWORD_PTR,
lpfilename : LPCSTR,
rc : RECT,
};
PMCI_OVLY_SAVE_PARMSA :: ^struct {
dwCallback : DWORD_PTR,
lpfilename : LPCSTR,
rc : RECT,
};
LPMCI_OVLY_SAVE_PARMSA :: ^struct {
dwCallback : DWORD_PTR,
lpfilename : LPCSTR,
rc : RECT,
};
MCI_OVLY_SAVE_PARMSW :: struct {
dwCallback : DWORD_PTR,
lpfilename : LPCWSTR,
rc : RECT,
};
PMCI_OVLY_SAVE_PARMSW :: ^struct {
dwCallback : DWORD_PTR,
lpfilename : LPCWSTR,
rc : RECT,
};
LPMCI_OVLY_SAVE_PARMSW :: ^struct {
dwCallback : DWORD_PTR,
lpfilename : LPCWSTR,
rc : RECT,
};
MCI_OVLY_SAVE_PARMS :: MCI_OVLY_SAVE_PARMSA;
PMCI_OVLY_SAVE_PARMS :: PMCI_OVLY_SAVE_PARMSA;
LPMCI_OVLY_SAVE_PARMS :: LPMCI_OVLY_SAVE_PARMSA;
MCI_OVLY_LOAD_PARMSA :: struct {
dwCallback : DWORD_PTR,
lpfilename : LPCSTR,
rc : RECT,
};
PMCI_OVLY_LOAD_PARMSA :: ^struct {
dwCallback : DWORD_PTR,
lpfilename : LPCSTR,
rc : RECT,
};
LPMCI_OVLY_LOAD_PARMSA :: ^struct {
dwCallback : DWORD_PTR,
lpfilename : LPCSTR,
rc : RECT,
};
MCI_OVLY_LOAD_PARMSW :: struct {
dwCallback : DWORD_PTR,
lpfilename : LPCWSTR,
rc : RECT,
};
PMCI_OVLY_LOAD_PARMSW :: ^struct {
dwCallback : DWORD_PTR,
lpfilename : LPCWSTR,
rc : RECT,
};
LPMCI_OVLY_LOAD_PARMSW :: ^struct {
dwCallback : DWORD_PTR,
lpfilename : LPCWSTR,
rc : RECT,
};
MCI_OVLY_LOAD_PARMS :: MCI_OVLY_LOAD_PARMSA;
PMCI_OVLY_LOAD_PARMS :: PMCI_OVLY_LOAD_PARMSA;
LPMCI_OVLY_LOAD_PARMS :: LPMCI_OVLY_LOAD_PARMSA;
DRVCONFIGINFOEX :: struct {
dwDCISize : u32,
lpszDCISectionName : LPCWSTR,
lpszDCIAliasName : LPCWSTR,
dnDevNode : u32,
};
PDRVCONFIGINFOEX :: ^struct {
dwDCISize : u32,
lpszDCISectionName : LPCWSTR,
lpszDCIAliasName : LPCWSTR,
dnDevNode : u32,
};
NPDRVCONFIGINFOEX :: ^struct {
dwDCISize : u32,
lpszDCISectionName : LPCWSTR,
lpszDCIAliasName : LPCWSTR,
dnDevNode : u32,
};
LPDRVCONFIGINFOEX :: ^struct {
dwDCISize : u32,
lpszDCISectionName : LPCWSTR,
lpszDCIAliasName : LPCWSTR,
dnDevNode : u32,
};
DRVCONFIGINFO :: struct {
dwDCISize : u32,
lpszDCISectionName : LPCWSTR,
lpszDCIAliasName : LPCWSTR,
};
PDRVCONFIGINFO :: ^struct {
dwDCISize : u32,
lpszDCISectionName : LPCWSTR,
lpszDCIAliasName : LPCWSTR,
};
NPDRVCONFIGINFO :: ^struct {
dwDCISize : u32,
lpszDCISectionName : LPCWSTR,
lpszDCIAliasName : LPCWSTR,
};
LPDRVCONFIGINFO :: ^struct {
dwDCISize : u32,
lpszDCISectionName : LPCWSTR,
lpszDCIAliasName : LPCWSTR,
};
DRIVERPROC :: (proc(DWORD_PTR, HDRVR, UINT, LPARAM, LPARAM) -> LRESULT);
DRIVERMSGPROC :: (proc(u32, u32, DWORD_PTR, DWORD_PTR, DWORD_PTR) -> u32);
FOURCC :: u32;
HPSTR :: cstring;
HMMIO__ :: struct {
unused : i32,
};
HMMIO :: ^HMMIO__;
MMIOPROC :: #type (proc(lpmmioinfo : LPSTR, uMsg : UINT, lParam1 : LPARAM, lParam2 : LPARAM) -> LRESULT);
LPMMIOPROC :: ^MMIOPROC;
MMIOINFO :: struct {
dwFlags : u32,
fccIOProc : FOURCC,
pIOProc : LPMMIOPROC,
wErrorRet : UINT,
htask : HTASK,
cchBuffer : LONG,
pchBuffer : HPSTR,
pchNext : HPSTR,
pchEndRead : HPSTR,
pchEndWrite : HPSTR,
lBufOffset : LONG,
lDiskOffset : LONG,
adwInfo : [3]u32,
dwReserved1 : u32,
dwReserved2 : u32,
hmmio : HMMIO,
};
PMMIOINFO :: ^struct {
dwFlags : u32,
fccIOProc : FOURCC,
pIOProc : LPMMIOPROC,
wErrorRet : UINT,
htask : HTASK,
cchBuffer : LONG,
pchBuffer : HPSTR,
pchNext : HPSTR,
pchEndRead : HPSTR,
pchEndWrite : HPSTR,
lBufOffset : LONG,
lDiskOffset : LONG,
adwInfo : [3]u32,
dwReserved1 : u32,
dwReserved2 : u32,
hmmio : HMMIO,
};
NPMMIOINFO :: ^struct {
dwFlags : u32,
fccIOProc : FOURCC,
pIOProc : LPMMIOPROC,
wErrorRet : UINT,
htask : HTASK,
cchBuffer : LONG,
pchBuffer : HPSTR,
pchNext : HPSTR,
pchEndRead : HPSTR,
pchEndWrite : HPSTR,
lBufOffset : LONG,
lDiskOffset : LONG,
adwInfo : [3]u32,
dwReserved1 : u32,
dwReserved2 : u32,
hmmio : HMMIO,
};
LPMMIOINFO :: ^struct {
dwFlags : u32,
fccIOProc : FOURCC,
pIOProc : LPMMIOPROC,
wErrorRet : UINT,
htask : HTASK,
cchBuffer : LONG,
pchBuffer : HPSTR,
pchNext : HPSTR,
pchEndRead : HPSTR,
pchEndWrite : HPSTR,
lBufOffset : LONG,
lDiskOffset : LONG,
adwInfo : [3]u32,
dwReserved1 : u32,
dwReserved2 : u32,
hmmio : HMMIO,
};
LPCMMIOINFO :: ^MMIOINFO;
MMCKINFO :: struct {
ckid : FOURCC,
cksize : u32,
fccType : FOURCC,
dwDataOffset : u32,
dwFlags : u32,
};
PMMCKINFO :: ^struct {
ckid : FOURCC,
cksize : u32,
fccType : FOURCC,
dwDataOffset : u32,
dwFlags : u32,
};
NPMMCKINFO :: ^struct {
ckid : FOURCC,
cksize : u32,
fccType : FOURCC,
dwDataOffset : u32,
dwFlags : u32,
};
LPMMCKINFO :: ^struct {
ckid : FOURCC,
cksize : u32,
fccType : FOURCC,
dwDataOffset : u32,
dwFlags : u32,
};
LPCMMCKINFO :: ^MMCKINFO;
TIMECALLBACK :: #type proc(uTimerID : UINT, uMsg : UINT, dwUser : DWORD_PTR, dw1 : DWORD_PTR, dw2 : DWORD_PTR);
LPTIMECALLBACK :: ^TIMECALLBACK;
HWAVE__ :: struct {
unused : i32,
};
HWAVE :: ^HWAVE__;
HWAVEIN__ :: struct {
unused : i32,
};
HWAVEIN :: ^HWAVEIN__;
HWAVEOUT__ :: struct {
unused : i32,
};
HWAVEOUT :: ^HWAVEOUT__;
LPHWAVEIN :: ^HWAVEIN;
LPHWAVEOUT :: ^HWAVEOUT;
WAVECALLBACK :: DRVCALLBACK;
LPWAVECALLBACK :: ^WAVECALLBACK;
WAVEHDR :: struct {
lpData : LPSTR,
dwBufferLength : u32,
dwBytesRecorded : u32,
dwUser : DWORD_PTR,
dwFlags : u32,
dwLoops : u32,
lpNext : ^WAVEHDR,
reserved : DWORD_PTR,
};
PWAVEHDR :: ^struct {
lpData : LPSTR,
dwBufferLength : u32,
dwBytesRecorded : u32,
dwUser : DWORD_PTR,
dwFlags : u32,
dwLoops : u32,
lpNext : ^WAVEHDR,
reserved : DWORD_PTR,
};
NPWAVEHDR :: ^struct {
lpData : LPSTR,
dwBufferLength : u32,
dwBytesRecorded : u32,
dwUser : DWORD_PTR,
dwFlags : u32,
dwLoops : u32,
lpNext : ^WAVEHDR,
reserved : DWORD_PTR,
};
LPWAVEHDR :: ^struct {
lpData : LPSTR,
dwBufferLength : u32,
dwBytesRecorded : u32,
dwUser : DWORD_PTR,
dwFlags : u32,
dwLoops : u32,
lpNext : ^WAVEHDR,
reserved : DWORD_PTR,
};
WAVEOUTCAPSA :: struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
dwSupport : u32,
};
PWAVEOUTCAPSA :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
dwSupport : u32,
};
NPWAVEOUTCAPSA :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
dwSupport : u32,
};
LPWAVEOUTCAPSA :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
dwSupport : u32,
};
WAVEOUTCAPSW :: struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
dwSupport : u32,
};
PWAVEOUTCAPSW :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
dwSupport : u32,
};
NPWAVEOUTCAPSW :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
dwSupport : u32,
};
LPWAVEOUTCAPSW :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
dwSupport : u32,
};
WAVEOUTCAPS :: WAVEOUTCAPSA;
PWAVEOUTCAPS :: PWAVEOUTCAPSA;
NPWAVEOUTCAPS :: NPWAVEOUTCAPSA;
LPWAVEOUTCAPS :: LPWAVEOUTCAPSA;
WAVEOUTCAPS2A :: struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
PWAVEOUTCAPS2A :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
NPWAVEOUTCAPS2A :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
LPWAVEOUTCAPS2A :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
WAVEOUTCAPS2W :: struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
PWAVEOUTCAPS2W :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
NPWAVEOUTCAPS2W :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
LPWAVEOUTCAPS2W :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
WAVEOUTCAPS2 :: WAVEOUTCAPS2A;
PWAVEOUTCAPS2 :: PWAVEOUTCAPS2A;
NPWAVEOUTCAPS2 :: NPWAVEOUTCAPS2A;
LPWAVEOUTCAPS2 :: LPWAVEOUTCAPS2A;
WAVEINCAPSA :: struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
};
PWAVEINCAPSA :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
};
NPWAVEINCAPSA :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
};
LPWAVEINCAPSA :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
};
WAVEINCAPSW :: struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
};
PWAVEINCAPSW :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
};
NPWAVEINCAPSW :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
};
LPWAVEINCAPSW :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
};
WAVEINCAPS :: WAVEINCAPSA;
PWAVEINCAPS :: PWAVEINCAPSA;
NPWAVEINCAPS :: NPWAVEINCAPSA;
LPWAVEINCAPS :: LPWAVEINCAPSA;
WAVEINCAPS2A :: struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
PWAVEINCAPS2A :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
NPWAVEINCAPS2A :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
LPWAVEINCAPS2A :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
WAVEINCAPS2W :: struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
PWAVEINCAPS2W :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
NPWAVEINCAPS2W :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
LPWAVEINCAPS2W :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
dwFormats : u32,
wChannels : u16,
wReserved1 : u16,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
WAVEINCAPS2 :: WAVEINCAPS2A;
PWAVEINCAPS2 :: PWAVEINCAPS2A;
NPWAVEINCAPS2 :: NPWAVEINCAPS2A;
LPWAVEINCAPS2 :: LPWAVEINCAPS2A;
WAVEFORMAT :: struct {
wFormatTag : u16,
nChannels : u16,
nSamplesPerSec : u32,
nAvgBytesPerSec : u32,
nBlockAlign : u16,
};
PWAVEFORMAT :: ^struct {
wFormatTag : u16,
nChannels : u16,
nSamplesPerSec : u32,
nAvgBytesPerSec : u32,
nBlockAlign : u16,
};
NPWAVEFORMAT :: ^struct {
wFormatTag : u16,
nChannels : u16,
nSamplesPerSec : u32,
nAvgBytesPerSec : u32,
nBlockAlign : u16,
};
LPWAVEFORMAT :: ^struct {
wFormatTag : u16,
nChannels : u16,
nSamplesPerSec : u32,
nAvgBytesPerSec : u32,
nBlockAlign : u16,
};
PCMWAVEFORMAT :: struct {
wf : WAVEFORMAT,
wBitsPerSample : u16,
};
PPCMWAVEFORMAT :: ^struct {
wf : WAVEFORMAT,
wBitsPerSample : u16,
};
NPPCMWAVEFORMAT :: ^struct {
wf : WAVEFORMAT,
wBitsPerSample : u16,
};
LPPCMWAVEFORMAT :: ^struct {
wf : WAVEFORMAT,
wBitsPerSample : u16,
};
WAVEFORMATEX :: struct {
wFormatTag : u16,
nChannels : u16,
nSamplesPerSec : u32,
nAvgBytesPerSec : u32,
nBlockAlign : u16,
wBitsPerSample : u16,
cbSize : u16,
};
PWAVEFORMATEX :: ^struct {
wFormatTag : u16,
nChannels : u16,
nSamplesPerSec : u32,
nAvgBytesPerSec : u32,
nBlockAlign : u16,
wBitsPerSample : u16,
cbSize : u16,
};
NPWAVEFORMATEX :: ^struct {
wFormatTag : u16,
nChannels : u16,
nSamplesPerSec : u32,
nAvgBytesPerSec : u32,
nBlockAlign : u16,
wBitsPerSample : u16,
cbSize : u16,
};
LPWAVEFORMATEX :: ^struct {
wFormatTag : u16,
nChannels : u16,
nSamplesPerSec : u32,
nAvgBytesPerSec : u32,
nBlockAlign : u16,
wBitsPerSample : u16,
cbSize : u16,
};
LPCWAVEFORMATEX :: ^WAVEFORMATEX;
HMIDI__ :: struct {
unused : i32,
};
HMIDI :: ^HMIDI__;
HMIDIIN__ :: struct {
unused : i32,
};
HMIDIIN :: ^HMIDIIN__;
HMIDIOUT__ :: struct {
unused : i32,
};
HMIDIOUT :: ^HMIDIOUT__;
HMIDISTRM__ :: struct {
unused : i32,
};
HMIDISTRM :: ^HMIDISTRM__;
LPHMIDI :: ^HMIDI;
LPHMIDIIN :: ^HMIDIIN;
LPHMIDIOUT :: ^HMIDIOUT;
LPHMIDISTRM :: ^HMIDISTRM;
MIDICALLBACK :: DRVCALLBACK;
LPMIDICALLBACK :: ^MIDICALLBACK;
PATCHARRAY :: [128]u16;
LPPATCHARRAY :: ^u16;
KEYARRAY :: [128]u16;
LPKEYARRAY :: ^u16;
MIDIOUTCAPSA :: struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
wTechnology : u16,
wVoices : u16,
wNotes : u16,
wChannelMask : u16,
dwSupport : u32,
};
PMIDIOUTCAPSA :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
wTechnology : u16,
wVoices : u16,
wNotes : u16,
wChannelMask : u16,
dwSupport : u32,
};
NPMIDIOUTCAPSA :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
wTechnology : u16,
wVoices : u16,
wNotes : u16,
wChannelMask : u16,
dwSupport : u32,
};
LPMIDIOUTCAPSA :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
wTechnology : u16,
wVoices : u16,
wNotes : u16,
wChannelMask : u16,
dwSupport : u32,
};
MIDIOUTCAPSW :: struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
wTechnology : u16,
wVoices : u16,
wNotes : u16,
wChannelMask : u16,
dwSupport : u32,
};
PMIDIOUTCAPSW :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
wTechnology : u16,
wVoices : u16,
wNotes : u16,
wChannelMask : u16,
dwSupport : u32,
};
NPMIDIOUTCAPSW :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
wTechnology : u16,
wVoices : u16,
wNotes : u16,
wChannelMask : u16,
dwSupport : u32,
};
LPMIDIOUTCAPSW :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
wTechnology : u16,
wVoices : u16,
wNotes : u16,
wChannelMask : u16,
dwSupport : u32,
};
MIDIOUTCAPS :: MIDIOUTCAPSA;
PMIDIOUTCAPS :: PMIDIOUTCAPSA;
NPMIDIOUTCAPS :: NPMIDIOUTCAPSA;
LPMIDIOUTCAPS :: LPMIDIOUTCAPSA;
MIDIOUTCAPS2A :: struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
wTechnology : u16,
wVoices : u16,
wNotes : u16,
wChannelMask : u16,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
PMIDIOUTCAPS2A :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
wTechnology : u16,
wVoices : u16,
wNotes : u16,
wChannelMask : u16,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
NPMIDIOUTCAPS2A :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
wTechnology : u16,
wVoices : u16,
wNotes : u16,
wChannelMask : u16,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
LPMIDIOUTCAPS2A :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
wTechnology : u16,
wVoices : u16,
wNotes : u16,
wChannelMask : u16,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
MIDIOUTCAPS2W :: struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
wTechnology : u16,
wVoices : u16,
wNotes : u16,
wChannelMask : u16,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
PMIDIOUTCAPS2W :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
wTechnology : u16,
wVoices : u16,
wNotes : u16,
wChannelMask : u16,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
NPMIDIOUTCAPS2W :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
wTechnology : u16,
wVoices : u16,
wNotes : u16,
wChannelMask : u16,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
LPMIDIOUTCAPS2W :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
wTechnology : u16,
wVoices : u16,
wNotes : u16,
wChannelMask : u16,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
MIDIOUTCAPS2 :: MIDIOUTCAPS2A;
PMIDIOUTCAPS2 :: PMIDIOUTCAPS2A;
NPMIDIOUTCAPS2 :: NPMIDIOUTCAPS2A;
LPMIDIOUTCAPS2 :: LPMIDIOUTCAPS2A;
MIDIINCAPSA :: struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
dwSupport : u32,
};
PMIDIINCAPSA :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
dwSupport : u32,
};
NPMIDIINCAPSA :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
dwSupport : u32,
};
LPMIDIINCAPSA :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
dwSupport : u32,
};
MIDIINCAPSW :: struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
dwSupport : u32,
};
PMIDIINCAPSW :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
dwSupport : u32,
};
NPMIDIINCAPSW :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
dwSupport : u32,
};
LPMIDIINCAPSW :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
dwSupport : u32,
};
MIDIINCAPS :: MIDIINCAPSA;
PMIDIINCAPS :: PMIDIINCAPSA;
NPMIDIINCAPS :: NPMIDIINCAPSA;
LPMIDIINCAPS :: LPMIDIINCAPSA;
MIDIINCAPS2A :: struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
PMIDIINCAPS2A :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
NPMIDIINCAPS2A :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
LPMIDIINCAPS2A :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
MIDIINCAPS2W :: struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
PMIDIINCAPS2W :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
NPMIDIINCAPS2W :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
LPMIDIINCAPS2W :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
MIDIINCAPS2 :: MIDIINCAPS2A;
PMIDIINCAPS2 :: PMIDIINCAPS2A;
NPMIDIINCAPS2 :: NPMIDIINCAPS2A;
LPMIDIINCAPS2 :: LPMIDIINCAPS2A;
MIDIHDR :: struct {
lpData : LPSTR,
dwBufferLength : u32,
dwBytesRecorded : u32,
dwUser : DWORD_PTR,
dwFlags : u32,
lpNext : ^MIDIHDR,
reserved : DWORD_PTR,
dwOffset : u32,
dwReserved : [8]DWORD_PTR,
};
PMIDIHDR :: ^struct {
lpData : LPSTR,
dwBufferLength : u32,
dwBytesRecorded : u32,
dwUser : DWORD_PTR,
dwFlags : u32,
lpNext : ^MIDIHDR,
reserved : DWORD_PTR,
dwOffset : u32,
dwReserved : [8]DWORD_PTR,
};
NPMIDIHDR :: ^struct {
lpData : LPSTR,
dwBufferLength : u32,
dwBytesRecorded : u32,
dwUser : DWORD_PTR,
dwFlags : u32,
lpNext : ^MIDIHDR,
reserved : DWORD_PTR,
dwOffset : u32,
dwReserved : [8]DWORD_PTR,
};
LPMIDIHDR :: ^struct {
lpData : LPSTR,
dwBufferLength : u32,
dwBytesRecorded : u32,
dwUser : DWORD_PTR,
dwFlags : u32,
lpNext : ^MIDIHDR,
reserved : DWORD_PTR,
dwOffset : u32,
dwReserved : [8]DWORD_PTR,
};
MIDIEVENT :: struct {
dwDeltaTime : u32,
dwStreamID : u32,
dwEvent : u32,
dwParms : [1]u32,
};
MIDISTRMBUFFVER :: struct {
dwVersion : u32,
dwMid : u32,
dwOEMVersion : u32,
};
MIDIPROPTIMEDIV :: struct {
cbStruct : u32,
dwTimeDiv : u32,
};
LPMIDIPROPTIMEDIV :: ^struct {
cbStruct : u32,
dwTimeDiv : u32,
};
MIDIPROPTEMPO :: struct {
cbStruct : u32,
dwTempo : u32,
};
LPMIDIPROPTEMPO :: ^struct {
cbStruct : u32,
dwTempo : u32,
};
AUXCAPSA :: struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
wTechnology : u16,
wReserved1 : u16,
dwSupport : u32,
};
PAUXCAPSA :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
wTechnology : u16,
wReserved1 : u16,
dwSupport : u32,
};
NPAUXCAPSA :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
wTechnology : u16,
wReserved1 : u16,
dwSupport : u32,
};
LPAUXCAPSA :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
wTechnology : u16,
wReserved1 : u16,
dwSupport : u32,
};
AUXCAPSW :: struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
wTechnology : u16,
wReserved1 : u16,
dwSupport : u32,
};
PAUXCAPSW :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
wTechnology : u16,
wReserved1 : u16,
dwSupport : u32,
};
NPAUXCAPSW :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
wTechnology : u16,
wReserved1 : u16,
dwSupport : u32,
};
LPAUXCAPSW :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
wTechnology : u16,
wReserved1 : u16,
dwSupport : u32,
};
AUXCAPS :: AUXCAPSA;
PAUXCAPS :: PAUXCAPSA;
NPAUXCAPS :: NPAUXCAPSA;
LPAUXCAPS :: LPAUXCAPSA;
AUXCAPS2A :: struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
wTechnology : u16,
wReserved1 : u16,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
PAUXCAPS2A :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
wTechnology : u16,
wReserved1 : u16,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
NPAUXCAPS2A :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
wTechnology : u16,
wReserved1 : u16,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
LPAUXCAPS2A :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
wTechnology : u16,
wReserved1 : u16,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
AUXCAPS2W :: struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
wTechnology : u16,
wReserved1 : u16,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
PAUXCAPS2W :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
wTechnology : u16,
wReserved1 : u16,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
NPAUXCAPS2W :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
wTechnology : u16,
wReserved1 : u16,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
LPAUXCAPS2W :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
wTechnology : u16,
wReserved1 : u16,
dwSupport : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
AUXCAPS2 :: AUXCAPS2A;
PAUXCAPS2 :: PAUXCAPS2A;
NPAUXCAPS2 :: NPAUXCAPS2A;
LPAUXCAPS2 :: LPAUXCAPS2A;
HMIXEROBJ__ :: struct {
unused : i32,
};
HMIXEROBJ :: ^HMIXEROBJ__;
LPHMIXEROBJ :: ^HMIXEROBJ;
HMIXER__ :: struct {
unused : i32,
};
HMIXER :: ^HMIXER__;
LPHMIXER :: ^HMIXER;
MIXERCAPSA :: struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
fdwSupport : u32,
cDestinations : u32,
};
PMIXERCAPSA :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
fdwSupport : u32,
cDestinations : u32,
};
LPMIXERCAPSA :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
fdwSupport : u32,
cDestinations : u32,
};
MIXERCAPSW :: struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
fdwSupport : u32,
cDestinations : u32,
};
PMIXERCAPSW :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
fdwSupport : u32,
cDestinations : u32,
};
LPMIXERCAPSW :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
fdwSupport : u32,
cDestinations : u32,
};
MIXERCAPS :: MIXERCAPSA;
PMIXERCAPS :: PMIXERCAPSA;
LPMIXERCAPS :: LPMIXERCAPSA;
MIXERCAPS2A :: struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
fdwSupport : u32,
cDestinations : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
PMIXERCAPS2A :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
fdwSupport : u32,
cDestinations : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
LPMIXERCAPS2A :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
fdwSupport : u32,
cDestinations : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
MIXERCAPS2W :: struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
fdwSupport : u32,
cDestinations : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
PMIXERCAPS2W :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
fdwSupport : u32,
cDestinations : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
LPMIXERCAPS2W :: ^struct {
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
fdwSupport : u32,
cDestinations : u32,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
MIXERCAPS2 :: MIXERCAPS2A;
PMIXERCAPS2 :: PMIXERCAPS2A;
LPMIXERCAPS2 :: LPMIXERCAPS2A;
MIXERLINEA :: struct {
cbStruct : u32,
dwDestination : u32,
dwSource : u32,
dwLineID : u32,
fdwLine : u32,
dwUser : DWORD_PTR,
dwComponentType : u32,
cChannels : u32,
cConnections : u32,
cControls : u32,
szShortName : [16]CHAR,
szName : [64]CHAR,
Target : struct {
dwType : u32,
dwDeviceID : u32,
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
},
};
PMIXERLINEA :: ^struct {
cbStruct : u32,
dwDestination : u32,
dwSource : u32,
dwLineID : u32,
fdwLine : u32,
dwUser : DWORD_PTR,
dwComponentType : u32,
cChannels : u32,
cConnections : u32,
cControls : u32,
szShortName : [16]CHAR,
szName : [64]CHAR,
Target : struct {
dwType : u32,
dwDeviceID : u32,
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
},
};
LPMIXERLINEA :: ^struct {
cbStruct : u32,
dwDestination : u32,
dwSource : u32,
dwLineID : u32,
fdwLine : u32,
dwUser : DWORD_PTR,
dwComponentType : u32,
cChannels : u32,
cConnections : u32,
cControls : u32,
szShortName : [16]CHAR,
szName : [64]CHAR,
Target : struct {
dwType : u32,
dwDeviceID : u32,
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]CHAR,
},
};
MIXERLINEW :: struct {
cbStruct : u32,
dwDestination : u32,
dwSource : u32,
dwLineID : u32,
fdwLine : u32,
dwUser : DWORD_PTR,
dwComponentType : u32,
cChannels : u32,
cConnections : u32,
cControls : u32,
szShortName : [16]WCHAR,
szName : [64]WCHAR,
Target : struct {
dwType : u32,
dwDeviceID : u32,
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
},
};
PMIXERLINEW :: ^struct {
cbStruct : u32,
dwDestination : u32,
dwSource : u32,
dwLineID : u32,
fdwLine : u32,
dwUser : DWORD_PTR,
dwComponentType : u32,
cChannels : u32,
cConnections : u32,
cControls : u32,
szShortName : [16]WCHAR,
szName : [64]WCHAR,
Target : struct {
dwType : u32,
dwDeviceID : u32,
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
},
};
LPMIXERLINEW :: ^struct {
cbStruct : u32,
dwDestination : u32,
dwSource : u32,
dwLineID : u32,
fdwLine : u32,
dwUser : DWORD_PTR,
dwComponentType : u32,
cChannels : u32,
cConnections : u32,
cControls : u32,
szShortName : [16]WCHAR,
szName : [64]WCHAR,
Target : struct {
dwType : u32,
dwDeviceID : u32,
wMid : u16,
wPid : u16,
vDriverVersion : MMVERSION,
szPname : [32]WCHAR,
},
};
MIXERLINE :: MIXERLINEA;
PMIXERLINE :: PMIXERLINEA;
LPMIXERLINE :: LPMIXERLINEA;
MIXERCONTROLA :: struct {
cbStruct : u32,
dwControlID : u32,
dwControlType : u32,
fdwControl : u32,
cMultipleItems : u32,
szShortName : [16]CHAR,
szName : [64]CHAR,
Bounds : struct #raw_union {
s : struct {
lMinimum : LONG,
lMaximum : LONG,
},
s2 : struct {
dwMinimum : u32,
dwMaximum : u32,
},
dwReserved : [6]u32,
},
Metrics : struct #raw_union {
cSteps : u32,
cbCustomData : u32,
dwReserved : [6]u32,
},
};
PMIXERCONTROLA :: ^struct {
cbStruct : u32,
dwControlID : u32,
dwControlType : u32,
fdwControl : u32,
cMultipleItems : u32,
szShortName : [16]CHAR,
szName : [64]CHAR,
Bounds : struct #raw_union {
s : struct {
lMinimum : LONG,
lMaximum : LONG,
},
s2 : struct {
dwMinimum : u32,
dwMaximum : u32,
},
dwReserved : [6]u32,
},
Metrics : struct #raw_union {
cSteps : u32,
cbCustomData : u32,
dwReserved : [6]u32,
},
};
LPMIXERCONTROLA :: ^struct {
cbStruct : u32,
dwControlID : u32,
dwControlType : u32,
fdwControl : u32,
cMultipleItems : u32,
szShortName : [16]CHAR,
szName : [64]CHAR,
Bounds : struct #raw_union {
s : struct {
lMinimum : LONG,
lMaximum : LONG,
},
s2 : struct {
dwMinimum : u32,
dwMaximum : u32,
},
dwReserved : [6]u32,
},
Metrics : struct #raw_union {
cSteps : u32,
cbCustomData : u32,
dwReserved : [6]u32,
},
};
MIXERCONTROLW :: struct {
cbStruct : u32,
dwControlID : u32,
dwControlType : u32,
fdwControl : u32,
cMultipleItems : u32,
szShortName : [16]WCHAR,
szName : [64]WCHAR,
Bounds : struct #raw_union {
s : struct {
lMinimum : LONG,
lMaximum : LONG,
},
s2 : struct {
dwMinimum : u32,
dwMaximum : u32,
},
dwReserved : [6]u32,
},
Metrics : struct #raw_union {
cSteps : u32,
cbCustomData : u32,
dwReserved : [6]u32,
},
};
PMIXERCONTROLW :: ^struct {
cbStruct : u32,
dwControlID : u32,
dwControlType : u32,
fdwControl : u32,
cMultipleItems : u32,
szShortName : [16]WCHAR,
szName : [64]WCHAR,
Bounds : struct #raw_union {
s : struct {
lMinimum : LONG,
lMaximum : LONG,
},
s2 : struct {
dwMinimum : u32,
dwMaximum : u32,
},
dwReserved : [6]u32,
},
Metrics : struct #raw_union {
cSteps : u32,
cbCustomData : u32,
dwReserved : [6]u32,
},
};
LPMIXERCONTROLW :: ^struct {
cbStruct : u32,
dwControlID : u32,
dwControlType : u32,
fdwControl : u32,
cMultipleItems : u32,
szShortName : [16]WCHAR,
szName : [64]WCHAR,
Bounds : struct #raw_union {
s : struct {
lMinimum : LONG,
lMaximum : LONG,
},
s2 : struct {
dwMinimum : u32,
dwMaximum : u32,
},
dwReserved : [6]u32,
},
Metrics : struct #raw_union {
cSteps : u32,
cbCustomData : u32,
dwReserved : [6]u32,
},
};
MIXERCONTROL :: MIXERCONTROLA;
PMIXERCONTROL :: PMIXERCONTROLA;
LPMIXERCONTROL :: LPMIXERCONTROLA;
MIXERLINECONTROLSA :: struct {
cbStruct : u32,
dwLineID : u32,
u : struct #raw_union {
dwControlID : u32,
dwControlType : u32,
},
cControls : u32,
cbmxctrl : u32,
pamxctrl : LPMIXERCONTROLA,
};
PMIXERLINECONTROLSA :: ^struct {
cbStruct : u32,
dwLineID : u32,
u : struct #raw_union {
dwControlID : u32,
dwControlType : u32,
},
cControls : u32,
cbmxctrl : u32,
pamxctrl : LPMIXERCONTROLA,
};
LPMIXERLINECONTROLSA :: ^struct {
cbStruct : u32,
dwLineID : u32,
u : struct #raw_union {
dwControlID : u32,
dwControlType : u32,
},
cControls : u32,
cbmxctrl : u32,
pamxctrl : LPMIXERCONTROLA,
};
MIXERLINECONTROLSW :: struct {
cbStruct : u32,
dwLineID : u32,
u : struct #raw_union {
dwControlID : u32,
dwControlType : u32,
},
cControls : u32,
cbmxctrl : u32,
pamxctrl : LPMIXERCONTROLW,
};
PMIXERLINECONTROLSW :: ^struct {
cbStruct : u32,
dwLineID : u32,
u : struct #raw_union {
dwControlID : u32,
dwControlType : u32,
},
cControls : u32,
cbmxctrl : u32,
pamxctrl : LPMIXERCONTROLW,
};
LPMIXERLINECONTROLSW :: ^struct {
cbStruct : u32,
dwLineID : u32,
u : struct #raw_union {
dwControlID : u32,
dwControlType : u32,
},
cControls : u32,
cbmxctrl : u32,
pamxctrl : LPMIXERCONTROLW,
};
MIXERLINECONTROLS :: MIXERLINECONTROLSA;
PMIXERLINECONTROLS :: PMIXERLINECONTROLSA;
LPMIXERLINECONTROLS :: LPMIXERLINECONTROLSA;
MIXERCONTROLDETAILS :: struct {
cbStruct : u32,
dwControlID : u32,
cChannels : u32,
u : struct #raw_union {
hwndOwner : HWND,
cMultipleItems : u32,
},
cbDetails : u32,
paDetails : LPVOID,
};
PMIXERCONTROLDETAILS :: ^struct {
cbStruct : u32,
dwControlID : u32,
cChannels : u32,
u : struct #raw_union {
hwndOwner : HWND,
cMultipleItems : u32,
},
cbDetails : u32,
paDetails : LPVOID,
};
LPMIXERCONTROLDETAILS :: ^struct {
cbStruct : u32,
dwControlID : u32,
cChannels : u32,
u : struct #raw_union {
hwndOwner : HWND,
cMultipleItems : u32,
},
cbDetails : u32,
paDetails : LPVOID,
};
MIXERCONTROLDETAILS_LISTTEXTA :: struct {
dwParam1 : u32,
dwParam2 : u32,
szName : [64]CHAR,
};
PMIXERCONTROLDETAILS_LISTTEXTA :: ^struct {
dwParam1 : u32,
dwParam2 : u32,
szName : [64]CHAR,
};
LPMIXERCONTROLDETAILS_LISTTEXTA :: ^struct {
dwParam1 : u32,
dwParam2 : u32,
szName : [64]CHAR,
};
MIXERCONTROLDETAILS_LISTTEXTW :: struct {
dwParam1 : u32,
dwParam2 : u32,
szName : [64]WCHAR,
};
PMIXERCONTROLDETAILS_LISTTEXTW :: ^struct {
dwParam1 : u32,
dwParam2 : u32,
szName : [64]WCHAR,
};
LPMIXERCONTROLDETAILS_LISTTEXTW :: ^struct {
dwParam1 : u32,
dwParam2 : u32,
szName : [64]WCHAR,
};
MIXERCONTROLDETAILS_LISTTEXT :: MIXERCONTROLDETAILS_LISTTEXTA;
PMIXERCONTROLDETAILS_LISTTEXT :: PMIXERCONTROLDETAILS_LISTTEXTA;
LPMIXERCONTROLDETAILS_LISTTEXT :: LPMIXERCONTROLDETAILS_LISTTEXTA;
MIXERCONTROLDETAILS_BOOLEAN :: struct {
fValue : LONG,
};
PMIXERCONTROLDETAILS_BOOLEAN :: ^struct {
fValue : LONG,
};
LPMIXERCONTROLDETAILS_BOOLEAN :: ^struct {
fValue : LONG,
};
MIXERCONTROLDETAILS_SIGNED :: struct {
lValue : LONG,
};
PMIXERCONTROLDETAILS_SIGNED :: ^struct {
lValue : LONG,
};
LPMIXERCONTROLDETAILS_SIGNED :: ^struct {
lValue : LONG,
};
MIXERCONTROLDETAILS_UNSIGNED :: struct {
dwValue : u32,
};
PMIXERCONTROLDETAILS_UNSIGNED :: ^struct {
dwValue : u32,
};
LPMIXERCONTROLDETAILS_UNSIGNED :: ^struct {
dwValue : u32,
};
TIMECAPS :: struct {
wPeriodMin : UINT,
wPeriodMax : UINT,
};
PTIMECAPS :: ^struct {
wPeriodMin : UINT,
wPeriodMax : UINT,
};
NPTIMECAPS :: ^struct {
wPeriodMin : UINT,
wPeriodMax : UINT,
};
LPTIMECAPS :: ^struct {
wPeriodMin : UINT,
wPeriodMax : UINT,
};
JOYCAPSA :: struct {
wMid : u16,
wPid : u16,
szPname : [32]CHAR,
wXmin : UINT,
wXmax : UINT,
wYmin : UINT,
wYmax : UINT,
wZmin : UINT,
wZmax : UINT,
wNumButtons : UINT,
wPeriodMin : UINT,
wPeriodMax : UINT,
wRmin : UINT,
wRmax : UINT,
wUmin : UINT,
wUmax : UINT,
wVmin : UINT,
wVmax : UINT,
wCaps : UINT,
wMaxAxes : UINT,
wNumAxes : UINT,
wMaxButtons : UINT,
szRegKey : [32]CHAR,
szOEMVxD : [260]CHAR,
};
PJOYCAPSA :: ^struct {
wMid : u16,
wPid : u16,
szPname : [32]CHAR,
wXmin : UINT,
wXmax : UINT,
wYmin : UINT,
wYmax : UINT,
wZmin : UINT,
wZmax : UINT,
wNumButtons : UINT,
wPeriodMin : UINT,
wPeriodMax : UINT,
wRmin : UINT,
wRmax : UINT,
wUmin : UINT,
wUmax : UINT,
wVmin : UINT,
wVmax : UINT,
wCaps : UINT,
wMaxAxes : UINT,
wNumAxes : UINT,
wMaxButtons : UINT,
szRegKey : [32]CHAR,
szOEMVxD : [260]CHAR,
};
NPJOYCAPSA :: ^struct {
wMid : u16,
wPid : u16,
szPname : [32]CHAR,
wXmin : UINT,
wXmax : UINT,
wYmin : UINT,
wYmax : UINT,
wZmin : UINT,
wZmax : UINT,
wNumButtons : UINT,
wPeriodMin : UINT,
wPeriodMax : UINT,
wRmin : UINT,
wRmax : UINT,
wUmin : UINT,
wUmax : UINT,
wVmin : UINT,
wVmax : UINT,
wCaps : UINT,
wMaxAxes : UINT,
wNumAxes : UINT,
wMaxButtons : UINT,
szRegKey : [32]CHAR,
szOEMVxD : [260]CHAR,
};
LPJOYCAPSA :: ^struct {
wMid : u16,
wPid : u16,
szPname : [32]CHAR,
wXmin : UINT,
wXmax : UINT,
wYmin : UINT,
wYmax : UINT,
wZmin : UINT,
wZmax : UINT,
wNumButtons : UINT,
wPeriodMin : UINT,
wPeriodMax : UINT,
wRmin : UINT,
wRmax : UINT,
wUmin : UINT,
wUmax : UINT,
wVmin : UINT,
wVmax : UINT,
wCaps : UINT,
wMaxAxes : UINT,
wNumAxes : UINT,
wMaxButtons : UINT,
szRegKey : [32]CHAR,
szOEMVxD : [260]CHAR,
};
JOYCAPSW :: struct {
wMid : u16,
wPid : u16,
szPname : [32]WCHAR,
wXmin : UINT,
wXmax : UINT,
wYmin : UINT,
wYmax : UINT,
wZmin : UINT,
wZmax : UINT,
wNumButtons : UINT,
wPeriodMin : UINT,
wPeriodMax : UINT,
wRmin : UINT,
wRmax : UINT,
wUmin : UINT,
wUmax : UINT,
wVmin : UINT,
wVmax : UINT,
wCaps : UINT,
wMaxAxes : UINT,
wNumAxes : UINT,
wMaxButtons : UINT,
szRegKey : [32]WCHAR,
szOEMVxD : [260]WCHAR,
};
PJOYCAPSW :: ^struct {
wMid : u16,
wPid : u16,
szPname : [32]WCHAR,
wXmin : UINT,
wXmax : UINT,
wYmin : UINT,
wYmax : UINT,
wZmin : UINT,
wZmax : UINT,
wNumButtons : UINT,
wPeriodMin : UINT,
wPeriodMax : UINT,
wRmin : UINT,
wRmax : UINT,
wUmin : UINT,
wUmax : UINT,
wVmin : UINT,
wVmax : UINT,
wCaps : UINT,
wMaxAxes : UINT,
wNumAxes : UINT,
wMaxButtons : UINT,
szRegKey : [32]WCHAR,
szOEMVxD : [260]WCHAR,
};
NPJOYCAPSW :: ^struct {
wMid : u16,
wPid : u16,
szPname : [32]WCHAR,
wXmin : UINT,
wXmax : UINT,
wYmin : UINT,
wYmax : UINT,
wZmin : UINT,
wZmax : UINT,
wNumButtons : UINT,
wPeriodMin : UINT,
wPeriodMax : UINT,
wRmin : UINT,
wRmax : UINT,
wUmin : UINT,
wUmax : UINT,
wVmin : UINT,
wVmax : UINT,
wCaps : UINT,
wMaxAxes : UINT,
wNumAxes : UINT,
wMaxButtons : UINT,
szRegKey : [32]WCHAR,
szOEMVxD : [260]WCHAR,
};
LPJOYCAPSW :: ^struct {
wMid : u16,
wPid : u16,
szPname : [32]WCHAR,
wXmin : UINT,
wXmax : UINT,
wYmin : UINT,
wYmax : UINT,
wZmin : UINT,
wZmax : UINT,
wNumButtons : UINT,
wPeriodMin : UINT,
wPeriodMax : UINT,
wRmin : UINT,
wRmax : UINT,
wUmin : UINT,
wUmax : UINT,
wVmin : UINT,
wVmax : UINT,
wCaps : UINT,
wMaxAxes : UINT,
wNumAxes : UINT,
wMaxButtons : UINT,
szRegKey : [32]WCHAR,
szOEMVxD : [260]WCHAR,
};
JOYCAPS :: JOYCAPSA;
PJOYCAPS :: PJOYCAPSA;
NPJOYCAPS :: NPJOYCAPSA;
LPJOYCAPS :: LPJOYCAPSA;
JOYCAPS2A :: struct {
wMid : u16,
wPid : u16,
szPname : [32]CHAR,
wXmin : UINT,
wXmax : UINT,
wYmin : UINT,
wYmax : UINT,
wZmin : UINT,
wZmax : UINT,
wNumButtons : UINT,
wPeriodMin : UINT,
wPeriodMax : UINT,
wRmin : UINT,
wRmax : UINT,
wUmin : UINT,
wUmax : UINT,
wVmin : UINT,
wVmax : UINT,
wCaps : UINT,
wMaxAxes : UINT,
wNumAxes : UINT,
wMaxButtons : UINT,
szRegKey : [32]CHAR,
szOEMVxD : [260]CHAR,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
PJOYCAPS2A :: ^struct {
wMid : u16,
wPid : u16,
szPname : [32]CHAR,
wXmin : UINT,
wXmax : UINT,
wYmin : UINT,
wYmax : UINT,
wZmin : UINT,
wZmax : UINT,
wNumButtons : UINT,
wPeriodMin : UINT,
wPeriodMax : UINT,
wRmin : UINT,
wRmax : UINT,
wUmin : UINT,
wUmax : UINT,
wVmin : UINT,
wVmax : UINT,
wCaps : UINT,
wMaxAxes : UINT,
wNumAxes : UINT,
wMaxButtons : UINT,
szRegKey : [32]CHAR,
szOEMVxD : [260]CHAR,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
NPJOYCAPS2A :: ^struct {
wMid : u16,
wPid : u16,
szPname : [32]CHAR,
wXmin : UINT,
wXmax : UINT,
wYmin : UINT,
wYmax : UINT,
wZmin : UINT,
wZmax : UINT,
wNumButtons : UINT,
wPeriodMin : UINT,
wPeriodMax : UINT,
wRmin : UINT,
wRmax : UINT,
wUmin : UINT,
wUmax : UINT,
wVmin : UINT,
wVmax : UINT,
wCaps : UINT,
wMaxAxes : UINT,
wNumAxes : UINT,
wMaxButtons : UINT,
szRegKey : [32]CHAR,
szOEMVxD : [260]CHAR,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
LPJOYCAPS2A :: ^struct {
wMid : u16,
wPid : u16,
szPname : [32]CHAR,
wXmin : UINT,
wXmax : UINT,
wYmin : UINT,
wYmax : UINT,
wZmin : UINT,
wZmax : UINT,
wNumButtons : UINT,
wPeriodMin : UINT,
wPeriodMax : UINT,
wRmin : UINT,
wRmax : UINT,
wUmin : UINT,
wUmax : UINT,
wVmin : UINT,
wVmax : UINT,
wCaps : UINT,
wMaxAxes : UINT,
wNumAxes : UINT,
wMaxButtons : UINT,
szRegKey : [32]CHAR,
szOEMVxD : [260]CHAR,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
JOYCAPS2W :: struct {
wMid : u16,
wPid : u16,
szPname : [32]WCHAR,
wXmin : UINT,
wXmax : UINT,
wYmin : UINT,
wYmax : UINT,
wZmin : UINT,
wZmax : UINT,
wNumButtons : UINT,
wPeriodMin : UINT,
wPeriodMax : UINT,
wRmin : UINT,
wRmax : UINT,
wUmin : UINT,
wUmax : UINT,
wVmin : UINT,
wVmax : UINT,
wCaps : UINT,
wMaxAxes : UINT,
wNumAxes : UINT,
wMaxButtons : UINT,
szRegKey : [32]WCHAR,
szOEMVxD : [260]WCHAR,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
PJOYCAPS2W :: ^struct {
wMid : u16,
wPid : u16,
szPname : [32]WCHAR,
wXmin : UINT,
wXmax : UINT,
wYmin : UINT,
wYmax : UINT,
wZmin : UINT,
wZmax : UINT,
wNumButtons : UINT,
wPeriodMin : UINT,
wPeriodMax : UINT,
wRmin : UINT,
wRmax : UINT,
wUmin : UINT,
wUmax : UINT,
wVmin : UINT,
wVmax : UINT,
wCaps : UINT,
wMaxAxes : UINT,
wNumAxes : UINT,
wMaxButtons : UINT,
szRegKey : [32]WCHAR,
szOEMVxD : [260]WCHAR,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
NPJOYCAPS2W :: ^struct {
wMid : u16,
wPid : u16,
szPname : [32]WCHAR,
wXmin : UINT,
wXmax : UINT,
wYmin : UINT,
wYmax : UINT,
wZmin : UINT,
wZmax : UINT,
wNumButtons : UINT,
wPeriodMin : UINT,
wPeriodMax : UINT,
wRmin : UINT,
wRmax : UINT,
wUmin : UINT,
wUmax : UINT,
wVmin : UINT,
wVmax : UINT,
wCaps : UINT,
wMaxAxes : UINT,
wNumAxes : UINT,
wMaxButtons : UINT,
szRegKey : [32]WCHAR,
szOEMVxD : [260]WCHAR,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
LPJOYCAPS2W :: ^struct {
wMid : u16,
wPid : u16,
szPname : [32]WCHAR,
wXmin : UINT,
wXmax : UINT,
wYmin : UINT,
wYmax : UINT,
wZmin : UINT,
wZmax : UINT,
wNumButtons : UINT,
wPeriodMin : UINT,
wPeriodMax : UINT,
wRmin : UINT,
wRmax : UINT,
wUmin : UINT,
wUmax : UINT,
wVmin : UINT,
wVmax : UINT,
wCaps : UINT,
wMaxAxes : UINT,
wNumAxes : UINT,
wMaxButtons : UINT,
szRegKey : [32]WCHAR,
szOEMVxD : [260]WCHAR,
ManufacturerGuid : GUID,
ProductGuid : GUID,
NameGuid : GUID,
};
JOYCAPS2 :: JOYCAPS2A;
PJOYCAPS2 :: PJOYCAPS2A;
NPJOYCAPS2 :: NPJOYCAPS2A;
LPJOYCAPS2 :: LPJOYCAPS2A;
JOYINFO :: struct {
wXpos : UINT,
wYpos : UINT,
wZpos : UINT,
wButtons : UINT,
};
PJOYINFO :: ^struct {
wXpos : UINT,
wYpos : UINT,
wZpos : UINT,
wButtons : UINT,
};
NPJOYINFO :: ^struct {
wXpos : UINT,
wYpos : UINT,
wZpos : UINT,
wButtons : UINT,
};
LPJOYINFO :: ^struct {
wXpos : UINT,
wYpos : UINT,
wZpos : UINT,
wButtons : UINT,
};
JOYINFOEX :: struct {
dwSize : u32,
dwFlags : u32,
dwXpos : u32,
dwYpos : u32,
dwZpos : u32,
dwRpos : u32,
dwUpos : u32,
dwVpos : u32,
dwButtons : u32,
dwButtonNumber : u32,
dwPOV : u32,
dwReserved1 : u32,
dwReserved2 : u32,
};
PJOYINFOEX :: ^struct {
dwSize : u32,
dwFlags : u32,
dwXpos : u32,
dwYpos : u32,
dwZpos : u32,
dwRpos : u32,
dwUpos : u32,
dwVpos : u32,
dwButtons : u32,
dwButtonNumber : u32,
dwPOV : u32,
dwReserved1 : u32,
dwReserved2 : u32,
};
NPJOYINFOEX :: ^struct {
dwSize : u32,
dwFlags : u32,
dwXpos : u32,
dwYpos : u32,
dwZpos : u32,
dwRpos : u32,
dwUpos : u32,
dwVpos : u32,
dwButtons : u32,
dwButtonNumber : u32,
dwPOV : u32,
dwReserved1 : u32,
dwReserved2 : u32,
};
LPJOYINFOEX :: ^struct {
dwSize : u32,
dwFlags : u32,
dwXpos : u32,
dwYpos : u32,
dwZpos : u32,
dwRpos : u32,
dwUpos : u32,
dwVpos : u32,
dwButtons : u32,
dwButtonNumber : u32,
dwPOV : u32,
dwReserved1 : u32,
dwReserved2 : u32,
};
NCB :: struct {
ncb_command : UCHAR,
ncb_retcode : UCHAR,
ncb_lsn : UCHAR,
ncb_num : UCHAR,
ncb_buffer : PUCHAR,
ncb_length : u16,
ncb_callname : [16]UCHAR,
ncb_name : [16]UCHAR,
ncb_rto : UCHAR,
ncb_sto : UCHAR,
ncb_post : proc(^NCB),
ncb_lana_num : UCHAR,
ncb_cmd_cplt : UCHAR,
ncb_reserve : [10]UCHAR,
ncb_event : HANDLE,
};
PNCB :: ^struct {
ncb_command : UCHAR,
ncb_retcode : UCHAR,
ncb_lsn : UCHAR,
ncb_num : UCHAR,
ncb_buffer : PUCHAR,
ncb_length : u16,
ncb_callname : [16]UCHAR,
ncb_name : [16]UCHAR,
ncb_rto : UCHAR,
ncb_sto : UCHAR,
ncb_post : proc(^NCB),
ncb_lana_num : UCHAR,
ncb_cmd_cplt : UCHAR,
ncb_reserve : [10]UCHAR,
ncb_event : HANDLE,
};
ADAPTER_STATUS :: struct {
adapter_address : [6]UCHAR,
rev_major : UCHAR,
reserved0 : UCHAR,
adapter_type : UCHAR,
rev_minor : UCHAR,
duration : u16,
frmr_recv : u16,
frmr_xmit : u16,
iframe_recv_err : u16,
xmit_aborts : u16,
xmit_success : u32,
recv_success : u32,
iframe_xmit_err : u16,
recv_buff_unavail : u16,
t1_timeouts : u16,
ti_timeouts : u16,
reserved1 : u32,
free_ncbs : u16,
max_cfg_ncbs : u16,
max_ncbs : u16,
xmit_buf_unavail : u16,
max_dgram_size : u16,
pending_sess : u16,
max_cfg_sess : u16,
max_sess : u16,
max_sess_pkt_size : u16,
name_count : u16,
};
PADAPTER_STATUS :: ^struct {
adapter_address : [6]UCHAR,
rev_major : UCHAR,
reserved0 : UCHAR,
adapter_type : UCHAR,
rev_minor : UCHAR,
duration : u16,
frmr_recv : u16,
frmr_xmit : u16,
iframe_recv_err : u16,
xmit_aborts : u16,
xmit_success : u32,
recv_success : u32,
iframe_xmit_err : u16,
recv_buff_unavail : u16,
t1_timeouts : u16,
ti_timeouts : u16,
reserved1 : u32,
free_ncbs : u16,
max_cfg_ncbs : u16,
max_ncbs : u16,
xmit_buf_unavail : u16,
max_dgram_size : u16,
pending_sess : u16,
max_cfg_sess : u16,
max_sess : u16,
max_sess_pkt_size : u16,
name_count : u16,
};
NAME_BUFFER :: struct {
name : [16]UCHAR,
name_num : UCHAR,
name_flags : UCHAR,
};
PNAME_BUFFER :: ^struct {
name : [16]UCHAR,
name_num : UCHAR,
name_flags : UCHAR,
};
SESSION_HEADER :: struct {
sess_name : UCHAR,
num_sess : UCHAR,
rcv_dg_outstanding : UCHAR,
rcv_any_outstanding : UCHAR,
};
PSESSION_HEADER :: ^struct {
sess_name : UCHAR,
num_sess : UCHAR,
rcv_dg_outstanding : UCHAR,
rcv_any_outstanding : UCHAR,
};
SESSION_BUFFER :: struct {
lsn : UCHAR,
state : UCHAR,
local_name : [16]UCHAR,
remote_name : [16]UCHAR,
rcvs_outstanding : UCHAR,
sends_outstanding : UCHAR,
};
PSESSION_BUFFER :: ^struct {
lsn : UCHAR,
state : UCHAR,
local_name : [16]UCHAR,
remote_name : [16]UCHAR,
rcvs_outstanding : UCHAR,
sends_outstanding : UCHAR,
};
LANA_ENUM :: struct {
length : UCHAR,
lana : [254 + 1]UCHAR,
};
PLANA_ENUM :: ^struct {
length : UCHAR,
lana : [254 + 1]UCHAR,
};
FIND_NAME_HEADER :: struct {
node_count : u16,
reserved : UCHAR,
unique_group : UCHAR,
};
PFIND_NAME_HEADER :: ^struct {
node_count : u16,
reserved : UCHAR,
unique_group : UCHAR,
};
FIND_NAME_BUFFER :: struct {
length : UCHAR,
access_control : UCHAR,
frame_control : UCHAR,
destination_addr : [6]UCHAR,
source_addr : [6]UCHAR,
routing_info : [18]UCHAR,
};
PFIND_NAME_BUFFER :: ^struct {
length : UCHAR,
access_control : UCHAR,
frame_control : UCHAR,
destination_addr : [6]UCHAR,
source_addr : [6]UCHAR,
routing_info : [18]UCHAR,
};
ACTION_HEADER :: struct {
transport_id : ULONG,
action_code : USHORT,
reserved : USHORT,
};
PACTION_HEADER :: ^struct {
transport_id : ULONG,
action_code : USHORT,
reserved : USHORT,
};
I_RPC_HANDLE :: rawptr;
RPC_STATUS :: i64;
RPC_CSTR :: cstring;
RPC_WSTR :: ^u16;
RPC_CWSTR :: ^u16;
RPC_BINDING_HANDLE :: I_RPC_HANDLE;
handle_t :: RPC_BINDING_HANDLE;
UUID :: GUID;
RPC_BINDING_VECTOR :: struct {
Count : u64,
BindingH : [1]RPC_BINDING_HANDLE,
};
UUID_VECTOR :: struct {
Count : u64,
Uuid : [1]^UUID,
};
RPC_IF_HANDLE :: rawptr;
RPC_IF_ID :: struct {
Uuid : UUID,
VersMajor : u16,
VersMinor : u16,
};
RPC_PROTSEQ_VECTORA :: struct {
Count : u32,
Protseq : [1]cstring,
};
RPC_PROTSEQ_VECTORW :: struct {
Count : u32,
Protseq : [1]^u16,
};
RPC_POLICY :: struct {
Length : u32,
EndpointFlags : u64,
NICFlags : u64,
};
PRPC_POLICY :: ^struct {
Length : u32,
EndpointFlags : u64,
NICFlags : u64,
};
RPC_OBJECT_INQ_FN :: #type proc(ObjectUuid : ^UUID, TypeUuid : ^UUID, Status : ^RPC_STATUS);
RPC_IF_CALLBACK_FN :: #type (proc(InterfaceUuid : RPC_IF_HANDLE, Context : rawptr) -> RPC_STATUS);
RPC_SECURITY_CALLBACK_FN :: #type proc(Context : rawptr);
RPC_STATS_VECTOR :: struct {
Count : u32,
Stats : [1]u64,
};
RPC_IF_ID_VECTOR :: struct {
Count : u64,
IfId : [1]^RPC_IF_ID,
};
RPC_AUTH_IDENTITY_HANDLE :: rawptr;
RPC_AUTHZ_HANDLE :: rawptr;
RPC_SECURITY_QOS :: struct {
Version : u64,
Capabilities : u64,
IdentityTracking : u64,
ImpersonationType : u64,
};
PRPC_SECURITY_QOS :: ^struct {
Version : u64,
Capabilities : u64,
IdentityTracking : u64,
ImpersonationType : u64,
};
SEC_WINNT_AUTH_IDENTITY_W :: struct {
User : ^u16,
UserLength : u64,
Domain : ^u16,
DomainLength : u64,
Password : ^u16,
PasswordLength : u64,
Flags : u64,
};
PSEC_WINNT_AUTH_IDENTITY_W :: ^struct {
User : ^u16,
UserLength : u64,
Domain : ^u16,
DomainLength : u64,
Password : ^u16,
PasswordLength : u64,
Flags : u64,
};
SEC_WINNT_AUTH_IDENTITY_A :: struct {
User : cstring,
UserLength : u64,
Domain : cstring,
DomainLength : u64,
Password : cstring,
PasswordLength : u64,
Flags : u64,
};
PSEC_WINNT_AUTH_IDENTITY_A :: ^struct {
User : cstring,
UserLength : u64,
Domain : cstring,
DomainLength : u64,
Password : cstring,
PasswordLength : u64,
Flags : u64,
};
RPC_HTTP_TRANSPORT_CREDENTIALS_W :: struct {
TransportCredentials : ^SEC_WINNT_AUTH_IDENTITY_W,
Flags : u64,
AuthenticationTarget : u64,
NumberOfAuthnSchemes : u64,
AuthnSchemes : ^u64,
ServerCertificateSubject : ^u16,
};
PRPC_HTTP_TRANSPORT_CREDENTIALS_W :: ^struct {
TransportCredentials : ^SEC_WINNT_AUTH_IDENTITY_W,
Flags : u64,
AuthenticationTarget : u64,
NumberOfAuthnSchemes : u64,
AuthnSchemes : ^u64,
ServerCertificateSubject : ^u16,
};
RPC_HTTP_TRANSPORT_CREDENTIALS_A :: struct {
TransportCredentials : ^SEC_WINNT_AUTH_IDENTITY_A,
Flags : u64,
AuthenticationTarget : u64,
NumberOfAuthnSchemes : u64,
AuthnSchemes : ^u64,
ServerCertificateSubject : cstring,
};
PRPC_HTTP_TRANSPORT_CREDENTIALS_A :: ^struct {
TransportCredentials : ^SEC_WINNT_AUTH_IDENTITY_A,
Flags : u64,
AuthenticationTarget : u64,
NumberOfAuthnSchemes : u64,
AuthnSchemes : ^u64,
ServerCertificateSubject : cstring,
};
RPC_HTTP_TRANSPORT_CREDENTIALS_V2_W :: struct {
TransportCredentials : ^SEC_WINNT_AUTH_IDENTITY_W,
Flags : u64,
AuthenticationTarget : u64,
NumberOfAuthnSchemes : u64,
AuthnSchemes : ^u64,
ServerCertificateSubject : ^u16,
ProxyCredentials : ^SEC_WINNT_AUTH_IDENTITY_W,
NumberOfProxyAuthnSchemes : u64,
ProxyAuthnSchemes : ^u64,
};
PRPC_HTTP_TRANSPORT_CREDENTIALS_V2_W :: ^struct {
TransportCredentials : ^SEC_WINNT_AUTH_IDENTITY_W,
Flags : u64,
AuthenticationTarget : u64,
NumberOfAuthnSchemes : u64,
AuthnSchemes : ^u64,
ServerCertificateSubject : ^u16,
ProxyCredentials : ^SEC_WINNT_AUTH_IDENTITY_W,
NumberOfProxyAuthnSchemes : u64,
ProxyAuthnSchemes : ^u64,
};
RPC_HTTP_TRANSPORT_CREDENTIALS_V2_A :: struct {
TransportCredentials : ^SEC_WINNT_AUTH_IDENTITY_A,
Flags : u64,
AuthenticationTarget : u64,
NumberOfAuthnSchemes : u64,
AuthnSchemes : ^u64,
ServerCertificateSubject : cstring,
ProxyCredentials : ^SEC_WINNT_AUTH_IDENTITY_A,
NumberOfProxyAuthnSchemes : u64,
ProxyAuthnSchemes : ^u64,
};
PRPC_HTTP_TRANSPORT_CREDENTIALS_V2_A :: ^struct {
TransportCredentials : ^SEC_WINNT_AUTH_IDENTITY_A,
Flags : u64,
AuthenticationTarget : u64,
NumberOfAuthnSchemes : u64,
AuthnSchemes : ^u64,
ServerCertificateSubject : cstring,
ProxyCredentials : ^SEC_WINNT_AUTH_IDENTITY_A,
NumberOfProxyAuthnSchemes : u64,
ProxyAuthnSchemes : ^u64,
};
RPC_HTTP_TRANSPORT_CREDENTIALS_V3_W :: struct {
TransportCredentials : RPC_AUTH_IDENTITY_HANDLE,
Flags : u64,
AuthenticationTarget : u64,
NumberOfAuthnSchemes : u64,
AuthnSchemes : ^u64,
ServerCertificateSubject : ^u16,
ProxyCredentials : RPC_AUTH_IDENTITY_HANDLE,
NumberOfProxyAuthnSchemes : u64,
ProxyAuthnSchemes : ^u64,
};
PRPC_HTTP_TRANSPORT_CREDENTIALS_V3_W :: ^struct {
TransportCredentials : RPC_AUTH_IDENTITY_HANDLE,
Flags : u64,
AuthenticationTarget : u64,
NumberOfAuthnSchemes : u64,
AuthnSchemes : ^u64,
ServerCertificateSubject : ^u16,
ProxyCredentials : RPC_AUTH_IDENTITY_HANDLE,
NumberOfProxyAuthnSchemes : u64,
ProxyAuthnSchemes : ^u64,
};
RPC_HTTP_TRANSPORT_CREDENTIALS_V3_A :: struct {
TransportCredentials : RPC_AUTH_IDENTITY_HANDLE,
Flags : u64,
AuthenticationTarget : u64,
NumberOfAuthnSchemes : u64,
AuthnSchemes : ^u64,
ServerCertificateSubject : cstring,
ProxyCredentials : RPC_AUTH_IDENTITY_HANDLE,
NumberOfProxyAuthnSchemes : u64,
ProxyAuthnSchemes : ^u64,
};
PRPC_HTTP_TRANSPORT_CREDENTIALS_V3_A :: ^struct {
TransportCredentials : RPC_AUTH_IDENTITY_HANDLE,
Flags : u64,
AuthenticationTarget : u64,
NumberOfAuthnSchemes : u64,
AuthnSchemes : ^u64,
ServerCertificateSubject : cstring,
ProxyCredentials : RPC_AUTH_IDENTITY_HANDLE,
NumberOfProxyAuthnSchemes : u64,
ProxyAuthnSchemes : ^u64,
};
RPC_SECURITY_QOS_V2_W :: struct {
Version : u64,
Capabilities : u64,
IdentityTracking : u64,
ImpersonationType : u64,
AdditionalSecurityInfoType : u64,
u : struct #raw_union {
HttpCredentials : ^RPC_HTTP_TRANSPORT_CREDENTIALS_W,
},
};
PRPC_SECURITY_QOS_V2_W :: ^struct {
Version : u64,
Capabilities : u64,
IdentityTracking : u64,
ImpersonationType : u64,
AdditionalSecurityInfoType : u64,
u : struct #raw_union {
HttpCredentials : ^RPC_HTTP_TRANSPORT_CREDENTIALS_W,
},
};
RPC_SECURITY_QOS_V2_A :: struct {
Version : u64,
Capabilities : u64,
IdentityTracking : u64,
ImpersonationType : u64,
AdditionalSecurityInfoType : u64,
u : struct #raw_union {
HttpCredentials : ^RPC_HTTP_TRANSPORT_CREDENTIALS_A,
},
};
PRPC_SECURITY_QOS_V2_A :: ^struct {
Version : u64,
Capabilities : u64,
IdentityTracking : u64,
ImpersonationType : u64,
AdditionalSecurityInfoType : u64,
u : struct #raw_union {
HttpCredentials : ^RPC_HTTP_TRANSPORT_CREDENTIALS_A,
},
};
RPC_SECURITY_QOS_V3_W :: struct {
Version : u64,
Capabilities : u64,
IdentityTracking : u64,
ImpersonationType : u64,
AdditionalSecurityInfoType : u64,
u : struct #raw_union {
HttpCredentials : ^RPC_HTTP_TRANSPORT_CREDENTIALS_W,
},
Sid : rawptr,
};
PRPC_SECURITY_QOS_V3_W :: ^struct {
Version : u64,
Capabilities : u64,
IdentityTracking : u64,
ImpersonationType : u64,
AdditionalSecurityInfoType : u64,
u : struct #raw_union {
HttpCredentials : ^RPC_HTTP_TRANSPORT_CREDENTIALS_W,
},
Sid : rawptr,
};
RPC_SECURITY_QOS_V3_A :: struct {
Version : u64,
Capabilities : u64,
IdentityTracking : u64,
ImpersonationType : u64,
AdditionalSecurityInfoType : u64,
u : struct #raw_union {
HttpCredentials : ^RPC_HTTP_TRANSPORT_CREDENTIALS_A,
},
Sid : rawptr,
};
PRPC_SECURITY_QOS_V3_A :: ^struct {
Version : u64,
Capabilities : u64,
IdentityTracking : u64,
ImpersonationType : u64,
AdditionalSecurityInfoType : u64,
u : struct #raw_union {
HttpCredentials : ^RPC_HTTP_TRANSPORT_CREDENTIALS_A,
},
Sid : rawptr,
};
RPC_SECURITY_QOS_V4_W :: struct {
Version : u64,
Capabilities : u64,
IdentityTracking : u64,
ImpersonationType : u64,
AdditionalSecurityInfoType : u64,
u : struct #raw_union {
HttpCredentials : ^RPC_HTTP_TRANSPORT_CREDENTIALS_W,
},
Sid : rawptr,
EffectiveOnly : u32,
};
PRPC_SECURITY_QOS_V4_W :: ^struct {
Version : u64,
Capabilities : u64,
IdentityTracking : u64,
ImpersonationType : u64,
AdditionalSecurityInfoType : u64,
u : struct #raw_union {
HttpCredentials : ^RPC_HTTP_TRANSPORT_CREDENTIALS_W,
},
Sid : rawptr,
EffectiveOnly : u32,
};
RPC_SECURITY_QOS_V4_A :: struct {
Version : u64,
Capabilities : u64,
IdentityTracking : u64,
ImpersonationType : u64,
AdditionalSecurityInfoType : u64,
u : struct #raw_union {
HttpCredentials : ^RPC_HTTP_TRANSPORT_CREDENTIALS_A,
},
Sid : rawptr,
EffectiveOnly : u32,
};
PRPC_SECURITY_QOS_V4_A :: ^struct {
Version : u64,
Capabilities : u64,
IdentityTracking : u64,
ImpersonationType : u64,
AdditionalSecurityInfoType : u64,
u : struct #raw_union {
HttpCredentials : ^RPC_HTTP_TRANSPORT_CREDENTIALS_A,
},
Sid : rawptr,
EffectiveOnly : u32,
};
RPC_SECURITY_QOS_V5_W :: struct {
Version : u64,
Capabilities : u64,
IdentityTracking : u64,
ImpersonationType : u64,
AdditionalSecurityInfoType : u64,
u : struct #raw_union {
HttpCredentials : ^RPC_HTTP_TRANSPORT_CREDENTIALS_W,
},
Sid : rawptr,
EffectiveOnly : u32,
ServerSecurityDescriptor : rawptr,
};
PRPC_SECURITY_QOS_V5_W :: ^struct {
Version : u64,
Capabilities : u64,
IdentityTracking : u64,
ImpersonationType : u64,
AdditionalSecurityInfoType : u64,
u : struct #raw_union {
HttpCredentials : ^RPC_HTTP_TRANSPORT_CREDENTIALS_W,
},
Sid : rawptr,
EffectiveOnly : u32,
ServerSecurityDescriptor : rawptr,
};
RPC_SECURITY_QOS_V5_A :: struct {
Version : u64,
Capabilities : u64,
IdentityTracking : u64,
ImpersonationType : u64,
AdditionalSecurityInfoType : u64,
u : struct #raw_union {
HttpCredentials : ^RPC_HTTP_TRANSPORT_CREDENTIALS_A,
},
Sid : rawptr,
EffectiveOnly : u32,
ServerSecurityDescriptor : rawptr,
};
PRPC_SECURITY_QOS_V5_A :: ^struct {
Version : u64,
Capabilities : u64,
IdentityTracking : u64,
ImpersonationType : u64,
AdditionalSecurityInfoType : u64,
u : struct #raw_union {
HttpCredentials : ^RPC_HTTP_TRANSPORT_CREDENTIALS_A,
},
Sid : rawptr,
EffectiveOnly : u32,
ServerSecurityDescriptor : rawptr,
};
RPC_BINDING_HANDLE_TEMPLATE_V1_W :: struct {
Version : u64,
Flags : u64,
ProtocolSequence : u64,
NetworkAddress : ^u16,
StringEndpoint : ^u16,
u1 : struct #raw_union {
Reserved : ^u16,
},
ObjectUuid : UUID,
};
PRPC_BINDING_HANDLE_TEMPLATE_V1_W :: ^struct {
Version : u64,
Flags : u64,
ProtocolSequence : u64,
NetworkAddress : ^u16,
StringEndpoint : ^u16,
u1 : struct #raw_union {
Reserved : ^u16,
},
ObjectUuid : UUID,
};
RPC_BINDING_HANDLE_TEMPLATE_V1_A :: struct {
Version : u64,
Flags : u64,
ProtocolSequence : u64,
NetworkAddress : cstring,
StringEndpoint : cstring,
u1 : struct #raw_union {
Reserved : cstring,
},
ObjectUuid : UUID,
};
PRPC_BINDING_HANDLE_TEMPLATE_V1_A :: ^struct {
Version : u64,
Flags : u64,
ProtocolSequence : u64,
NetworkAddress : cstring,
StringEndpoint : cstring,
u1 : struct #raw_union {
Reserved : cstring,
},
ObjectUuid : UUID,
};
RPC_BINDING_HANDLE_SECURITY_V1_W :: struct {
Version : u64,
ServerPrincName : ^u16,
AuthnLevel : u64,
AuthnSvc : u64,
AuthIdentity : ^SEC_WINNT_AUTH_IDENTITY_W,
SecurityQos : ^RPC_SECURITY_QOS,
};
PRPC_BINDING_HANDLE_SECURITY_V1_W :: ^struct {
Version : u64,
ServerPrincName : ^u16,
AuthnLevel : u64,
AuthnSvc : u64,
AuthIdentity : ^SEC_WINNT_AUTH_IDENTITY_W,
SecurityQos : ^RPC_SECURITY_QOS,
};
RPC_BINDING_HANDLE_SECURITY_V1_A :: struct {
Version : u64,
ServerPrincName : cstring,
AuthnLevel : u64,
AuthnSvc : u64,
AuthIdentity : ^SEC_WINNT_AUTH_IDENTITY_A,
SecurityQos : ^RPC_SECURITY_QOS,
};
PRPC_BINDING_HANDLE_SECURITY_V1_A :: ^struct {
Version : u64,
ServerPrincName : cstring,
AuthnLevel : u64,
AuthnSvc : u64,
AuthIdentity : ^SEC_WINNT_AUTH_IDENTITY_A,
SecurityQos : ^RPC_SECURITY_QOS,
};
RPC_BINDING_HANDLE_OPTIONS_V1 :: struct {
Version : u64,
Flags : u64,
ComTimeout : u64,
CallTimeout : u64,
};
PRPC_BINDING_HANDLE_OPTIONS_V1 :: ^struct {
Version : u64,
Flags : u64,
ComTimeout : u64,
CallTimeout : u64,
};
RPC_HTTP_REDIRECTOR_STAGE :: enum {
RPCHTTP_RS_REDIRECT = 1,
RPCHTTP_RS_ACCESS_1,
RPCHTTP_RS_SESSION,
RPCHTTP_RS_ACCESS_2,
RPCHTTP_RS_INTERFACE,
};
RPC_NEW_HTTP_PROXY_CHANNEL :: (proc(RedirectorStage : RPC_HTTP_REDIRECTOR_STAGE, ServerName : RPC_WSTR, ServerPort : RPC_WSTR, RemoteUser : RPC_WSTR, AuthType : RPC_WSTR, ResourceUuid : rawptr, SessionId : rawptr, Interface : rawptr, Reserved : rawptr, Flags : u64, NewServerName : ^RPC_WSTR, NewServerPort : ^RPC_WSTR) -> RPC_STATUS);
RPC_HTTP_PROXY_FREE_STRING :: proc(String : RPC_WSTR);
RPC_AUTH_KEY_RETRIEVAL_FN :: proc(Arg : rawptr, ServerPrincName : RPC_WSTR, KeyVer : u64, Key : ^rawptr, Status : ^RPC_STATUS);
RPC_CLIENT_INFORMATION1 :: struct {
UserName : cstring,
ComputerName : cstring,
Privilege : u16,
AuthFlags : u64,
};
PRPC_CLIENT_INFORMATION1 :: ^struct {
UserName : cstring,
ComputerName : cstring,
Privilege : u16,
AuthFlags : u64,
};
RPC_EP_INQ_HANDLE :: ^I_RPC_HANDLE;
RPC_MGMT_AUTHORIZATION_FN :: (proc(ClientBinding : RPC_BINDING_HANDLE, RequestedMgmtOperation : u64, Status : ^RPC_STATUS) -> i32);
RPC_INTERFACE_GROUP :: rawptr;
PRPC_INTERFACE_GROUP :: ^rawptr;
RPC_ENDPOINT_TEMPLATEW :: struct {
Version : u64,
ProtSeq : RPC_WSTR,
Endpoint : RPC_WSTR,
SecurityDescriptor : rawptr,
Backlog : u64,
};
PRPC_ENDPOINT_TEMPLATEW :: ^struct {
Version : u64,
ProtSeq : RPC_WSTR,
Endpoint : RPC_WSTR,
SecurityDescriptor : rawptr,
Backlog : u64,
};
RPC_ENDPOINT_TEMPLATEA :: struct {
Version : u64,
ProtSeq : RPC_CSTR,
Endpoint : RPC_CSTR,
SecurityDescriptor : rawptr,
Backlog : u64,
};
PRPC_ENDPOINT_TEMPLATEA :: ^struct {
Version : u64,
ProtSeq : RPC_CSTR,
Endpoint : RPC_CSTR,
SecurityDescriptor : rawptr,
Backlog : u64,
};
RPC_INTERFACE_TEMPLATEA :: struct {
Version : u64,
IfSpec : RPC_IF_HANDLE,
MgrTypeUuid : ^UUID,
MgrEpv : rawptr,
Flags : u32,
MaxCalls : u32,
MaxRpcSize : u32,
IfCallback : ^RPC_IF_CALLBACK_FN,
UuidVector : ^UUID_VECTOR,
Annotation : RPC_CSTR,
SecurityDescriptor : rawptr,
};
PRPC_INTERFACE_TEMPLATEA :: ^struct {
Version : u64,
IfSpec : RPC_IF_HANDLE,
MgrTypeUuid : ^UUID,
MgrEpv : rawptr,
Flags : u32,
MaxCalls : u32,
MaxRpcSize : u32,
IfCallback : ^RPC_IF_CALLBACK_FN,
UuidVector : ^UUID_VECTOR,
Annotation : RPC_CSTR,
SecurityDescriptor : rawptr,
};
RPC_INTERFACE_TEMPLATEW :: struct {
Version : u64,
IfSpec : RPC_IF_HANDLE,
MgrTypeUuid : ^UUID,
MgrEpv : rawptr,
Flags : u32,
MaxCalls : u32,
MaxRpcSize : u32,
IfCallback : ^RPC_IF_CALLBACK_FN,
UuidVector : ^UUID_VECTOR,
Annotation : RPC_WSTR,
SecurityDescriptor : rawptr,
};
PRPC_INTERFACE_TEMPLATEW :: ^struct {
Version : u64,
IfSpec : RPC_IF_HANDLE,
MgrTypeUuid : ^UUID,
MgrEpv : rawptr,
Flags : u32,
MaxCalls : u32,
MaxRpcSize : u32,
IfCallback : ^RPC_IF_CALLBACK_FN,
UuidVector : ^UUID_VECTOR,
Annotation : RPC_WSTR,
SecurityDescriptor : rawptr,
};
RPC_INTERFACE_GROUP_IDLE_CALLBACK_FN :: #type proc(IfGroup : RPC_INTERFACE_GROUP, IdleCallbackContext : rawptr, IsGroupIdle : u64);
RPC_VERSION :: struct {
MajorVersion : u16,
MinorVersion : u16,
};
RPC_SYNTAX_IDENTIFIER :: struct {
SyntaxGUID : GUID,
SyntaxVersion : RPC_VERSION,
};
PRPC_SYNTAX_IDENTIFIER :: ^struct {
SyntaxGUID : GUID,
SyntaxVersion : RPC_VERSION,
};
RPC_MESSAGE :: struct {
Handle : RPC_BINDING_HANDLE,
DataRepresentation : u64,
Buffer : rawptr,
BufferLength : u32,
ProcNum : u32,
TransferSyntax : PRPC_SYNTAX_IDENTIFIER,
RpcInterfaceInformation : rawptr,
ReservedForRuntime : rawptr,
ManagerEpv : rawptr,
ImportContext : rawptr,
RpcFlags : u64,
};
PRPC_MESSAGE :: ^struct {
Handle : RPC_BINDING_HANDLE,
DataRepresentation : u64,
Buffer : rawptr,
BufferLength : u32,
ProcNum : u32,
TransferSyntax : PRPC_SYNTAX_IDENTIFIER,
RpcInterfaceInformation : rawptr,
ReservedForRuntime : rawptr,
ManagerEpv : rawptr,
ImportContext : rawptr,
RpcFlags : u64,
};
RPC_FORWARD_FUNCTION :: #type (proc(InterfaceId : ^UUID, InterfaceVersion : ^RPC_VERSION, ObjectId : ^UUID, Rpcpro : cstring, ppDestEndpoint : ^rawptr) -> RPC_STATUS);
RPC_ADDRESS_CHANGE_TYPE :: enum {
PROTOCOL_NOT_LOADED = 1,
PROTOCOL_LOADED,
PROTOCOL_ADDRESS_CHANGE,
};
RPC_ADDRESS_CHANGE_FN :: #type proc(arg : rawptr);
RPC_DISPATCH_FUNCTION :: proc(Message : PRPC_MESSAGE);
RPC_DISPATCH_TABLE :: struct {
DispatchTableCount : u32,
DispatchTable : ^RPC_DISPATCH_FUNCTION,
Reserved : LONG_PTR,
};
PRPC_DISPATCH_TABLE :: ^struct {
DispatchTableCount : u32,
DispatchTable : ^RPC_DISPATCH_FUNCTION,
Reserved : LONG_PTR,
};
RPC_PROTSEQ_ENDPOINT :: struct {
RpcProtocolSequence : cstring,
Endpoint : cstring,
};
PRPC_PROTSEQ_ENDPOINT :: ^struct {
RpcProtocolSequence : cstring,
Endpoint : cstring,
};
RPC_SERVER_INTERFACE :: struct {
Length : u32,
InterfaceId : RPC_SYNTAX_IDENTIFIER,
TransferSyntax : RPC_SYNTAX_IDENTIFIER,
DispatchTable : PRPC_DISPATCH_TABLE,
RpcProtseqEndpointCount : u32,
RpcProtseqEndpoint : PRPC_PROTSEQ_ENDPOINT,
DefaultManagerEpv : rawptr,
InterpreterInfo : ^void,
Flags : u32,
};
PRPC_SERVER_INTERFACE :: ^struct {
Length : u32,
InterfaceId : RPC_SYNTAX_IDENTIFIER,
TransferSyntax : RPC_SYNTAX_IDENTIFIER,
DispatchTable : PRPC_DISPATCH_TABLE,
RpcProtseqEndpointCount : u32,
RpcProtseqEndpoint : PRPC_PROTSEQ_ENDPOINT,
DefaultManagerEpv : rawptr,
InterpreterInfo : ^void,
Flags : u32,
};
RPC_CLIENT_INTERFACE :: struct {
Length : u32,
InterfaceId : RPC_SYNTAX_IDENTIFIER,
TransferSyntax : RPC_SYNTAX_IDENTIFIER,
DispatchTable : PRPC_DISPATCH_TABLE,
RpcProtseqEndpointCount : u32,
RpcProtseqEndpoint : PRPC_PROTSEQ_ENDPOINT,
Reserved : ULONG_PTR,
InterpreterInfo : ^void,
Flags : u32,
};
PRPC_CLIENT_INTERFACE :: ^struct {
Length : u32,
InterfaceId : RPC_SYNTAX_IDENTIFIER,
TransferSyntax : RPC_SYNTAX_IDENTIFIER,
DispatchTable : PRPC_DISPATCH_TABLE,
RpcProtseqEndpointCount : u32,
RpcProtseqEndpoint : PRPC_PROTSEQ_ENDPOINT,
Reserved : ULONG_PTR,
InterpreterInfo : ^void,
Flags : u32,
};
I_RPC_MUTEX :: rawptr;
LRPC_SYSTEM_HANDLE_MARSHAL_DIRECTION :: enum {
MarshalDirectionMarshal,
MarshalDirectionUnmarshal,
};
PRPC_RUNDOWN :: proc(AssociationContext : rawptr);
RPC_SEC_CONTEXT_KEY_INFO :: struct {
EncryptAlgorithm : u64,
KeySize : u64,
SignatureAlgorithm : u64,
};
PRPC_SEC_CONTEXT_KEY_INFO :: ^struct {
EncryptAlgorithm : u64,
KeySize : u64,
SignatureAlgorithm : u64,
};
RPC_TRANSFER_SYNTAX :: struct {
Uuid : UUID,
VersMajor : u16,
VersMinor : u16,
};
RPCLT_PDU_FILTER_FUNC :: proc(Buffer : rawptr, BufferLength : u32, fDatagram : i32);
RPC_SETFILTER_FUNC :: proc(pfnFilter : RPCLT_PDU_FILTER_FUNC);
RPC_BLOCKING_FN :: (proc(hWnd : rawptr, Context : rawptr, hSyncEvent : rawptr) -> RPC_STATUS);
RPC_C_OPT_COOKIE_AUTH_DESCRIPTOR :: struct {
BufferSize : u64,
Buffer : cstring,
};
RDR_CALLOUT_STATE :: struct {
LastError : RPC_STATUS,
LastEEInfo : rawptr,
LastCalledStage : RPC_HTTP_REDIRECTOR_STAGE,
ServerName : ^u16,
ServerPort : ^u16,
RemoteUser : ^u16,
AuthType : ^u16,
ResourceTypePresent : u8,
SessionIdPresent : u8,
InterfacePresent : u8,
ResourceType : UUID,
SessionId : UUID,
Interface : RPC_SYNTAX_IDENTIFIER,
CertContext : rawptr,
};
I_RpcProxyIsValidMachineFn :: (proc(Machine : RPC_WSTR, DotMachine : RPC_WSTR, PortNumber : u64) -> RPC_STATUS);
I_RpcProxyGetClientAddressFn :: (proc(Context : rawptr, Buffer : cstring, BufferLength : ^u64) -> RPC_STATUS);
I_RpcProxyGetConnectionTimeoutFn :: (proc(ConnectionTimeout : ^u64) -> RPC_STATUS);
I_RpcPerformCalloutFn :: (proc(Context : rawptr, CallOutState : ^RDR_CALLOUT_STATE, Stage : RPC_HTTP_REDIRECTOR_STAGE) -> RPC_STATUS);
I_RpcFreeCalloutStateFn :: proc(CallOutState : ^RDR_CALLOUT_STATE);
I_RpcProxyGetClientSessionAndResourceUUID :: (proc(Context : rawptr, SessionIdPresent : ^i32, SessionId : ^UUID, ResourceIdPresent : ^i32, ResourceId : ^UUID) -> RPC_STATUS);
I_RpcProxyFilterIfFn :: (proc(Context : rawptr, IfUuid : ^UUID, IfMajorVersion : u16, fAllow : ^i32) -> RPC_STATUS);
RpcPerfCounters :: enum {
RpcCurrentUniqueUser = 1,
RpcBackEndConnectionAttempts,
RpcBackEndConnectionFailed,
RpcRequestsPerSecond,
RpcIncomingConnections,
RpcIncomingBandwidth,
RpcOutgoingBandwidth,
RpcAttemptedLbsDecisions,
RpcFailedLbsDecisions,
RpcAttemptedLbsMessages,
RpcFailedLbsMessages,
RpcLastCounter,
};
I_RpcProxyUpdatePerfCounterFn :: proc(Counter : RpcPerfCounters, ModifyTrend : i32, Size : u64);
I_RpcProxyUpdatePerfCounterBackendServerFn :: proc(MachineName : ^u16, IsConnectEvent : i32);
I_RpcProxyCallbackInterface :: struct {
IsValidMachineFn : I_RpcProxyIsValidMachineFn,
GetClientAddressFn : I_RpcProxyGetClientAddressFn,
GetConnectionTimeoutFn : I_RpcProxyGetConnectionTimeoutFn,
PerformCalloutFn : I_RpcPerformCalloutFn,
FreeCalloutStateFn : I_RpcFreeCalloutStateFn,
GetClientSessionAndResourceUUIDFn : I_RpcProxyGetClientSessionAndResourceUUID,
ProxyFilterIfFn : I_RpcProxyFilterIfFn,
RpcProxyUpdatePerfCounterFn : I_RpcProxyUpdatePerfCounterFn,
RpcProxyUpdatePerfCounterBackendServerFn : I_RpcProxyUpdatePerfCounterBackendServerFn,
};
RPC_NS_HANDLE :: rawptr;
RPC_NOTIFICATION_TYPES :: enum {
RpcNotificationTypeNone,
RpcNotificationTypeEvent,
RpcNotificationTypeApc,
RpcNotificationTypeIoc,
RpcNotificationTypeHwnd,
RpcNotificationTypeCallback,
};
RPC_ASYNC_EVENT :: enum {
RpcCallComplete,
RpcSendComplete,
RpcReceiveComplete,
RpcClientDisconnect,
RpcClientCancel,
};
RPCNOTIFICATION_ROUTINE :: #type proc(pAsync : ^RPC_ASYNC_STATE, Context : rawptr, Event : RPC_ASYNC_EVENT);
PFN_RPCNOTIFICATION_ROUTINE :: ^RPCNOTIFICATION_ROUTINE;
RPC_ASYNC_NOTIFICATION_INFO :: struct #raw_union {
APC : struct {
NotificationRoutine : PFN_RPCNOTIFICATION_ROUTINE,
hThread : HANDLE,
},
IOC : struct {
hIOPort : HANDLE,
dwNumberOfBytesTransferred : u32,
dwCompletionKey : DWORD_PTR,
lpOverlapped : LPOVERLAPPED,
},
HWND : struct {
hWnd : HWND,
Msg : UINT,
},
hEvent : HANDLE,
NotificationRoutine : PFN_RPCNOTIFICATION_ROUTINE,
};
PRPC_ASYNC_NOTIFICATION_INFO :: ^struct #raw_union {
APC : struct {
NotificationRoutine : PFN_RPCNOTIFICATION_ROUTINE,
hThread : HANDLE,
},
IOC : struct {
hIOPort : HANDLE,
dwNumberOfBytesTransferred : u32,
dwCompletionKey : DWORD_PTR,
lpOverlapped : LPOVERLAPPED,
},
HWND : struct {
hWnd : HWND,
Msg : UINT,
},
hEvent : HANDLE,
NotificationRoutine : PFN_RPCNOTIFICATION_ROUTINE,
};
RPC_ASYNC_STATE :: struct {
Size : u32,
Signature : u64,
Lock : i64,
Flags : u64,
StubInfo : rawptr,
UserInfo : rawptr,
RuntimeInfo : rawptr,
Event : RPC_ASYNC_EVENT,
NotificationType : RPC_NOTIFICATION_TYPES,
u : RPC_ASYNC_NOTIFICATION_INFO,
Reserved : [4]LONG_PTR,
};
PRPC_ASYNC_STATE :: ^struct {
Size : u32,
Signature : u64,
Lock : i64,
Flags : u64,
StubInfo : rawptr,
UserInfo : rawptr,
RuntimeInfo : rawptr,
Event : RPC_ASYNC_EVENT,
NotificationType : RPC_NOTIFICATION_TYPES,
u : RPC_ASYNC_NOTIFICATION_INFO,
Reserved : [4]LONG_PTR,
};
ExtendedErrorParamTypes :: enum {
eeptAnsiString = 1,
eeptUnicodeString,
eeptLongVal,
eeptShortVal,
eeptPointerVal,
eeptNone,
eeptBinary,
};
BinaryParam :: struct {
Buffer : rawptr,
Size : i16,
};
RPC_EE_INFO_PARAM :: struct {
ParameterType : ExtendedErrorParamTypes,
u : struct #raw_union {
AnsiString : LPSTR,
UnicodeString : LPWSTR,
LVal : i64,
SVal : i16,
PVal : ULONGLONG,
BVal : BinaryParam,
},
};
RPC_EXTENDED_ERROR_INFO :: struct {
Version : ULONG,
ComputerName : LPWSTR,
ProcessID : ULONG,
u : struct #raw_union {
SystemTime : SYSTEMTIME,
FileTime : FILETIME,
},
GeneratingComponent : ULONG,
Status : ULONG,
DetectionLocation : USHORT,
Flags : USHORT,
NumberOfParameters : i32,
Parameters : [4]RPC_EE_INFO_PARAM,
};
RPC_ERROR_ENUM_HANDLE :: struct {
Signature : ULONG,
CurrentPos : rawptr,
Head : rawptr,
};
RpcLocalAddressFormat :: enum {
rlafInvalid = 0,
rlafIPv4,
rlafIPv6,
};
RPC_CALL_LOCAL_ADDRESS_V1 :: struct {
Version : u32,
Buffer : rawptr,
BufferSize : u64,
AddressFormat : RpcLocalAddressFormat,
};
PRPC_CALL_LOCAL_ADDRESS_V1 :: ^struct {
Version : u32,
Buffer : rawptr,
BufferSize : u64,
AddressFormat : RpcLocalAddressFormat,
};
RPC_CALL_ATTRIBUTES_V1_W :: struct {
Version : u32,
Flags : u64,
ServerPrincipalNameBufferLength : u64,
ServerPrincipalName : ^u16,
ClientPrincipalNameBufferLength : u64,
ClientPrincipalName : ^u16,
AuthenticationLevel : u64,
AuthenticationService : u64,
NullSession : BOOL,
};
RPC_CALL_ATTRIBUTES_V1_A :: struct {
Version : u32,
Flags : u64,
ServerPrincipalNameBufferLength : u64,
ServerPrincipalName : cstring,
ClientPrincipalNameBufferLength : u64,
ClientPrincipalName : cstring,
AuthenticationLevel : u64,
AuthenticationService : u64,
NullSession : BOOL,
};
RpcCallType :: enum {
rctInvalid = 0,
rctNormal,
rctTraining,
rctGuaranteed,
};
RpcCallClientLocality :: enum {
rcclInvalid = 0,
rcclLocal,
rcclRemote,
rcclClientUnknownLocality,
};
RPC_CALL_ATTRIBUTES_V2_W :: struct {
Version : u32,
Flags : u64,
ServerPrincipalNameBufferLength : u64,
ServerPrincipalName : ^u16,
ClientPrincipalNameBufferLength : u64,
ClientPrincipalName : ^u16,
AuthenticationLevel : u64,
AuthenticationService : u64,
NullSession : BOOL,
KernelModeCaller : BOOL,
ProtocolSequence : u64,
IsClientLocal : RpcCallClientLocality,
ClientPID : HANDLE,
CallStatus : u64,
CallType : RpcCallType,
CallLocalAddress : ^RPC_CALL_LOCAL_ADDRESS_V1,
OpNum : u16,
InterfaceUuid : UUID,
};
RPC_CALL_ATTRIBUTES_V2_A :: struct {
Version : u32,
Flags : u64,
ServerPrincipalNameBufferLength : u64,
ServerPrincipalName : cstring,
ClientPrincipalNameBufferLength : u64,
ClientPrincipalName : cstring,
AuthenticationLevel : u64,
AuthenticationService : u64,
NullSession : BOOL,
KernelModeCaller : BOOL,
ProtocolSequence : u64,
IsClientLocal : u64,
ClientPID : HANDLE,
CallStatus : u64,
CallType : RpcCallType,
CallLocalAddress : ^RPC_CALL_LOCAL_ADDRESS_V1,
OpNum : u16,
InterfaceUuid : UUID,
};
RPC_CALL_ATTRIBUTES_V3_W :: struct {
Version : u32,
Flags : u64,
ServerPrincipalNameBufferLength : u64,
ServerPrincipalName : ^u16,
ClientPrincipalNameBufferLength : u64,
ClientPrincipalName : ^u16,
AuthenticationLevel : u64,
AuthenticationService : u64,
NullSession : BOOL,
KernelModeCaller : BOOL,
ProtocolSequence : u64,
IsClientLocal : RpcCallClientLocality,
ClientPID : HANDLE,
CallStatus : u64,
CallType : RpcCallType,
CallLocalAddress : ^RPC_CALL_LOCAL_ADDRESS_V1,
OpNum : u16,
InterfaceUuid : UUID,
ClientIdentifierBufferLength : u64,
ClientIdentifier : cstring,
};
RPC_CALL_ATTRIBUTES_V3_A :: struct {
Version : u32,
Flags : u64,
ServerPrincipalNameBufferLength : u64,
ServerPrincipalName : cstring,
ClientPrincipalNameBufferLength : u64,
ClientPrincipalName : cstring,
AuthenticationLevel : u64,
AuthenticationService : u64,
NullSession : BOOL,
KernelModeCaller : BOOL,
ProtocolSequence : u64,
IsClientLocal : u64,
ClientPID : HANDLE,
CallStatus : u64,
CallType : RpcCallType,
CallLocalAddress : ^RPC_CALL_LOCAL_ADDRESS_V1,
OpNum : u16,
InterfaceUuid : UUID,
ClientIdentifierBufferLength : u64,
ClientIdentifier : cstring,
};
RPC_CALL_ATTRIBUTES :: RPC_CALL_ATTRIBUTES_V3_A;
RPC_NOTIFICATIONS :: enum {
RpcNotificationCallNone = 0,
RpcNotificationClientDisconnect = 1,
RpcNotificationCallCancel = 2,
};
HDROP__ :: struct {
unused : i32,
};
HDROP :: ^HDROP__;
DRAGINFOA :: struct {
uSize : UINT,
pt : POINT,
fNC : BOOL,
lpFileList : PZZSTR,
grfKeyState : u32,
};
LPDRAGINFOA :: ^struct {
uSize : UINT,
pt : POINT,
fNC : BOOL,
lpFileList : PZZSTR,
grfKeyState : u32,
};
DRAGINFOW :: struct {
uSize : UINT,
pt : POINT,
fNC : BOOL,
lpFileList : PZZWSTR,
grfKeyState : u32,
};
LPDRAGINFOW :: ^struct {
uSize : UINT,
pt : POINT,
fNC : BOOL,
lpFileList : PZZWSTR,
grfKeyState : u32,
};
DRAGINFO :: DRAGINFOA;
LPDRAGINFO :: LPDRAGINFOA;
APPBARDATA :: struct {
cbSize : u32,
hWnd : HWND,
uCallbackMessage : UINT,
uEdge : UINT,
rc : RECT,
lParam : LPARAM,
};
PAPPBARDATA :: ^struct {
cbSize : u32,
hWnd : HWND,
uCallbackMessage : UINT,
uEdge : UINT,
rc : RECT,
lParam : LPARAM,
};
FILEOP_FLAGS :: u16;
PRINTEROP_FLAGS :: u16;
SHFILEOPSTRUCTA :: struct {
hwnd : HWND,
wFunc : UINT,
pFrom : PCZZSTR,
pTo : PCZZSTR,
fFlags : FILEOP_FLAGS,
fAnyOperationsAborted : BOOL,
hNameMappings : LPVOID,
lpszProgressTitle : PCSTR,
};
LPSHFILEOPSTRUCTA :: ^struct {
hwnd : HWND,
wFunc : UINT,
pFrom : PCZZSTR,
pTo : PCZZSTR,
fFlags : FILEOP_FLAGS,
fAnyOperationsAborted : BOOL,
hNameMappings : LPVOID,
lpszProgressTitle : PCSTR,
};
SHFILEOPSTRUCTW :: struct {
hwnd : HWND,
wFunc : UINT,
pFrom : PCZZWSTR,
pTo : PCZZWSTR,
fFlags : FILEOP_FLAGS,
fAnyOperationsAborted : BOOL,
hNameMappings : LPVOID,
lpszProgressTitle : PCWSTR,
};
LPSHFILEOPSTRUCTW :: ^struct {
hwnd : HWND,
wFunc : UINT,
pFrom : PCZZWSTR,
pTo : PCZZWSTR,
fFlags : FILEOP_FLAGS,
fAnyOperationsAborted : BOOL,
hNameMappings : LPVOID,
lpszProgressTitle : PCWSTR,
};
SHFILEOPSTRUCT :: SHFILEOPSTRUCTA;
LPSHFILEOPSTRUCT :: LPSHFILEOPSTRUCTA;
SHNAMEMAPPINGA :: struct {
pszOldPath : LPSTR,
pszNewPath : LPSTR,
cchOldPath : i32,
cchNewPath : i32,
};
LPSHNAMEMAPPINGA :: ^struct {
pszOldPath : LPSTR,
pszNewPath : LPSTR,
cchOldPath : i32,
cchNewPath : i32,
};
SHNAMEMAPPINGW :: struct {
pszOldPath : LPWSTR,
pszNewPath : LPWSTR,
cchOldPath : i32,
cchNewPath : i32,
};
LPSHNAMEMAPPINGW :: ^struct {
pszOldPath : LPWSTR,
pszNewPath : LPWSTR,
cchOldPath : i32,
cchNewPath : i32,
};
SHNAMEMAPPING :: SHNAMEMAPPINGA;
LPSHNAMEMAPPING :: LPSHNAMEMAPPINGA;
SHELLEXECUTEINFOA :: struct {
cbSize : u32,
fMask : ULONG,
hwnd : HWND,
lpVerb : LPCSTR,
lpFile : LPCSTR,
lpParameters : LPCSTR,
lpDirectory : LPCSTR,
nShow : i32,
hInstApp : HINSTANCE,
lpIDList : rawptr,
lpClass : LPCSTR,
hkeyClass : HKEY,
dwHotKey : u32,
u : struct #raw_union {
hIcon : HANDLE,
hMonitor : HANDLE,
},
hProcess : HANDLE,
};
LPSHELLEXECUTEINFOA :: ^struct {
cbSize : u32,
fMask : ULONG,
hwnd : HWND,
lpVerb : LPCSTR,
lpFile : LPCSTR,
lpParameters : LPCSTR,
lpDirectory : LPCSTR,
nShow : i32,
hInstApp : HINSTANCE,
lpIDList : rawptr,
lpClass : LPCSTR,
hkeyClass : HKEY,
dwHotKey : u32,
u : struct #raw_union {
hIcon : HANDLE,
hMonitor : HANDLE,
},
hProcess : HANDLE,
};
SHELLEXECUTEINFOW :: struct {
cbSize : u32,
fMask : ULONG,
hwnd : HWND,
lpVerb : LPCWSTR,
lpFile : LPCWSTR,
lpParameters : LPCWSTR,
lpDirectory : LPCWSTR,
nShow : i32,
hInstApp : HINSTANCE,
lpIDList : rawptr,
lpClass : LPCWSTR,
hkeyClass : HKEY,
dwHotKey : u32,
u : struct #raw_union {
hIcon : HANDLE,
hMonitor : HANDLE,
},
hProcess : HANDLE,
};
LPSHELLEXECUTEINFOW :: ^struct {
cbSize : u32,
fMask : ULONG,
hwnd : HWND,
lpVerb : LPCWSTR,
lpFile : LPCWSTR,
lpParameters : LPCWSTR,
lpDirectory : LPCWSTR,
nShow : i32,
hInstApp : HINSTANCE,
lpIDList : rawptr,
lpClass : LPCWSTR,
hkeyClass : HKEY,
dwHotKey : u32,
u : struct #raw_union {
hIcon : HANDLE,
hMonitor : HANDLE,
},
hProcess : HANDLE,
};
SHELLEXECUTEINFO :: SHELLEXECUTEINFOA;
LPSHELLEXECUTEINFO :: LPSHELLEXECUTEINFOA;
SHCREATEPROCESSINFOW :: struct {
cbSize : u32,
fMask : ULONG,
hwnd : HWND,
pszFile : LPCWSTR,
pszParameters : LPCWSTR,
pszCurrentDirectory : LPCWSTR,
hUserToken : HANDLE,
lpProcessAttributes : LPSECURITY_ATTRIBUTES,
lpThreadAttributes : LPSECURITY_ATTRIBUTES,
bInheritHandles : BOOL,
dwCreationFlags : u32,
lpStartupInfo : LPSTARTUPINFOW,
lpProcessInformation : LPPROCESS_INFORMATION,
};
PSHCREATEPROCESSINFOW :: ^struct {
cbSize : u32,
fMask : ULONG,
hwnd : HWND,
pszFile : LPCWSTR,
pszParameters : LPCWSTR,
pszCurrentDirectory : LPCWSTR,
hUserToken : HANDLE,
lpProcessAttributes : LPSECURITY_ATTRIBUTES,
lpThreadAttributes : LPSECURITY_ATTRIBUTES,
bInheritHandles : BOOL,
dwCreationFlags : u32,
lpStartupInfo : LPSTARTUPINFOW,
lpProcessInformation : LPPROCESS_INFORMATION,
};
ASSOCCLASS :: enum {
ASSOCCLASS_SHELL_KEY = 0,
ASSOCCLASS_PROGID_KEY,
ASSOCCLASS_PROGID_STR,
ASSOCCLASS_CLSID_KEY,
ASSOCCLASS_CLSID_STR,
ASSOCCLASS_APP_KEY,
ASSOCCLASS_APP_STR,
ASSOCCLASS_SYSTEM_STR,
ASSOCCLASS_FOLDER,
ASSOCCLASS_STAR,
ASSOCCLASS_FIXED_PROGID_STR,
ASSOCCLASS_PROTOCOL_STR,
};
ASSOCIATIONELEMENT :: struct {
ac : ASSOCCLASS,
hkClass : HKEY,
pszClass : PCWSTR,
};
SHQUERYRBINFO :: struct {
cbSize : u32,
i64Size : i64,
i64NumItems : i64,
};
LPSHQUERYRBINFO :: ^struct {
cbSize : u32,
i64Size : i64,
i64NumItems : i64,
};
QUERY_USER_NOTIFICATION_STATE :: enum {
QUNS_NOT_PRESENT = 1,
QUNS_BUSY = 2,
QUNS_RUNNING_D3D_FULL_SCREEN = 3,
QUNS_PRESENTATION_MODE = 4,
QUNS_ACCEPTS_NOTIFICATIONS = 5,
QUNS_QUIET_TIME = 6,
QUNS_APP = 7,
};
NOTIFYICONDATAA :: struct {
cbSize : u32,
hWnd : HWND,
uID : UINT,
uFlags : UINT,
uCallbackMessage : UINT,
hIcon : HICON,
szTip : [128]CHAR,
dwState : u32,
dwStateMask : u32,
szInfo : [256]CHAR,
u : struct #raw_union {
uTimeout : UINT,
uVersion : UINT,
},
szInfoTitle : [64]CHAR,
dwInfoFlags : u32,
guidItem : GUID,
hBalloonIcon : HICON,
};
PNOTIFYICONDATAA :: ^struct {
cbSize : u32,
hWnd : HWND,
uID : UINT,
uFlags : UINT,
uCallbackMessage : UINT,
hIcon : HICON,
szTip : [128]CHAR,
dwState : u32,
dwStateMask : u32,
szInfo : [256]CHAR,
u : struct #raw_union {
uTimeout : UINT,
uVersion : UINT,
},
szInfoTitle : [64]CHAR,
dwInfoFlags : u32,
guidItem : GUID,
hBalloonIcon : HICON,
};
NOTIFYICONDATAW :: struct {
cbSize : u32,
hWnd : HWND,
uID : UINT,
uFlags : UINT,
uCallbackMessage : UINT,
hIcon : HICON,
szTip : [128]WCHAR,
dwState : u32,
dwStateMask : u32,
szInfo : [256]WCHAR,
u : struct #raw_union {
uTimeout : UINT,
uVersion : UINT,
},
szInfoTitle : [64]WCHAR,
dwInfoFlags : u32,
guidItem : GUID,
hBalloonIcon : HICON,
};
PNOTIFYICONDATAW :: ^struct {
cbSize : u32,
hWnd : HWND,
uID : UINT,
uFlags : UINT,
uCallbackMessage : UINT,
hIcon : HICON,
szTip : [128]WCHAR,
dwState : u32,
dwStateMask : u32,
szInfo : [256]WCHAR,
u : struct #raw_union {
uTimeout : UINT,
uVersion : UINT,
},
szInfoTitle : [64]WCHAR,
dwInfoFlags : u32,
guidItem : GUID,
hBalloonIcon : HICON,
};
NOTIFYICONDATA :: NOTIFYICONDATAA;
PNOTIFYICONDATA :: PNOTIFYICONDATAA;
NOTIFYICONIDENTIFIER :: struct {
cbSize : u32,
hWnd : HWND,
uID : UINT,
guidItem : GUID,
};
PNOTIFYICONIDENTIFIER :: ^struct {
cbSize : u32,
hWnd : HWND,
uID : UINT,
guidItem : GUID,
};
SHFILEINFOA :: struct {
hIcon : HICON,
iIcon : i32,
dwAttributes : u32,
szDisplayName : [260]CHAR,
szTypeName : [80]CHAR,
};
SHFILEINFOW :: struct {
hIcon : HICON,
iIcon : i32,
dwAttributes : u32,
szDisplayName : [260]WCHAR,
szTypeName : [80]WCHAR,
};
SHFILEINFO :: SHFILEINFOA;
SHSTOCKICONINFO :: struct {
cbSize : u32,
hIcon : HICON,
iSysImageIndex : i32,
iIcon : i32,
szPath : [260]WCHAR,
};
SHSTOCKICONID :: enum {
SIID_DOCNOASSOC = 0,
SIID_DOCASSOC = 1,
SIID_APPLICATION = 2,
SIID_FOLDER = 3,
SIID_FOLDEROPEN = 4,
SIID_DRIVE525 = 5,
SIID_DRIVE35 = 6,
SIID_DRIVEREMOVE = 7,
SIID_DRIVEFIXED = 8,
SIID_DRIVENET = 9,
SIID_DRIVENETDISABLED = 10,
SIID_DRIVECD = 11,
SIID_DRIVERAM = 12,
SIID_WORLD = 13,
SIID_SERVER = 15,
SIID_PRINTER = 16,
SIID_MYNETWORK = 17,
SIID_FIND = 22,
SIID_HELP = 23,
SIID_SHARE = 28,
SIID_LINK = 29,
SIID_SLOWFILE = 30,
SIID_RECYCLER = 31,
SIID_RECYCLERFULL = 32,
SIID_MEDIACDAUDIO = 40,
SIID_LOCK = 47,
SIID_AUTOLIST = 49,
SIID_PRINTERNET = 50,
SIID_SERVERSHARE = 51,
SIID_PRINTERFAX = 52,
SIID_PRINTERFAXNET = 53,
SIID_PRINTERFILE = 54,
SIID_STACK = 55,
SIID_MEDIASVCD = 56,
SIID_STUFFEDFOLDER = 57,
SIID_DRIVEUNKNOWN = 58,
SIID_DRIVEDVD = 59,
SIID_MEDIADVD = 60,
SIID_MEDIADVDRAM = 61,
SIID_MEDIADVDRW = 62,
SIID_MEDIADVDR = 63,
SIID_MEDIADVDROM = 64,
SIID_MEDIACDAUDIOPLUS = 65,
SIID_MEDIACDRW = 66,
SIID_MEDIACDR = 67,
SIID_MEDIACDBURN = 68,
SIID_MEDIABLANKCD = 69,
SIID_MEDIACDROM = 70,
SIID_AUDIOFILES = 71,
SIID_IMAGEFILES = 72,
SIID_VIDEOFILES = 73,
SIID_MIXEDFILES = 74,
SIID_FOLDERBACK = 75,
SIID_FOLDERFRONT = 76,
SIID_SHIELD = 77,
SIID_WARNING = 78,
SIID_INFO = 79,
SIID_ERROR = 80,
SIID_KEY = 81,
SIID_SOFTWARE = 82,
SIID_RENAME = 83,
SIID_DELETE = 84,
SIID_MEDIAAUDIODVD = 85,
SIID_MEDIAMOVIEDVD = 86,
SIID_MEDIAENHANCEDCD = 87,
SIID_MEDIAENHANCEDDVD = 88,
SIID_MEDIAHDDVD = 89,
SIID_MEDIABLURAY = 90,
SIID_MEDIAVCD = 91,
SIID_MEDIADVDPLUSR = 92,
SIID_MEDIADVDPLUSRW = 93,
SIID_DESKTOPPC = 94,
SIID_MOBILEPC = 95,
SIID_USERS = 96,
SIID_MEDIASMARTMEDIA = 97,
SIID_MEDIACOMPACTFLASH = 98,
SIID_DEVICECELLPHONE = 99,
SIID_DEVICECAMERA = 100,
SIID_DEVICEVIDEOCAMERA = 101,
SIID_DEVICEAUDIOPLAYER = 102,
SIID_NETWORKCONNECT = 103,
SIID_INTERNET = 104,
SIID_ZIPFILE = 105,
SIID_SETTINGS = 106,
SIID_DRIVEHDDVD = 132,
SIID_DRIVEBD = 133,
SIID_MEDIAHDDVDROM = 134,
SIID_MEDIAHDDVDR = 135,
SIID_MEDIAHDDVDRAM = 136,
SIID_MEDIABDROM = 137,
SIID_MEDIABDR = 138,
SIID_MEDIABDRE = 139,
SIID_CLUSTEREDDRIVE = 140,
SIID_MAX_ICONS = 181,
};
OPEN_PRINTER_PROPS_INFOA :: struct {
dwSize : u32,
pszSheetName : LPSTR,
uSheetIndex : UINT,
dwFlags : u32,
bModal : BOOL,
};
POPEN_PRINTER_PROPS_INFOA :: ^struct {
dwSize : u32,
pszSheetName : LPSTR,
uSheetIndex : UINT,
dwFlags : u32,
bModal : BOOL,
};
OPEN_PRINTER_PROPS_INFOW :: struct {
dwSize : u32,
pszSheetName : LPWSTR,
uSheetIndex : UINT,
dwFlags : u32,
bModal : BOOL,
};
POPEN_PRINTER_PROPS_INFOW :: ^struct {
dwSize : u32,
pszSheetName : LPWSTR,
uSheetIndex : UINT,
dwFlags : u32,
bModal : BOOL,
};
OPEN_PRINTER_PROPS_INFO :: OPEN_PRINTER_PROPS_INFOA;
POPEN_PRINTER_PROPS_INFO :: POPEN_PRINTER_PROPS_INFOA;
PFNCANSHAREFOLDERW :: (proc(pszPath : PCWSTR) -> HRESULT);
PFNSHOWSHAREFOLDERUIW :: (proc(hwndParent : HWND, pszPath : PCWSTR) -> HRESULT);
NC_ADDRESS :: struct {
pAddrInfo : ^NET_ADDRESS_INFO_,
PortNumber : USHORT,
PrefixLength : BYTE,
};
PNC_ADDRESS :: ^struct {
pAddrInfo : ^NET_ADDRESS_INFO_,
PortNumber : USHORT,
PrefixLength : BYTE,
};
PERF_DATA_BLOCK :: struct {
Signature : [4]WCHAR,
LittleEndian : u32,
Version : u32,
Revision : u32,
TotalByteLength : u32,
HeaderLength : u32,
NumObjectTypes : u32,
DefaultObject : LONG,
SystemTime : SYSTEMTIME,
PerfTime : LARGE_INTEGER,
PerfFreq : LARGE_INTEGER,
PerfTime100nSec : LARGE_INTEGER,
SystemNameLength : u32,
SystemNameOffset : u32,
};
PPERF_DATA_BLOCK :: ^struct {
Signature : [4]WCHAR,
LittleEndian : u32,
Version : u32,
Revision : u32,
TotalByteLength : u32,
HeaderLength : u32,
NumObjectTypes : u32,
DefaultObject : LONG,
SystemTime : SYSTEMTIME,
PerfTime : LARGE_INTEGER,
PerfFreq : LARGE_INTEGER,
PerfTime100nSec : LARGE_INTEGER,
SystemNameLength : u32,
SystemNameOffset : u32,
};
PERF_OBJECT_TYPE :: struct {
TotalByteLength : u32,
DefinitionLength : u32,
HeaderLength : u32,
ObjectNameTitleIndex : u32,
ObjectNameTitle : LPWSTR,
ObjectHelpTitleIndex : u32,
ObjectHelpTitle : LPWSTR,
DetailLevel : u32,
NumCounters : u32,
DefaultCounter : LONG,
NumInstances : LONG,
CodePage : u32,
PerfTime : LARGE_INTEGER,
PerfFreq : LARGE_INTEGER,
};
PPERF_OBJECT_TYPE :: ^struct {
TotalByteLength : u32,
DefinitionLength : u32,
HeaderLength : u32,
ObjectNameTitleIndex : u32,
ObjectNameTitle : LPWSTR,
ObjectHelpTitleIndex : u32,
ObjectHelpTitle : LPWSTR,
DetailLevel : u32,
NumCounters : u32,
DefaultCounter : LONG,
NumInstances : LONG,
CodePage : u32,
PerfTime : LARGE_INTEGER,
PerfFreq : LARGE_INTEGER,
};
PERF_COUNTER_DEFINITION :: struct {
ByteLength : u32,
CounterNameTitleIndex : u32,
CounterNameTitle : LPWSTR,
CounterHelpTitleIndex : u32,
CounterHelpTitle : LPWSTR,
DefaultScale : LONG,
DetailLevel : u32,
CounterType : u32,
CounterSize : u32,
CounterOffset : u32,
};
PPERF_COUNTER_DEFINITION :: ^struct {
ByteLength : u32,
CounterNameTitleIndex : u32,
CounterNameTitle : LPWSTR,
CounterHelpTitleIndex : u32,
CounterHelpTitle : LPWSTR,
DefaultScale : LONG,
DetailLevel : u32,
CounterType : u32,
CounterSize : u32,
CounterOffset : u32,
};
PERF_INSTANCE_DEFINITION :: struct {
ByteLength : u32,
ParentObjectTitleIndex : u32,
ParentObjectInstance : u32,
UniqueID : LONG,
NameOffset : u32,
NameLength : u32,
};
PPERF_INSTANCE_DEFINITION :: ^struct {
ByteLength : u32,
ParentObjectTitleIndex : u32,
ParentObjectInstance : u32,
UniqueID : LONG,
NameOffset : u32,
NameLength : u32,
};
PERF_COUNTER_BLOCK :: struct {
ByteLength : u32,
};
PPERF_COUNTER_BLOCK :: ^struct {
ByteLength : u32,
};
PM_OPEN_PROC :: #type (proc(LPWSTR) -> u32);
PM_COLLECT_PROC :: #type (proc(lpValueName : LPWSTR, lppData : ^LPVOID, lpcbTotalBytes : LPDWORD, lpNumObjectTypes : LPDWORD) -> u32);
PM_CLOSE_PROC :: #type (proc(void) -> u32);
PM_QUERY_PROC :: #type (proc(LPDWORD, ^LPVOID, LPDWORD, LPDWORD) -> u32);
u_char :: u8;
u_short :: u16;
u_int :: u32;
u_long :: u64;
SOCKET :: UINT_PTR;
FD_SET :: struct {
fd_count : u_int,
fd_array : [64]SOCKET,
};
TIMEVAL :: struct {
tv_sec : i64,
tv_usec : i64,
};
HOSTENT :: struct {
h_name : cstring,
h_aliases : ^cstring,
h_addrtype : i16,
h_length : i16,
h_addr_list : ^cstring,
};
netent :: struct {
n_name : cstring,
n_aliases : ^cstring,
n_addrtype : i16,
n_net : u_long,
};
SERVENT :: struct {
s_name : cstring,
s_aliases : ^cstring,
s_port : i16,
s_proto : cstring,
};
PROTOENT :: struct {
p_name : cstring,
p_aliases : ^cstring,
p_proto : i16,
};
IN_ADDR :: struct {
S_un : struct #raw_union {
S_un_b : struct {
s_b1 : UCHAR,
s_b2 : UCHAR,
s_b3 : UCHAR,
s_b4 : UCHAR,
},
S_un_w : struct {
s_w1 : USHORT,
s_w2 : USHORT,
},
S_addr : ULONG,
},
};
PIN_ADDR :: ^struct {
S_un : struct #raw_union {
S_un_b : struct {
s_b1 : UCHAR,
s_b2 : UCHAR,
s_b3 : UCHAR,
s_b4 : UCHAR,
},
S_un_w : struct {
s_w1 : USHORT,
s_w2 : USHORT,
},
S_addr : ULONG,
},
};
LPIN_ADDR :: ^struct {
S_un : struct #raw_union {
S_un_b : struct {
s_b1 : UCHAR,
s_b2 : UCHAR,
s_b3 : UCHAR,
s_b4 : UCHAR,
},
S_un_w : struct {
s_w1 : USHORT,
s_w2 : USHORT,
},
S_addr : ULONG,
},
};
SOCKADDR_IN :: struct {
sin_family : i16,
sin_port : u_short,
sin_addr : IN_ADDR,
sin_zero : [8]u8,
};
WSADATA :: struct {
wVersion : u16,
wHighVersion : u16,
szDescription : [256 + 1]u8,
szSystemStatus : [128 + 1]u8,
iMaxSockets : u16,
iMaxUdpDg : u16,
lpVendorInfo : cstring,
};
LPWSADATA :: ^WSADATA;
ip_mreq :: struct {
imr_multiaddr : IN_ADDR,
imr_interface : IN_ADDR,
};
SOCKADDR :: struct {
sa_family : u_short,
sa_data : [14]u8,
};
sockproto :: struct {
sp_family : u_short,
sp_protocol : u_short,
};
LINGER :: struct {
l_onoff : u_short,
l_linger : u_short,
};
TRANSMIT_FILE_BUFFERS :: struct {
Head : PVOID,
HeadLength : u32,
Tail : PVOID,
TailLength : u32,
};
PTRANSMIT_FILE_BUFFERS :: ^struct {
Head : PVOID,
HeadLength : u32,
Tail : PVOID,
TailLength : u32,
};
LPTRANSMIT_FILE_BUFFERS :: ^struct {
Head : PVOID,
HeadLength : u32,
Tail : PVOID,
TailLength : u32,
};
SOCKADDR :: struct {};
;
PSOCKADDR :: ^SOCKADDR;
LPSOCKADDR :: ^SOCKADDR;
SOCKADDR_IN :: struct {};
;
PSOCKADDR_IN :: ^SOCKADDR_IN;
LPSOCKADDR_IN :: ^SOCKADDR_IN;
LINGER :: struct {};
;
PLINGER :: ^LINGER;
LPLINGER :: ^LINGER;
FD_SET :: struct {};
;
PFD_SET :: ^FD_SET;
LPFD_SET :: ^FD_SET;
HOSTENT :: struct {};
;
PHOSTENT :: ^HOSTENT;
LPHOSTENT :: ^HOSTENT;
SERVENT :: struct {};
;
PSERVENT :: ^SERVENT;
LPSERVENT :: ^SERVENT;
PROTOENT :: struct {};
;
PPROTOENT :: ^PROTOENT;
LPPROTOENT :: ^PROTOENT;
TIMEVAL :: struct {};
;
PTIMEVAL :: ^TIMEVAL;
LPTIMEVAL :: ^TIMEVAL;
ALG_ID :: u32;
HCRYPTPROV :: ULONG_PTR;
HCRYPTKEY :: ULONG_PTR;
HCRYPTHASH :: ULONG_PTR;
CMS_KEY_INFO :: struct {
dwVersion : u32,
Algid : ALG_ID,
pbOID : ^BYTE,
cbOID : u32,
};
PCMS_KEY_INFO :: ^struct {
dwVersion : u32,
Algid : ALG_ID,
pbOID : ^BYTE,
cbOID : u32,
};
HMAC_INFO :: struct {
HashAlgid : ALG_ID,
pbInnerString : ^BYTE,
cbInnerString : u32,
pbOuterString : ^BYTE,
cbOuterString : u32,
};
PHMAC_INFO :: ^struct {
HashAlgid : ALG_ID,
pbInnerString : ^BYTE,
cbInnerString : u32,
pbOuterString : ^BYTE,
cbOuterString : u32,
};
SCHANNEL_ALG :: struct {
dwUse : u32,
Algid : ALG_ID,
cBits : u32,
dwFlags : u32,
dwReserved : u32,
};
PSCHANNEL_ALG :: ^struct {
dwUse : u32,
Algid : ALG_ID,
cBits : u32,
dwFlags : u32,
dwReserved : u32,
};
PROV_ENUMALGS :: struct {
aiAlgid : ALG_ID,
dwBitLen : u32,
dwNameLen : u32,
szName : [20]CHAR,
};
PROV_ENUMALGS_EX :: struct {
aiAlgid : ALG_ID,
dwDefaultLen : u32,
dwMinLen : u32,
dwMaxLen : u32,
dwProtocols : u32,
dwNameLen : u32,
szName : [20]CHAR,
dwLongNameLen : u32,
szLongName : [40]CHAR,
};
BLOBHEADER :: struct {
bType : BYTE,
bVersion : BYTE,
reserved : u16,
aiKeyAlg : ALG_ID,
};
PUBLICKEYSTRUC :: struct {
bType : BYTE,
bVersion : BYTE,
reserved : u16,
aiKeyAlg : ALG_ID,
};
RSAPUBKEY :: struct {
magic : u32,
bitlen : u32,
pubexp : u32,
};
DHPUBKEY :: struct {
magic : u32,
bitlen : u32,
};
DSSPUBKEY :: struct {
magic : u32,
bitlen : u32,
};
KEAPUBKEY :: struct {
magic : u32,
bitlen : u32,
};
TEKPUBKEY :: struct {
magic : u32,
bitlen : u32,
};
DSSSEED :: struct {
counter : u32,
seed : [20]BYTE,
};
DHPUBKEY_VER3 :: struct {
magic : u32,
bitlenP : u32,
bitlenQ : u32,
bitlenJ : u32,
DSSSeed : DSSSEED,
};
DSSPUBKEY_VER3 :: struct {
magic : u32,
bitlenP : u32,
bitlenQ : u32,
bitlenJ : u32,
DSSSeed : DSSSEED,
};
DHPRIVKEY_VER3 :: struct {
magic : u32,
bitlenP : u32,
bitlenQ : u32,
bitlenJ : u32,
bitlenX : u32,
DSSSeed : DSSSEED,
};
DSSPRIVKEY_VER3 :: struct {
magic : u32,
bitlenP : u32,
bitlenQ : u32,
bitlenJ : u32,
bitlenX : u32,
DSSSeed : DSSSEED,
};
KEY_TYPE_SUBTYPE :: struct {
dwKeySpec : u32,
Type : GUID,
Subtype : GUID,
};
PKEY_TYPE_SUBTYPE :: ^struct {
dwKeySpec : u32,
Type : GUID,
Subtype : GUID,
};
CERT_FORTEZZA_DATA_PROP :: struct {
SerialNumber : [8]u8,
CertIndex : i32,
CertLabel : [36]u8,
};
CRYPT_RC4_KEY_STATE :: struct {
Key : [16]u8,
SBox : [256]u8,
i : u8,
j : u8,
};
PCRYPT_RC4_KEY_STATE :: ^struct {
Key : [16]u8,
SBox : [256]u8,
i : u8,
j : u8,
};
CRYPT_DES_KEY_STATE :: struct {
Key : [8]u8,
IV : [8]u8,
Feedback : [8]u8,
};
PCRYPT_DES_KEY_STATE :: ^struct {
Key : [8]u8,
IV : [8]u8,
Feedback : [8]u8,
};
CRYPT_3DES_KEY_STATE :: struct {
Key : [24]u8,
IV : [8]u8,
Feedback : [8]u8,
};
PCRYPT_3DES_KEY_STATE :: ^struct {
Key : [24]u8,
IV : [8]u8,
Feedback : [8]u8,
};
CRYPT_AES_128_KEY_STATE :: struct {
Key : [16]u8,
IV : [16]u8,
EncryptionState : [11][16]u8,
DecryptionState : [11][16]u8,
Feedback : [16]u8,
};
PCRYPT_AES_128_KEY_STATE :: ^struct {
Key : [16]u8,
IV : [16]u8,
EncryptionState : [11][16]u8,
DecryptionState : [11][16]u8,
Feedback : [16]u8,
};
CRYPT_AES_256_KEY_STATE :: struct {
Key : [32]u8,
IV : [16]u8,
EncryptionState : [15][16]u8,
DecryptionState : [15][16]u8,
Feedback : [16]u8,
};
PCRYPT_AES_256_KEY_STATE :: ^struct {
Key : [32]u8,
IV : [16]u8,
EncryptionState : [15][16]u8,
DecryptionState : [15][16]u8,
Feedback : [16]u8,
};
CRYPT_INTEGER_BLOB :: struct {
cbData : u32,
pbData : ^BYTE,
};
PCRYPT_INTEGER_BLOB :: ^struct {
cbData : u32,
pbData : ^BYTE,
};
CRYPT_UINT_BLOB :: struct {
cbData : u32,
pbData : ^BYTE,
};
PCRYPT_UINT_BLOB :: ^struct {
cbData : u32,
pbData : ^BYTE,
};
CRYPT_OBJID_BLOB :: struct {
cbData : u32,
pbData : ^BYTE,
};
PCRYPT_OBJID_BLOB :: ^struct {
cbData : u32,
pbData : ^BYTE,
};
CERT_NAME_BLOB :: struct {
cbData : u32,
pbData : ^BYTE,
};
PCERT_NAME_BLOB :: ^struct {
cbData : u32,
pbData : ^BYTE,
};
CERT_RDN_VALUE_BLOB :: struct {
cbData : u32,
pbData : ^BYTE,
};
PCERT_RDN_VALUE_BLOB :: ^struct {
cbData : u32,
pbData : ^BYTE,
};
CERT_BLOB :: struct {
cbData : u32,
pbData : ^BYTE,
};
PCERT_BLOB :: ^struct {
cbData : u32,
pbData : ^BYTE,
};
CRL_BLOB :: struct {
cbData : u32,
pbData : ^BYTE,
};
PCRL_BLOB :: ^struct {
cbData : u32,
pbData : ^BYTE,
};
DATA_BLOB :: struct {
cbData : u32,
pbData : ^BYTE,
};
PDATA_BLOB :: ^struct {
cbData : u32,
pbData : ^BYTE,
};
CRYPT_DATA_BLOB :: struct {
cbData : u32,
pbData : ^BYTE,
};
PCRYPT_DATA_BLOB :: ^struct {
cbData : u32,
pbData : ^BYTE,
};
CRYPT_HASH_BLOB :: struct {
cbData : u32,
pbData : ^BYTE,
};
PCRYPT_HASH_BLOB :: ^struct {
cbData : u32,
pbData : ^BYTE,
};
CRYPT_DIGEST_BLOB :: struct {
cbData : u32,
pbData : ^BYTE,
};
PCRYPT_DIGEST_BLOB :: ^struct {
cbData : u32,
pbData : ^BYTE,
};
CRYPT_DER_BLOB :: struct {
cbData : u32,
pbData : ^BYTE,
};
PCRYPT_DER_BLOB :: ^struct {
cbData : u32,
pbData : ^BYTE,
};
CRYPT_ATTR_BLOB :: struct {
cbData : u32,
pbData : ^BYTE,
};
PCRYPT_ATTR_BLOB :: ^struct {
cbData : u32,
pbData : ^BYTE,
};
CMS_DH_KEY_INFO :: struct {
dwVersion : u32,
Algid : ALG_ID,
pszContentEncObjId : LPSTR,
PubInfo : CRYPT_DATA_BLOB,
pReserved : rawptr,
};
PCMS_DH_KEY_INFO :: ^struct {
dwVersion : u32,
Algid : ALG_ID,
pszContentEncObjId : LPSTR,
PubInfo : CRYPT_DATA_BLOB,
pReserved : rawptr,
};
NTSTATUS :: LONG;
PNTSTATUS :: ^NTSTATUS;
BCRYPT_KEY_LENGTHS_STRUCT :: struct {
dwMinLength : ULONG,
dwMaxLength : ULONG,
dwIncrement : ULONG,
};
BCRYPT_AUTH_TAG_LENGTHS_STRUCT :: BCRYPT_KEY_LENGTHS_STRUCT;
BCRYPT_OID :: struct {
cbOID : ULONG,
pbOID : PUCHAR,
};
BCRYPT_OID_LIST :: struct {
dwOIDCount : ULONG,
pOIDs : ^BCRYPT_OID,
};
BCRYPT_PKCS1_PADDING_INFO :: struct {
pszAlgId : LPCWSTR,
};
BCRYPT_PSS_PADDING_INFO :: struct {
pszAlgId : LPCWSTR,
cbSalt : ULONG,
};
BCRYPT_OAEP_PADDING_INFO :: struct {
pszAlgId : LPCWSTR,
pbLabel : PUCHAR,
cbLabel : ULONG,
};
BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO :: struct {
cbSize : ULONG,
dwInfoVersion : ULONG,
pbNonce : PUCHAR,
cbNonce : ULONG,
pbAuthData : PUCHAR,
cbAuthData : ULONG,
pbTag : PUCHAR,
cbTag : ULONG,
pbMacContext : PUCHAR,
cbMacContext : ULONG,
cbAAD : ULONG,
cbData : ULONGLONG,
dwFlags : ULONG,
};
PBCRYPT_AUTHENTICATED_CIPHER_MODE_INFO :: ^struct {
cbSize : ULONG,
dwInfoVersion : ULONG,
pbNonce : PUCHAR,
cbNonce : ULONG,
pbAuthData : PUCHAR,
cbAuthData : ULONG,
pbTag : PUCHAR,
cbTag : ULONG,
pbMacContext : PUCHAR,
cbMacContext : ULONG,
cbAAD : ULONG,
cbData : ULONGLONG,
dwFlags : ULONG,
};
BCryptBuffer :: struct {
cbBuffer : ULONG,
BufferType : ULONG,
pvBuffer : PVOID,
};
PBCryptBuffer :: ^struct {
cbBuffer : ULONG,
BufferType : ULONG,
pvBuffer : PVOID,
};
BCryptBufferDesc :: struct {
ulVersion : ULONG,
cBuffers : ULONG,
pBuffers : PBCryptBuffer,
};
PBCryptBufferDesc :: ^struct {
ulVersion : ULONG,
cBuffers : ULONG,
pBuffers : PBCryptBuffer,
};
BCRYPT_HANDLE :: PVOID;
BCRYPT_ALG_HANDLE :: PVOID;
BCRYPT_KEY_HANDLE :: PVOID;
BCRYPT_HASH_HANDLE :: PVOID;
BCRYPT_SECRET_HANDLE :: PVOID;
BCRYPT_KEY_BLOB :: struct {
Magic : ULONG,
};
BCRYPT_RSAKEY_BLOB :: struct {
Magic : ULONG,
BitLength : ULONG,
cbPublicExp : ULONG,
cbModulus : ULONG,
cbPrime1 : ULONG,
cbPrime2 : ULONG,
};
BCRYPT_ECCKEY_BLOB :: struct {
dwMagic : ULONG,
cbKey : ULONG,
};
PBCRYPT_ECCKEY_BLOB :: ^struct {
dwMagic : ULONG,
cbKey : ULONG,
};
SSL_ECCKEY_BLOB :: struct {
dwCurveType : ULONG,
cbKey : ULONG,
};
PSSL_ECCKEY_BLOB :: ^struct {
dwCurveType : ULONG,
cbKey : ULONG,
};
ECC_CURVE_TYPE_ENUM :: enum {
BCRYPT_ECC_PRIME_SHORT_WEIERSTRASS_CURVE = 0x1,
BCRYPT_ECC_PRIME_TWISTED_EDWARDS_CURVE = 0x2,
BCRYPT_ECC_PRIME_MONTGOMERY_CURVE = 0x3,
};
ECC_CURVE_ALG_ID_ENUM :: enum {
BCRYPT_NO_CURVE_GENERATION_ALG_ID = 0x0,
};
BCRYPT_ECCFULLKEY_BLOB :: struct {
dwMagic : ULONG,
dwVersion : ULONG,
dwCurveType : ECC_CURVE_TYPE_ENUM,
dwCurveGenerationAlgId : ECC_CURVE_ALG_ID_ENUM,
cbFieldLength : ULONG,
cbSubgroupOrder : ULONG,
cbCofactor : ULONG,
cbSeed : ULONG,
};
PBCRYPT_ECCFULLKEY_BLOB :: ^struct {
dwMagic : ULONG,
dwVersion : ULONG,
dwCurveType : ECC_CURVE_TYPE_ENUM,
dwCurveGenerationAlgId : ECC_CURVE_ALG_ID_ENUM,
cbFieldLength : ULONG,
cbSubgroupOrder : ULONG,
cbCofactor : ULONG,
cbSeed : ULONG,
};
BCRYPT_DH_KEY_BLOB :: struct {
dwMagic : ULONG,
cbKey : ULONG,
};
PBCRYPT_DH_KEY_BLOB :: ^struct {
dwMagic : ULONG,
cbKey : ULONG,
};
BCRYPT_DH_PARAMETER_HEADER :: struct {
cbLength : ULONG,
dwMagic : ULONG,
cbKeyLength : ULONG,
};
BCRYPT_DSA_KEY_BLOB :: struct {
dwMagic : ULONG,
cbKey : ULONG,
Count : [4]UCHAR,
Seed : [20]UCHAR,
q : [20]UCHAR,
};
PBCRYPT_DSA_KEY_BLOB :: ^struct {
dwMagic : ULONG,
cbKey : ULONG,
Count : [4]UCHAR,
Seed : [20]UCHAR,
q : [20]UCHAR,
};
HASHALGORITHM_ENUM :: enum {
DSA_HASH_ALGORITHM_SHA1,
DSA_HASH_ALGORITHM_SHA256,
DSA_HASH_ALGORITHM_SHA512,
};
DSAFIPSVERSION_ENUM :: enum {
DSA_FIPS186_2,
DSA_FIPS186_3,
};
BCRYPT_DSA_KEY_BLOB_V2 :: struct {
dwMagic : ULONG,
cbKey : ULONG,
hashAlgorithm : HASHALGORITHM_ENUM,
standardVersion : DSAFIPSVERSION_ENUM,
cbSeedLength : ULONG,
cbGroupSize : ULONG,
Count : [4]UCHAR,
};
PBCRYPT_DSA_KEY_BLOB_V2 :: ^struct {
dwMagic : ULONG,
cbKey : ULONG,
hashAlgorithm : HASHALGORITHM_ENUM,
standardVersion : DSAFIPSVERSION_ENUM,
cbSeedLength : ULONG,
cbGroupSize : ULONG,
Count : [4]UCHAR,
};
BCRYPT_KEY_DATA_BLOB_HEADER :: struct {
dwMagic : ULONG,
dwVersion : ULONG,
cbKeyData : ULONG,
};
PBCRYPT_KEY_DATA_BLOB_HEADER :: ^struct {
dwMagic : ULONG,
dwVersion : ULONG,
cbKeyData : ULONG,
};
BCRYPT_DSA_PARAMETER_HEADER :: struct {
cbLength : ULONG,
dwMagic : ULONG,
cbKeyLength : ULONG,
Count : [4]UCHAR,
Seed : [20]UCHAR,
q : [20]UCHAR,
};
BCRYPT_DSA_PARAMETER_HEADER_V2 :: struct {
cbLength : ULONG,
dwMagic : ULONG,
cbKeyLength : ULONG,
hashAlgorithm : HASHALGORITHM_ENUM,
standardVersion : DSAFIPSVERSION_ENUM,
cbSeedLength : ULONG,
cbGroupSize : ULONG,
Count : [4]UCHAR,
};
BCRYPT_ECC_CURVE_NAMES :: struct {
dwEccCurveNames : ULONG,
pEccCurveNames : ^LPWSTR,
};
BCRYPT_HASH_OPERATION_TYPE :: enum {
BCRYPT_HASH_OPERATION_HASH_DATA = 1,
BCRYPT_HASH_OPERATION_FINISH_HASH = 2,
};
BCRYPT_MULTI_HASH_OPERATION :: struct {
iHash : ULONG,
hashOperation : BCRYPT_HASH_OPERATION_TYPE,
pbBuffer : PUCHAR,
cbBuffer : ULONG,
};
BCRYPT_MULTI_OPERATION_TYPE :: enum {
BCRYPT_OPERATION_TYPE_HASH = 1,
};
BCRYPT_MULTI_OBJECT_LENGTH_STRUCT :: struct {
cbPerObject : ULONG,
cbPerElement : ULONG,
};
BCRYPT_ALGORITHM_IDENTIFIER :: struct {
pszName : LPWSTR,
dwClass : ULONG,
dwFlags : ULONG,
};
BCRYPT_PROVIDER_NAME :: struct {
pszProviderName : LPWSTR,
};
BCRYPT_INTERFACE_VERSION :: struct {
MajorVersion : USHORT,
MinorVersion : USHORT,
};
PBCRYPT_INTERFACE_VERSION :: ^struct {
MajorVersion : USHORT,
MinorVersion : USHORT,
};
CRYPT_INTERFACE_REG :: struct {
dwInterface : ULONG,
dwFlags : ULONG,
cFunctions : ULONG,
rgpszFunctions : ^PWSTR,
};
PCRYPT_INTERFACE_REG :: ^struct {
dwInterface : ULONG,
dwFlags : ULONG,
cFunctions : ULONG,
rgpszFunctions : ^PWSTR,
};
CRYPT_IMAGE_REG :: struct {
pszImage : PWSTR,
cInterfaces : ULONG,
rgpInterfaces : ^PCRYPT_INTERFACE_REG,
};
PCRYPT_IMAGE_REG :: ^struct {
pszImage : PWSTR,
cInterfaces : ULONG,
rgpInterfaces : ^PCRYPT_INTERFACE_REG,
};
CRYPT_PROVIDER_REG :: struct {
cAliases : ULONG,
rgpszAliases : ^PWSTR,
pUM : PCRYPT_IMAGE_REG,
pKM : PCRYPT_IMAGE_REG,
};
PCRYPT_PROVIDER_REG :: ^struct {
cAliases : ULONG,
rgpszAliases : ^PWSTR,
pUM : PCRYPT_IMAGE_REG,
pKM : PCRYPT_IMAGE_REG,
};
CRYPT_PROVIDERS :: struct {
cProviders : ULONG,
rgpszProviders : ^PWSTR,
};
PCRYPT_PROVIDERS :: ^struct {
cProviders : ULONG,
rgpszProviders : ^PWSTR,
};
CRYPT_CONTEXT_CONFIG :: struct {
dwFlags : ULONG,
dwReserved : ULONG,
};
PCRYPT_CONTEXT_CONFIG :: ^struct {
dwFlags : ULONG,
dwReserved : ULONG,
};
CRYPT_CONTEXT_FUNCTION_CONFIG :: struct {
dwFlags : ULONG,
dwReserved : ULONG,
};
PCRYPT_CONTEXT_FUNCTION_CONFIG :: ^struct {
dwFlags : ULONG,
dwReserved : ULONG,
};
CRYPT_CONTEXTS :: struct {
cContexts : ULONG,
rgpszContexts : ^PWSTR,
};
PCRYPT_CONTEXTS :: ^struct {
cContexts : ULONG,
rgpszContexts : ^PWSTR,
};
CRYPT_CONTEXT_FUNCTIONS :: struct {
cFunctions : ULONG,
rgpszFunctions : ^PWSTR,
};
PCRYPT_CONTEXT_FUNCTIONS :: ^struct {
cFunctions : ULONG,
rgpszFunctions : ^PWSTR,
};
CRYPT_CONTEXT_FUNCTION_PROVIDERS :: struct {
cProviders : ULONG,
rgpszProviders : ^PWSTR,
};
PCRYPT_CONTEXT_FUNCTION_PROVIDERS :: ^struct {
cProviders : ULONG,
rgpszProviders : ^PWSTR,
};
CRYPT_PROPERTY_REF :: struct {
pszProperty : PWSTR,
cbValue : ULONG,
pbValue : PUCHAR,
};
PCRYPT_PROPERTY_REF :: ^struct {
pszProperty : PWSTR,
cbValue : ULONG,
pbValue : PUCHAR,
};
CRYPT_IMAGE_REF :: struct {
pszImage : PWSTR,
dwFlags : ULONG,
};
PCRYPT_IMAGE_REF :: ^struct {
pszImage : PWSTR,
dwFlags : ULONG,
};
CRYPT_PROVIDER_REF :: struct {
dwInterface : ULONG,
pszFunction : PWSTR,
pszProvider : PWSTR,
cProperties : ULONG,
rgpProperties : ^PCRYPT_PROPERTY_REF,
pUM : PCRYPT_IMAGE_REF,
pKM : PCRYPT_IMAGE_REF,
};
PCRYPT_PROVIDER_REF :: ^struct {
dwInterface : ULONG,
pszFunction : PWSTR,
pszProvider : PWSTR,
cProperties : ULONG,
rgpProperties : ^PCRYPT_PROPERTY_REF,
pUM : PCRYPT_IMAGE_REF,
pKM : PCRYPT_IMAGE_REF,
};
CRYPT_PROVIDER_REFS :: struct {
cProviders : ULONG,
rgpProviders : ^PCRYPT_PROVIDER_REF,
};
PCRYPT_PROVIDER_REFS :: ^struct {
cProviders : ULONG,
rgpProviders : ^PCRYPT_PROVIDER_REF,
};
SECURITY_STATUS :: LONG;
PFN_NCRYPT_ALLOC :: (proc(cbSize : SIZE_T) -> LPVOID);
PFN_NCRYPT_FREE :: proc(pv : LPVOID);
NCRYPT_ALLOC_PARA :: struct {
cbSize : u32,
pfnAlloc : PFN_NCRYPT_ALLOC,
pfnFree : PFN_NCRYPT_FREE,
};
NCryptBuffer :: BCryptBuffer;
PNCryptBuffer :: ^BCryptBuffer;
NCryptBufferDesc :: BCryptBufferDesc;
PNCryptBufferDesc :: ^BCryptBufferDesc;
NCRYPT_HANDLE :: ULONG_PTR;
NCRYPT_PROV_HANDLE :: ULONG_PTR;
NCRYPT_KEY_HANDLE :: ULONG_PTR;
NCRYPT_HASH_HANDLE :: ULONG_PTR;
NCRYPT_SECRET_HANDLE :: ULONG_PTR;
NCRYPT_CIPHER_PADDING_INFO :: struct {
cbSize : ULONG,
dwFlags : u32,
pbIV : PUCHAR,
cbIV : ULONG,
pbOtherInfo : PUCHAR,
cbOtherInfo : ULONG,
};
PNCRYPT_CIPHER_PADDING_INFO :: ^struct {
cbSize : ULONG,
dwFlags : u32,
pbIV : PUCHAR,
cbIV : ULONG,
pbOtherInfo : PUCHAR,
cbOtherInfo : ULONG,
};
NCRYPT_PLATFORM_ATTEST_PADDING_INFO :: struct {
magic : ULONG,
pcrMask : ULONG,
};
NCRYPT_KEY_ATTEST_PADDING_INFO :: struct {
magic : ULONG,
pbKeyBlob : PUCHAR,
cbKeyBlob : ULONG,
pbKeyAuth : PUCHAR,
cbKeyAuth : ULONG,
};
NCRYPT_ISOLATED_KEY_ATTESTED_ATTRIBUTES :: struct {
Version : ULONG,
Flags : ULONG,
cbPublicKeyBlob : ULONG,
};
PNCRYPT_ISOLATED_KEY_ATTESTED_ATTRIBUTES :: ^struct {
Version : ULONG,
Flags : ULONG,
cbPublicKeyBlob : ULONG,
};
NCRYPT_VSM_KEY_ATTESTATION_STATEMENT :: struct {
Magic : ULONG,
Version : ULONG,
cbSignature : ULONG,
cbReport : ULONG,
cbAttributes : ULONG,
};
PNCRYPT_VSM_KEY_ATTESTATION_STATEMENT :: ^struct {
Magic : ULONG,
Version : ULONG,
cbSignature : ULONG,
cbReport : ULONG,
cbAttributes : ULONG,
};
NCRYPT_VSM_KEY_ATTESTATION_CLAIM_RESTRICTIONS :: struct {
Version : ULONG,
TrustletId : ULONGLONG,
MinSvn : ULONG,
FlagsMask : ULONG,
FlagsExpected : ULONG,
AllowDebugging : ,
Reserved : ,
};
PNCRYPT_VSM_KEY_ATTESTATION_CLAIM_RESTRICTIONS :: ^struct {
Version : ULONG,
TrustletId : ULONGLONG,
MinSvn : ULONG,
FlagsMask : ULONG,
FlagsExpected : ULONG,
AllowDebugging : ,
Reserved : ,
};
NCRYPT_EXPORTED_ISOLATED_KEY_HEADER :: struct {
Version : ULONG,
KeyUsage : ULONG,
PerBootKey : ,
Reserved : ,
cbAlgName : ULONG,
cbNonce : ULONG,
cbAuthTag : ULONG,
cbWrappingKey : ULONG,
cbIsolatedKey : ULONG,
};
PNCRYPT_EXPORTED_ISOLATED_KEY_HEADER :: ^struct {
Version : ULONG,
KeyUsage : ULONG,
PerBootKey : ,
Reserved : ,
cbAlgName : ULONG,
cbNonce : ULONG,
cbAuthTag : ULONG,
cbWrappingKey : ULONG,
cbIsolatedKey : ULONG,
};
NCRYPT_EXPORTED_ISOLATED_KEY_ENVELOPE :: struct {
Header : NCRYPT_EXPORTED_ISOLATED_KEY_HEADER,
};
PNCRYPT_EXPORTED_ISOLATED_KEY_ENVELOPE :: ^struct {
Header : NCRYPT_EXPORTED_ISOLATED_KEY_HEADER,
};
NCRYPT_PCP_TPM_WEB_AUTHN_ATTESTATION_STATEMENT :: struct {
Magic : UINT32,
Version : UINT32,
HeaderSize : UINT32,
cbCertifyInfo : UINT32,
cbSignature : UINT32,
cbTpmPublic : UINT32,
};
PNCRYPT_PCP_TPM_WEB_AUTHN_ATTESTATION_STATEMENT :: ^struct {
Magic : UINT32,
Version : UINT32,
HeaderSize : UINT32,
cbCertifyInfo : UINT32,
cbSignature : UINT32,
cbTpmPublic : UINT32,
};
NCRYPT_TPM_PLATFORM_ATTESTATION_STATEMENT :: struct {
Magic : ULONG,
Version : ULONG,
pcrAlg : ULONG,
cbSignature : ULONG,
cbQuote : ULONG,
cbPcrs : ULONG,
};
PNCRYPT_TPM_PLATFORM_ATTESTATION_STATEMENT :: ^struct {
Magic : ULONG,
Version : ULONG,
pcrAlg : ULONG,
cbSignature : ULONG,
cbQuote : ULONG,
cbPcrs : ULONG,
};
NCryptAlgorithmName :: struct {
pszName : LPWSTR,
dwClass : u32,
dwAlgOperations : u32,
dwFlags : u32,
};
NCryptKeyName :: struct {
pszName : LPWSTR,
pszAlgid : LPWSTR,
dwLegacyKeySpec : u32,
dwFlags : u32,
};
NCryptProviderName :: struct {
pszName : LPWSTR,
pszComment : LPWSTR,
};
NCRYPT_UI_POLICY :: struct {
dwVersion : u32,
dwFlags : u32,
pszCreationTitle : LPCWSTR,
pszFriendlyName : LPCWSTR,
pszDescription : LPCWSTR,
};
NCRYPT_KEY_ACCESS_POLICY_BLOB :: struct {
dwVersion : u32,
dwPolicyFlags : u32,
cbUserSid : u32,
cbApplicationSid : u32,
};
NCRYPT_SUPPORTED_LENGTHS :: struct {
dwMinLength : u32,
dwMaxLength : u32,
dwIncrement : u32,
dwDefaultLength : u32,
};
NCRYPT_PCP_HMAC_AUTH_SIGNATURE_INFO :: struct {
dwVersion : u32,
iExpiration : INT32,
pabNonce : [32]BYTE,
pabPolicyRef : [32]BYTE,
pabHMAC : [32]BYTE,
};
NCRYPT_PCP_TPM_FW_VERSION_INFO :: struct {
major1 : UINT16,
major2 : UINT16,
minor1 : UINT16,
minor2 : UINT16,
};
NCRYPT_PCP_RAW_POLICYDIGEST_INFO :: struct {
dwVersion : u32,
cbDigest : u32,
};
NCRYPT_KEY_BLOB_HEADER :: struct {
cbSize : ULONG,
dwMagic : ULONG,
cbAlgName : ULONG,
cbKeyData : ULONG,
};
PNCRYPT_KEY_BLOB_HEADER :: ^struct {
cbSize : ULONG,
dwMagic : ULONG,
cbAlgName : ULONG,
cbKeyData : ULONG,
};
NCRYPT_TPM_LOADABLE_KEY_BLOB_HEADER :: struct {
magic : u32,
cbHeader : u32,
cbPublic : u32,
cbPrivate : u32,
cbName : u32,
};
PNCRYPT_TPM_LOADABLE_KEY_BLOB_HEADER :: ^struct {
magic : u32,
cbHeader : u32,
cbPublic : u32,
cbPrivate : u32,
cbName : u32,
};
HCRYPTPROV_OR_NCRYPT_KEY_HANDLE :: ULONG_PTR;
HCRYPTPROV_LEGACY :: ULONG_PTR;
CRYPT_BIT_BLOB :: struct {
cbData : u32,
pbData : ^BYTE,
cUnusedBits : u32,
};
PCRYPT_BIT_BLOB :: ^struct {
cbData : u32,
pbData : ^BYTE,
cUnusedBits : u32,
};
CRYPT_ALGORITHM_IDENTIFIER :: struct {
pszObjId : LPSTR,
Parameters : CRYPT_OBJID_BLOB,
};
PCRYPT_ALGORITHM_IDENTIFIER :: ^struct {
pszObjId : LPSTR,
Parameters : CRYPT_OBJID_BLOB,
};
CRYPT_OBJID_TABLE :: struct {
dwAlgId : u32,
pszObjId : LPCSTR,
};
PCRYPT_OBJID_TABLE :: ^struct {
dwAlgId : u32,
pszObjId : LPCSTR,
};
CRYPT_HASH_INFO :: struct {
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
Hash : CRYPT_HASH_BLOB,
};
PCRYPT_HASH_INFO :: ^struct {
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
Hash : CRYPT_HASH_BLOB,
};
CERT_EXTENSION :: struct {
pszObjId : LPSTR,
fCritical : BOOL,
Value : CRYPT_OBJID_BLOB,
};
PCERT_EXTENSION :: ^struct {
pszObjId : LPSTR,
fCritical : BOOL,
Value : CRYPT_OBJID_BLOB,
};
PCCERT_EXTENSION :: ^CERT_EXTENSION;
CRYPT_ATTRIBUTE_TYPE_VALUE :: struct {
pszObjId : LPSTR,
Value : CRYPT_OBJID_BLOB,
};
PCRYPT_ATTRIBUTE_TYPE_VALUE :: ^struct {
pszObjId : LPSTR,
Value : CRYPT_OBJID_BLOB,
};
CRYPT_ATTRIBUTE :: struct {
pszObjId : LPSTR,
cValue : u32,
rgValue : PCRYPT_ATTR_BLOB,
};
PCRYPT_ATTRIBUTE :: ^struct {
pszObjId : LPSTR,
cValue : u32,
rgValue : PCRYPT_ATTR_BLOB,
};
CRYPT_ATTRIBUTES :: struct {
cAttr : u32,
rgAttr : PCRYPT_ATTRIBUTE,
};
PCRYPT_ATTRIBUTES :: ^struct {
cAttr : u32,
rgAttr : PCRYPT_ATTRIBUTE,
};
CERT_RDN_ATTR :: struct {
pszObjId : LPSTR,
dwValueType : u32,
Value : CERT_RDN_VALUE_BLOB,
};
PCERT_RDN_ATTR :: ^struct {
pszObjId : LPSTR,
dwValueType : u32,
Value : CERT_RDN_VALUE_BLOB,
};
CERT_RDN :: struct {
cRDNAttr : u32,
rgRDNAttr : PCERT_RDN_ATTR,
};
PCERT_RDN :: ^struct {
cRDNAttr : u32,
rgRDNAttr : PCERT_RDN_ATTR,
};
CERT_NAME_INFO :: struct {
cRDN : u32,
rgRDN : PCERT_RDN,
};
PCERT_NAME_INFO :: ^struct {
cRDN : u32,
rgRDN : PCERT_RDN,
};
CERT_NAME_VALUE :: struct {
dwValueType : u32,
Value : CERT_RDN_VALUE_BLOB,
};
PCERT_NAME_VALUE :: ^struct {
dwValueType : u32,
Value : CERT_RDN_VALUE_BLOB,
};
CERT_PUBLIC_KEY_INFO :: struct {
Algorithm : CRYPT_ALGORITHM_IDENTIFIER,
PublicKey : CRYPT_BIT_BLOB,
};
PCERT_PUBLIC_KEY_INFO :: ^struct {
Algorithm : CRYPT_ALGORITHM_IDENTIFIER,
PublicKey : CRYPT_BIT_BLOB,
};
CRYPT_ECC_PRIVATE_KEY_INFO :: struct {
dwVersion : u32,
PrivateKey : CRYPT_DER_BLOB,
szCurveOid : LPSTR,
PublicKey : CRYPT_BIT_BLOB,
};
PCRYPT_ECC_PRIVATE_KEY_INFO :: ^struct {
dwVersion : u32,
PrivateKey : CRYPT_DER_BLOB,
szCurveOid : LPSTR,
PublicKey : CRYPT_BIT_BLOB,
};
CRYPT_PRIVATE_KEY_INFO :: struct {
Version : u32,
Algorithm : CRYPT_ALGORITHM_IDENTIFIER,
PrivateKey : CRYPT_DER_BLOB,
pAttributes : PCRYPT_ATTRIBUTES,
};
PCRYPT_PRIVATE_KEY_INFO :: ^struct {
Version : u32,
Algorithm : CRYPT_ALGORITHM_IDENTIFIER,
PrivateKey : CRYPT_DER_BLOB,
pAttributes : PCRYPT_ATTRIBUTES,
};
CRYPT_ENCRYPTED_PRIVATE_KEY_INFO :: struct {
EncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
EncryptedPrivateKey : CRYPT_DATA_BLOB,
};
PCRYPT_ENCRYPTED_PRIVATE_KEY_INFO :: ^struct {
EncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
EncryptedPrivateKey : CRYPT_DATA_BLOB,
};
PCRYPT_DECRYPT_PRIVATE_KEY_FUNC :: (proc(Algorithm : CRYPT_ALGORITHM_IDENTIFIER, EncryptedPrivateKey : CRYPT_DATA_BLOB, pbClearTextKey : ^BYTE, pcbClearTextKey : ^u32, pVoidDecryptFunc : LPVOID) -> BOOL);
PCRYPT_ENCRYPT_PRIVATE_KEY_FUNC :: (proc(pAlgorithm : ^CRYPT_ALGORITHM_IDENTIFIER, pClearTextPrivateKey : ^CRYPT_DATA_BLOB, pbEncryptedKey : ^BYTE, pcbEncryptedKey : ^u32, pVoidEncryptFunc : LPVOID) -> BOOL);
PCRYPT_RESOLVE_HCRYPTPROV_FUNC :: (proc(pPrivateKeyInfo : ^CRYPT_PRIVATE_KEY_INFO, phCryptProv : ^HCRYPTPROV, pVoidResolveFunc : LPVOID) -> BOOL);
CRYPT_PKCS8_IMPORT_PARAMS :: struct {
PrivateKey : CRYPT_DIGEST_BLOB,
pResolvehCryptProvFunc : PCRYPT_RESOLVE_HCRYPTPROV_FUNC,
pVoidResolveFunc : LPVOID,
pDecryptPrivateKeyFunc : PCRYPT_DECRYPT_PRIVATE_KEY_FUNC,
pVoidDecryptFunc : LPVOID,
};
PCRYPT_PKCS8_IMPORT_PARAMS :: ^struct {
PrivateKey : CRYPT_DIGEST_BLOB,
pResolvehCryptProvFunc : PCRYPT_RESOLVE_HCRYPTPROV_FUNC,
pVoidResolveFunc : LPVOID,
pDecryptPrivateKeyFunc : PCRYPT_DECRYPT_PRIVATE_KEY_FUNC,
pVoidDecryptFunc : LPVOID,
};
CRYPT_PRIVATE_KEY_BLOB_AND_PARAMS :: struct {
PrivateKey : CRYPT_DIGEST_BLOB,
pResolvehCryptProvFunc : PCRYPT_RESOLVE_HCRYPTPROV_FUNC,
pVoidResolveFunc : LPVOID,
pDecryptPrivateKeyFunc : PCRYPT_DECRYPT_PRIVATE_KEY_FUNC,
pVoidDecryptFunc : LPVOID,
};
PCRYPT_PRIVATE_KEY_BLOB_AND_PARAMS :: ^struct {
PrivateKey : CRYPT_DIGEST_BLOB,
pResolvehCryptProvFunc : PCRYPT_RESOLVE_HCRYPTPROV_FUNC,
pVoidResolveFunc : LPVOID,
pDecryptPrivateKeyFunc : PCRYPT_DECRYPT_PRIVATE_KEY_FUNC,
pVoidDecryptFunc : LPVOID,
};
CRYPT_PKCS8_EXPORT_PARAMS :: struct {
hCryptProv : HCRYPTPROV,
dwKeySpec : u32,
pszPrivateKeyObjId : LPSTR,
pEncryptPrivateKeyFunc : PCRYPT_ENCRYPT_PRIVATE_KEY_FUNC,
pVoidEncryptFunc : LPVOID,
};
PCRYPT_PKCS8_EXPORT_PARAMS :: ^struct {
hCryptProv : HCRYPTPROV,
dwKeySpec : u32,
pszPrivateKeyObjId : LPSTR,
pEncryptPrivateKeyFunc : PCRYPT_ENCRYPT_PRIVATE_KEY_FUNC,
pVoidEncryptFunc : LPVOID,
};
CERT_INFO :: struct {
dwVersion : u32,
SerialNumber : CRYPT_INTEGER_BLOB,
SignatureAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
Issuer : CERT_NAME_BLOB,
NotBefore : FILETIME,
NotAfter : FILETIME,
Subject : CERT_NAME_BLOB,
SubjectPublicKeyInfo : CERT_PUBLIC_KEY_INFO,
IssuerUniqueId : CRYPT_BIT_BLOB,
SubjectUniqueId : CRYPT_BIT_BLOB,
cExtension : u32,
rgExtension : PCERT_EXTENSION,
};
PCERT_INFO :: ^struct {
dwVersion : u32,
SerialNumber : CRYPT_INTEGER_BLOB,
SignatureAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
Issuer : CERT_NAME_BLOB,
NotBefore : FILETIME,
NotAfter : FILETIME,
Subject : CERT_NAME_BLOB,
SubjectPublicKeyInfo : CERT_PUBLIC_KEY_INFO,
IssuerUniqueId : CRYPT_BIT_BLOB,
SubjectUniqueId : CRYPT_BIT_BLOB,
cExtension : u32,
rgExtension : PCERT_EXTENSION,
};
CRL_ENTRY :: struct {
SerialNumber : CRYPT_INTEGER_BLOB,
RevocationDate : FILETIME,
cExtension : u32,
rgExtension : PCERT_EXTENSION,
};
PCRL_ENTRY :: ^struct {
SerialNumber : CRYPT_INTEGER_BLOB,
RevocationDate : FILETIME,
cExtension : u32,
rgExtension : PCERT_EXTENSION,
};
CRL_INFO :: struct {
dwVersion : u32,
SignatureAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
Issuer : CERT_NAME_BLOB,
ThisUpdate : FILETIME,
NextUpdate : FILETIME,
cCRLEntry : u32,
rgCRLEntry : PCRL_ENTRY,
cExtension : u32,
rgExtension : PCERT_EXTENSION,
};
PCRL_INFO :: ^struct {
dwVersion : u32,
SignatureAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
Issuer : CERT_NAME_BLOB,
ThisUpdate : FILETIME,
NextUpdate : FILETIME,
cCRLEntry : u32,
rgCRLEntry : PCRL_ENTRY,
cExtension : u32,
rgExtension : PCERT_EXTENSION,
};
CERT_OR_CRL_BLOB :: struct {
dwChoice : u32,
cbEncoded : u32,
pbEncoded : ^BYTE,
};
PCERT_OR_CRL_BLOB :: ^struct {
dwChoice : u32,
cbEncoded : u32,
pbEncoded : ^BYTE,
};
CERT_OR_CRL_BUNDLE :: struct {
cItem : u32,
rgItem : PCERT_OR_CRL_BLOB,
};
PCERT_OR_CRL_BUNDLE :: ^struct {
cItem : u32,
rgItem : PCERT_OR_CRL_BLOB,
};
CERT_REQUEST_INFO :: struct {
dwVersion : u32,
Subject : CERT_NAME_BLOB,
SubjectPublicKeyInfo : CERT_PUBLIC_KEY_INFO,
cAttribute : u32,
rgAttribute : PCRYPT_ATTRIBUTE,
};
PCERT_REQUEST_INFO :: ^struct {
dwVersion : u32,
Subject : CERT_NAME_BLOB,
SubjectPublicKeyInfo : CERT_PUBLIC_KEY_INFO,
cAttribute : u32,
rgAttribute : PCRYPT_ATTRIBUTE,
};
CERT_KEYGEN_REQUEST_INFO :: struct {
dwVersion : u32,
SubjectPublicKeyInfo : CERT_PUBLIC_KEY_INFO,
pwszChallengeString : LPWSTR,
};
PCERT_KEYGEN_REQUEST_INFO :: ^struct {
dwVersion : u32,
SubjectPublicKeyInfo : CERT_PUBLIC_KEY_INFO,
pwszChallengeString : LPWSTR,
};
CERT_SIGNED_CONTENT_INFO :: struct {
ToBeSigned : CRYPT_DER_BLOB,
SignatureAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
Signature : CRYPT_BIT_BLOB,
};
PCERT_SIGNED_CONTENT_INFO :: ^struct {
ToBeSigned : CRYPT_DER_BLOB,
SignatureAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
Signature : CRYPT_BIT_BLOB,
};
CTL_USAGE :: struct {
cUsageIdentifier : u32,
rgpszUsageIdentifier : ^LPSTR,
};
PCTL_USAGE :: ^struct {
cUsageIdentifier : u32,
rgpszUsageIdentifier : ^LPSTR,
};
CERT_ENHKEY_USAGE :: struct {
cUsageIdentifier : u32,
rgpszUsageIdentifier : ^LPSTR,
};
PCERT_ENHKEY_USAGE :: ^struct {
cUsageIdentifier : u32,
rgpszUsageIdentifier : ^LPSTR,
};
PCCTL_USAGE :: ^CTL_USAGE;
PCCERT_ENHKEY_USAGE :: ^CERT_ENHKEY_USAGE;
CTL_ENTRY :: struct {
SubjectIdentifier : CRYPT_DATA_BLOB,
cAttribute : u32,
rgAttribute : PCRYPT_ATTRIBUTE,
};
PCTL_ENTRY :: ^struct {
SubjectIdentifier : CRYPT_DATA_BLOB,
cAttribute : u32,
rgAttribute : PCRYPT_ATTRIBUTE,
};
CTL_INFO :: struct {
dwVersion : u32,
SubjectUsage : CTL_USAGE,
ListIdentifier : CRYPT_DATA_BLOB,
SequenceNumber : CRYPT_INTEGER_BLOB,
ThisUpdate : FILETIME,
NextUpdate : FILETIME,
SubjectAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
cCTLEntry : u32,
rgCTLEntry : PCTL_ENTRY,
cExtension : u32,
rgExtension : PCERT_EXTENSION,
};
PCTL_INFO :: ^struct {
dwVersion : u32,
SubjectUsage : CTL_USAGE,
ListIdentifier : CRYPT_DATA_BLOB,
SequenceNumber : CRYPT_INTEGER_BLOB,
ThisUpdate : FILETIME,
NextUpdate : FILETIME,
SubjectAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
cCTLEntry : u32,
rgCTLEntry : PCTL_ENTRY,
cExtension : u32,
rgExtension : PCERT_EXTENSION,
};
CRYPT_TIME_STAMP_REQUEST_INFO :: struct {
pszTimeStampAlgorithm : LPSTR,
pszContentType : LPSTR,
Content : CRYPT_OBJID_BLOB,
cAttribute : u32,
rgAttribute : PCRYPT_ATTRIBUTE,
};
PCRYPT_TIME_STAMP_REQUEST_INFO :: ^struct {
pszTimeStampAlgorithm : LPSTR,
pszContentType : LPSTR,
Content : CRYPT_OBJID_BLOB,
cAttribute : u32,
rgAttribute : PCRYPT_ATTRIBUTE,
};
CRYPT_ENROLLMENT_NAME_VALUE_PAIR :: struct {
pwszName : LPWSTR,
pwszValue : LPWSTR,
};
PCRYPT_ENROLLMENT_NAME_VALUE_PAIR :: ^struct {
pwszName : LPWSTR,
pwszValue : LPWSTR,
};
CRYPT_CSP_PROVIDER :: struct {
dwKeySpec : u32,
pwszProviderName : LPWSTR,
Signature : CRYPT_BIT_BLOB,
};
PCRYPT_CSP_PROVIDER :: ^struct {
dwKeySpec : u32,
pwszProviderName : LPWSTR,
Signature : CRYPT_BIT_BLOB,
};
PFN_CRYPT_ALLOC :: (proc(cbSize : uint) -> LPVOID);
PFN_CRYPT_FREE :: proc(pv : LPVOID);
CRYPT_ENCODE_PARA :: struct {
cbSize : u32,
pfnAlloc : PFN_CRYPT_ALLOC,
pfnFree : PFN_CRYPT_FREE,
};
PCRYPT_ENCODE_PARA :: ^struct {
cbSize : u32,
pfnAlloc : PFN_CRYPT_ALLOC,
pfnFree : PFN_CRYPT_FREE,
};
CRYPT_DECODE_PARA :: struct {
cbSize : u32,
pfnAlloc : PFN_CRYPT_ALLOC,
pfnFree : PFN_CRYPT_FREE,
};
PCRYPT_DECODE_PARA :: ^struct {
cbSize : u32,
pfnAlloc : PFN_CRYPT_ALLOC,
pfnFree : PFN_CRYPT_FREE,
};
CERT_EXTENSIONS :: struct {
cExtension : u32,
rgExtension : PCERT_EXTENSION,
};
PCERT_EXTENSIONS :: ^struct {
cExtension : u32,
rgExtension : PCERT_EXTENSION,
};
CERT_AUTHORITY_KEY_ID_INFO :: struct {
KeyId : CRYPT_DATA_BLOB,
CertIssuer : CERT_NAME_BLOB,
CertSerialNumber : CRYPT_INTEGER_BLOB,
};
PCERT_AUTHORITY_KEY_ID_INFO :: ^struct {
KeyId : CRYPT_DATA_BLOB,
CertIssuer : CERT_NAME_BLOB,
CertSerialNumber : CRYPT_INTEGER_BLOB,
};
CERT_PRIVATE_KEY_VALIDITY :: struct {
NotBefore : FILETIME,
NotAfter : FILETIME,
};
PCERT_PRIVATE_KEY_VALIDITY :: ^struct {
NotBefore : FILETIME,
NotAfter : FILETIME,
};
CERT_KEY_ATTRIBUTES_INFO :: struct {
KeyId : CRYPT_DATA_BLOB,
IntendedKeyUsage : CRYPT_BIT_BLOB,
pPrivateKeyUsagePeriod : PCERT_PRIVATE_KEY_VALIDITY,
};
PCERT_KEY_ATTRIBUTES_INFO :: ^struct {
KeyId : CRYPT_DATA_BLOB,
IntendedKeyUsage : CRYPT_BIT_BLOB,
pPrivateKeyUsagePeriod : PCERT_PRIVATE_KEY_VALIDITY,
};
CERT_POLICY_ID :: struct {
cCertPolicyElementId : u32,
rgpszCertPolicyElementId : ^LPSTR,
};
PCERT_POLICY_ID :: ^struct {
cCertPolicyElementId : u32,
rgpszCertPolicyElementId : ^LPSTR,
};
CERT_KEY_USAGE_RESTRICTION_INFO :: struct {
cCertPolicyId : u32,
rgCertPolicyId : PCERT_POLICY_ID,
RestrictedKeyUsage : CRYPT_BIT_BLOB,
};
PCERT_KEY_USAGE_RESTRICTION_INFO :: ^struct {
cCertPolicyId : u32,
rgCertPolicyId : PCERT_POLICY_ID,
RestrictedKeyUsage : CRYPT_BIT_BLOB,
};
CERT_OTHER_NAME :: struct {
pszObjId : LPSTR,
Value : CRYPT_OBJID_BLOB,
};
PCERT_OTHER_NAME :: ^struct {
pszObjId : LPSTR,
Value : CRYPT_OBJID_BLOB,
};
CERT_ALT_NAME_ENTRY :: struct {
dwAltNameChoice : u32,
u : struct #raw_union {
pOtherName : PCERT_OTHER_NAME,
pwszRfc822Name : LPWSTR,
pwszDNSName : LPWSTR,
DirectoryName : CERT_NAME_BLOB,
pwszURL : LPWSTR,
IPAddress : CRYPT_DATA_BLOB,
pszRegisteredID : LPSTR,
},
};
PCERT_ALT_NAME_ENTRY :: ^struct {
dwAltNameChoice : u32,
u : struct #raw_union {
pOtherName : PCERT_OTHER_NAME,
pwszRfc822Name : LPWSTR,
pwszDNSName : LPWSTR,
DirectoryName : CERT_NAME_BLOB,
pwszURL : LPWSTR,
IPAddress : CRYPT_DATA_BLOB,
pszRegisteredID : LPSTR,
},
};
CERT_ALT_NAME_INFO :: struct {
cAltEntry : u32,
rgAltEntry : PCERT_ALT_NAME_ENTRY,
};
PCERT_ALT_NAME_INFO :: ^struct {
cAltEntry : u32,
rgAltEntry : PCERT_ALT_NAME_ENTRY,
};
CERT_BASIC_CONSTRAINTS_INFO :: struct {
SubjectType : CRYPT_BIT_BLOB,
fPathLenConstraint : BOOL,
dwPathLenConstraint : u32,
cSubtreesConstraint : u32,
rgSubtreesConstraint : ^CERT_NAME_BLOB,
};
PCERT_BASIC_CONSTRAINTS_INFO :: ^struct {
SubjectType : CRYPT_BIT_BLOB,
fPathLenConstraint : BOOL,
dwPathLenConstraint : u32,
cSubtreesConstraint : u32,
rgSubtreesConstraint : ^CERT_NAME_BLOB,
};
CERT_BASIC_CONSTRAINTS2_INFO :: struct {
fCA : BOOL,
fPathLenConstraint : BOOL,
dwPathLenConstraint : u32,
};
PCERT_BASIC_CONSTRAINTS2_INFO :: ^struct {
fCA : BOOL,
fPathLenConstraint : BOOL,
dwPathLenConstraint : u32,
};
CERT_POLICY_QUALIFIER_INFO :: struct {
pszPolicyQualifierId : LPSTR,
Qualifier : CRYPT_OBJID_BLOB,
};
PCERT_POLICY_QUALIFIER_INFO :: ^struct {
pszPolicyQualifierId : LPSTR,
Qualifier : CRYPT_OBJID_BLOB,
};
CERT_POLICY_INFO :: struct {
pszPolicyIdentifier : LPSTR,
cPolicyQualifier : u32,
rgPolicyQualifier : ^CERT_POLICY_QUALIFIER_INFO,
};
PCERT_POLICY_INFO :: ^struct {
pszPolicyIdentifier : LPSTR,
cPolicyQualifier : u32,
rgPolicyQualifier : ^CERT_POLICY_QUALIFIER_INFO,
};
CERT_POLICIES_INFO :: struct {
cPolicyInfo : u32,
rgPolicyInfo : ^CERT_POLICY_INFO,
};
PCERT_POLICIES_INFO :: ^struct {
cPolicyInfo : u32,
rgPolicyInfo : ^CERT_POLICY_INFO,
};
CERT_POLICY_QUALIFIER_NOTICE_REFERENCE :: struct {
pszOrganization : LPSTR,
cNoticeNumbers : u32,
rgNoticeNumbers : ^i32,
};
PCERT_POLICY_QUALIFIER_NOTICE_REFERENCE :: ^struct {
pszOrganization : LPSTR,
cNoticeNumbers : u32,
rgNoticeNumbers : ^i32,
};
CERT_POLICY_QUALIFIER_USER_NOTICE :: struct {
pNoticeReference : ^CERT_POLICY_QUALIFIER_NOTICE_REFERENCE,
pszDisplayText : LPWSTR,
};
PCERT_POLICY_QUALIFIER_USER_NOTICE :: ^struct {
pNoticeReference : ^CERT_POLICY_QUALIFIER_NOTICE_REFERENCE,
pszDisplayText : LPWSTR,
};
CPS_URLS :: struct {
pszURL : LPWSTR,
pAlgorithm : ^CRYPT_ALGORITHM_IDENTIFIER,
pDigest : ^CRYPT_DATA_BLOB,
};
PCPS_URLS :: ^struct {
pszURL : LPWSTR,
pAlgorithm : ^CRYPT_ALGORITHM_IDENTIFIER,
pDigest : ^CRYPT_DATA_BLOB,
};
CERT_POLICY95_QUALIFIER1 :: struct {
pszPracticesReference : LPWSTR,
pszNoticeIdentifier : LPSTR,
pszNSINoticeIdentifier : LPSTR,
cCPSURLs : u32,
rgCPSURLs : ^CPS_URLS,
};
PCERT_POLICY95_QUALIFIER1 :: ^struct {
pszPracticesReference : LPWSTR,
pszNoticeIdentifier : LPSTR,
pszNSINoticeIdentifier : LPSTR,
cCPSURLs : u32,
rgCPSURLs : ^CPS_URLS,
};
CERT_POLICY_MAPPING :: struct {
pszIssuerDomainPolicy : LPSTR,
pszSubjectDomainPolicy : LPSTR,
};
PCERT_POLICY_MAPPING :: ^struct {
pszIssuerDomainPolicy : LPSTR,
pszSubjectDomainPolicy : LPSTR,
};
CERT_POLICY_MAPPINGS_INFO :: struct {
cPolicyMapping : u32,
rgPolicyMapping : PCERT_POLICY_MAPPING,
};
PCERT_POLICY_MAPPINGS_INFO :: ^struct {
cPolicyMapping : u32,
rgPolicyMapping : PCERT_POLICY_MAPPING,
};
CERT_POLICY_CONSTRAINTS_INFO :: struct {
fRequireExplicitPolicy : BOOL,
dwRequireExplicitPolicySkipCerts : u32,
fInhibitPolicyMapping : BOOL,
dwInhibitPolicyMappingSkipCerts : u32,
};
PCERT_POLICY_CONSTRAINTS_INFO :: ^struct {
fRequireExplicitPolicy : BOOL,
dwRequireExplicitPolicySkipCerts : u32,
fInhibitPolicyMapping : BOOL,
dwInhibitPolicyMappingSkipCerts : u32,
};
CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY :: struct {
pszObjId : LPSTR,
cValue : u32,
rgValue : PCRYPT_DER_BLOB,
};
PCRYPT_CONTENT_INFO_SEQUENCE_OF_ANY :: ^struct {
pszObjId : LPSTR,
cValue : u32,
rgValue : PCRYPT_DER_BLOB,
};
CRYPT_CONTENT_INFO :: struct {
pszObjId : LPSTR,
Content : CRYPT_DER_BLOB,
};
PCRYPT_CONTENT_INFO :: ^struct {
pszObjId : LPSTR,
Content : CRYPT_DER_BLOB,
};
CRYPT_SEQUENCE_OF_ANY :: struct {
cValue : u32,
rgValue : PCRYPT_DER_BLOB,
};
PCRYPT_SEQUENCE_OF_ANY :: ^struct {
cValue : u32,
rgValue : PCRYPT_DER_BLOB,
};
CERT_AUTHORITY_KEY_ID2_INFO :: struct {
KeyId : CRYPT_DATA_BLOB,
AuthorityCertIssuer : CERT_ALT_NAME_INFO,
AuthorityCertSerialNumber : CRYPT_INTEGER_BLOB,
};
PCERT_AUTHORITY_KEY_ID2_INFO :: ^struct {
KeyId : CRYPT_DATA_BLOB,
AuthorityCertIssuer : CERT_ALT_NAME_INFO,
AuthorityCertSerialNumber : CRYPT_INTEGER_BLOB,
};
CERT_ACCESS_DESCRIPTION :: struct {
pszAccessMethod : LPSTR,
AccessLocation : CERT_ALT_NAME_ENTRY,
};
PCERT_ACCESS_DESCRIPTION :: ^struct {
pszAccessMethod : LPSTR,
AccessLocation : CERT_ALT_NAME_ENTRY,
};
CERT_AUTHORITY_INFO_ACCESS :: struct {
cAccDescr : u32,
rgAccDescr : PCERT_ACCESS_DESCRIPTION,
};
PCERT_AUTHORITY_INFO_ACCESS :: ^struct {
cAccDescr : u32,
rgAccDescr : PCERT_ACCESS_DESCRIPTION,
};
CERT_SUBJECT_INFO_ACCESS :: struct {
cAccDescr : u32,
rgAccDescr : PCERT_ACCESS_DESCRIPTION,
};
PCERT_SUBJECT_INFO_ACCESS :: ^struct {
cAccDescr : u32,
rgAccDescr : PCERT_ACCESS_DESCRIPTION,
};
CRL_DIST_POINT_NAME :: struct {
dwDistPointNameChoice : u32,
u : struct #raw_union {
FullName : CERT_ALT_NAME_INFO,
},
};
PCRL_DIST_POINT_NAME :: ^struct {
dwDistPointNameChoice : u32,
u : struct #raw_union {
FullName : CERT_ALT_NAME_INFO,
},
};
CRL_DIST_POINT :: struct {
DistPointName : CRL_DIST_POINT_NAME,
ReasonFlags : CRYPT_BIT_BLOB,
CRLIssuer : CERT_ALT_NAME_INFO,
};
PCRL_DIST_POINT :: ^struct {
DistPointName : CRL_DIST_POINT_NAME,
ReasonFlags : CRYPT_BIT_BLOB,
CRLIssuer : CERT_ALT_NAME_INFO,
};
CRL_DIST_POINTS_INFO :: struct {
cDistPoint : u32,
rgDistPoint : PCRL_DIST_POINT,
};
PCRL_DIST_POINTS_INFO :: ^struct {
cDistPoint : u32,
rgDistPoint : PCRL_DIST_POINT,
};
CROSS_CERT_DIST_POINTS_INFO :: struct {
dwSyncDeltaTime : u32,
cDistPoint : u32,
rgDistPoint : PCERT_ALT_NAME_INFO,
};
PCROSS_CERT_DIST_POINTS_INFO :: ^struct {
dwSyncDeltaTime : u32,
cDistPoint : u32,
rgDistPoint : PCERT_ALT_NAME_INFO,
};
CERT_PAIR :: struct {
Forward : CERT_BLOB,
Reverse : CERT_BLOB,
};
PCERT_PAIR :: ^struct {
Forward : CERT_BLOB,
Reverse : CERT_BLOB,
};
CRL_ISSUING_DIST_POINT :: struct {
DistPointName : CRL_DIST_POINT_NAME,
fOnlyContainsUserCerts : BOOL,
fOnlyContainsCACerts : BOOL,
OnlySomeReasonFlags : CRYPT_BIT_BLOB,
fIndirectCRL : BOOL,
};
PCRL_ISSUING_DIST_POINT :: ^struct {
DistPointName : CRL_DIST_POINT_NAME,
fOnlyContainsUserCerts : BOOL,
fOnlyContainsCACerts : BOOL,
OnlySomeReasonFlags : CRYPT_BIT_BLOB,
fIndirectCRL : BOOL,
};
CERT_GENERAL_SUBTREE :: struct {
Base : CERT_ALT_NAME_ENTRY,
dwMinimum : u32,
fMaximum : BOOL,
dwMaximum : u32,
};
PCERT_GENERAL_SUBTREE :: ^struct {
Base : CERT_ALT_NAME_ENTRY,
dwMinimum : u32,
fMaximum : BOOL,
dwMaximum : u32,
};
CERT_NAME_CONSTRAINTS_INFO :: struct {
cPermittedSubtree : u32,
rgPermittedSubtree : PCERT_GENERAL_SUBTREE,
cExcludedSubtree : u32,
rgExcludedSubtree : PCERT_GENERAL_SUBTREE,
};
PCERT_NAME_CONSTRAINTS_INFO :: ^struct {
cPermittedSubtree : u32,
rgPermittedSubtree : PCERT_GENERAL_SUBTREE,
cExcludedSubtree : u32,
rgExcludedSubtree : PCERT_GENERAL_SUBTREE,
};
CERT_DSS_PARAMETERS :: struct {
p : CRYPT_UINT_BLOB,
q : CRYPT_UINT_BLOB,
g : CRYPT_UINT_BLOB,
};
PCERT_DSS_PARAMETERS :: ^struct {
p : CRYPT_UINT_BLOB,
q : CRYPT_UINT_BLOB,
g : CRYPT_UINT_BLOB,
};
CERT_DH_PARAMETERS :: struct {
p : CRYPT_UINT_BLOB,
g : CRYPT_UINT_BLOB,
};
PCERT_DH_PARAMETERS :: ^struct {
p : CRYPT_UINT_BLOB,
g : CRYPT_UINT_BLOB,
};
CERT_ECC_SIGNATURE :: struct {
r : CRYPT_UINT_BLOB,
s : CRYPT_UINT_BLOB,
};
PCERT_ECC_SIGNATURE :: ^struct {
r : CRYPT_UINT_BLOB,
s : CRYPT_UINT_BLOB,
};
CERT_X942_DH_VALIDATION_PARAMS :: struct {
seed : CRYPT_BIT_BLOB,
pgenCounter : u32,
};
PCERT_X942_DH_VALIDATION_PARAMS :: ^struct {
seed : CRYPT_BIT_BLOB,
pgenCounter : u32,
};
CERT_X942_DH_PARAMETERS :: struct {
p : CRYPT_UINT_BLOB,
g : CRYPT_UINT_BLOB,
q : CRYPT_UINT_BLOB,
j : CRYPT_UINT_BLOB,
pValidationParams : PCERT_X942_DH_VALIDATION_PARAMS,
};
PCERT_X942_DH_PARAMETERS :: ^struct {
p : CRYPT_UINT_BLOB,
g : CRYPT_UINT_BLOB,
q : CRYPT_UINT_BLOB,
j : CRYPT_UINT_BLOB,
pValidationParams : PCERT_X942_DH_VALIDATION_PARAMS,
};
CRYPT_X942_OTHER_INFO :: struct {
pszContentEncryptionObjId : LPSTR,
rgbCounter : [4]BYTE,
rgbKeyLength : [4]BYTE,
PubInfo : CRYPT_DATA_BLOB,
};
PCRYPT_X942_OTHER_INFO :: ^struct {
pszContentEncryptionObjId : LPSTR,
rgbCounter : [4]BYTE,
rgbKeyLength : [4]BYTE,
PubInfo : CRYPT_DATA_BLOB,
};
CRYPT_ECC_CMS_SHARED_INFO :: struct {
Algorithm : CRYPT_ALGORITHM_IDENTIFIER,
EntityUInfo : CRYPT_DATA_BLOB,
rgbSuppPubInfo : [4]BYTE,
};
PCRYPT_ECC_CMS_SHARED_INFO :: ^struct {
Algorithm : CRYPT_ALGORITHM_IDENTIFIER,
EntityUInfo : CRYPT_DATA_BLOB,
rgbSuppPubInfo : [4]BYTE,
};
CRYPT_RC2_CBC_PARAMETERS :: struct {
dwVersion : u32,
fIV : BOOL,
rgbIV : [8]BYTE,
};
PCRYPT_RC2_CBC_PARAMETERS :: ^struct {
dwVersion : u32,
fIV : BOOL,
rgbIV : [8]BYTE,
};
CRYPT_SMIME_CAPABILITY :: struct {
pszObjId : LPSTR,
Parameters : CRYPT_OBJID_BLOB,
};
PCRYPT_SMIME_CAPABILITY :: ^struct {
pszObjId : LPSTR,
Parameters : CRYPT_OBJID_BLOB,
};
CRYPT_SMIME_CAPABILITIES :: struct {
cCapability : u32,
rgCapability : PCRYPT_SMIME_CAPABILITY,
};
PCRYPT_SMIME_CAPABILITIES :: ^struct {
cCapability : u32,
rgCapability : PCRYPT_SMIME_CAPABILITY,
};
CERT_QC_STATEMENT :: struct {
pszStatementId : LPSTR,
StatementInfo : CRYPT_OBJID_BLOB,
};
PCERT_QC_STATEMENT :: ^struct {
pszStatementId : LPSTR,
StatementInfo : CRYPT_OBJID_BLOB,
};
CERT_QC_STATEMENTS_EXT_INFO :: struct {
cStatement : u32,
rgStatement : PCERT_QC_STATEMENT,
};
PCERT_QC_STATEMENTS_EXT_INFO :: ^struct {
cStatement : u32,
rgStatement : PCERT_QC_STATEMENT,
};
CRYPT_MASK_GEN_ALGORITHM :: struct {
pszObjId : LPSTR,
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
};
PCRYPT_MASK_GEN_ALGORITHM :: ^struct {
pszObjId : LPSTR,
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
};
CRYPT_RSA_SSA_PSS_PARAMETERS :: struct {
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
MaskGenAlgorithm : CRYPT_MASK_GEN_ALGORITHM,
dwSaltLength : u32,
dwTrailerField : u32,
};
PCRYPT_RSA_SSA_PSS_PARAMETERS :: ^struct {
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
MaskGenAlgorithm : CRYPT_MASK_GEN_ALGORITHM,
dwSaltLength : u32,
dwTrailerField : u32,
};
CRYPT_PSOURCE_ALGORITHM :: struct {
pszObjId : LPSTR,
EncodingParameters : CRYPT_DATA_BLOB,
};
PCRYPT_PSOURCE_ALGORITHM :: ^struct {
pszObjId : LPSTR,
EncodingParameters : CRYPT_DATA_BLOB,
};
CRYPT_RSAES_OAEP_PARAMETERS :: struct {
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
MaskGenAlgorithm : CRYPT_MASK_GEN_ALGORITHM,
PSourceAlgorithm : CRYPT_PSOURCE_ALGORITHM,
};
PCRYPT_RSAES_OAEP_PARAMETERS :: ^struct {
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
MaskGenAlgorithm : CRYPT_MASK_GEN_ALGORITHM,
PSourceAlgorithm : CRYPT_PSOURCE_ALGORITHM,
};
CMC_TAGGED_ATTRIBUTE :: struct {
dwBodyPartID : u32,
Attribute : CRYPT_ATTRIBUTE,
};
PCMC_TAGGED_ATTRIBUTE :: ^struct {
dwBodyPartID : u32,
Attribute : CRYPT_ATTRIBUTE,
};
CMC_TAGGED_CERT_REQUEST :: struct {
dwBodyPartID : u32,
SignedCertRequest : CRYPT_DER_BLOB,
};
PCMC_TAGGED_CERT_REQUEST :: ^struct {
dwBodyPartID : u32,
SignedCertRequest : CRYPT_DER_BLOB,
};
CMC_TAGGED_REQUEST :: struct {
dwTaggedRequestChoice : u32,
u : struct #raw_union {
pTaggedCertRequest : PCMC_TAGGED_CERT_REQUEST,
},
};
PCMC_TAGGED_REQUEST :: ^struct {
dwTaggedRequestChoice : u32,
u : struct #raw_union {
pTaggedCertRequest : PCMC_TAGGED_CERT_REQUEST,
},
};
CMC_TAGGED_CONTENT_INFO :: struct {
dwBodyPartID : u32,
EncodedContentInfo : CRYPT_DER_BLOB,
};
PCMC_TAGGED_CONTENT_INFO :: ^struct {
dwBodyPartID : u32,
EncodedContentInfo : CRYPT_DER_BLOB,
};
CMC_TAGGED_OTHER_MSG :: struct {
dwBodyPartID : u32,
pszObjId : LPSTR,
Value : CRYPT_OBJID_BLOB,
};
PCMC_TAGGED_OTHER_MSG :: ^struct {
dwBodyPartID : u32,
pszObjId : LPSTR,
Value : CRYPT_OBJID_BLOB,
};
CMC_DATA_INFO :: struct {
cTaggedAttribute : u32,
rgTaggedAttribute : PCMC_TAGGED_ATTRIBUTE,
cTaggedRequest : u32,
rgTaggedRequest : PCMC_TAGGED_REQUEST,
cTaggedContentInfo : u32,
rgTaggedContentInfo : PCMC_TAGGED_CONTENT_INFO,
cTaggedOtherMsg : u32,
rgTaggedOtherMsg : PCMC_TAGGED_OTHER_MSG,
};
PCMC_DATA_INFO :: ^struct {
cTaggedAttribute : u32,
rgTaggedAttribute : PCMC_TAGGED_ATTRIBUTE,
cTaggedRequest : u32,
rgTaggedRequest : PCMC_TAGGED_REQUEST,
cTaggedContentInfo : u32,
rgTaggedContentInfo : PCMC_TAGGED_CONTENT_INFO,
cTaggedOtherMsg : u32,
rgTaggedOtherMsg : PCMC_TAGGED_OTHER_MSG,
};
CMC_RESPONSE_INFO :: struct {
cTaggedAttribute : u32,
rgTaggedAttribute : PCMC_TAGGED_ATTRIBUTE,
cTaggedContentInfo : u32,
rgTaggedContentInfo : PCMC_TAGGED_CONTENT_INFO,
cTaggedOtherMsg : u32,
rgTaggedOtherMsg : PCMC_TAGGED_OTHER_MSG,
};
PCMC_RESPONSE_INFO :: ^struct {
cTaggedAttribute : u32,
rgTaggedAttribute : PCMC_TAGGED_ATTRIBUTE,
cTaggedContentInfo : u32,
rgTaggedContentInfo : PCMC_TAGGED_CONTENT_INFO,
cTaggedOtherMsg : u32,
rgTaggedOtherMsg : PCMC_TAGGED_OTHER_MSG,
};
CMC_PEND_INFO :: struct {
PendToken : CRYPT_DATA_BLOB,
PendTime : FILETIME,
};
PCMC_PEND_INFO :: ^struct {
PendToken : CRYPT_DATA_BLOB,
PendTime : FILETIME,
};
CMC_STATUS_INFO :: struct {
dwStatus : u32,
cBodyList : u32,
rgdwBodyList : ^u32,
pwszStatusString : LPWSTR,
dwOtherInfoChoice : u32,
u : struct #raw_union {
dwFailInfo : u32,
pPendInfo : PCMC_PEND_INFO,
},
};
PCMC_STATUS_INFO :: ^struct {
dwStatus : u32,
cBodyList : u32,
rgdwBodyList : ^u32,
pwszStatusString : LPWSTR,
dwOtherInfoChoice : u32,
u : struct #raw_union {
dwFailInfo : u32,
pPendInfo : PCMC_PEND_INFO,
},
};
CMC_ADD_EXTENSIONS_INFO :: struct {
dwCmcDataReference : u32,
cCertReference : u32,
rgdwCertReference : ^u32,
cExtension : u32,
rgExtension : PCERT_EXTENSION,
};
PCMC_ADD_EXTENSIONS_INFO :: ^struct {
dwCmcDataReference : u32,
cCertReference : u32,
rgdwCertReference : ^u32,
cExtension : u32,
rgExtension : PCERT_EXTENSION,
};
CMC_ADD_ATTRIBUTES_INFO :: struct {
dwCmcDataReference : u32,
cCertReference : u32,
rgdwCertReference : ^u32,
cAttribute : u32,
rgAttribute : PCRYPT_ATTRIBUTE,
};
PCMC_ADD_ATTRIBUTES_INFO :: ^struct {
dwCmcDataReference : u32,
cCertReference : u32,
rgdwCertReference : ^u32,
cAttribute : u32,
rgAttribute : PCRYPT_ATTRIBUTE,
};
CERT_TEMPLATE_EXT :: struct {
pszObjId : LPSTR,
dwMajorVersion : u32,
fMinorVersion : BOOL,
dwMinorVersion : u32,
};
PCERT_TEMPLATE_EXT :: ^struct {
pszObjId : LPSTR,
dwMajorVersion : u32,
fMinorVersion : BOOL,
dwMinorVersion : u32,
};
CERT_HASHED_URL :: struct {
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
Hash : CRYPT_HASH_BLOB,
pwszUrl : LPWSTR,
};
PCERT_HASHED_URL :: ^struct {
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
Hash : CRYPT_HASH_BLOB,
pwszUrl : LPWSTR,
};
CERT_LOGOTYPE_DETAILS :: struct {
pwszMimeType : LPWSTR,
cHashedUrl : u32,
rgHashedUrl : PCERT_HASHED_URL,
};
PCERT_LOGOTYPE_DETAILS :: ^struct {
pwszMimeType : LPWSTR,
cHashedUrl : u32,
rgHashedUrl : PCERT_HASHED_URL,
};
CERT_LOGOTYPE_REFERENCE :: struct {
cHashedUrl : u32,
rgHashedUrl : PCERT_HASHED_URL,
};
PCERT_LOGOTYPE_REFERENCE :: ^struct {
cHashedUrl : u32,
rgHashedUrl : PCERT_HASHED_URL,
};
CERT_LOGOTYPE_IMAGE_INFO :: struct {
dwLogotypeImageInfoChoice : u32,
dwFileSize : u32,
dwXSize : u32,
dwYSize : u32,
dwLogotypeImageResolutionChoice : u32,
u : struct #raw_union {
dwNumBits : u32,
dwTableSize : u32,
},
pwszLanguage : LPWSTR,
};
PCERT_LOGOTYPE_IMAGE_INFO :: ^struct {
dwLogotypeImageInfoChoice : u32,
dwFileSize : u32,
dwXSize : u32,
dwYSize : u32,
dwLogotypeImageResolutionChoice : u32,
u : struct #raw_union {
dwNumBits : u32,
dwTableSize : u32,
},
pwszLanguage : LPWSTR,
};
CERT_LOGOTYPE_IMAGE :: struct {
LogotypeDetails : CERT_LOGOTYPE_DETAILS,
pLogotypeImageInfo : PCERT_LOGOTYPE_IMAGE_INFO,
};
PCERT_LOGOTYPE_IMAGE :: ^struct {
LogotypeDetails : CERT_LOGOTYPE_DETAILS,
pLogotypeImageInfo : PCERT_LOGOTYPE_IMAGE_INFO,
};
CERT_LOGOTYPE_AUDIO_INFO :: struct {
dwFileSize : u32,
dwPlayTime : u32,
dwChannels : u32,
dwSampleRate : u32,
pwszLanguage : LPWSTR,
};
PCERT_LOGOTYPE_AUDIO_INFO :: ^struct {
dwFileSize : u32,
dwPlayTime : u32,
dwChannels : u32,
dwSampleRate : u32,
pwszLanguage : LPWSTR,
};
CERT_LOGOTYPE_AUDIO :: struct {
LogotypeDetails : CERT_LOGOTYPE_DETAILS,
pLogotypeAudioInfo : PCERT_LOGOTYPE_AUDIO_INFO,
};
PCERT_LOGOTYPE_AUDIO :: ^struct {
LogotypeDetails : CERT_LOGOTYPE_DETAILS,
pLogotypeAudioInfo : PCERT_LOGOTYPE_AUDIO_INFO,
};
CERT_LOGOTYPE_DATA :: struct {
cLogotypeImage : u32,
rgLogotypeImage : PCERT_LOGOTYPE_IMAGE,
cLogotypeAudio : u32,
rgLogotypeAudio : PCERT_LOGOTYPE_AUDIO,
};
PCERT_LOGOTYPE_DATA :: ^struct {
cLogotypeImage : u32,
rgLogotypeImage : PCERT_LOGOTYPE_IMAGE,
cLogotypeAudio : u32,
rgLogotypeAudio : PCERT_LOGOTYPE_AUDIO,
};
CERT_LOGOTYPE_INFO :: struct {
dwLogotypeInfoChoice : u32,
u : struct #raw_union {
pLogotypeDirectInfo : PCERT_LOGOTYPE_DATA,
pLogotypeIndirectInfo : PCERT_LOGOTYPE_REFERENCE,
},
};
PCERT_LOGOTYPE_INFO :: ^struct {
dwLogotypeInfoChoice : u32,
u : struct #raw_union {
pLogotypeDirectInfo : PCERT_LOGOTYPE_DATA,
pLogotypeIndirectInfo : PCERT_LOGOTYPE_REFERENCE,
},
};
CERT_OTHER_LOGOTYPE_INFO :: struct {
pszObjId : LPSTR,
LogotypeInfo : CERT_LOGOTYPE_INFO,
};
PCERT_OTHER_LOGOTYPE_INFO :: ^struct {
pszObjId : LPSTR,
LogotypeInfo : CERT_LOGOTYPE_INFO,
};
CERT_LOGOTYPE_EXT_INFO :: struct {
cCommunityLogo : u32,
rgCommunityLogo : PCERT_LOGOTYPE_INFO,
pIssuerLogo : PCERT_LOGOTYPE_INFO,
pSubjectLogo : PCERT_LOGOTYPE_INFO,
cOtherLogo : u32,
rgOtherLogo : PCERT_OTHER_LOGOTYPE_INFO,
};
PCERT_LOGOTYPE_EXT_INFO :: ^struct {
cCommunityLogo : u32,
rgCommunityLogo : PCERT_LOGOTYPE_INFO,
pIssuerLogo : PCERT_LOGOTYPE_INFO,
pSubjectLogo : PCERT_LOGOTYPE_INFO,
cOtherLogo : u32,
rgOtherLogo : PCERT_OTHER_LOGOTYPE_INFO,
};
CERT_BIOMETRIC_DATA :: struct {
dwTypeOfBiometricDataChoice : u32,
u : struct #raw_union {
dwPredefined : u32,
pszObjId : LPSTR,
},
HashedUrl : CERT_HASHED_URL,
};
PCERT_BIOMETRIC_DATA :: ^struct {
dwTypeOfBiometricDataChoice : u32,
u : struct #raw_union {
dwPredefined : u32,
pszObjId : LPSTR,
},
HashedUrl : CERT_HASHED_URL,
};
CERT_BIOMETRIC_EXT_INFO :: struct {
cBiometricData : u32,
rgBiometricData : PCERT_BIOMETRIC_DATA,
};
PCERT_BIOMETRIC_EXT_INFO :: ^struct {
cBiometricData : u32,
rgBiometricData : PCERT_BIOMETRIC_DATA,
};
OCSP_SIGNATURE_INFO :: struct {
SignatureAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
Signature : CRYPT_BIT_BLOB,
cCertEncoded : u32,
rgCertEncoded : PCERT_BLOB,
};
POCSP_SIGNATURE_INFO :: ^struct {
SignatureAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
Signature : CRYPT_BIT_BLOB,
cCertEncoded : u32,
rgCertEncoded : PCERT_BLOB,
};
OCSP_SIGNED_REQUEST_INFO :: struct {
ToBeSigned : CRYPT_DER_BLOB,
pOptionalSignatureInfo : POCSP_SIGNATURE_INFO,
};
POCSP_SIGNED_REQUEST_INFO :: ^struct {
ToBeSigned : CRYPT_DER_BLOB,
pOptionalSignatureInfo : POCSP_SIGNATURE_INFO,
};
OCSP_CERT_ID :: struct {
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
IssuerNameHash : CRYPT_HASH_BLOB,
IssuerKeyHash : CRYPT_HASH_BLOB,
SerialNumber : CRYPT_INTEGER_BLOB,
};
POCSP_CERT_ID :: ^struct {
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
IssuerNameHash : CRYPT_HASH_BLOB,
IssuerKeyHash : CRYPT_HASH_BLOB,
SerialNumber : CRYPT_INTEGER_BLOB,
};
OCSP_REQUEST_ENTRY :: struct {
CertId : OCSP_CERT_ID,
cExtension : u32,
rgExtension : PCERT_EXTENSION,
};
POCSP_REQUEST_ENTRY :: ^struct {
CertId : OCSP_CERT_ID,
cExtension : u32,
rgExtension : PCERT_EXTENSION,
};
OCSP_REQUEST_INFO :: struct {
dwVersion : u32,
pRequestorName : PCERT_ALT_NAME_ENTRY,
cRequestEntry : u32,
rgRequestEntry : POCSP_REQUEST_ENTRY,
cExtension : u32,
rgExtension : PCERT_EXTENSION,
};
POCSP_REQUEST_INFO :: ^struct {
dwVersion : u32,
pRequestorName : PCERT_ALT_NAME_ENTRY,
cRequestEntry : u32,
rgRequestEntry : POCSP_REQUEST_ENTRY,
cExtension : u32,
rgExtension : PCERT_EXTENSION,
};
OCSP_RESPONSE_INFO :: struct {
dwStatus : u32,
pszObjId : LPSTR,
Value : CRYPT_OBJID_BLOB,
};
POCSP_RESPONSE_INFO :: ^struct {
dwStatus : u32,
pszObjId : LPSTR,
Value : CRYPT_OBJID_BLOB,
};
OCSP_BASIC_SIGNED_RESPONSE_INFO :: struct {
ToBeSigned : CRYPT_DER_BLOB,
SignatureInfo : OCSP_SIGNATURE_INFO,
};
POCSP_BASIC_SIGNED_RESPONSE_INFO :: ^struct {
ToBeSigned : CRYPT_DER_BLOB,
SignatureInfo : OCSP_SIGNATURE_INFO,
};
OCSP_BASIC_REVOKED_INFO :: struct {
RevocationDate : FILETIME,
dwCrlReasonCode : u32,
};
POCSP_BASIC_REVOKED_INFO :: ^struct {
RevocationDate : FILETIME,
dwCrlReasonCode : u32,
};
OCSP_BASIC_RESPONSE_ENTRY :: struct {
CertId : OCSP_CERT_ID,
dwCertStatus : u32,
u : struct #raw_union {
pRevokedInfo : POCSP_BASIC_REVOKED_INFO,
},
ThisUpdate : FILETIME,
NextUpdate : FILETIME,
cExtension : u32,
rgExtension : PCERT_EXTENSION,
};
POCSP_BASIC_RESPONSE_ENTRY :: ^struct {
CertId : OCSP_CERT_ID,
dwCertStatus : u32,
u : struct #raw_union {
pRevokedInfo : POCSP_BASIC_REVOKED_INFO,
},
ThisUpdate : FILETIME,
NextUpdate : FILETIME,
cExtension : u32,
rgExtension : PCERT_EXTENSION,
};
OCSP_BASIC_RESPONSE_INFO :: struct {
dwVersion : u32,
dwResponderIdChoice : u32,
u : struct #raw_union {
ByNameResponderId : CERT_NAME_BLOB,
ByKeyResponderId : CRYPT_HASH_BLOB,
},
ProducedAt : FILETIME,
cResponseEntry : u32,
rgResponseEntry : POCSP_BASIC_RESPONSE_ENTRY,
cExtension : u32,
rgExtension : PCERT_EXTENSION,
};
POCSP_BASIC_RESPONSE_INFO :: ^struct {
dwVersion : u32,
dwResponderIdChoice : u32,
u : struct #raw_union {
ByNameResponderId : CERT_NAME_BLOB,
ByKeyResponderId : CRYPT_HASH_BLOB,
},
ProducedAt : FILETIME,
cResponseEntry : u32,
rgResponseEntry : POCSP_BASIC_RESPONSE_ENTRY,
cExtension : u32,
rgExtension : PCERT_EXTENSION,
};
CERT_SUPPORTED_ALGORITHM_INFO :: struct {
Algorithm : CRYPT_ALGORITHM_IDENTIFIER,
IntendedKeyUsage : CRYPT_BIT_BLOB,
IntendedCertPolicies : CERT_POLICIES_INFO,
};
PCERT_SUPPORTED_ALGORITHM_INFO :: ^struct {
Algorithm : CRYPT_ALGORITHM_IDENTIFIER,
IntendedKeyUsage : CRYPT_BIT_BLOB,
IntendedCertPolicies : CERT_POLICIES_INFO,
};
CERT_TPM_SPECIFICATION_INFO :: struct {
pwszFamily : LPWSTR,
dwLevel : u32,
dwRevision : u32,
};
PCERT_TPM_SPECIFICATION_INFO :: ^struct {
pwszFamily : LPWSTR,
dwLevel : u32,
dwRevision : u32,
};
HCRYPTOIDFUNCSET :: rawptr;
HCRYPTOIDFUNCADDR :: rawptr;
CRYPT_OID_FUNC_ENTRY :: struct {
pszOID : LPCSTR,
pvFuncAddr : rawptr,
};
PCRYPT_OID_FUNC_ENTRY :: ^struct {
pszOID : LPCSTR,
pvFuncAddr : rawptr,
};
PFN_CRYPT_ENUM_OID_FUNC :: (proc(dwEncodingType : u32, pszFuncName : LPCSTR, pszOID : LPCSTR, cValue : u32, rgdwValueType : []u32, rgpwszValueName : []LPCWSTR, rgpbValueData : []^BYTE, rgcbValueData : []u32, pvArg : rawptr) -> BOOL);
CRYPT_OID_INFO :: struct {
cbSize : u32,
pszOID : LPCSTR,
pwszName : LPCWSTR,
dwGroupId : u32,
u : struct #raw_union {
dwValue : u32,
Algid : ALG_ID,
dwLength : u32,
},
ExtraInfo : CRYPT_DATA_BLOB,
};
PCRYPT_OID_INFO :: ^struct {
cbSize : u32,
pszOID : LPCSTR,
pwszName : LPCWSTR,
dwGroupId : u32,
u : struct #raw_union {
dwValue : u32,
Algid : ALG_ID,
dwLength : u32,
},
ExtraInfo : CRYPT_DATA_BLOB,
};
CCRYPT_OID_INFO :: CRYPT_OID_INFO;
PCCRYPT_OID_INFO :: ^CRYPT_OID_INFO;
PFN_CRYPT_ENUM_OID_INFO :: (proc(pInfo : PCCRYPT_OID_INFO, pvArg : rawptr) -> BOOL);
CERT_STRONG_SIGN_SERIALIZED_INFO :: struct {
dwFlags : u32,
pwszCNGSignHashAlgids : LPWSTR,
pwszCNGPubKeyMinBitLengths : LPWSTR,
};
PCERT_STRONG_SIGN_SERIALIZED_INFO :: ^struct {
dwFlags : u32,
pwszCNGSignHashAlgids : LPWSTR,
pwszCNGPubKeyMinBitLengths : LPWSTR,
};
CERT_STRONG_SIGN_PARA :: struct {
cbSize : u32,
dwInfoChoice : u32,
u : struct #raw_union {
pvInfo : rawptr,
pSerializedInfo : PCERT_STRONG_SIGN_SERIALIZED_INFO,
pszOID : LPSTR,
},
};
PCERT_STRONG_SIGN_PARA :: ^struct {
cbSize : u32,
dwInfoChoice : u32,
u : struct #raw_union {
pvInfo : rawptr,
pSerializedInfo : PCERT_STRONG_SIGN_SERIALIZED_INFO,
pszOID : LPSTR,
},
};
PCCERT_STRONG_SIGN_PARA :: ^CERT_STRONG_SIGN_PARA;
HCRYPTMSG :: rawptr;
CERT_ISSUER_SERIAL_NUMBER :: struct {
Issuer : CERT_NAME_BLOB,
SerialNumber : CRYPT_INTEGER_BLOB,
};
PCERT_ISSUER_SERIAL_NUMBER :: ^struct {
Issuer : CERT_NAME_BLOB,
SerialNumber : CRYPT_INTEGER_BLOB,
};
CERT_ID :: struct {
dwIdChoice : u32,
u : struct #raw_union {
IssuerSerialNumber : CERT_ISSUER_SERIAL_NUMBER,
KeyId : CRYPT_HASH_BLOB,
HashId : CRYPT_HASH_BLOB,
},
};
PCERT_ID :: ^struct {
dwIdChoice : u32,
u : struct #raw_union {
IssuerSerialNumber : CERT_ISSUER_SERIAL_NUMBER,
KeyId : CRYPT_HASH_BLOB,
HashId : CRYPT_HASH_BLOB,
},
};
CMSG_SIGNER_ENCODE_INFO :: struct {
cbSize : u32,
pCertInfo : PCERT_INFO,
u : struct #raw_union {
hCryptProv : HCRYPTPROV,
hNCryptKey : NCRYPT_KEY_HANDLE,
},
dwKeySpec : u32,
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pvHashAuxInfo : rawptr,
cAuthAttr : u32,
rgAuthAttr : PCRYPT_ATTRIBUTE,
cUnauthAttr : u32,
rgUnauthAttr : PCRYPT_ATTRIBUTE,
};
PCMSG_SIGNER_ENCODE_INFO :: ^struct {
cbSize : u32,
pCertInfo : PCERT_INFO,
u : struct #raw_union {
hCryptProv : HCRYPTPROV,
hNCryptKey : NCRYPT_KEY_HANDLE,
},
dwKeySpec : u32,
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pvHashAuxInfo : rawptr,
cAuthAttr : u32,
rgAuthAttr : PCRYPT_ATTRIBUTE,
cUnauthAttr : u32,
rgUnauthAttr : PCRYPT_ATTRIBUTE,
};
CMSG_SIGNED_ENCODE_INFO :: struct {
cbSize : u32,
cSigners : u32,
rgSigners : PCMSG_SIGNER_ENCODE_INFO,
cCertEncoded : u32,
rgCertEncoded : PCERT_BLOB,
cCrlEncoded : u32,
rgCrlEncoded : PCRL_BLOB,
};
PCMSG_SIGNED_ENCODE_INFO :: ^struct {
cbSize : u32,
cSigners : u32,
rgSigners : PCMSG_SIGNER_ENCODE_INFO,
cCertEncoded : u32,
rgCertEncoded : PCERT_BLOB,
cCrlEncoded : u32,
rgCrlEncoded : PCRL_BLOB,
};
CMSG_RECIPIENT_ENCODE_INFO :: struct {};
PCMSG_RECIPIENT_ENCODE_INFO :: ^CMSG_RECIPIENT_ENCODE_INFO;
CMSG_ENVELOPED_ENCODE_INFO :: struct {
cbSize : u32,
hCryptProv : HCRYPTPROV_LEGACY,
ContentEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pvEncryptionAuxInfo : rawptr,
cRecipients : u32,
rgpRecipients : ^PCERT_INFO,
};
PCMSG_ENVELOPED_ENCODE_INFO :: ^struct {
cbSize : u32,
hCryptProv : HCRYPTPROV_LEGACY,
ContentEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pvEncryptionAuxInfo : rawptr,
cRecipients : u32,
rgpRecipients : ^PCERT_INFO,
};
CMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO :: struct {
cbSize : u32,
KeyEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pvKeyEncryptionAuxInfo : rawptr,
hCryptProv : HCRYPTPROV_LEGACY,
RecipientPublicKey : CRYPT_BIT_BLOB,
RecipientId : CERT_ID,
};
PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO :: ^struct {
cbSize : u32,
KeyEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pvKeyEncryptionAuxInfo : rawptr,
hCryptProv : HCRYPTPROV_LEGACY,
RecipientPublicKey : CRYPT_BIT_BLOB,
RecipientId : CERT_ID,
};
CMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO :: struct {
cbSize : u32,
RecipientPublicKey : CRYPT_BIT_BLOB,
RecipientId : CERT_ID,
Date : FILETIME,
pOtherAttr : PCRYPT_ATTRIBUTE_TYPE_VALUE,
};
PCMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO :: ^struct {
cbSize : u32,
RecipientPublicKey : CRYPT_BIT_BLOB,
RecipientId : CERT_ID,
Date : FILETIME,
pOtherAttr : PCRYPT_ATTRIBUTE_TYPE_VALUE,
};
CMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO :: struct {
cbSize : u32,
KeyEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pvKeyEncryptionAuxInfo : rawptr,
KeyWrapAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pvKeyWrapAuxInfo : rawptr,
hCryptProv : HCRYPTPROV_LEGACY,
dwKeySpec : u32,
dwKeyChoice : u32,
u : struct #raw_union {
pEphemeralAlgorithm : PCRYPT_ALGORITHM_IDENTIFIER,
pSenderId : PCERT_ID,
},
UserKeyingMaterial : CRYPT_DATA_BLOB,
cRecipientEncryptedKeys : u32,
rgpRecipientEncryptedKeys : ^PCMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO,
};
PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO :: ^struct {
cbSize : u32,
KeyEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pvKeyEncryptionAuxInfo : rawptr,
KeyWrapAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pvKeyWrapAuxInfo : rawptr,
hCryptProv : HCRYPTPROV_LEGACY,
dwKeySpec : u32,
dwKeyChoice : u32,
u : struct #raw_union {
pEphemeralAlgorithm : PCRYPT_ALGORITHM_IDENTIFIER,
pSenderId : PCERT_ID,
},
UserKeyingMaterial : CRYPT_DATA_BLOB,
cRecipientEncryptedKeys : u32,
rgpRecipientEncryptedKeys : ^PCMSG_RECIPIENT_ENCRYPTED_KEY_ENCODE_INFO,
};
CMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO :: struct {
cbSize : u32,
KeyEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pvKeyEncryptionAuxInfo : rawptr,
hCryptProv : HCRYPTPROV,
dwKeyChoice : u32,
u : struct #raw_union {
hKeyEncryptionKey : HCRYPTKEY,
pvKeyEncryptionKey : rawptr,
},
KeyId : CRYPT_DATA_BLOB,
Date : FILETIME,
pOtherAttr : PCRYPT_ATTRIBUTE_TYPE_VALUE,
};
PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO :: ^struct {
cbSize : u32,
KeyEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pvKeyEncryptionAuxInfo : rawptr,
hCryptProv : HCRYPTPROV,
dwKeyChoice : u32,
u : struct #raw_union {
hKeyEncryptionKey : HCRYPTKEY,
pvKeyEncryptionKey : rawptr,
},
KeyId : CRYPT_DATA_BLOB,
Date : FILETIME,
pOtherAttr : PCRYPT_ATTRIBUTE_TYPE_VALUE,
};
CMSG_RECIPIENT_ENCODE_INFO :: struct {
dwRecipientChoice : u32,
u : struct #raw_union {
pKeyTrans : PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO,
pKeyAgree : PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO,
pMailList : PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO,
},
};
CMSG_RC2_AUX_INFO :: struct {
cbSize : u32,
dwBitLen : u32,
};
PCMSG_RC2_AUX_INFO :: ^struct {
cbSize : u32,
dwBitLen : u32,
};
CMSG_SP3_COMPATIBLE_AUX_INFO :: struct {
cbSize : u32,
dwFlags : u32,
};
PCMSG_SP3_COMPATIBLE_AUX_INFO :: ^struct {
cbSize : u32,
dwFlags : u32,
};
CMSG_RC4_AUX_INFO :: struct {
cbSize : u32,
dwBitLen : u32,
};
PCMSG_RC4_AUX_INFO :: ^struct {
cbSize : u32,
dwBitLen : u32,
};
CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO :: struct {
cbSize : u32,
SignedInfo : CMSG_SIGNED_ENCODE_INFO,
EnvelopedInfo : CMSG_ENVELOPED_ENCODE_INFO,
};
PCMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO :: ^struct {
cbSize : u32,
SignedInfo : CMSG_SIGNED_ENCODE_INFO,
EnvelopedInfo : CMSG_ENVELOPED_ENCODE_INFO,
};
CMSG_HASHED_ENCODE_INFO :: struct {
cbSize : u32,
hCryptProv : HCRYPTPROV_LEGACY,
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pvHashAuxInfo : rawptr,
};
PCMSG_HASHED_ENCODE_INFO :: ^struct {
cbSize : u32,
hCryptProv : HCRYPTPROV_LEGACY,
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pvHashAuxInfo : rawptr,
};
CMSG_ENCRYPTED_ENCODE_INFO :: struct {
cbSize : u32,
ContentEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pvEncryptionAuxInfo : rawptr,
};
PCMSG_ENCRYPTED_ENCODE_INFO :: ^struct {
cbSize : u32,
ContentEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pvEncryptionAuxInfo : rawptr,
};
PFN_CMSG_STREAM_OUTPUT :: (proc(pvArg : rawptr, pbData : ^BYTE, cbData : u32, fFinal : BOOL) -> BOOL);
CMSG_STREAM_INFO :: struct {
cbContent : u32,
pfnStreamOutput : PFN_CMSG_STREAM_OUTPUT,
pvArg : rawptr,
};
PCMSG_STREAM_INFO :: ^struct {
cbContent : u32,
pfnStreamOutput : PFN_CMSG_STREAM_OUTPUT,
pvArg : rawptr,
};
CMSG_SIGNER_INFO :: struct {
dwVersion : u32,
Issuer : CERT_NAME_BLOB,
SerialNumber : CRYPT_INTEGER_BLOB,
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
HashEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
EncryptedHash : CRYPT_DATA_BLOB,
AuthAttrs : CRYPT_ATTRIBUTES,
UnauthAttrs : CRYPT_ATTRIBUTES,
};
PCMSG_SIGNER_INFO :: ^struct {
dwVersion : u32,
Issuer : CERT_NAME_BLOB,
SerialNumber : CRYPT_INTEGER_BLOB,
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
HashEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
EncryptedHash : CRYPT_DATA_BLOB,
AuthAttrs : CRYPT_ATTRIBUTES,
UnauthAttrs : CRYPT_ATTRIBUTES,
};
CMSG_CMS_SIGNER_INFO :: struct {
dwVersion : u32,
SignerId : CERT_ID,
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
HashEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
EncryptedHash : CRYPT_DATA_BLOB,
AuthAttrs : CRYPT_ATTRIBUTES,
UnauthAttrs : CRYPT_ATTRIBUTES,
};
PCMSG_CMS_SIGNER_INFO :: ^struct {
dwVersion : u32,
SignerId : CERT_ID,
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
HashEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
EncryptedHash : CRYPT_DATA_BLOB,
AuthAttrs : CRYPT_ATTRIBUTES,
UnauthAttrs : CRYPT_ATTRIBUTES,
};
CMSG_ATTR :: CRYPT_ATTRIBUTES;
PCMSG_ATTR :: ^CRYPT_ATTRIBUTES;
CMSG_KEY_TRANS_RECIPIENT_INFO :: struct {
dwVersion : u32,
RecipientId : CERT_ID,
KeyEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
EncryptedKey : CRYPT_DATA_BLOB,
};
PCMSG_KEY_TRANS_RECIPIENT_INFO :: ^struct {
dwVersion : u32,
RecipientId : CERT_ID,
KeyEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
EncryptedKey : CRYPT_DATA_BLOB,
};
CMSG_RECIPIENT_ENCRYPTED_KEY_INFO :: struct {
RecipientId : CERT_ID,
EncryptedKey : CRYPT_DATA_BLOB,
Date : FILETIME,
pOtherAttr : PCRYPT_ATTRIBUTE_TYPE_VALUE,
};
PCMSG_RECIPIENT_ENCRYPTED_KEY_INFO :: ^struct {
RecipientId : CERT_ID,
EncryptedKey : CRYPT_DATA_BLOB,
Date : FILETIME,
pOtherAttr : PCRYPT_ATTRIBUTE_TYPE_VALUE,
};
CMSG_KEY_AGREE_RECIPIENT_INFO :: struct {
dwVersion : u32,
dwOriginatorChoice : u32,
u : struct #raw_union {
OriginatorCertId : CERT_ID,
OriginatorPublicKeyInfo : CERT_PUBLIC_KEY_INFO,
},
UserKeyingMaterial : CRYPT_DATA_BLOB,
KeyEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
cRecipientEncryptedKeys : u32,
rgpRecipientEncryptedKeys : ^PCMSG_RECIPIENT_ENCRYPTED_KEY_INFO,
};
PCMSG_KEY_AGREE_RECIPIENT_INFO :: ^struct {
dwVersion : u32,
dwOriginatorChoice : u32,
u : struct #raw_union {
OriginatorCertId : CERT_ID,
OriginatorPublicKeyInfo : CERT_PUBLIC_KEY_INFO,
},
UserKeyingMaterial : CRYPT_DATA_BLOB,
KeyEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
cRecipientEncryptedKeys : u32,
rgpRecipientEncryptedKeys : ^PCMSG_RECIPIENT_ENCRYPTED_KEY_INFO,
};
CMSG_MAIL_LIST_RECIPIENT_INFO :: struct {
dwVersion : u32,
KeyId : CRYPT_DATA_BLOB,
KeyEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
EncryptedKey : CRYPT_DATA_BLOB,
Date : FILETIME,
pOtherAttr : PCRYPT_ATTRIBUTE_TYPE_VALUE,
};
PCMSG_MAIL_LIST_RECIPIENT_INFO :: ^struct {
dwVersion : u32,
KeyId : CRYPT_DATA_BLOB,
KeyEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
EncryptedKey : CRYPT_DATA_BLOB,
Date : FILETIME,
pOtherAttr : PCRYPT_ATTRIBUTE_TYPE_VALUE,
};
CMSG_CMS_RECIPIENT_INFO :: struct {
dwRecipientChoice : u32,
u : struct #raw_union {
pKeyTrans : PCMSG_KEY_TRANS_RECIPIENT_INFO,
pKeyAgree : PCMSG_KEY_AGREE_RECIPIENT_INFO,
pMailList : PCMSG_MAIL_LIST_RECIPIENT_INFO,
},
};
PCMSG_CMS_RECIPIENT_INFO :: ^struct {
dwRecipientChoice : u32,
u : struct #raw_union {
pKeyTrans : PCMSG_KEY_TRANS_RECIPIENT_INFO,
pKeyAgree : PCMSG_KEY_AGREE_RECIPIENT_INFO,
pMailList : PCMSG_MAIL_LIST_RECIPIENT_INFO,
},
};
CMSG_CTRL_VERIFY_SIGNATURE_EX_PARA :: struct {
cbSize : u32,
hCryptProv : HCRYPTPROV_LEGACY,
dwSignerIndex : u32,
dwSignerType : u32,
pvSigner : rawptr,
};
PCMSG_CTRL_VERIFY_SIGNATURE_EX_PARA :: ^struct {
cbSize : u32,
hCryptProv : HCRYPTPROV_LEGACY,
dwSignerIndex : u32,
dwSignerType : u32,
pvSigner : rawptr,
};
CMSG_CTRL_DECRYPT_PARA :: struct {
cbSize : u32,
u : struct #raw_union {
hCryptProv : HCRYPTPROV,
hNCryptKey : NCRYPT_KEY_HANDLE,
},
dwKeySpec : u32,
dwRecipientIndex : u32,
};
PCMSG_CTRL_DECRYPT_PARA :: ^struct {
cbSize : u32,
u : struct #raw_union {
hCryptProv : HCRYPTPROV,
hNCryptKey : NCRYPT_KEY_HANDLE,
},
dwKeySpec : u32,
dwRecipientIndex : u32,
};
CMSG_CTRL_KEY_TRANS_DECRYPT_PARA :: struct {
cbSize : u32,
u : struct #raw_union {
hCryptProv : HCRYPTPROV,
hNCryptKey : NCRYPT_KEY_HANDLE,
},
dwKeySpec : u32,
pKeyTrans : PCMSG_KEY_TRANS_RECIPIENT_INFO,
dwRecipientIndex : u32,
};
PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA :: ^struct {
cbSize : u32,
u : struct #raw_union {
hCryptProv : HCRYPTPROV,
hNCryptKey : NCRYPT_KEY_HANDLE,
},
dwKeySpec : u32,
pKeyTrans : PCMSG_KEY_TRANS_RECIPIENT_INFO,
dwRecipientIndex : u32,
};
CMSG_CTRL_KEY_AGREE_DECRYPT_PARA :: struct {
cbSize : u32,
u : struct #raw_union {
hCryptProv : HCRYPTPROV,
hNCryptKey : NCRYPT_KEY_HANDLE,
},
dwKeySpec : u32,
pKeyAgree : PCMSG_KEY_AGREE_RECIPIENT_INFO,
dwRecipientIndex : u32,
dwRecipientEncryptedKeyIndex : u32,
OriginatorPublicKey : CRYPT_BIT_BLOB,
};
PCMSG_CTRL_KEY_AGREE_DECRYPT_PARA :: ^struct {
cbSize : u32,
u : struct #raw_union {
hCryptProv : HCRYPTPROV,
hNCryptKey : NCRYPT_KEY_HANDLE,
},
dwKeySpec : u32,
pKeyAgree : PCMSG_KEY_AGREE_RECIPIENT_INFO,
dwRecipientIndex : u32,
dwRecipientEncryptedKeyIndex : u32,
OriginatorPublicKey : CRYPT_BIT_BLOB,
};
CMSG_CTRL_MAIL_LIST_DECRYPT_PARA :: struct {
cbSize : u32,
hCryptProv : HCRYPTPROV,
pMailList : PCMSG_MAIL_LIST_RECIPIENT_INFO,
dwRecipientIndex : u32,
dwKeyChoice : u32,
u : struct #raw_union {
hKeyEncryptionKey : HCRYPTKEY,
pvKeyEncryptionKey : rawptr,
},
};
PCMSG_CTRL_MAIL_LIST_DECRYPT_PARA :: ^struct {
cbSize : u32,
hCryptProv : HCRYPTPROV,
pMailList : PCMSG_MAIL_LIST_RECIPIENT_INFO,
dwRecipientIndex : u32,
dwKeyChoice : u32,
u : struct #raw_union {
hKeyEncryptionKey : HCRYPTKEY,
pvKeyEncryptionKey : rawptr,
},
};
CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA :: struct {
cbSize : u32,
dwSignerIndex : u32,
blob : CRYPT_DATA_BLOB,
};
PCMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA :: ^struct {
cbSize : u32,
dwSignerIndex : u32,
blob : CRYPT_DATA_BLOB,
};
CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA :: struct {
cbSize : u32,
dwSignerIndex : u32,
dwUnauthAttrIndex : u32,
};
PCMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA :: ^struct {
cbSize : u32,
dwSignerIndex : u32,
dwUnauthAttrIndex : u32,
};
PFN_CMSG_ALLOC :: (proc(cb : uint) -> rawptr);
PFN_CMSG_FREE :: proc(pv : rawptr);
PFN_CMSG_GEN_ENCRYPT_KEY :: (proc(phCryptProv : ^HCRYPTPROV, paiEncrypt : PCRYPT_ALGORITHM_IDENTIFIER, pvEncryptAuxInfo : PVOID, pPublicKeyInfo : PCERT_PUBLIC_KEY_INFO, pfnAlloc : PFN_CMSG_ALLOC, phEncryptKey : ^HCRYPTKEY, ppbEncryptParameters : ^PBYTE, pcbEncryptParameters : PDWORD) -> BOOL);
PFN_CMSG_EXPORT_ENCRYPT_KEY :: (proc(hCryptProv : HCRYPTPROV, hEncryptKey : HCRYPTKEY, pPublicKeyInfo : PCERT_PUBLIC_KEY_INFO, pbData : PBYTE, pcbData : PDWORD) -> BOOL);
PFN_CMSG_IMPORT_ENCRYPT_KEY :: (proc(hCryptProv : HCRYPTPROV, dwKeySpec : u32, paiEncrypt : PCRYPT_ALGORITHM_IDENTIFIER, paiPubKey : PCRYPT_ALGORITHM_IDENTIFIER, pbEncodedKey : PBYTE, cbEncodedKey : u32, phEncryptKey : ^HCRYPTKEY) -> BOOL);
CMSG_CONTENT_ENCRYPT_INFO :: struct {
cbSize : u32,
hCryptProv : HCRYPTPROV_LEGACY,
ContentEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pvEncryptionAuxInfo : rawptr,
cRecipients : u32,
rgCmsRecipients : PCMSG_RECIPIENT_ENCODE_INFO,
pfnAlloc : PFN_CMSG_ALLOC,
pfnFree : PFN_CMSG_FREE,
dwEncryptFlags : u32,
u : struct #raw_union {
hContentEncryptKey : HCRYPTKEY,
hCNGContentEncryptKey : BCRYPT_KEY_HANDLE,
},
dwFlags : u32,
fCNG : BOOL,
pbCNGContentEncryptKeyObject : ^BYTE,
pbContentEncryptKey : ^BYTE,
cbContentEncryptKey : u32,
};
PCMSG_CONTENT_ENCRYPT_INFO :: ^struct {
cbSize : u32,
hCryptProv : HCRYPTPROV_LEGACY,
ContentEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pvEncryptionAuxInfo : rawptr,
cRecipients : u32,
rgCmsRecipients : PCMSG_RECIPIENT_ENCODE_INFO,
pfnAlloc : PFN_CMSG_ALLOC,
pfnFree : PFN_CMSG_FREE,
dwEncryptFlags : u32,
u : struct #raw_union {
hContentEncryptKey : HCRYPTKEY,
hCNGContentEncryptKey : BCRYPT_KEY_HANDLE,
},
dwFlags : u32,
fCNG : BOOL,
pbCNGContentEncryptKeyObject : ^BYTE,
pbContentEncryptKey : ^BYTE,
cbContentEncryptKey : u32,
};
PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY :: (proc(pContentEncryptInfo : PCMSG_CONTENT_ENCRYPT_INFO, dwFlags : u32, pvReserved : rawptr) -> BOOL);
CMSG_KEY_TRANS_ENCRYPT_INFO :: struct {
cbSize : u32,
dwRecipientIndex : u32,
KeyEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
EncryptedKey : CRYPT_DATA_BLOB,
dwFlags : u32,
};
PCMSG_KEY_TRANS_ENCRYPT_INFO :: ^struct {
cbSize : u32,
dwRecipientIndex : u32,
KeyEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
EncryptedKey : CRYPT_DATA_BLOB,
dwFlags : u32,
};
PFN_CMSG_EXPORT_KEY_TRANS :: (proc(pContentEncryptInfo : PCMSG_CONTENT_ENCRYPT_INFO, pKeyTransEncodeInfo : PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO, pKeyTransEncryptInfo : PCMSG_KEY_TRANS_ENCRYPT_INFO, dwFlags : u32, pvReserved : rawptr) -> BOOL);
CMSG_KEY_AGREE_KEY_ENCRYPT_INFO :: struct {
cbSize : u32,
EncryptedKey : CRYPT_DATA_BLOB,
};
PCMSG_KEY_AGREE_KEY_ENCRYPT_INFO :: ^struct {
cbSize : u32,
EncryptedKey : CRYPT_DATA_BLOB,
};
CMSG_KEY_AGREE_ENCRYPT_INFO :: struct {
cbSize : u32,
dwRecipientIndex : u32,
KeyEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
UserKeyingMaterial : CRYPT_DATA_BLOB,
dwOriginatorChoice : u32,
u : struct #raw_union {
OriginatorCertId : CERT_ID,
OriginatorPublicKeyInfo : CERT_PUBLIC_KEY_INFO,
},
cKeyAgreeKeyEncryptInfo : u32,
rgpKeyAgreeKeyEncryptInfo : ^PCMSG_KEY_AGREE_KEY_ENCRYPT_INFO,
dwFlags : u32,
};
PCMSG_KEY_AGREE_ENCRYPT_INFO :: ^struct {
cbSize : u32,
dwRecipientIndex : u32,
KeyEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
UserKeyingMaterial : CRYPT_DATA_BLOB,
dwOriginatorChoice : u32,
u : struct #raw_union {
OriginatorCertId : CERT_ID,
OriginatorPublicKeyInfo : CERT_PUBLIC_KEY_INFO,
},
cKeyAgreeKeyEncryptInfo : u32,
rgpKeyAgreeKeyEncryptInfo : ^PCMSG_KEY_AGREE_KEY_ENCRYPT_INFO,
dwFlags : u32,
};
PFN_CMSG_EXPORT_KEY_AGREE :: (proc(pContentEncryptInfo : PCMSG_CONTENT_ENCRYPT_INFO, pKeyAgreeEncodeInfo : PCMSG_KEY_AGREE_RECIPIENT_ENCODE_INFO, pKeyAgreeEncryptInfo : PCMSG_KEY_AGREE_ENCRYPT_INFO, dwFlags : u32, pvReserved : rawptr) -> BOOL);
CMSG_MAIL_LIST_ENCRYPT_INFO :: struct {
cbSize : u32,
dwRecipientIndex : u32,
KeyEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
EncryptedKey : CRYPT_DATA_BLOB,
dwFlags : u32,
};
PCMSG_MAIL_LIST_ENCRYPT_INFO :: ^struct {
cbSize : u32,
dwRecipientIndex : u32,
KeyEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
EncryptedKey : CRYPT_DATA_BLOB,
dwFlags : u32,
};
PFN_CMSG_EXPORT_MAIL_LIST :: (proc(pContentEncryptInfo : PCMSG_CONTENT_ENCRYPT_INFO, pMailListEncodeInfo : PCMSG_MAIL_LIST_RECIPIENT_ENCODE_INFO, pMailListEncryptInfo : PCMSG_MAIL_LIST_ENCRYPT_INFO, dwFlags : u32, pvReserved : rawptr) -> BOOL);
PFN_CMSG_IMPORT_KEY_TRANS :: (proc(pContentEncryptionAlgorithm : PCRYPT_ALGORITHM_IDENTIFIER, pKeyTransDecryptPara : PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA, dwFlags : u32, pvReserved : rawptr, phContentEncryptKey : ^HCRYPTKEY) -> BOOL);
PFN_CMSG_IMPORT_KEY_AGREE :: (proc(pContentEncryptionAlgorithm : PCRYPT_ALGORITHM_IDENTIFIER, pKeyAgreeDecryptPara : PCMSG_CTRL_KEY_AGREE_DECRYPT_PARA, dwFlags : u32, pvReserved : rawptr, phContentEncryptKey : ^HCRYPTKEY) -> BOOL);
PFN_CMSG_IMPORT_MAIL_LIST :: (proc(pContentEncryptionAlgorithm : PCRYPT_ALGORITHM_IDENTIFIER, pMailListDecryptPara : PCMSG_CTRL_MAIL_LIST_DECRYPT_PARA, dwFlags : u32, pvReserved : rawptr, phContentEncryptKey : ^HCRYPTKEY) -> BOOL);
CMSG_CNG_CONTENT_DECRYPT_INFO :: struct {
cbSize : u32,
ContentEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pfnAlloc : PFN_CMSG_ALLOC,
pfnFree : PFN_CMSG_FREE,
hNCryptKey : NCRYPT_KEY_HANDLE,
pbContentEncryptKey : ^BYTE,
cbContentEncryptKey : u32,
hCNGContentEncryptKey : BCRYPT_KEY_HANDLE,
pbCNGContentEncryptKeyObject : ^BYTE,
};
PCMSG_CNG_CONTENT_DECRYPT_INFO :: ^struct {
cbSize : u32,
ContentEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pfnAlloc : PFN_CMSG_ALLOC,
pfnFree : PFN_CMSG_FREE,
hNCryptKey : NCRYPT_KEY_HANDLE,
pbContentEncryptKey : ^BYTE,
cbContentEncryptKey : u32,
hCNGContentEncryptKey : BCRYPT_KEY_HANDLE,
pbCNGContentEncryptKeyObject : ^BYTE,
};
PFN_CMSG_CNG_IMPORT_KEY_TRANS :: (proc(pCNGContentDecryptInfo : PCMSG_CNG_CONTENT_DECRYPT_INFO, pKeyTransDecryptPara : PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA, dwFlags : u32, pvReserved : rawptr) -> BOOL);
PFN_CMSG_CNG_IMPORT_KEY_AGREE :: (proc(pCNGContentDecryptInfo : PCMSG_CNG_CONTENT_DECRYPT_INFO, pKeyAgreeDecryptPara : PCMSG_CTRL_KEY_AGREE_DECRYPT_PARA, dwFlags : u32, pvReserved : rawptr) -> BOOL);
PFN_CMSG_CNG_IMPORT_CONTENT_ENCRYPT_KEY :: (proc(pCNGContentDecryptInfo : PCMSG_CNG_CONTENT_DECRYPT_INFO, dwFlags : u32, pvReserved : rawptr) -> BOOL);
HCERTSTORE :: rawptr;
CERT_CONTEXT :: struct {
dwCertEncodingType : u32,
pbCertEncoded : ^BYTE,
cbCertEncoded : u32,
pCertInfo : PCERT_INFO,
hCertStore : HCERTSTORE,
};
PCERT_CONTEXT :: ^struct {
dwCertEncodingType : u32,
pbCertEncoded : ^BYTE,
cbCertEncoded : u32,
pCertInfo : PCERT_INFO,
hCertStore : HCERTSTORE,
};
PCCERT_CONTEXT :: ^CERT_CONTEXT;
CRL_CONTEXT :: struct {
dwCertEncodingType : u32,
pbCrlEncoded : ^BYTE,
cbCrlEncoded : u32,
pCrlInfo : PCRL_INFO,
hCertStore : HCERTSTORE,
};
PCRL_CONTEXT :: ^struct {
dwCertEncodingType : u32,
pbCrlEncoded : ^BYTE,
cbCrlEncoded : u32,
pCrlInfo : PCRL_INFO,
hCertStore : HCERTSTORE,
};
PCCRL_CONTEXT :: ^CRL_CONTEXT;
CTL_CONTEXT :: struct {
dwMsgAndCertEncodingType : u32,
pbCtlEncoded : ^BYTE,
cbCtlEncoded : u32,
pCtlInfo : PCTL_INFO,
hCertStore : HCERTSTORE,
hCryptMsg : HCRYPTMSG,
pbCtlContent : ^BYTE,
cbCtlContent : u32,
};
PCTL_CONTEXT :: ^struct {
dwMsgAndCertEncodingType : u32,
pbCtlEncoded : ^BYTE,
cbCtlEncoded : u32,
pCtlInfo : PCTL_INFO,
hCertStore : HCERTSTORE,
hCryptMsg : HCRYPTMSG,
pbCtlContent : ^BYTE,
cbCtlContent : u32,
};
PCCTL_CONTEXT :: ^CTL_CONTEXT;
CertKeyType :: enum {
KeyTypeOther = 0,
KeyTypeVirtualSmartCard = 1,
KeyTypePhysicalSmartCard = 2,
KeyTypePassport = 3,
KeyTypePassportRemote = 4,
KeyTypePassportSmartCard = 5,
KeyTypeHardware = 6,
KeyTypeSoftware = 7,
KeyTypeSelfSigned = 8,
};
CRYPT_KEY_PROV_PARAM :: struct {
dwParam : u32,
pbData : ^BYTE,
cbData : u32,
dwFlags : u32,
};
PCRYPT_KEY_PROV_PARAM :: ^struct {
dwParam : u32,
pbData : ^BYTE,
cbData : u32,
dwFlags : u32,
};
CRYPT_KEY_PROV_INFO :: struct {
pwszContainerName : LPWSTR,
pwszProvName : LPWSTR,
dwProvType : u32,
dwFlags : u32,
cProvParam : u32,
rgProvParam : PCRYPT_KEY_PROV_PARAM,
dwKeySpec : u32,
};
PCRYPT_KEY_PROV_INFO :: ^struct {
pwszContainerName : LPWSTR,
pwszProvName : LPWSTR,
dwProvType : u32,
dwFlags : u32,
cProvParam : u32,
rgProvParam : PCRYPT_KEY_PROV_PARAM,
dwKeySpec : u32,
};
CERT_KEY_CONTEXT :: struct {
cbSize : u32,
u : struct #raw_union {
hCryptProv : HCRYPTPROV,
hNCryptKey : NCRYPT_KEY_HANDLE,
},
dwKeySpec : u32,
};
PCERT_KEY_CONTEXT :: ^struct {
cbSize : u32,
u : struct #raw_union {
hCryptProv : HCRYPTPROV,
hNCryptKey : NCRYPT_KEY_HANDLE,
},
dwKeySpec : u32,
};
ROOT_INFO_LUID :: struct {
LowPart : u32,
HighPart : LONG,
};
PROOT_INFO_LUID :: ^struct {
LowPart : u32,
HighPart : LONG,
};
CRYPT_SMART_CARD_ROOT_INFO :: struct {
rgbCardID : [16]BYTE,
luid : ROOT_INFO_LUID,
};
PCRYPT_SMART_CARD_ROOT_INFO :: ^struct {
rgbCardID : [16]BYTE,
luid : ROOT_INFO_LUID,
};
CERT_SYSTEM_STORE_RELOCATE_PARA :: struct {
u : struct #raw_union {
hKeyBase : HKEY,
pvBase : rawptr,
},
u2 : struct #raw_union {
pvSystemStore : rawptr,
pszSystemStore : LPCSTR,
pwszSystemStore : LPCWSTR,
},
};
PCERT_SYSTEM_STORE_RELOCATE_PARA :: ^struct {
u : struct #raw_union {
hKeyBase : HKEY,
pvBase : rawptr,
},
u2 : struct #raw_union {
pvSystemStore : rawptr,
pszSystemStore : LPCSTR,
pwszSystemStore : LPCWSTR,
},
};
CERT_REGISTRY_STORE_CLIENT_GPT_PARA :: struct {
hKeyBase : HKEY,
pwszRegPath : LPWSTR,
};
PCERT_REGISTRY_STORE_CLIENT_GPT_PARA :: ^struct {
hKeyBase : HKEY,
pwszRegPath : LPWSTR,
};
CERT_REGISTRY_STORE_ROAMING_PARA :: struct {
hKey : HKEY,
pwszStoreDirectory : LPWSTR,
};
PCERT_REGISTRY_STORE_ROAMING_PARA :: ^struct {
hKey : HKEY,
pwszStoreDirectory : LPWSTR,
};
CERT_LDAP_STORE_OPENED_PARA :: struct {
pvLdapSessionHandle : rawptr,
pwszLdapUrl : LPCWSTR,
};
PCERT_LDAP_STORE_OPENED_PARA :: ^struct {
pvLdapSessionHandle : rawptr,
pwszLdapUrl : LPCWSTR,
};
HCERTSTOREPROV :: rawptr;
CERT_STORE_PROV_INFO :: struct {
cbSize : u32,
cStoreProvFunc : u32,
rgpvStoreProvFunc : ^rawptr,
hStoreProv : HCERTSTOREPROV,
dwStoreProvFlags : u32,
hStoreProvFuncAddr2 : HCRYPTOIDFUNCADDR,
};
PCERT_STORE_PROV_INFO :: ^struct {
cbSize : u32,
cStoreProvFunc : u32,
rgpvStoreProvFunc : ^rawptr,
hStoreProv : HCERTSTOREPROV,
dwStoreProvFlags : u32,
hStoreProvFuncAddr2 : HCRYPTOIDFUNCADDR,
};
PFN_CERT_DLL_OPEN_STORE_PROV_FUNC :: (proc(lpszStoreProvider : LPCSTR, dwEncodingType : u32, hCryptProv : HCRYPTPROV_LEGACY, dwFlags : u32, pvPara : rawptr, hCertStore : HCERTSTORE, pStoreProvInfo : PCERT_STORE_PROV_INFO) -> BOOL);
PFN_CERT_STORE_PROV_CLOSE :: proc(hStoreProv : HCERTSTOREPROV, dwFlags : u32);
PFN_CERT_STORE_PROV_READ_CERT :: (proc(hStoreProv : HCERTSTOREPROV, pStoreCertContext : PCCERT_CONTEXT, dwFlags : u32, ppProvCertContext : ^PCCERT_CONTEXT) -> BOOL);
PFN_CERT_STORE_PROV_WRITE_CERT :: (proc(hStoreProv : HCERTSTOREPROV, pCertContext : PCCERT_CONTEXT, dwFlags : u32) -> BOOL);
PFN_CERT_STORE_PROV_DELETE_CERT :: (proc(hStoreProv : HCERTSTOREPROV, pCertContext : PCCERT_CONTEXT, dwFlags : u32) -> BOOL);
PFN_CERT_STORE_PROV_SET_CERT_PROPERTY :: (proc(hStoreProv : HCERTSTOREPROV, pCertContext : PCCERT_CONTEXT, dwPropId : u32, dwFlags : u32, pvData : rawptr) -> BOOL);
PFN_CERT_STORE_PROV_READ_CRL :: (proc(hStoreProv : HCERTSTOREPROV, pStoreCrlContext : PCCRL_CONTEXT, dwFlags : u32, ppProvCrlContext : ^PCCRL_CONTEXT) -> BOOL);
PFN_CERT_STORE_PROV_WRITE_CRL :: (proc(hStoreProv : HCERTSTOREPROV, pCrlContext : PCCRL_CONTEXT, dwFlags : u32) -> BOOL);
PFN_CERT_STORE_PROV_DELETE_CRL :: (proc(hStoreProv : HCERTSTOREPROV, pCrlContext : PCCRL_CONTEXT, dwFlags : u32) -> BOOL);
PFN_CERT_STORE_PROV_SET_CRL_PROPERTY :: (proc(hStoreProv : HCERTSTOREPROV, pCrlContext : PCCRL_CONTEXT, dwPropId : u32, dwFlags : u32, pvData : rawptr) -> BOOL);
PFN_CERT_STORE_PROV_READ_CTL :: (proc(hStoreProv : HCERTSTOREPROV, pStoreCtlContext : PCCTL_CONTEXT, dwFlags : u32, ppProvCtlContext : ^PCCTL_CONTEXT) -> BOOL);
PFN_CERT_STORE_PROV_WRITE_CTL :: (proc(hStoreProv : HCERTSTOREPROV, pCtlContext : PCCTL_CONTEXT, dwFlags : u32) -> BOOL);
PFN_CERT_STORE_PROV_DELETE_CTL :: (proc(hStoreProv : HCERTSTOREPROV, pCtlContext : PCCTL_CONTEXT, dwFlags : u32) -> BOOL);
PFN_CERT_STORE_PROV_SET_CTL_PROPERTY :: (proc(hStoreProv : HCERTSTOREPROV, pCtlContext : PCCTL_CONTEXT, dwPropId : u32, dwFlags : u32, pvData : rawptr) -> BOOL);
PFN_CERT_STORE_PROV_CONTROL :: (proc(hStoreProv : HCERTSTOREPROV, dwFlags : u32, dwCtrlType : u32, pvCtrlPara : ^void) -> BOOL);
CERT_STORE_PROV_FIND_INFO :: struct {
cbSize : u32,
dwMsgAndCertEncodingType : u32,
dwFindFlags : u32,
dwFindType : u32,
pvFindPara : rawptr,
};
PCERT_STORE_PROV_FIND_INFO :: ^struct {
cbSize : u32,
dwMsgAndCertEncodingType : u32,
dwFindFlags : u32,
dwFindType : u32,
pvFindPara : rawptr,
};
CCERT_STORE_PROV_FIND_INFO :: CERT_STORE_PROV_FIND_INFO;
PCCERT_STORE_PROV_FIND_INFO :: ^CERT_STORE_PROV_FIND_INFO;
PFN_CERT_STORE_PROV_FIND_CERT :: (proc(hStoreProv : HCERTSTOREPROV, pFindInfo : PCCERT_STORE_PROV_FIND_INFO, pPrevCertContext : PCCERT_CONTEXT, dwFlags : u32, ppvStoreProvFindInfo : ^rawptr, ppProvCertContext : ^PCCERT_CONTEXT) -> BOOL);
PFN_CERT_STORE_PROV_FREE_FIND_CERT :: (proc(hStoreProv : HCERTSTOREPROV, pCertContext : PCCERT_CONTEXT, pvStoreProvFindInfo : rawptr, dwFlags : u32) -> BOOL);
PFN_CERT_STORE_PROV_GET_CERT_PROPERTY :: (proc(hStoreProv : HCERTSTOREPROV, pCertContext : PCCERT_CONTEXT, dwPropId : u32, dwFlags : u32, pvData : rawptr, pcbData : ^u32) -> BOOL);
PFN_CERT_STORE_PROV_FIND_CRL :: (proc(hStoreProv : HCERTSTOREPROV, pFindInfo : PCCERT_STORE_PROV_FIND_INFO, pPrevCrlContext : PCCRL_CONTEXT, dwFlags : u32, ppvStoreProvFindInfo : ^rawptr, ppProvCrlContext : ^PCCRL_CONTEXT) -> BOOL);
PFN_CERT_STORE_PROV_FREE_FIND_CRL :: (proc(hStoreProv : HCERTSTOREPROV, pCrlContext : PCCRL_CONTEXT, pvStoreProvFindInfo : rawptr, dwFlags : u32) -> BOOL);
PFN_CERT_STORE_PROV_GET_CRL_PROPERTY :: (proc(hStoreProv : HCERTSTOREPROV, pCrlContext : PCCRL_CONTEXT, dwPropId : u32, dwFlags : u32, pvData : rawptr, pcbData : ^u32) -> BOOL);
PFN_CERT_STORE_PROV_FIND_CTL :: (proc(hStoreProv : HCERTSTOREPROV, pFindInfo : PCCERT_STORE_PROV_FIND_INFO, pPrevCtlContext : PCCTL_CONTEXT, dwFlags : u32, ppvStoreProvFindInfo : ^rawptr, ppProvCtlContext : ^PCCTL_CONTEXT) -> BOOL);
PFN_CERT_STORE_PROV_FREE_FIND_CTL :: (proc(hStoreProv : HCERTSTOREPROV, pCtlContext : PCCTL_CONTEXT, pvStoreProvFindInfo : rawptr, dwFlags : u32) -> BOOL);
PFN_CERT_STORE_PROV_GET_CTL_PROPERTY :: (proc(hStoreProv : HCERTSTOREPROV, pCtlContext : PCCTL_CONTEXT, dwPropId : u32, dwFlags : u32, pvData : rawptr, pcbData : ^u32) -> BOOL);
CRL_FIND_ISSUED_FOR_PARA :: struct {
pSubjectCert : PCCERT_CONTEXT,
pIssuerCert : PCCERT_CONTEXT,
};
PCRL_FIND_ISSUED_FOR_PARA :: ^struct {
pSubjectCert : PCCERT_CONTEXT,
pIssuerCert : PCCERT_CONTEXT,
};
CTL_ANY_SUBJECT_INFO :: struct {
SubjectAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
SubjectIdentifier : CRYPT_DATA_BLOB,
};
PCTL_ANY_SUBJECT_INFO :: ^struct {
SubjectAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
SubjectIdentifier : CRYPT_DATA_BLOB,
};
CTL_FIND_USAGE_PARA :: struct {
cbSize : u32,
SubjectUsage : CTL_USAGE,
ListIdentifier : CRYPT_DATA_BLOB,
pSigner : PCERT_INFO,
};
PCTL_FIND_USAGE_PARA :: ^struct {
cbSize : u32,
SubjectUsage : CTL_USAGE,
ListIdentifier : CRYPT_DATA_BLOB,
pSigner : PCERT_INFO,
};
CTL_FIND_SUBJECT_PARA :: struct {
cbSize : u32,
pUsagePara : PCTL_FIND_USAGE_PARA,
dwSubjectType : u32,
pvSubject : rawptr,
};
PCTL_FIND_SUBJECT_PARA :: ^struct {
cbSize : u32,
pUsagePara : PCTL_FIND_USAGE_PARA,
dwSubjectType : u32,
pvSubject : rawptr,
};
PFN_CERT_CREATE_CONTEXT_SORT_FUNC :: (proc(cbTotalEncoded : u32, cbRemainEncoded : u32, cEntry : u32, pvSort : rawptr) -> BOOL);
CERT_CREATE_CONTEXT_PARA :: struct {
cbSize : u32,
pfnFree : PFN_CRYPT_FREE,
pvFree : rawptr,
pfnSort : PFN_CERT_CREATE_CONTEXT_SORT_FUNC,
pvSort : rawptr,
};
PCERT_CREATE_CONTEXT_PARA :: ^struct {
cbSize : u32,
pfnFree : PFN_CRYPT_FREE,
pvFree : rawptr,
pfnSort : PFN_CERT_CREATE_CONTEXT_SORT_FUNC,
pvSort : rawptr,
};
CERT_SYSTEM_STORE_INFO :: struct {
cbSize : u32,
};
PCERT_SYSTEM_STORE_INFO :: ^struct {
cbSize : u32,
};
CERT_PHYSICAL_STORE_INFO :: struct {
cbSize : u32,
pszOpenStoreProvider : LPSTR,
dwOpenEncodingType : u32,
dwOpenFlags : u32,
OpenParameters : CRYPT_DATA_BLOB,
dwFlags : u32,
dwPriority : u32,
};
PCERT_PHYSICAL_STORE_INFO :: ^struct {
cbSize : u32,
pszOpenStoreProvider : LPSTR,
dwOpenEncodingType : u32,
dwOpenFlags : u32,
OpenParameters : CRYPT_DATA_BLOB,
dwFlags : u32,
dwPriority : u32,
};
PFN_CERT_ENUM_SYSTEM_STORE_LOCATION :: (proc(pwszStoreLocation : LPCWSTR, dwFlags : u32, pvReserved : rawptr, pvArg : rawptr) -> BOOL);
PFN_CERT_ENUM_SYSTEM_STORE :: (proc(pvSystemStore : rawptr, dwFlags : u32, pStoreInfo : PCERT_SYSTEM_STORE_INFO, pvReserved : rawptr, pvArg : rawptr) -> BOOL);
PFN_CERT_ENUM_PHYSICAL_STORE :: (proc(pvSystemStore : rawptr, dwFlags : u32, pwszStoreName : LPCWSTR, pStoreInfo : PCERT_PHYSICAL_STORE_INFO, pvReserved : rawptr, pvArg : rawptr) -> BOOL);
CTL_VERIFY_USAGE_PARA :: struct {
cbSize : u32,
ListIdentifier : CRYPT_DATA_BLOB,
cCtlStore : u32,
rghCtlStore : ^HCERTSTORE,
cSignerStore : u32,
rghSignerStore : ^HCERTSTORE,
};
PCTL_VERIFY_USAGE_PARA :: ^struct {
cbSize : u32,
ListIdentifier : CRYPT_DATA_BLOB,
cCtlStore : u32,
rghCtlStore : ^HCERTSTORE,
cSignerStore : u32,
rghSignerStore : ^HCERTSTORE,
};
CTL_VERIFY_USAGE_STATUS :: struct {
cbSize : u32,
dwError : u32,
dwFlags : u32,
ppCtl : ^PCCTL_CONTEXT,
dwCtlEntryIndex : u32,
ppSigner : ^PCCERT_CONTEXT,
dwSignerIndex : u32,
};
PCTL_VERIFY_USAGE_STATUS :: ^struct {
cbSize : u32,
dwError : u32,
dwFlags : u32,
ppCtl : ^PCCTL_CONTEXT,
dwCtlEntryIndex : u32,
ppSigner : ^PCCERT_CONTEXT,
dwSignerIndex : u32,
};
CERT_REVOCATION_CRL_INFO :: struct {
cbSize : u32,
pBaseCrlContext : PCCRL_CONTEXT,
pDeltaCrlContext : PCCRL_CONTEXT,
pCrlEntry : PCRL_ENTRY,
fDeltaCrlEntry : BOOL,
};
PCERT_REVOCATION_CRL_INFO :: ^struct {
cbSize : u32,
pBaseCrlContext : PCCRL_CONTEXT,
pDeltaCrlContext : PCCRL_CONTEXT,
pCrlEntry : PCRL_ENTRY,
fDeltaCrlEntry : BOOL,
};
CERT_REVOCATION_CHAIN_PARA :: struct {};
PCERT_REVOCATION_CHAIN_PARA :: ^CERT_REVOCATION_CHAIN_PARA;
CERT_REVOCATION_PARA :: struct {
cbSize : u32,
pIssuerCert : PCCERT_CONTEXT,
cCertStore : u32,
rgCertStore : ^HCERTSTORE,
hCrlStore : HCERTSTORE,
pftTimeToUse : LPFILETIME,
};
PCERT_REVOCATION_PARA :: ^struct {
cbSize : u32,
pIssuerCert : PCCERT_CONTEXT,
cCertStore : u32,
rgCertStore : ^HCERTSTORE,
hCrlStore : HCERTSTORE,
pftTimeToUse : LPFILETIME,
};
CERT_REVOCATION_STATUS :: struct {
cbSize : u32,
dwIndex : u32,
dwError : u32,
dwReason : u32,
fHasFreshnessTime : BOOL,
dwFreshnessTime : u32,
};
PCERT_REVOCATION_STATUS :: ^struct {
cbSize : u32,
dwIndex : u32,
dwError : u32,
dwReason : u32,
fHasFreshnessTime : BOOL,
dwFreshnessTime : u32,
};
CRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO :: struct {
CertSignHashCNGAlgPropData : CRYPT_DATA_BLOB,
CertIssuerPubKeyBitLengthPropData : CRYPT_DATA_BLOB,
};
PCRYPT_VERIFY_CERT_SIGN_STRONG_PROPERTIES_INFO :: ^struct {
CertSignHashCNGAlgPropData : CRYPT_DATA_BLOB,
CertIssuerPubKeyBitLengthPropData : CRYPT_DATA_BLOB,
};
CRYPT_VERIFY_CERT_SIGN_WEAK_HASH_INFO :: struct {
cCNGHashAlgid : u32,
rgpwszCNGHashAlgid : ^PCWSTR,
dwWeakIndex : u32,
};
PCRYPT_VERIFY_CERT_SIGN_WEAK_HASH_INFO :: ^struct {
cCNGHashAlgid : u32,
rgpwszCNGHashAlgid : ^PCWSTR,
dwWeakIndex : u32,
};
PFN_CRYPT_EXTRACT_ENCODED_SIGNATURE_PARAMETERS_FUNC :: (proc(dwCertEncodingType : u32, pSignatureAlgorithm : PCRYPT_ALGORITHM_IDENTIFIER, ppvDecodedSignPara : ^rawptr, ppwszCNGHashAlgid : ^LPWSTR) -> BOOL);
PFN_CRYPT_SIGN_AND_ENCODE_HASH_FUNC :: (proc(hKey : NCRYPT_KEY_HANDLE, dwCertEncodingType : u32, pSignatureAlgorithm : PCRYPT_ALGORITHM_IDENTIFIER, pvDecodedSignPara : rawptr, pwszCNGPubKeyAlgid : LPCWSTR, pwszCNGHashAlgid : LPCWSTR, pbComputedHash : ^BYTE, cbComputedHash : u32, pbSignature : ^BYTE, pcbSignature : ^u32) -> BOOL);
PFN_CRYPT_VERIFY_ENCODED_SIGNATURE_FUNC :: (proc(dwCertEncodingType : u32, pPubKeyInfo : PCERT_PUBLIC_KEY_INFO, pSignatureAlgorithm : PCRYPT_ALGORITHM_IDENTIFIER, pvDecodedSignPara : rawptr, pwszCNGPubKeyAlgid : LPCWSTR, pwszCNGHashAlgid : LPCWSTR, pbComputedHash : ^BYTE, cbComputedHash : u32, pbSignature : ^BYTE, cbSignature : u32) -> BOOL);
HCRYPTDEFAULTCONTEXT :: rawptr;
CRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA :: struct {
cOID : u32,
rgpszOID : ^LPSTR,
};
PCRYPT_DEFAULT_CONTEXT_MULTI_OID_PARA :: ^struct {
cOID : u32,
rgpszOID : ^LPSTR,
};
PFN_CRYPT_EXPORT_PUBLIC_KEY_INFO_EX2_FUNC :: (proc(hNCryptKey : NCRYPT_KEY_HANDLE, dwCertEncodingType : u32, pszPublicKeyObjId : LPSTR, dwFlags : u32, pvAuxInfo : rawptr, pInfo : PCERT_PUBLIC_KEY_INFO, pcbInfo : ^u32) -> BOOL);
PFN_CRYPT_EXPORT_PUBLIC_KEY_INFO_FROM_BCRYPT_HANDLE_FUNC :: (proc(hBCryptKey : BCRYPT_KEY_HANDLE, dwCertEncodingType : u32, pszPublicKeyObjId : LPSTR, dwFlags : u32, pvAuxInfo : rawptr, pInfo : PCERT_PUBLIC_KEY_INFO, pcbInfo : ^u32) -> BOOL);
PFN_IMPORT_PUBLIC_KEY_INFO_EX2_FUNC :: (proc(dwCertEncodingType : u32, pInfo : PCERT_PUBLIC_KEY_INFO, dwFlags : u32, pvAuxInfo : rawptr, phKey : ^BCRYPT_KEY_HANDLE) -> BOOL);
PFN_IMPORT_PRIV_KEY_FUNC :: (proc(hCryptProv : HCRYPTPROV, pPrivateKeyInfo : ^CRYPT_PRIVATE_KEY_INFO, dwFlags : u32, pvAuxInfo : rawptr) -> BOOL);
PFN_EXPORT_PRIV_KEY_FUNC :: (proc(hCryptProv : HCRYPTPROV, dwKeySpec : u32, pszPrivateKeyObjId : LPSTR, dwFlags : u32, pvAuxInfo : rawptr, pPrivateKeyInfo : ^CRYPT_PRIVATE_KEY_INFO, pcbPrivateKeyInfo : ^u32) -> BOOL);
PFN_CRYPT_GET_SIGNER_CERTIFICATE :: (proc(pvGetArg : rawptr, dwCertEncodingType : u32, pSignerId : PCERT_INFO, hMsgCertStore : HCERTSTORE) -> PCCERT_CONTEXT);
CRYPT_SIGN_MESSAGE_PARA :: struct {
cbSize : u32,
dwMsgEncodingType : u32,
pSigningCert : PCCERT_CONTEXT,
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pvHashAuxInfo : rawptr,
cMsgCert : u32,
rgpMsgCert : ^PCCERT_CONTEXT,
cMsgCrl : u32,
rgpMsgCrl : ^PCCRL_CONTEXT,
cAuthAttr : u32,
rgAuthAttr : PCRYPT_ATTRIBUTE,
cUnauthAttr : u32,
rgUnauthAttr : PCRYPT_ATTRIBUTE,
dwFlags : u32,
dwInnerContentType : u32,
};
PCRYPT_SIGN_MESSAGE_PARA :: ^struct {
cbSize : u32,
dwMsgEncodingType : u32,
pSigningCert : PCCERT_CONTEXT,
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pvHashAuxInfo : rawptr,
cMsgCert : u32,
rgpMsgCert : ^PCCERT_CONTEXT,
cMsgCrl : u32,
rgpMsgCrl : ^PCCRL_CONTEXT,
cAuthAttr : u32,
rgAuthAttr : PCRYPT_ATTRIBUTE,
cUnauthAttr : u32,
rgUnauthAttr : PCRYPT_ATTRIBUTE,
dwFlags : u32,
dwInnerContentType : u32,
};
CRYPT_VERIFY_MESSAGE_PARA :: struct {
cbSize : u32,
dwMsgAndCertEncodingType : u32,
hCryptProv : HCRYPTPROV_LEGACY,
pfnGetSignerCertificate : PFN_CRYPT_GET_SIGNER_CERTIFICATE,
pvGetArg : rawptr,
};
PCRYPT_VERIFY_MESSAGE_PARA :: ^struct {
cbSize : u32,
dwMsgAndCertEncodingType : u32,
hCryptProv : HCRYPTPROV_LEGACY,
pfnGetSignerCertificate : PFN_CRYPT_GET_SIGNER_CERTIFICATE,
pvGetArg : rawptr,
};
CRYPT_ENCRYPT_MESSAGE_PARA :: struct {
cbSize : u32,
dwMsgEncodingType : u32,
hCryptProv : HCRYPTPROV_LEGACY,
ContentEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pvEncryptionAuxInfo : rawptr,
dwFlags : u32,
dwInnerContentType : u32,
};
PCRYPT_ENCRYPT_MESSAGE_PARA :: ^struct {
cbSize : u32,
dwMsgEncodingType : u32,
hCryptProv : HCRYPTPROV_LEGACY,
ContentEncryptionAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pvEncryptionAuxInfo : rawptr,
dwFlags : u32,
dwInnerContentType : u32,
};
CRYPT_DECRYPT_MESSAGE_PARA :: struct {
cbSize : u32,
dwMsgAndCertEncodingType : u32,
cCertStore : u32,
rghCertStore : ^HCERTSTORE,
};
PCRYPT_DECRYPT_MESSAGE_PARA :: ^struct {
cbSize : u32,
dwMsgAndCertEncodingType : u32,
cCertStore : u32,
rghCertStore : ^HCERTSTORE,
};
CRYPT_HASH_MESSAGE_PARA :: struct {
cbSize : u32,
dwMsgEncodingType : u32,
hCryptProv : HCRYPTPROV_LEGACY,
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pvHashAuxInfo : rawptr,
};
PCRYPT_HASH_MESSAGE_PARA :: ^struct {
cbSize : u32,
dwMsgEncodingType : u32,
hCryptProv : HCRYPTPROV_LEGACY,
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pvHashAuxInfo : rawptr,
};
CRYPT_KEY_SIGN_MESSAGE_PARA :: struct {
cbSize : u32,
dwMsgAndCertEncodingType : u32,
u : struct #raw_union {
hCryptProv : HCRYPTPROV,
hNCryptKey : NCRYPT_KEY_HANDLE,
},
dwKeySpec : u32,
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pvHashAuxInfo : rawptr,
PubKeyAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
};
PCRYPT_KEY_SIGN_MESSAGE_PARA :: ^struct {
cbSize : u32,
dwMsgAndCertEncodingType : u32,
u : struct #raw_union {
hCryptProv : HCRYPTPROV,
hNCryptKey : NCRYPT_KEY_HANDLE,
},
dwKeySpec : u32,
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
pvHashAuxInfo : rawptr,
PubKeyAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
};
CRYPT_KEY_VERIFY_MESSAGE_PARA :: struct {
cbSize : u32,
dwMsgEncodingType : u32,
hCryptProv : HCRYPTPROV_LEGACY,
};
PCRYPT_KEY_VERIFY_MESSAGE_PARA :: ^struct {
cbSize : u32,
dwMsgEncodingType : u32,
hCryptProv : HCRYPTPROV_LEGACY,
};
CERT_CHAIN :: struct {
cCerts : u32,
certs : PCERT_BLOB,
keyLocatorInfo : CRYPT_KEY_PROV_INFO,
};
PCERT_CHAIN :: ^struct {
cCerts : u32,
certs : PCERT_BLOB,
keyLocatorInfo : CRYPT_KEY_PROV_INFO,
};
HCRYPTASYNC :: HANDLE;
PHCRYPTASYNC :: ^HANDLE;
PFN_CRYPT_ASYNC_PARAM_FREE_FUNC :: proc(pszParamOid : LPSTR, pvParam : LPVOID);
CRYPT_BLOB_ARRAY :: struct {
cBlob : u32,
rgBlob : PCRYPT_DATA_BLOB,
};
PCRYPT_BLOB_ARRAY :: ^struct {
cBlob : u32,
rgBlob : PCRYPT_DATA_BLOB,
};
CRYPT_CREDENTIALS :: struct {
cbSize : u32,
pszCredentialsOid : LPCSTR,
pvCredentials : LPVOID,
};
PCRYPT_CREDENTIALS :: ^struct {
cbSize : u32,
pszCredentialsOid : LPCSTR,
pvCredentials : LPVOID,
};
CRYPT_PASSWORD_CREDENTIALSA :: struct {
cbSize : u32,
pszUsername : LPSTR,
pszPassword : LPSTR,
};
PCRYPT_PASSWORD_CREDENTIALSA :: ^struct {
cbSize : u32,
pszUsername : LPSTR,
pszPassword : LPSTR,
};
CRYPT_PASSWORD_CREDENTIALSW :: struct {
cbSize : u32,
pszUsername : LPWSTR,
pszPassword : LPWSTR,
};
PCRYPT_PASSWORD_CREDENTIALSW :: ^struct {
cbSize : u32,
pszUsername : LPWSTR,
pszPassword : LPWSTR,
};
CRYPT_PASSWORD_CREDENTIALS :: CRYPT_PASSWORD_CREDENTIALSA;
PCRYPT_PASSWORD_CREDENTIALS :: PCRYPT_PASSWORD_CREDENTIALSA;
PFN_FREE_ENCODED_OBJECT_FUNC :: proc(pszObjectOid : LPCSTR, pObject : PCRYPT_BLOB_ARRAY, pvFreeContext : LPVOID);
CRYPTNET_URL_CACHE_PRE_FETCH_INFO :: struct {
cbSize : u32,
dwObjectType : u32,
dwError : u32,
dwReserved : u32,
ThisUpdateTime : FILETIME,
NextUpdateTime : FILETIME,
PublishTime : FILETIME,
};
PCRYPTNET_URL_CACHE_PRE_FETCH_INFO :: ^struct {
cbSize : u32,
dwObjectType : u32,
dwError : u32,
dwReserved : u32,
ThisUpdateTime : FILETIME,
NextUpdateTime : FILETIME,
PublishTime : FILETIME,
};
CRYPTNET_URL_CACHE_FLUSH_INFO :: struct {
cbSize : u32,
dwExemptSeconds : u32,
ExpireTime : FILETIME,
};
PCRYPTNET_URL_CACHE_FLUSH_INFO :: ^struct {
cbSize : u32,
dwExemptSeconds : u32,
ExpireTime : FILETIME,
};
CRYPTNET_URL_CACHE_RESPONSE_INFO :: struct {
cbSize : u32,
wResponseType : u16,
wResponseFlags : u16,
LastModifiedTime : FILETIME,
dwMaxAge : u32,
pwszETag : LPCWSTR,
dwProxyId : u32,
};
PCRYPTNET_URL_CACHE_RESPONSE_INFO :: ^struct {
cbSize : u32,
wResponseType : u16,
wResponseFlags : u16,
LastModifiedTime : FILETIME,
dwMaxAge : u32,
pwszETag : LPCWSTR,
dwProxyId : u32,
};
CRYPT_RETRIEVE_AUX_INFO :: struct {
cbSize : u32,
pLastSyncTime : ^FILETIME,
dwMaxUrlRetrievalByteCount : u32,
pPreFetchInfo : PCRYPTNET_URL_CACHE_PRE_FETCH_INFO,
pFlushInfo : PCRYPTNET_URL_CACHE_FLUSH_INFO,
ppResponseInfo : ^PCRYPTNET_URL_CACHE_RESPONSE_INFO,
pwszCacheFileNamePrefix : LPWSTR,
pftCacheResync : LPFILETIME,
fProxyCacheRetrieval : BOOL,
dwHttpStatusCode : u32,
ppwszErrorResponseHeaders : ^LPWSTR,
ppErrorContentBlob : ^PCRYPT_DATA_BLOB,
};
PCRYPT_RETRIEVE_AUX_INFO :: ^struct {
cbSize : u32,
pLastSyncTime : ^FILETIME,
dwMaxUrlRetrievalByteCount : u32,
pPreFetchInfo : PCRYPTNET_URL_CACHE_PRE_FETCH_INFO,
pFlushInfo : PCRYPTNET_URL_CACHE_FLUSH_INFO,
ppResponseInfo : ^PCRYPTNET_URL_CACHE_RESPONSE_INFO,
pwszCacheFileNamePrefix : LPWSTR,
pftCacheResync : LPFILETIME,
fProxyCacheRetrieval : BOOL,
dwHttpStatusCode : u32,
ppwszErrorResponseHeaders : ^LPWSTR,
ppErrorContentBlob : ^PCRYPT_DATA_BLOB,
};
PFN_CRYPT_CANCEL_RETRIEVAL :: (proc(dwFlags : u32, pvArg : rawptr) -> BOOL);
PFN_CRYPT_ASYNC_RETRIEVAL_COMPLETION_FUNC :: proc(pvCompletion : LPVOID, dwCompletionCode : u32, pszUrl : LPCSTR, pszObjectOid : LPSTR, pvObject : LPVOID);
CRYPT_ASYNC_RETRIEVAL_COMPLETION :: struct {
pfnCompletion : PFN_CRYPT_ASYNC_RETRIEVAL_COMPLETION_FUNC,
pvCompletion : LPVOID,
};
PCRYPT_ASYNC_RETRIEVAL_COMPLETION :: ^struct {
pfnCompletion : PFN_CRYPT_ASYNC_RETRIEVAL_COMPLETION_FUNC,
pvCompletion : LPVOID,
};
PFN_CANCEL_ASYNC_RETRIEVAL_FUNC :: (proc(hAsyncRetrieve : HCRYPTASYNC) -> BOOL);
CRYPT_URL_ARRAY :: struct {
cUrl : u32,
rgwszUrl : ^LPWSTR,
};
PCRYPT_URL_ARRAY :: ^struct {
cUrl : u32,
rgwszUrl : ^LPWSTR,
};
CRYPT_URL_INFO :: struct {
cbSize : u32,
dwSyncDeltaTime : u32,
cGroup : u32,
rgcGroupEntry : ^u32,
};
PCRYPT_URL_INFO :: ^struct {
cbSize : u32,
dwSyncDeltaTime : u32,
cGroup : u32,
rgcGroupEntry : ^u32,
};
CERT_CRL_CONTEXT_PAIR :: struct {
pCertContext : PCCERT_CONTEXT,
pCrlContext : PCCRL_CONTEXT,
};
PCERT_CRL_CONTEXT_PAIR :: ^struct {
pCertContext : PCCERT_CONTEXT,
pCrlContext : PCCRL_CONTEXT,
};
PCCERT_CRL_CONTEXT_PAIR :: ^CERT_CRL_CONTEXT_PAIR;
CRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO :: struct {
cbSize : u32,
iDeltaCrlIndicator : i32,
pftCacheResync : LPFILETIME,
pLastSyncTime : LPFILETIME,
pMaxAgeTime : LPFILETIME,
pChainPara : PCERT_REVOCATION_CHAIN_PARA,
pDeltaCrlIndicator : PCRYPT_INTEGER_BLOB,
};
PCRYPT_GET_TIME_VALID_OBJECT_EXTRA_INFO :: ^struct {
cbSize : u32,
iDeltaCrlIndicator : i32,
pftCacheResync : LPFILETIME,
pLastSyncTime : LPFILETIME,
pMaxAgeTime : LPFILETIME,
pChainPara : PCERT_REVOCATION_CHAIN_PARA,
pDeltaCrlIndicator : PCRYPT_INTEGER_BLOB,
};
PFN_CRYPT_ENUM_KEYID_PROP :: (proc(pKeyIdentifier : ^CRYPT_HASH_BLOB, dwFlags : u32, pvReserved : rawptr, pvArg : rawptr, cProp : u32, rgdwPropId : ^u32, rgpvData : ^rawptr, rgcbData : ^u32) -> BOOL);
HCERTCHAINENGINE :: HANDLE;
CERT_CHAIN_ENGINE_CONFIG :: struct {
cbSize : u32,
hRestrictedRoot : HCERTSTORE,
hRestrictedTrust : HCERTSTORE,
hRestrictedOther : HCERTSTORE,
cAdditionalStore : u32,
rghAdditionalStore : ^HCERTSTORE,
dwFlags : u32,
dwUrlRetrievalTimeout : u32,
MaximumCachedCertificates : u32,
CycleDetectionModulus : u32,
hExclusiveRoot : HCERTSTORE,
hExclusiveTrustedPeople : HCERTSTORE,
dwExclusiveFlags : u32,
};
PCERT_CHAIN_ENGINE_CONFIG :: ^struct {
cbSize : u32,
hRestrictedRoot : HCERTSTORE,
hRestrictedTrust : HCERTSTORE,
hRestrictedOther : HCERTSTORE,
cAdditionalStore : u32,
rghAdditionalStore : ^HCERTSTORE,
dwFlags : u32,
dwUrlRetrievalTimeout : u32,
MaximumCachedCertificates : u32,
CycleDetectionModulus : u32,
hExclusiveRoot : HCERTSTORE,
hExclusiveTrustedPeople : HCERTSTORE,
dwExclusiveFlags : u32,
};
CERT_TRUST_STATUS :: struct {
dwErrorStatus : u32,
dwInfoStatus : u32,
};
PCERT_TRUST_STATUS :: ^struct {
dwErrorStatus : u32,
dwInfoStatus : u32,
};
CERT_REVOCATION_INFO :: struct {
cbSize : u32,
dwRevocationResult : u32,
pszRevocationOid : LPCSTR,
pvOidSpecificInfo : LPVOID,
fHasFreshnessTime : BOOL,
dwFreshnessTime : u32,
pCrlInfo : PCERT_REVOCATION_CRL_INFO,
};
PCERT_REVOCATION_INFO :: ^struct {
cbSize : u32,
dwRevocationResult : u32,
pszRevocationOid : LPCSTR,
pvOidSpecificInfo : LPVOID,
fHasFreshnessTime : BOOL,
dwFreshnessTime : u32,
pCrlInfo : PCERT_REVOCATION_CRL_INFO,
};
CERT_TRUST_LIST_INFO :: struct {
cbSize : u32,
pCtlEntry : PCTL_ENTRY,
pCtlContext : PCCTL_CONTEXT,
};
PCERT_TRUST_LIST_INFO :: ^struct {
cbSize : u32,
pCtlEntry : PCTL_ENTRY,
pCtlContext : PCCTL_CONTEXT,
};
CERT_CHAIN_ELEMENT :: struct {
cbSize : u32,
pCertContext : PCCERT_CONTEXT,
TrustStatus : CERT_TRUST_STATUS,
pRevocationInfo : PCERT_REVOCATION_INFO,
pIssuanceUsage : PCERT_ENHKEY_USAGE,
pApplicationUsage : PCERT_ENHKEY_USAGE,
pwszExtendedErrorInfo : LPCWSTR,
};
PCERT_CHAIN_ELEMENT :: ^struct {
cbSize : u32,
pCertContext : PCCERT_CONTEXT,
TrustStatus : CERT_TRUST_STATUS,
pRevocationInfo : PCERT_REVOCATION_INFO,
pIssuanceUsage : PCERT_ENHKEY_USAGE,
pApplicationUsage : PCERT_ENHKEY_USAGE,
pwszExtendedErrorInfo : LPCWSTR,
};
PCCERT_CHAIN_ELEMENT :: ^CERT_CHAIN_ELEMENT;
CERT_SIMPLE_CHAIN :: struct {
cbSize : u32,
TrustStatus : CERT_TRUST_STATUS,
cElement : u32,
rgpElement : ^PCERT_CHAIN_ELEMENT,
pTrustListInfo : PCERT_TRUST_LIST_INFO,
fHasRevocationFreshnessTime : BOOL,
dwRevocationFreshnessTime : u32,
};
PCERT_SIMPLE_CHAIN :: ^struct {
cbSize : u32,
TrustStatus : CERT_TRUST_STATUS,
cElement : u32,
rgpElement : ^PCERT_CHAIN_ELEMENT,
pTrustListInfo : PCERT_TRUST_LIST_INFO,
fHasRevocationFreshnessTime : BOOL,
dwRevocationFreshnessTime : u32,
};
PCCERT_SIMPLE_CHAIN :: ^CERT_SIMPLE_CHAIN;
CERT_CHAIN_CONTEXT :: struct {};
PCERT_CHAIN_CONTEXT :: ^CERT_CHAIN_CONTEXT;
PCCERT_CHAIN_CONTEXT :: ^CERT_CHAIN_CONTEXT;
CERT_CHAIN_CONTEXT :: struct {
cbSize : u32,
TrustStatus : CERT_TRUST_STATUS,
cChain : u32,
rgpChain : ^PCERT_SIMPLE_CHAIN,
cLowerQualityChainContext : u32,
rgpLowerQualityChainContext : ^PCCERT_CHAIN_CONTEXT,
fHasRevocationFreshnessTime : BOOL,
dwRevocationFreshnessTime : u32,
dwCreateFlags : u32,
ChainId : GUID,
};
CERT_USAGE_MATCH :: struct {
dwType : u32,
Usage : CERT_ENHKEY_USAGE,
};
PCERT_USAGE_MATCH :: ^struct {
dwType : u32,
Usage : CERT_ENHKEY_USAGE,
};
CTL_USAGE_MATCH :: struct {
dwType : u32,
Usage : CTL_USAGE,
};
PCTL_USAGE_MATCH :: ^struct {
dwType : u32,
Usage : CTL_USAGE,
};
CERT_CHAIN_PARA :: struct {
cbSize : u32,
RequestedUsage : CERT_USAGE_MATCH,
};
PCERT_CHAIN_PARA :: ^struct {
cbSize : u32,
RequestedUsage : CERT_USAGE_MATCH,
};
CERT_REVOCATION_CHAIN_PARA :: struct {
cbSize : u32,
hChainEngine : HCERTCHAINENGINE,
hAdditionalStore : HCERTSTORE,
dwChainFlags : u32,
dwUrlRetrievalTimeout : u32,
pftCurrentTime : LPFILETIME,
pftCacheResync : LPFILETIME,
cbMaxUrlRetrievalByteCount : u32,
};
CRL_REVOCATION_INFO :: struct {
pCrlEntry : PCRL_ENTRY,
pCrlContext : PCCRL_CONTEXT,
pCrlIssuerChain : PCCERT_CHAIN_CONTEXT,
};
PCRL_REVOCATION_INFO :: ^struct {
pCrlEntry : PCRL_ENTRY,
pCrlContext : PCCRL_CONTEXT,
pCrlIssuerChain : PCCERT_CHAIN_CONTEXT,
};
PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK :: (proc(pCert : PCCERT_CONTEXT, pvFindArg : rawptr) -> BOOL);
CERT_CHAIN_FIND_ISSUER_PARA :: struct {
cbSize : u32,
pszUsageIdentifier : LPCSTR,
dwKeySpec : u32,
dwAcquirePrivateKeyFlags : u32,
cIssuer : u32,
rgIssuer : ^CERT_NAME_BLOB,
pfnFindCallback : PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK,
pvFindArg : rawptr,
};
PCERT_CHAIN_FIND_ISSUER_PARA :: ^struct {
cbSize : u32,
pszUsageIdentifier : LPCSTR,
dwKeySpec : u32,
dwAcquirePrivateKeyFlags : u32,
cIssuer : u32,
rgIssuer : ^CERT_NAME_BLOB,
pfnFindCallback : PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK,
pvFindArg : rawptr,
};
CERT_CHAIN_FIND_BY_ISSUER_PARA :: struct {
cbSize : u32,
pszUsageIdentifier : LPCSTR,
dwKeySpec : u32,
dwAcquirePrivateKeyFlags : u32,
cIssuer : u32,
rgIssuer : ^CERT_NAME_BLOB,
pfnFindCallback : PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK,
pvFindArg : rawptr,
};
PCERT_CHAIN_FIND_BY_ISSUER_PARA :: ^struct {
cbSize : u32,
pszUsageIdentifier : LPCSTR,
dwKeySpec : u32,
dwAcquirePrivateKeyFlags : u32,
cIssuer : u32,
rgIssuer : ^CERT_NAME_BLOB,
pfnFindCallback : PFN_CERT_CHAIN_FIND_BY_ISSUER_CALLBACK,
pvFindArg : rawptr,
};
CERT_CHAIN_POLICY_PARA :: struct {
cbSize : u32,
dwFlags : u32,
pvExtraPolicyPara : rawptr,
};
PCERT_CHAIN_POLICY_PARA :: ^struct {
cbSize : u32,
dwFlags : u32,
pvExtraPolicyPara : rawptr,
};
CERT_CHAIN_POLICY_STATUS :: struct {
cbSize : u32,
dwError : u32,
lChainIndex : LONG,
lElementIndex : LONG,
pvExtraPolicyStatus : rawptr,
};
PCERT_CHAIN_POLICY_STATUS :: ^struct {
cbSize : u32,
dwError : u32,
lChainIndex : LONG,
lElementIndex : LONG,
pvExtraPolicyStatus : rawptr,
};
AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA :: struct {
cbSize : u32,
dwRegPolicySettings : u32,
pSignerInfo : PCMSG_SIGNER_INFO,
};
PAUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA :: ^struct {
cbSize : u32,
dwRegPolicySettings : u32,
pSignerInfo : PCMSG_SIGNER_INFO,
};
AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS :: struct {
cbSize : u32,
fCommercial : BOOL,
};
PAUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_STATUS :: ^struct {
cbSize : u32,
fCommercial : BOOL,
};
AUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA :: struct {
cbSize : u32,
dwRegPolicySettings : u32,
fCommercial : BOOL,
};
PAUTHENTICODE_TS_EXTRA_CERT_CHAIN_POLICY_PARA :: ^struct {
cbSize : u32,
dwRegPolicySettings : u32,
fCommercial : BOOL,
};
HTTPSPolicyCallbackData :: struct {
u : struct #raw_union {
cbStruct : u32,
cbSize : u32,
},
dwAuthType : u32,
fdwChecks : u32,
pwszServerName : ^WCHAR,
};
PHTTPSPolicyCallbackData :: ^struct {
u : struct #raw_union {
cbStruct : u32,
cbSize : u32,
},
dwAuthType : u32,
fdwChecks : u32,
pwszServerName : ^WCHAR,
};
SSL_EXTRA_CERT_CHAIN_POLICY_PARA :: struct {
u : struct #raw_union {
cbStruct : u32,
cbSize : u32,
},
dwAuthType : u32,
fdwChecks : u32,
pwszServerName : ^WCHAR,
};
PSSL_EXTRA_CERT_CHAIN_POLICY_PARA :: ^struct {
u : struct #raw_union {
cbStruct : u32,
cbSize : u32,
},
dwAuthType : u32,
fdwChecks : u32,
pwszServerName : ^WCHAR,
};
EV_EXTRA_CERT_CHAIN_POLICY_PARA :: struct {
cbSize : u32,
dwRootProgramQualifierFlags : u32,
};
PEV_EXTRA_CERT_CHAIN_POLICY_PARA :: ^struct {
cbSize : u32,
dwRootProgramQualifierFlags : u32,
};
EV_EXTRA_CERT_CHAIN_POLICY_STATUS :: struct {
cbSize : u32,
dwQualifiers : u32,
dwIssuanceUsageIndex : u32,
};
PEV_EXTRA_CERT_CHAIN_POLICY_STATUS :: ^struct {
cbSize : u32,
dwQualifiers : u32,
dwIssuanceUsageIndex : u32,
};
SSL_F12_EXTRA_CERT_CHAIN_POLICY_STATUS :: struct {
cbSize : u32,
dwErrorLevel : u32,
dwErrorCategory : u32,
dwReserved : u32,
wszErrorText : [256]WCHAR,
};
PSSL_F12_EXTRA_CERT_CHAIN_POLICY_STATUS :: ^struct {
cbSize : u32,
dwErrorLevel : u32,
dwErrorCategory : u32,
dwReserved : u32,
wszErrorText : [256]WCHAR,
};
SSL_HPKP_HEADER_EXTRA_CERT_CHAIN_POLICY_PARA :: struct {
cbSize : u32,
dwReserved : u32,
pwszServerName : LPWSTR,
rgpszHpkpValue : [2]LPSTR,
};
PSSL_HPKP_HEADER_EXTRA_CERT_CHAIN_POLICY_PARA :: ^struct {
cbSize : u32,
dwReserved : u32,
pwszServerName : LPWSTR,
rgpszHpkpValue : [2]LPSTR,
};
SSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_PARA :: struct {
cbSize : u32,
dwReserved : u32,
pwszServerName : PCWSTR,
};
PSSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_PARA :: ^struct {
cbSize : u32,
dwReserved : u32,
pwszServerName : PCWSTR,
};
SSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_STATUS :: struct {
cbSize : u32,
lError : LONG,
wszErrorText : [512]WCHAR,
};
PSSL_KEY_PIN_EXTRA_CERT_CHAIN_POLICY_STATUS :: ^struct {
cbSize : u32,
lError : LONG,
wszErrorText : [512]WCHAR,
};
CRYPT_PKCS12_PBE_PARAMS :: struct {
iIterations : i32,
cbSalt : ULONG,
};
PKCS12_PBES2_EXPORT_PARAMS :: struct {
dwSize : u32,
hNcryptDescriptor : PVOID,
pwszPbes2Alg : LPWSTR,
};
PPKCS12_PBES2_EXPORT_PARAMS :: ^struct {
dwSize : u32,
hNcryptDescriptor : PVOID,
pwszPbes2Alg : LPWSTR,
};
HCERT_SERVER_OCSP_RESPONSE :: rawptr;
CERT_SERVER_OCSP_RESPONSE_CONTEXT :: struct {};
PCERT_SERVER_OCSP_RESPONSE_CONTEXT :: ^CERT_SERVER_OCSP_RESPONSE_CONTEXT;
PCCERT_SERVER_OCSP_RESPONSE_CONTEXT :: ^CERT_SERVER_OCSP_RESPONSE_CONTEXT;
CERT_SERVER_OCSP_RESPONSE_CONTEXT :: struct {
cbSize : u32,
pbEncodedOcspResponse : ^BYTE,
cbEncodedOcspResponse : u32,
};
PFN_CERT_SERVER_OCSP_RESPONSE_UPDATE_CALLBACK :: proc(pChainContext : PCCERT_CHAIN_CONTEXT, pServerOcspResponseContext : PCCERT_SERVER_OCSP_RESPONSE_CONTEXT, pNewCrlContext : PCCRL_CONTEXT, pPrevCrlContext : PCCRL_CONTEXT, pvArg : PVOID, dwWriteOcspFileError : u32);
CERT_SERVER_OCSP_RESPONSE_OPEN_PARA :: struct {
cbSize : u32,
dwFlags : u32,
pcbUsedSize : ^u32,
pwszOcspDirectory : PWSTR,
pfnUpdateCallback : PFN_CERT_SERVER_OCSP_RESPONSE_UPDATE_CALLBACK,
pvUpdateCallbackArg : PVOID,
};
PCERT_SERVER_OCSP_RESPONSE_OPEN_PARA :: ^struct {
cbSize : u32,
dwFlags : u32,
pcbUsedSize : ^u32,
pwszOcspDirectory : PWSTR,
pfnUpdateCallback : PFN_CERT_SERVER_OCSP_RESPONSE_UPDATE_CALLBACK,
pvUpdateCallbackArg : PVOID,
};
CERT_SELECT_CHAIN_PARA :: struct {
hChainEngine : HCERTCHAINENGINE,
pTime : PFILETIME,
hAdditionalStore : HCERTSTORE,
pChainPara : PCERT_CHAIN_PARA,
dwFlags : u32,
};
PCERT_SELECT_CHAIN_PARA :: ^struct {
hChainEngine : HCERTCHAINENGINE,
pTime : PFILETIME,
hAdditionalStore : HCERTSTORE,
pChainPara : PCERT_CHAIN_PARA,
dwFlags : u32,
};
PCCERT_SELECT_CHAIN_PARA :: ^CERT_SELECT_CHAIN_PARA;
CERT_SELECT_CRITERIA :: struct {
dwType : u32,
cPara : u32,
ppPara : ^rawptr,
};
PCERT_SELECT_CRITERIA :: ^struct {
dwType : u32,
cPara : u32,
ppPara : ^rawptr,
};
PCCERT_SELECT_CRITERIA :: ^CERT_SELECT_CRITERIA;
CRYPT_TIMESTAMP_REQUEST :: struct {
dwVersion : u32,
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
HashedMessage : CRYPT_DER_BLOB,
pszTSAPolicyId : LPSTR,
Nonce : CRYPT_INTEGER_BLOB,
fCertReq : BOOL,
cExtension : u32,
rgExtension : PCERT_EXTENSION,
};
PCRYPT_TIMESTAMP_REQUEST :: ^struct {
dwVersion : u32,
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
HashedMessage : CRYPT_DER_BLOB,
pszTSAPolicyId : LPSTR,
Nonce : CRYPT_INTEGER_BLOB,
fCertReq : BOOL,
cExtension : u32,
rgExtension : PCERT_EXTENSION,
};
CRYPT_TIMESTAMP_RESPONSE :: struct {
dwStatus : u32,
cFreeText : u32,
rgFreeText : ^LPWSTR,
FailureInfo : CRYPT_BIT_BLOB,
ContentInfo : CRYPT_DER_BLOB,
};
PCRYPT_TIMESTAMP_RESPONSE :: ^struct {
dwStatus : u32,
cFreeText : u32,
rgFreeText : ^LPWSTR,
FailureInfo : CRYPT_BIT_BLOB,
ContentInfo : CRYPT_DER_BLOB,
};
CRYPT_TIMESTAMP_ACCURACY :: struct {
dwSeconds : u32,
dwMillis : u32,
dwMicros : u32,
};
PCRYPT_TIMESTAMP_ACCURACY :: ^struct {
dwSeconds : u32,
dwMillis : u32,
dwMicros : u32,
};
CRYPT_TIMESTAMP_INFO :: struct {
dwVersion : u32,
pszTSAPolicyId : LPSTR,
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
HashedMessage : CRYPT_DER_BLOB,
SerialNumber : CRYPT_INTEGER_BLOB,
ftTime : FILETIME,
pvAccuracy : PCRYPT_TIMESTAMP_ACCURACY,
fOrdering : BOOL,
Nonce : CRYPT_DER_BLOB,
Tsa : CRYPT_DER_BLOB,
cExtension : u32,
rgExtension : PCERT_EXTENSION,
};
PCRYPT_TIMESTAMP_INFO :: ^struct {
dwVersion : u32,
pszTSAPolicyId : LPSTR,
HashAlgorithm : CRYPT_ALGORITHM_IDENTIFIER,
HashedMessage : CRYPT_DER_BLOB,
SerialNumber : CRYPT_INTEGER_BLOB,
ftTime : FILETIME,
pvAccuracy : PCRYPT_TIMESTAMP_ACCURACY,
fOrdering : BOOL,
Nonce : CRYPT_DER_BLOB,
Tsa : CRYPT_DER_BLOB,
cExtension : u32,
rgExtension : PCERT_EXTENSION,
};
CRYPT_TIMESTAMP_CONTEXT :: struct {
cbEncoded : u32,
pbEncoded : ^BYTE,
pTimeStamp : PCRYPT_TIMESTAMP_INFO,
};
PCRYPT_TIMESTAMP_CONTEXT :: ^struct {
cbEncoded : u32,
pbEncoded : ^BYTE,
pTimeStamp : PCRYPT_TIMESTAMP_INFO,
};
CRYPT_TIMESTAMP_PARA :: struct {
pszTSAPolicyId : LPCSTR,
fRequestCerts : BOOL,
Nonce : CRYPT_INTEGER_BLOB,
cExtension : u32,
rgExtension : PCERT_EXTENSION,
};
PCRYPT_TIMESTAMP_PARA :: ^struct {
pszTSAPolicyId : LPCSTR,
fRequestCerts : BOOL,
Nonce : CRYPT_INTEGER_BLOB,
cExtension : u32,
rgExtension : PCERT_EXTENSION,
};
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FLUSH :: (proc(pContext : LPVOID, rgIdentifierOrNameList : ^PCERT_NAME_BLOB, dwIdentifierOrNameListCount : u32) -> BOOL);
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET :: (proc(pPluginContext : LPVOID, pIdentifier : PCRYPT_DATA_BLOB, dwNameType : u32, pNameBlob : PCERT_NAME_BLOB, ppbContent : ^PBYTE, pcbContent : ^u32, ppwszPassword : ^PCWSTR, ppIdentifier : ^PCRYPT_DATA_BLOB) -> BOOL);
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_RELEASE :: proc(dwReason : u32, pPluginContext : LPVOID);
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE_PASSWORD :: proc(pPluginContext : LPVOID, pwszPassword : PCWSTR);
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE :: proc(pPluginContext : LPVOID, pbData : PBYTE);
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE_IDENTIFIER :: proc(pPluginContext : LPVOID, pIdentifier : PCRYPT_DATA_BLOB);
CRYPT_OBJECT_LOCATOR_PROVIDER_TABLE :: struct {
cbSize : u32,
pfnGet : PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET,
pfnRelease : PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_RELEASE,
pfnFreePassword : PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE_PASSWORD,
pfnFree : PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE,
pfnFreeIdentifier : PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE_IDENTIFIER,
};
PCRYPT_OBJECT_LOCATOR_PROVIDER_TABLE :: ^struct {
cbSize : u32,
pfnGet : PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET,
pfnRelease : PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_RELEASE,
pfnFreePassword : PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE_PASSWORD,
pfnFree : PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE,
pfnFreeIdentifier : PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FREE_IDENTIFIER,
};
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_INITIALIZE :: (proc(pfnFlush : PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_FLUSH, pContext : LPVOID, pdwExpectedObjectCount : ^u32, ppFuncTable : ^PCRYPT_OBJECT_LOCATOR_PROVIDER_TABLE, ppPluginContext : ^rawptr) -> BOOL);
PFN_CERT_IS_WEAK_HASH :: (proc(dwHashUseType : u32, pwszCNGHashAlgid : LPCWSTR, dwChainFlags : u32, pSignerChainContext : PCCERT_CHAIN_CONTEXT, pTimeStamp : LPFILETIME, pwszFileName : LPCWSTR) -> BOOL);
CRYPTPROTECT_PROMPTSTRUCT :: struct {
cbSize : u32,
dwPromptFlags : u32,
hwndApp : HWND,
szPrompt : LPCWSTR,
};
PCRYPTPROTECT_PROMPTSTRUCT :: ^struct {
cbSize : u32,
dwPromptFlags : u32,
hwndApp : HWND,
szPrompt : LPCWSTR,
};
EFS_CERTIFICATE_BLOB :: struct {
dwCertEncodingType : u32,
cbData : u32,
pbData : PBYTE,
};
PEFS_CERTIFICATE_BLOB :: ^struct {
dwCertEncodingType : u32,
cbData : u32,
pbData : PBYTE,
};
EFS_HASH_BLOB :: struct {
cbData : u32,
pbData : PBYTE,
};
PEFS_HASH_BLOB :: ^struct {
cbData : u32,
pbData : PBYTE,
};
EFS_RPC_BLOB :: struct {
cbData : u32,
pbData : PBYTE,
};
PEFS_RPC_BLOB :: ^struct {
cbData : u32,
pbData : PBYTE,
};
EFS_PIN_BLOB :: struct {
cbPadding : u32,
cbData : u32,
pbData : PBYTE,
};
PEFS_PIN_BLOB :: ^struct {
cbPadding : u32,
cbData : u32,
pbData : PBYTE,
};
EFS_KEY_INFO :: struct {
dwVersion : u32,
Entropy : ULONG,
Algorithm : ALG_ID,
KeyLength : ULONG,
};
PEFS_KEY_INFO :: ^struct {
dwVersion : u32,
Entropy : ULONG,
Algorithm : ALG_ID,
KeyLength : ULONG,
};
EFS_COMPATIBILITY_INFO :: struct {
EfsVersion : u32,
};
PEFS_COMPATIBILITY_INFO :: ^struct {
EfsVersion : u32,
};
EFS_VERSION_INFO :: struct {
EfsVersion : u32,
SubVersion : u32,
};
PEFS_VERSION_INFO :: ^struct {
EfsVersion : u32,
SubVersion : u32,
};
EFS_DECRYPTION_STATUS_INFO :: struct {
dwDecryptionError : u32,
dwHashOffset : u32,
cbHash : u32,
};
PEFS_DECRYPTION_STATUS_INFO :: ^struct {
dwDecryptionError : u32,
dwHashOffset : u32,
cbHash : u32,
};
EFS_ENCRYPTION_STATUS_INFO :: struct {
bHasCurrentKey : BOOL,
dwEncryptionError : u32,
};
PEFS_ENCRYPTION_STATUS_INFO :: ^struct {
bHasCurrentKey : BOOL,
dwEncryptionError : u32,
};
ENCRYPTION_CERTIFICATE :: struct {
cbTotalLength : u32,
pUserSid : ^SID,
pCertBlob : PEFS_CERTIFICATE_BLOB,
};
PENCRYPTION_CERTIFICATE :: ^struct {
cbTotalLength : u32,
pUserSid : ^SID,
pCertBlob : PEFS_CERTIFICATE_BLOB,
};
ENCRYPTION_CERTIFICATE_HASH :: struct {
cbTotalLength : u32,
pUserSid : ^SID,
pHash : PEFS_HASH_BLOB,
lpDisplayInformation : LPWSTR,
};
PENCRYPTION_CERTIFICATE_HASH :: ^struct {
cbTotalLength : u32,
pUserSid : ^SID,
pHash : PEFS_HASH_BLOB,
lpDisplayInformation : LPWSTR,
};
ENCRYPTION_CERTIFICATE_HASH_LIST :: struct {
nCert_Hash : u32,
pUsers : ^PENCRYPTION_CERTIFICATE_HASH,
};
PENCRYPTION_CERTIFICATE_HASH_LIST :: ^struct {
nCert_Hash : u32,
pUsers : ^PENCRYPTION_CERTIFICATE_HASH,
};
ENCRYPTION_CERTIFICATE_LIST :: struct {
nUsers : u32,
pUsers : ^PENCRYPTION_CERTIFICATE,
};
PENCRYPTION_CERTIFICATE_LIST :: ^struct {
nUsers : u32,
pUsers : ^PENCRYPTION_CERTIFICATE,
};
ENCRYPTED_FILE_METADATA_SIGNATURE :: struct {
dwEfsAccessType : u32,
pCertificatesAdded : PENCRYPTION_CERTIFICATE_HASH_LIST,
pEncryptionCertificate : PENCRYPTION_CERTIFICATE,
pEfsStreamSignature : PEFS_RPC_BLOB,
};
PENCRYPTED_FILE_METADATA_SIGNATURE :: ^struct {
dwEfsAccessType : u32,
pCertificatesAdded : PENCRYPTION_CERTIFICATE_HASH_LIST,
pEncryptionCertificate : PENCRYPTION_CERTIFICATE,
pEfsStreamSignature : PEFS_RPC_BLOB,
};
ENCRYPTION_PROTECTOR :: struct {
cbTotalLength : u32,
pUserSid : ^SID,
lpProtectorDescriptor : LPWSTR,
};
PENCRYPTION_PROTECTOR :: ^struct {
cbTotalLength : u32,
pUserSid : ^SID,
lpProtectorDescriptor : LPWSTR,
};
ENCRYPTION_PROTECTOR_LIST :: struct {
nProtectors : u32,
pProtectors : ^PENCRYPTION_PROTECTOR,
};
PENCRYPTION_PROTECTOR_LIST :: ^struct {
nProtectors : u32,
pProtectors : ^PENCRYPTION_PROTECTOR,
};
RPC_IMPORT_CONTEXT_P :: struct {
LookupContext : RPC_NS_HANDLE,
ProposedHandle : RPC_BINDING_HANDLE,
Bindings : ^RPC_BINDING_VECTOR,
};
PRPC_IMPORT_CONTEXT_P :: ^struct {
LookupContext : RPC_NS_HANDLE,
ProposedHandle : RPC_BINDING_HANDLE,
Bindings : ^RPC_BINDING_VECTOR,
};
byte :: u8;
cs_byte :: byte;
boolean :: u8;
hyper :: f64;
MIDL_uhyper :: f64;
NDR_CCONTEXT :: rawptr;
NDR_SCONTEXT :: ^struct {
pad : [2]rawptr,
userContext : rawptr,
};
NDR_RUNDOWN :: proc(context_ : rawptr);
NDR_NOTIFY_ROUTINE :: proc(void);
NDR_NOTIFY2_ROUTINE :: proc(flag : boolean);
SCONTEXT_QUEUE :: struct {
NumberOfObjects : u64,
ArrayOfObjects : ^NDR_SCONTEXT,
};
PSCONTEXT_QUEUE :: ^struct {
NumberOfObjects : u64,
ArrayOfObjects : ^NDR_SCONTEXT,
};
error_status_t :: u64;
RPC_BUFPTR :: cstring;
RPC_LENGTH :: u64;
EXPR_EVAL :: proc(^MIDL_STUB_MESSAGE);
PFORMAT_STRING :: cstring;
ARRAY_INFO :: struct {
Dimension : i64,
BufferConformanceMark : ^u64,
BufferVarianceMark : ^u64,
MaxCountArray : ^u64,
OffsetArray : ^u64,
ActualCountArray : ^u64,
};
PARRAY_INFO :: ^struct {
Dimension : i64,
BufferConformanceMark : ^u64,
BufferVarianceMark : ^u64,
MaxCountArray : ^u64,
OffsetArray : ^u64,
ActualCountArray : ^u64,
};
_NDR_ASYNC_MESSAGE :: struct {};
PNDR_ASYNC_MESSAGE :: ^_NDR_ASYNC_MESSAGE;
_NDR_CORRELATION_INFO :: struct {};
PNDR_CORRELATION_INFO :: ^_NDR_CORRELATION_INFO;
PFORMAT_STRING :: cstring;
MIDL_SYNTAX_INFO :: struct {};
PMIDL_SYNTAX_INFO :: ^MIDL_SYNTAX_INFO;
NDR_ALLOC_ALL_NODES_CONTEXT :: struct {};
NDR_POINTER_QUEUE_STATE :: struct {};
_NDR_PROC_CONTEXT :: struct {};
MIDL_STUB_MESSAGE :: struct {
RpcMsg : PRPC_MESSAGE,
Buffer : cstring,
BufferStart : cstring,
BufferEnd : cstring,
BufferMark : cstring,
BufferLength : u64,
MemorySize : u64,
Memory : cstring,
IsClient : u8,
Pad : u8,
uFlags2 : u16,
ReuseBuffer : i32,
pAllocAllNodesContext : ^NDR_ALLOC_ALL_NODES_CONTEXT,
pPointerQueueState : ^NDR_POINTER_QUEUE_STATE,
IgnoreEmbeddedPointers : i32,
PointerBufferMark : cstring,
CorrDespIncrement : u8,
uFlags : u8,
UniquePtrCount : u16,
MaxCount : ULONG_PTR,
Offset : u64,
ActualCount : u64,
pfnAllocate : (proc(uint) -> rawptr),
pfnFree : proc(rawptr),
StackTop : cstring,
pPresentedType : cstring,
pTransmitType : cstring,
SavedHandle : handle_t,
StubDesc : ^MIDL_STUB_DESC,
FullPtrXlatTables : ^FULL_PTR_XLAT_TABLES,
FullPtrRefId : u64,
PointerLength : u64,
fInDontFree : ,
fDontCallFreeInst : ,
fUnused1 : ,
fHasReturn : ,
fHasExtensions : ,
fHasNewCorrDesc : ,
fIsIn : ,
fIsOut : ,
fIsOicf : ,
fBufferValid : ,
fHasMemoryValidateCallback : ,
fInFree : ,
fNeedMCCP : ,
fUnused2 : ,
fUnused3 : ,
dwDestContext : u64,
pvDestContext : rawptr,
SavedContextHandles : ^NDR_SCONTEXT,
ParamNumber : i64,
pRpcChannelBuffer : ^IRpcChannelBuffer,
pArrayInfo : PARRAY_INFO,
SizePtrCountArray : ^u64,
SizePtrOffsetArray : ^u64,
SizePtrLengthArray : ^u64,
pArgQueue : rawptr,
dwStubPhase : u64,
LowStackMark : rawptr,
pAsyncMsg : PNDR_ASYNC_MESSAGE,
pCorrInfo : PNDR_CORRELATION_INFO,
pCorrMemory : cstring,
pMemoryList : rawptr,
pCSInfo : INT_PTR,
ConformanceMark : cstring,
VarianceMark : cstring,
Unused : INT_PTR,
pContext : ^_NDR_PROC_CONTEXT,
ContextHandleHash : rawptr,
pUserMarshalList : rawptr,
Reserved51_3 : INT_PTR,
Reserved51_4 : INT_PTR,
Reserved51_5 : INT_PTR,
};
PMIDL_STUB_MESSAGE :: ^struct {
RpcMsg : PRPC_MESSAGE,
Buffer : cstring,
BufferStart : cstring,
BufferEnd : cstring,
BufferMark : cstring,
BufferLength : u64,
MemorySize : u64,
Memory : cstring,
IsClient : u8,
Pad : u8,
uFlags2 : u16,
ReuseBuffer : i32,
pAllocAllNodesContext : ^NDR_ALLOC_ALL_NODES_CONTEXT,
pPointerQueueState : ^NDR_POINTER_QUEUE_STATE,
IgnoreEmbeddedPointers : i32,
PointerBufferMark : cstring,
CorrDespIncrement : u8,
uFlags : u8,
UniquePtrCount : u16,
MaxCount : ULONG_PTR,
Offset : u64,
ActualCount : u64,
pfnAllocate : (proc(uint) -> rawptr),
pfnFree : proc(rawptr),
StackTop : cstring,
pPresentedType : cstring,
pTransmitType : cstring,
SavedHandle : handle_t,
StubDesc : ^MIDL_STUB_DESC,
FullPtrXlatTables : ^FULL_PTR_XLAT_TABLES,
FullPtrRefId : u64,
PointerLength : u64,
fInDontFree : ,
fDontCallFreeInst : ,
fUnused1 : ,
fHasReturn : ,
fHasExtensions : ,
fHasNewCorrDesc : ,
fIsIn : ,
fIsOut : ,
fIsOicf : ,
fBufferValid : ,
fHasMemoryValidateCallback : ,
fInFree : ,
fNeedMCCP : ,
fUnused2 : ,
fUnused3 : ,
dwDestContext : u64,
pvDestContext : rawptr,
SavedContextHandles : ^NDR_SCONTEXT,
ParamNumber : i64,
pRpcChannelBuffer : ^IRpcChannelBuffer,
pArrayInfo : PARRAY_INFO,
SizePtrCountArray : ^u64,
SizePtrOffsetArray : ^u64,
SizePtrLengthArray : ^u64,
pArgQueue : rawptr,
dwStubPhase : u64,
LowStackMark : rawptr,
pAsyncMsg : PNDR_ASYNC_MESSAGE,
pCorrInfo : PNDR_CORRELATION_INFO,
pCorrMemory : cstring,
pMemoryList : rawptr,
pCSInfo : INT_PTR,
ConformanceMark : cstring,
VarianceMark : cstring,
Unused : INT_PTR,
pContext : ^_NDR_PROC_CONTEXT,
ContextHandleHash : rawptr,
pUserMarshalList : rawptr,
Reserved51_3 : INT_PTR,
Reserved51_4 : INT_PTR,
Reserved51_5 : INT_PTR,
};
MIDL_STUB_MESSAGE :: struct {};
PMIDL_STUB_MESSAGE :: ^MIDL_STUB_MESSAGE;
GENERIC_BINDING_ROUTINE :: (proc(rawptr) -> rawptr);
GENERIC_UNBIND_ROUTINE :: proc(rawptr, cstring);
GENERIC_BINDING_ROUTINE_PAIR :: struct {
pfnBind : GENERIC_BINDING_ROUTINE,
pfnUnbind : GENERIC_UNBIND_ROUTINE,
};
PGENERIC_BINDING_ROUTINE_PAIR :: ^struct {
pfnBind : GENERIC_BINDING_ROUTINE,
pfnUnbind : GENERIC_UNBIND_ROUTINE,
};
GENERIC_BINDING_INFO :: struct {
pObj : rawptr,
Size : u32,
pfnBind : GENERIC_BINDING_ROUTINE,
pfnUnbind : GENERIC_UNBIND_ROUTINE,
};
PGENERIC_BINDING_INFO :: ^struct {
pObj : rawptr,
Size : u32,
pfnBind : GENERIC_BINDING_ROUTINE,
pfnUnbind : GENERIC_UNBIND_ROUTINE,
};
XMIT_HELPER_ROUTINE :: proc(PMIDL_STUB_MESSAGE);
XMIT_ROUTINE_QUINTUPLE :: struct {
pfnTranslateToXmit : XMIT_HELPER_ROUTINE,
pfnTranslateFromXmit : XMIT_HELPER_ROUTINE,
pfnFreeXmit : XMIT_HELPER_ROUTINE,
pfnFreeInst : XMIT_HELPER_ROUTINE,
};
PXMIT_ROUTINE_QUINTUPLE :: ^struct {
pfnTranslateToXmit : XMIT_HELPER_ROUTINE,
pfnTranslateFromXmit : XMIT_HELPER_ROUTINE,
pfnFreeXmit : XMIT_HELPER_ROUTINE,
pfnFreeInst : XMIT_HELPER_ROUTINE,
};
USER_MARSHAL_SIZING_ROUTINE :: (proc(^u64, u64, rawptr) -> u64);
USER_MARSHAL_MARSHALLING_ROUTINE :: (proc(^u64, cstring, rawptr) -> cstring);
USER_MARSHAL_UNMARSHALLING_ROUTINE :: (proc(^u64, cstring, rawptr) -> cstring);
USER_MARSHAL_FREEING_ROUTINE :: proc(^u64, rawptr);
USER_MARSHAL_ROUTINE_QUADRUPLE :: struct {
pfnBufferSize : USER_MARSHAL_SIZING_ROUTINE,
pfnMarshall : USER_MARSHAL_MARSHALLING_ROUTINE,
pfnUnmarshall : USER_MARSHAL_UNMARSHALLING_ROUTINE,
pfnFree : USER_MARSHAL_FREEING_ROUTINE,
};
USER_MARSHAL_CB_TYPE :: enum {
USER_MARSHAL_CB_BUFFER_SIZE,
USER_MARSHAL_CB_MARSHALL,
USER_MARSHAL_CB_UNMARSHALL,
USER_MARSHAL_CB_FREE,
};
USER_MARSHAL_CB :: struct {
Flags : u64,
pStubMsg : PMIDL_STUB_MESSAGE,
pReserve : PFORMAT_STRING,
Signature : u64,
CBType : USER_MARSHAL_CB_TYPE,
pFormat : PFORMAT_STRING,
pTypeFormat : PFORMAT_STRING,
};
MALLOC_FREE_STRUCT :: struct {
pfnAllocate : (proc(uint) -> rawptr),
pfnFree : proc(rawptr),
};
COMM_FAULT_OFFSETS :: struct {
CommOffset : i16,
FaultOffset : i16,
};
IDL_CS_CONVERT :: enum {
IDL_CS_NO_CONVERT,
IDL_CS_IN_PLACE_CONVERT,
IDL_CS_NEW_BUFFER_CONVERT,
};
CS_TYPE_NET_SIZE_ROUTINE :: proc(hBinding : RPC_BINDING_HANDLE, ulNetworkCodeSet : u64, ulLocalBufferSize : u64, conversionType : ^IDL_CS_CONVERT, pulNetworkBufferSize : ^u64, pStatus : ^error_status_t);
CS_TYPE_LOCAL_SIZE_ROUTINE :: proc(hBinding : RPC_BINDING_HANDLE, ulNetworkCodeSet : u64, ulNetworkBufferSize : u64, conversionType : ^IDL_CS_CONVERT, pulLocalBufferSize : ^u64, pStatus : ^error_status_t);
CS_TYPE_TO_NETCS_ROUTINE :: proc(hBinding : RPC_BINDING_HANDLE, ulNetworkCodeSet : u64, pLocalData : rawptr, ulLocalDataLength : u64, pNetworkData : ^byte, pulNetworkDataLength : ^u64, pStatus : ^error_status_t);
CS_TYPE_FROM_NETCS_ROUTINE :: proc(hBinding : RPC_BINDING_HANDLE, ulNetworkCodeSet : u64, pNetworkData : ^byte, ulNetworkDataLength : u64, ulLocalBufferSize : u64, pLocalData : rawptr, pulLocalDataLength : ^u64, pStatus : ^error_status_t);
CS_TAG_GETTING_ROUTINE :: proc(hBinding : RPC_BINDING_HANDLE, fServerSide : i32, pulSendingTag : ^u64, pulDesiredReceivingTag : ^u64, pulReceivingTag : ^u64, pStatus : ^error_status_t);
NDR_CS_SIZE_CONVERT_ROUTINES :: struct {
pfnNetSize : CS_TYPE_NET_SIZE_ROUTINE,
pfnToNetCs : CS_TYPE_TO_NETCS_ROUTINE,
pfnLocalSize : CS_TYPE_LOCAL_SIZE_ROUTINE,
pfnFromNetCs : CS_TYPE_FROM_NETCS_ROUTINE,
};
NDR_CS_ROUTINES :: struct {
pSizeConvertRoutines : ^NDR_CS_SIZE_CONVERT_ROUTINES,
pTagGettingRoutines : ^CS_TAG_GETTING_ROUTINE,
};
NDR_EXPR_DESC :: struct {
pOffset : ^u16,
pFormatExpr : PFORMAT_STRING,
};
MIDL_STUB_DESC :: struct {
RpcInterfaceInformation : rawptr,
pfnAllocate : (proc(uint) -> rawptr),
pfnFree : proc(rawptr),
IMPLICIT_HANDLE_INFO : struct #raw_union {
pAutoHandle : ^handle_t,
pPrimitiveHandle : ^handle_t,
pGenericBindingInfo : PGENERIC_BINDING_INFO,
},
apfnNdrRundownRoutines : ^NDR_RUNDOWN,
aGenericBindingRoutinePairs : ^GENERIC_BINDING_ROUTINE_PAIR,
apfnExprEval : ^EXPR_EVAL,
aXmitQuintuple : ^XMIT_ROUTINE_QUINTUPLE,
pFormatTypes : cstring,
fCheckBounds : i32,
Version : u64,
pMallocFreeStruct : ^MALLOC_FREE_STRUCT,
MIDLVersion : i64,
CommFaultOffsets : ^COMM_FAULT_OFFSETS,
aUserMarshalQuadruple : ^USER_MARSHAL_ROUTINE_QUADRUPLE,
NotifyRoutineTable : ^NDR_NOTIFY_ROUTINE,
mFlags : ULONG_PTR,
CsRoutineTables : ^NDR_CS_ROUTINES,
ProxyServerInfo : rawptr,
pExprInfo : ^NDR_EXPR_DESC,
};
PMIDL_STUB_DESC :: ^MIDL_STUB_DESC;
PMIDL_XMIT_TYPE :: rawptr;
STUB_THUNK :: proc(PMIDL_STUB_MESSAGE);
SERVER_ROUTINE :: (proc() -> i64);
MIDL_METHOD_PROPERTY :: struct {
Id : u64,
Value : ULONG_PTR,
};
PMIDL_METHOD_PROPERTY :: ^struct {
Id : u64,
Value : ULONG_PTR,
};
MIDL_METHOD_PROPERTY_MAP :: struct {
Count : u64,
Properties : ^MIDL_METHOD_PROPERTY,
};
PMIDL_METHOD_PROPERTY_MAP :: ^struct {
Count : u64,
Properties : ^MIDL_METHOD_PROPERTY,
};
MIDL_INTERFACE_METHOD_PROPERTIES :: struct {
MethodCount : u16,
MethodProperties : ^^MIDL_METHOD_PROPERTY_MAP,
};
MIDL_SERVER_INFO :: struct {
pStubDesc : PMIDL_STUB_DESC,
DispatchTable : ^SERVER_ROUTINE,
ProcString : PFORMAT_STRING,
FmtStringOffset : ^u16,
ThunkTable : ^STUB_THUNK,
pTransferSyntax : PRPC_SYNTAX_IDENTIFIER,
nCount : ULONG_PTR,
pSyntaxInfo : PMIDL_SYNTAX_INFO,
};
PMIDL_SERVER_INFO :: ^struct {
pStubDesc : PMIDL_STUB_DESC,
DispatchTable : ^SERVER_ROUTINE,
ProcString : PFORMAT_STRING,
FmtStringOffset : ^u16,
ThunkTable : ^STUB_THUNK,
pTransferSyntax : PRPC_SYNTAX_IDENTIFIER,
nCount : ULONG_PTR,
pSyntaxInfo : PMIDL_SYNTAX_INFO,
};
MIDL_STUBLESS_PROXY_INFO :: struct {
pStubDesc : PMIDL_STUB_DESC,
ProcFormatString : PFORMAT_STRING,
FormatStringOffset : ^u16,
pTransferSyntax : PRPC_SYNTAX_IDENTIFIER,
nCount : ULONG_PTR,
pSyntaxInfo : PMIDL_SYNTAX_INFO,
};
PMIDL_STUBLESS_PROXY_INFO :: ^MIDL_STUBLESS_PROXY_INFO;
MIDL_SYNTAX_INFO :: struct {
TransferSyntax : RPC_SYNTAX_IDENTIFIER,
DispatchTable : ^RPC_DISPATCH_TABLE,
ProcString : PFORMAT_STRING,
FmtStringOffset : ^u16,
TypeString : PFORMAT_STRING,
aUserMarshalQuadruple : rawptr,
pMethodProperties : ^MIDL_INTERFACE_METHOD_PROPERTIES,
pReserved2 : ULONG_PTR,
};
PMIDL_SYNTAX_INFO :: ^struct {
TransferSyntax : RPC_SYNTAX_IDENTIFIER,
DispatchTable : ^RPC_DISPATCH_TABLE,
ProcString : PFORMAT_STRING,
FmtStringOffset : ^u16,
TypeString : PFORMAT_STRING,
aUserMarshalQuadruple : rawptr,
pMethodProperties : ^MIDL_INTERFACE_METHOD_PROPERTIES,
pReserved2 : ULONG_PTR,
};
PARAM_OFFSETTABLE :: ^u16;
PPARAM_OFFSETTABLE :: ^u16;
CLIENT_CALL_RETURN :: struct #raw_union {
Pointer : rawptr,
Simple : LONG_PTR,
};
XLAT_SIDE :: enum {
XLAT_SERVER = 1,
XLAT_CLIENT,
};
FULL_PTR_XLAT_TABLES :: struct {
RefIdToPointer : rawptr,
PointerToRefId : rawptr,
NextRefId : u64,
XlatSide : XLAT_SIDE,
};
PFULL_PTR_XLAT_TABLES :: ^struct {
RefIdToPointer : rawptr,
PointerToRefId : rawptr,
NextRefId : u64,
XlatSide : XLAT_SIDE,
};
system_handle_t :: enum {
SYSTEM_HANDLE_FILE = 0,
SYSTEM_HANDLE_SEMAPHORE = 1,
SYSTEM_HANDLE_EVENT = 2,
SYSTEM_HANDLE_MUTEX = 3,
SYSTEM_HANDLE_PROCESS = 4,
SYSTEM_HANDLE_TOKEN = 5,
SYSTEM_HANDLE_SECTION = 6,
SYSTEM_HANDLE_REG_KEY = 7,
SYSTEM_HANDLE_THREAD = 8,
SYSTEM_HANDLE_COMPOSITION_OBJECT = 9,
SYSTEM_HANDLE_SOCKET = 10,
SYSTEM_HANDLE_JOB = 11,
SYSTEM_HANDLE_PIPE = 12,
SYSTEM_HANDLE_MAX = 12,
SYSTEM_HANDLE_INVALID = 0xFF,
};
_ :: enum #export {enum {
MidlInterceptionInfoVersionOne = 1,
};
_ :: enum #export {enum {
MidlWinrtTypeSerializationInfoVersionOne = 1,
};
MIDL_INTERCEPTION_INFO :: struct {
Version : u64,
ProcString : PFORMAT_STRING,
ProcFormatOffsetTable : ^u16,
ProcCount : u64,
TypeString : PFORMAT_STRING,
};
PMIDL_INTERCEPTION_INFO :: ^struct {
Version : u64,
ProcString : PFORMAT_STRING,
ProcFormatOffsetTable : ^u16,
ProcCount : u64,
TypeString : PFORMAT_STRING,
};
MIDL_WINRT_TYPE_SERIALIZATION_INFO :: struct {
Version : u64,
TypeFormatString : PFORMAT_STRING,
FormatStringSize : u16,
TypeOffset : u16,
StubDesc : PMIDL_STUB_DESC,
};
PMIDL_WINRT_TYPE_SERIALIZATION_INFO :: ^struct {
Version : u64,
TypeFormatString : PFORMAT_STRING,
FormatStringSize : u16,
TypeOffset : u16,
StubDesc : PMIDL_STUB_DESC,
};
STUB_PHASE :: enum {
STUB_UNMARSHAL,
STUB_CALL_SERVER,
STUB_MARSHAL,
STUB_CALL_SERVER_NO_HRESULT,
};
PROXY_PHASE :: enum {
PROXY_CALCSIZE,
PROXY_GETBUFFER,
PROXY_MARSHAL,
PROXY_SENDRECEIVE,
PROXY_UNMARSHAL,
};
IRpcStubBuffer :: struct {};
RPC_SS_THREAD_HANDLE :: rawptr;
RPC_CLIENT_ALLOC :: #type (proc(Size : uint) -> rawptr);
RPC_CLIENT_FREE :: #type proc(Ptr : rawptr);
NDR_USER_MARSHAL_INFO_LEVEL1 :: struct {
Buffer : rawptr,
BufferSize : u64,
pfnAllocate : (proc(uint) -> rawptr),
pfnFree : proc(rawptr),
pRpcChannelBuffer : ^IRpcChannelBuffer,
Reserved : [5]ULONG_PTR,
};
NDR_USER_MARSHAL_INFO :: struct {
InformationLevel : u64,
u : struct #raw_union {
Level1 : NDR_USER_MARSHAL_INFO_LEVEL1,
},
};
OLECHAR :: WCHAR;
LPOLESTR :: ^OLECHAR;
LPCOLESTR :: ^OLECHAR;
UCHAR :: u8;
SHORT :: i16;
USHORT :: u16;
ULONG :: u32;
DOUBLE :: f64;
COAUTHIDENTITY :: struct {
User : ^USHORT,
UserLength : ULONG,
Domain : ^USHORT,
DomainLength : ULONG,
Password : ^USHORT,
PasswordLength : ULONG,
Flags : ULONG,
};
COAUTHINFO :: struct {
dwAuthnSvc : u32,
dwAuthzSvc : u32,
pwszServerPrincName : LPWSTR,
dwAuthnLevel : u32,
dwImpersonationLevel : u32,
pAuthIdentityData : ^COAUTHIDENTITY,
dwCapabilities : u32,
};
SCODE :: LONG;
PSCODE :: ^SCODE;
MEMCTX :: enum {
MEMCTX_TASK = 1,
MEMCTX_SHARED = 2,
MEMCTX_MACSYSTEM = 3,
MEMCTX_UNKNOWN = -1,
MEMCTX_SAME = -2,
};
CLSCTX :: enum {
CLSCTX_INPROC_SERVER = 0x1,
CLSCTX_INPROC_HANDLER = 0x2,
CLSCTX_LOCAL_SERVER = 0x4,
CLSCTX_INPROC_SERVER16 = 0x8,
CLSCTX_REMOTE_SERVER = 0x10,
CLSCTX_INPROC_HANDLER16 = 0x20,
CLSCTX_RESERVED1 = 0x40,
CLSCTX_RESERVED2 = 0x80,
CLSCTX_RESERVED3 = 0x100,
CLSCTX_RESERVED4 = 0x200,
CLSCTX_NO_CODE_DOWNLOAD = 0x400,
CLSCTX_RESERVED5 = 0x800,
CLSCTX_NO_CUSTOM_MARSHAL = 0x1000,
CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000,
CLSCTX_NO_FAILURE_LOG = 0x4000,
CLSCTX_DISABLE_AAA = 0x8000,
CLSCTX_ENABLE_AAA = 0x10000,
CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000,
CLSCTX_ACTIVATE_X86_SERVER = 0x40000,
CLSCTX_ACTIVATE_32_BIT_SERVER = CLSCTX_ACTIVATE_X86_SERVER,
CLSCTX_ACTIVATE_64_BIT_SERVER = 0x80000,
CLSCTX_ENABLE_CLOAKING = 0x100000,
CLSCTX_APPCONTAINER = 0x400000,
CLSCTX_ACTIVATE_AAA_AS_IU = 0x800000,
CLSCTX_RESERVED6 = 0x1000000,
CLSCTX_ACTIVATE_ARM32_SERVER = 0x2000000,
CLSCTX_PS_DLL = 0x80000000,
};
MSHLFLAGS :: enum {
MSHLFLAGS_NORMAL = 0,
MSHLFLAGS_TABLESTRONG = 1,
MSHLFLAGS_TABLEWEAK = 2,
MSHLFLAGS_NOPING = 4,
MSHLFLAGS_RESERVED1 = 8,
MSHLFLAGS_RESERVED2 = 16,
MSHLFLAGS_RESERVED3 = 32,
MSHLFLAGS_RESERVED4 = 64,
};
MSHCTX :: enum {
MSHCTX_LOCAL = 0,
MSHCTX_NOSHAREDMEM = 1,
MSHCTX_DIFFERENTMACHINE = 2,
MSHCTX_INPROC = 3,
MSHCTX_CROSSCTX = 4,
MSHCTX_RESERVED1 = 5,
};
BYTE_BLOB :: struct {
clSize : ULONG,
abData : [1]byte,
};
UP_BYTE_BLOB :: ^BYTE_BLOB;
WORD_BLOB :: struct {
clSize : ULONG,
asData : [1]u16,
};
UP_WORD_BLOB :: ^WORD_BLOB;
DWORD_BLOB :: struct {
clSize : ULONG,
alData : [1]ULONG,
};
UP_DWORD_BLOB :: ^DWORD_BLOB;
FLAGGED_BYTE_BLOB :: struct {
fFlags : ULONG,
clSize : ULONG,
abData : [1]byte,
};
UP_FLAGGED_BYTE_BLOB :: ^FLAGGED_BYTE_BLOB;
FLAGGED_WORD_BLOB :: struct {
fFlags : ULONG,
clSize : ULONG,
asData : [1]u16,
};
UP_FLAGGED_WORD_BLOB :: ^FLAGGED_WORD_BLOB;
BYTE_SIZEDARR :: struct {
clSize : ULONG,
pData : ^byte,
};
WORD_SIZEDARR :: struct {
clSize : ULONG,
pData : ^u16,
};
DWORD_SIZEDARR :: struct {
clSize : ULONG,
pData : ^ULONG,
};
HYPER_SIZEDARR :: struct {
clSize : ULONG,
pData : ^hyper,
};
BOOLEAN :: boolean;
BLOB :: struct {
cbSize : ULONG,
pBlobData : ^BYTE,
};
LPBLOB :: ^BLOB;
RemHGLOBAL :: struct {
fNullHGlobal : LONG,
cbData : ULONG,
data : [1]byte,
};
RemHMETAFILEPICT :: struct {
mm : LONG,
xExt : LONG,
yExt : LONG,
cbData : ULONG,
data : [1]byte,
};
RemHENHMETAFILE :: struct {
cbData : ULONG,
data : [1]byte,
};
RemHBITMAP :: struct {
cbData : ULONG,
data : [1]byte,
};
RemHPALETTE :: struct {
cbData : ULONG,
data : [1]byte,
};
RemHBRUSH :: struct {
cbData : ULONG,
data : [1]byte,
};
DVASPECT :: enum {
DVASPECT_CONTENT = 1,
DVASPECT_THUMBNAIL = 2,
DVASPECT_ICON = 4,
DVASPECT_DOCPRINT = 8,
};
STGC :: enum {
STGC_DEFAULT = 0,
STGC_OVERWRITE = 1,
STGC_ONLYIFCURRENT = 2,
STGC_DANGEROUSLYCOMMITMERELYTODISKCACHE = 4,
STGC_CONSOLIDATE = 8,
};
STGMOVE :: enum {
STGMOVE_MOVE = 0,
STGMOVE_COPY = 1,
STGMOVE_SHALLOWCOPY = 2,
};
STATFLAG :: enum {
STATFLAG_DEFAULT = 0,
STATFLAG_NONAME = 1,
STATFLAG_NOOPEN = 2,
};
HCONTEXT :: rawptr;
LCID :: u32;
LANGID :: USHORT;
userCLIPFORMAT :: struct {
fContext : LONG,
u : struct #raw_union {
dwValue : u32,
pwszName : ^u16,
},
};
wireCLIPFORMAT :: ^userCLIPFORMAT;
CLIPFORMAT :: u16;
GDI_NONREMOTE :: struct {
fContext : LONG,
u : struct #raw_union {
hInproc : LONG,
hRemote : ^DWORD_BLOB,
},
};
userHGLOBAL :: struct {
fContext : LONG,
u : struct #raw_union {
hInproc : LONG,
hRemote : ^FLAGGED_BYTE_BLOB,
hInproc64 : i64,
},
};
wireHGLOBAL :: ^userHGLOBAL;
userHMETAFILE :: struct {
fContext : LONG,
u : struct #raw_union {
hInproc : LONG,
hRemote : ^BYTE_BLOB,
hInproc64 : i64,
},
};
remoteMETAFILEPICT :: struct {
mm : LONG,
xExt : LONG,
yExt : LONG,
hMF : ^userHMETAFILE,
};
userHMETAFILEPICT :: struct {
fContext : LONG,
u : struct #raw_union {
hInproc : LONG,
hRemote : ^remoteMETAFILEPICT,
hInproc64 : i64,
},
};
userHENHMETAFILE :: struct {
fContext : LONG,
u : struct #raw_union {
hInproc : LONG,
hRemote : ^BYTE_BLOB,
hInproc64 : i64,
},
};
userBITMAP :: struct {
bmType : LONG,
bmWidth : LONG,
bmHeight : LONG,
bmWidthBytes : LONG,
bmPlanes : u16,
bmBitsPixel : u16,
cbSize : ULONG,
pBuffer : [1]byte,
};
userHBITMAP :: struct {
fContext : LONG,
u : struct #raw_union {
hInproc : LONG,
hRemote : ^userBITMAP,
hInproc64 : i64,
},
};
userHPALETTE :: struct {
fContext : LONG,
u : struct #raw_union {
hInproc : LONG,
hRemote : ^LOGPALETTE,
hInproc64 : i64,
},
};
RemotableHandle :: struct {
fContext : LONG,
u : struct #raw_union {
hInproc : LONG,
hRemote : LONG,
},
};
wireHWND :: ^RemotableHandle;
wireHMENU :: ^RemotableHandle;
wireHACCEL :: ^RemotableHandle;
wireHBRUSH :: ^RemotableHandle;
wireHFONT :: ^RemotableHandle;
wireHDC :: ^RemotableHandle;
wireHICON :: ^RemotableHandle;
wireHRGN :: ^RemotableHandle;
wireHMONITOR :: ^RemotableHandle;
wireHBITMAP :: ^userHBITMAP;
wireHPALETTE :: ^userHPALETTE;
wireHENHMETAFILE :: ^userHENHMETAFILE;
wireHMETAFILE :: ^userHMETAFILE;
wireHMETAFILEPICT :: ^userHMETAFILEPICT;
HMETAFILEPICT :: rawptr;
DATE :: f64;
CY :: struct #raw_union {
s : struct {
Lo : ULONG,
Hi : LONG,
},
int64 : LONGLONG,
};
LPCY :: ^CY;
DECIMAL :: struct {
wReserved : USHORT,
u : struct #raw_union {
s : struct {
scale : BYTE,
sign : BYTE,
},
signscale : USHORT,
},
Hi32 : ULONG,
u2 : struct #raw_union {
s2 : struct {
Lo32 : ULONG,
Mid32 : ULONG,
},
Lo64 : ULONGLONG,
},
};
LPDECIMAL :: ^DECIMAL;
wireBSTR :: ^FLAGGED_WORD_BLOB;
BSTR :: ^OLECHAR;
LPBSTR :: ^BSTR;
VARIANT_BOOL :: i16;
BSTRBLOB :: struct {
cbSize : ULONG,
pData : ^BYTE,
};
LPBSTRBLOB :: ^BSTRBLOB;
CLIPDATA :: struct {
cbSize : ULONG,
ulClipFmt : LONG,
pClipData : ^BYTE,
};
VARTYPE :: u16;
VARENUM :: enum {
VT_EMPTY = 0,
VT_NULL = 1,
VT_I2 = 2,
VT_I4 = 3,
VT_R4 = 4,
VT_R8 = 5,
VT_CY = 6,
VT_DATE = 7,
VT_BSTR = 8,
VT_DISPATCH = 9,
VT_ERROR = 10,
VT_BOOL = 11,
VT_VARIANT = 12,
VT_UNKNOWN = 13,
VT_DECIMAL = 14,
VT_I1 = 16,
VT_UI1 = 17,
VT_UI2 = 18,
VT_UI4 = 19,
VT_I8 = 20,
VT_UI8 = 21,
VT_INT = 22,
VT_UINT = 23,
VT_VOID = 24,
VT_HRESULT = 25,
VT_PTR = 26,
VT_SAFEARRAY = 27,
VT_CARRAY = 28,
VT_USERDEFINED = 29,
VT_LPSTR = 30,
VT_LPWSTR = 31,
VT_RECORD = 36,
VT_INT_PTR = 37,
VT_UINT_PTR = 38,
VT_FILETIME = 64,
VT_BLOB = 65,
VT_STREAM = 66,
VT_STORAGE = 67,
VT_STREAMED_OBJECT = 68,
VT_STORED_OBJECT = 69,
VT_BLOB_OBJECT = 70,
VT_CF = 71,
VT_CLSID = 72,
VT_VERSIONED_STREAM = 73,
VT_BSTR_BLOB = 0xfff,
VT_VECTOR = 0x1000,
VT_ARRAY = 0x2000,
VT_BYREF = 0x4000,
VT_RESERVED = 0x8000,
VT_ILLEGAL = 0xffff,
VT_ILLEGALMASKED = 0xfff,
VT_TYPEMASK = 0xfff,
};
PROPID :: ULONG;
PROPERTYKEY :: struct {
fmtid : GUID,
pid : u32,
};
CSPLATFORM :: struct {
dwPlatformId : u32,
dwVersionHi : u32,
dwVersionLo : u32,
dwProcessorArch : u32,
};
QUERYCONTEXT :: struct {
dwContext : u32,
Platform : CSPLATFORM,
Locale : LCID,
dwVersionHi : u32,
dwVersionLo : u32,
};
TYSPEC :: enum {
TYSPEC_CLSID = 0,
TYSPEC_FILEEXT = (TYSPEC_CLSID + 1),
TYSPEC_MIMETYPE = (TYSPEC_FILEEXT + 1),
TYSPEC_FILENAME = (TYSPEC_MIMETYPE + 1),
TYSPEC_PROGID = (TYSPEC_FILENAME + 1),
TYSPEC_PACKAGENAME = (TYSPEC_PROGID + 1),
TYSPEC_OBJECTID = (TYSPEC_PACKAGENAME + 1),
};
uCLSSPEC :: struct {
tyspec : u32,
tagged_union : struct #raw_union {
clsid : CLSID,
pFileExt : LPOLESTR,
pMimeType : LPOLESTR,
pProgId : LPOLESTR,
pFileName : LPOLESTR,
ByName : struct {
pPackageName : LPOLESTR,
PolicyId : GUID,
},
ByObjectId : struct {
ObjectId : GUID,
PolicyId : GUID,
},
},
};
STORAGE_HOTPLUG_INFO :: struct {
Size : u32,
MediaRemovable : BOOLEAN,
MediaHotplug : BOOLEAN,
DeviceHotplug : BOOLEAN,
WriteCacheEnableOverride : BOOLEAN,
};
PSTORAGE_HOTPLUG_INFO :: ^struct {
Size : u32,
MediaRemovable : BOOLEAN,
MediaHotplug : BOOLEAN,
DeviceHotplug : BOOLEAN,
WriteCacheEnableOverride : BOOLEAN,
};
STORAGE_DEVICE_NUMBER :: struct {
DeviceType : u32,
DeviceNumber : u32,
PartitionNumber : u32,
};
PSTORAGE_DEVICE_NUMBER :: ^struct {
DeviceType : u32,
DeviceNumber : u32,
PartitionNumber : u32,
};
STORAGE_DEVICE_NUMBERS :: struct {
Version : u32,
Size : u32,
NumberOfDevices : u32,
Devices : [1]STORAGE_DEVICE_NUMBER,
};
PSTORAGE_DEVICE_NUMBERS :: ^struct {
Version : u32,
Size : u32,
NumberOfDevices : u32,
Devices : [1]STORAGE_DEVICE_NUMBER,
};
STORAGE_DEVICE_NUMBER_EX :: struct {
Version : u32,
Size : u32,
Flags : u32,
DeviceType : u32,
DeviceNumber : u32,
DeviceGuid : GUID,
PartitionNumber : u32,
};
PSTORAGE_DEVICE_NUMBER_EX :: ^struct {
Version : u32,
Size : u32,
Flags : u32,
DeviceType : u32,
DeviceNumber : u32,
DeviceGuid : GUID,
PartitionNumber : u32,
};
STORAGE_BUS_RESET_REQUEST :: struct {
PathId : BYTE,
};
PSTORAGE_BUS_RESET_REQUEST :: ^struct {
PathId : BYTE,
};
STORAGE_BREAK_RESERVATION_REQUEST :: struct {
Length : u32,
_unused : BYTE,
PathId : BYTE,
TargetId : BYTE,
Lun : BYTE,
};
PSTORAGE_BREAK_RESERVATION_REQUEST :: ^struct {
Length : u32,
_unused : BYTE,
PathId : BYTE,
TargetId : BYTE,
Lun : BYTE,
};
PREVENT_MEDIA_REMOVAL :: struct {
PreventMediaRemoval : BOOLEAN,
};
PPREVENT_MEDIA_REMOVAL :: ^struct {
PreventMediaRemoval : BOOLEAN,
};
CLASS_MEDIA_CHANGE_CONTEXT :: struct {
MediaChangeCount : u32,
NewState : u32,
};
PCLASS_MEDIA_CHANGE_CONTEXT :: ^struct {
MediaChangeCount : u32,
NewState : u32,
};
TAPE_STATISTICS :: struct {
Version : u32,
Flags : u32,
RecoveredWrites : LARGE_INTEGER,
UnrecoveredWrites : LARGE_INTEGER,
RecoveredReads : LARGE_INTEGER,
UnrecoveredReads : LARGE_INTEGER,
CompressionRatioReads : BYTE,
CompressionRatioWrites : BYTE,
};
PTAPE_STATISTICS :: ^struct {
Version : u32,
Flags : u32,
RecoveredWrites : LARGE_INTEGER,
UnrecoveredWrites : LARGE_INTEGER,
RecoveredReads : LARGE_INTEGER,
UnrecoveredReads : LARGE_INTEGER,
CompressionRatioReads : BYTE,
CompressionRatioWrites : BYTE,
};
TAPE_GET_STATISTICS :: struct {
Operation : u32,
};
PTAPE_GET_STATISTICS :: ^struct {
Operation : u32,
};
STORAGE_MEDIA_TYPE :: enum {
DDS_4mm = 0x20,
MiniQic,
Travan,
QIC,
MP_8mm,
AME_8mm,
AIT1_8mm,
DLT,
NCTP,
IBM_3480,
IBM_3490E,
IBM_Magstar_3590,
IBM_Magstar_MP,
STK_DATA_D3,
SONY_DTF,
DV_6mm,
DMI,
SONY_D2,
CLEANER_CARTRIDGE,
CD_ROM,
CD_R,
CD_RW,
DVD_ROM,
DVD_R,
DVD_RW,
MO_3_RW,
MO_5_WO,
MO_5_RW,
MO_5_LIMDOW,
PC_5_WO,
PC_5_RW,
PD_5_RW,
ABL_5_WO,
PINNACLE_APEX_5_RW,
SONY_12_WO,
PHILIPS_12_WO,
HITACHI_12_WO,
CYGNET_12_WO,
KODAK_14_WO,
MO_NFR_525,
NIKON_12_RW,
IOMEGA_ZIP,
IOMEGA_JAZ,
SYQUEST_EZ135,
SYQUEST_EZFLYER,
SYQUEST_SYJET,
AVATAR_F2,
MP2_8mm,
DST_S,
DST_M,
DST_L,
VXATape_1,
VXATape_2,
STK_9840,
LTO_Ultrium,
LTO_Accelis,
DVD_RAM,
AIT_8mm,
ADR_1,
ADR_2,
STK_9940,
SAIT,
VXATape,
};
PSTORAGE_MEDIA_TYPE :: ^enum {
DDS_4mm = 0x20,
MiniQic,
Travan,
QIC,
MP_8mm,
AME_8mm,
AIT1_8mm,
DLT,
NCTP,
IBM_3480,
IBM_3490E,
IBM_Magstar_3590,
IBM_Magstar_MP,
STK_DATA_D3,
SONY_DTF,
DV_6mm,
DMI,
SONY_D2,
CLEANER_CARTRIDGE,
CD_ROM,
CD_R,
CD_RW,
DVD_ROM,
DVD_R,
DVD_RW,
MO_3_RW,
MO_5_WO,
MO_5_RW,
MO_5_LIMDOW,
PC_5_WO,
PC_5_RW,
PD_5_RW,
ABL_5_WO,
PINNACLE_APEX_5_RW,
SONY_12_WO,
PHILIPS_12_WO,
HITACHI_12_WO,
CYGNET_12_WO,
KODAK_14_WO,
MO_NFR_525,
NIKON_12_RW,
IOMEGA_ZIP,
IOMEGA_JAZ,
SYQUEST_EZ135,
SYQUEST_EZFLYER,
SYQUEST_SYJET,
AVATAR_F2,
MP2_8mm,
DST_S,
DST_M,
DST_L,
VXATape_1,
VXATape_2,
STK_9840,
LTO_Ultrium,
LTO_Accelis,
DVD_RAM,
AIT_8mm,
ADR_1,
ADR_2,
STK_9940,
SAIT,
VXATape,
};
STORAGE_BUS_TYPE :: enum {
BusTypeUnknown = 0x00,
BusTypeScsi,
BusTypeAtapi,
BusTypeAta,
BusType1394,
BusTypeSsa,
BusTypeFibre,
BusTypeUsb,
BusTypeRAID,
BusTypeiScsi,
BusTypeSas,
BusTypeSata,
BusTypeSd,
BusTypeMmc,
BusTypeVirtual,
BusTypeFileBackedVirtual,
BusTypeSpaces,
BusTypeNvme,
BusTypeSCM,
BusTypeUfs,
BusTypeMax,
BusTypeMaxReserved = 0x7F,
};
PSTORAGE_BUS_TYPE :: ^enum {
BusTypeUnknown = 0x00,
BusTypeScsi,
BusTypeAtapi,
BusTypeAta,
BusType1394,
BusTypeSsa,
BusTypeFibre,
BusTypeUsb,
BusTypeRAID,
BusTypeiScsi,
BusTypeSas,
BusTypeSata,
BusTypeSd,
BusTypeMmc,
BusTypeVirtual,
BusTypeFileBackedVirtual,
BusTypeSpaces,
BusTypeNvme,
BusTypeSCM,
BusTypeUfs,
BusTypeMax,
BusTypeMaxReserved = 0x7F,
};
DEVICE_MEDIA_INFO :: struct {
DeviceSpecific : struct #raw_union {
DiskInfo : struct {
Cylinders : LARGE_INTEGER,
MediaType : STORAGE_MEDIA_TYPE,
TracksPerCylinder : u32,
SectorsPerTrack : u32,
BytesPerSector : u32,
NumberMediaSides : u32,
MediaCharacteristics : u32,
},
RemovableDiskInfo : struct {
Cylinders : LARGE_INTEGER,
MediaType : STORAGE_MEDIA_TYPE,
TracksPerCylinder : u32,
SectorsPerTrack : u32,
BytesPerSector : u32,
NumberMediaSides : u32,
MediaCharacteristics : u32,
},
TapeInfo : struct {
MediaType : STORAGE_MEDIA_TYPE,
MediaCharacteristics : u32,
CurrentBlockSize : u32,
BusType : STORAGE_BUS_TYPE,
BusSpecificData : struct #raw_union {
ScsiInformation : struct {
MediumType : BYTE,
DensityCode : BYTE,
},
},
},
},
};
PDEVICE_MEDIA_INFO :: ^struct {
DeviceSpecific : struct #raw_union {
DiskInfo : struct {
Cylinders : LARGE_INTEGER,
MediaType : STORAGE_MEDIA_TYPE,
TracksPerCylinder : u32,
SectorsPerTrack : u32,
BytesPerSector : u32,
NumberMediaSides : u32,
MediaCharacteristics : u32,
},
RemovableDiskInfo : struct {
Cylinders : LARGE_INTEGER,
MediaType : STORAGE_MEDIA_TYPE,
TracksPerCylinder : u32,
SectorsPerTrack : u32,
BytesPerSector : u32,
NumberMediaSides : u32,
MediaCharacteristics : u32,
},
TapeInfo : struct {
MediaType : STORAGE_MEDIA_TYPE,
MediaCharacteristics : u32,
CurrentBlockSize : u32,
BusType : STORAGE_BUS_TYPE,
BusSpecificData : struct #raw_union {
ScsiInformation : struct {
MediumType : BYTE,
DensityCode : BYTE,
},
},
},
},
};
GET_MEDIA_TYPES :: struct {
DeviceType : u32,
MediaInfoCount : u32,
MediaInfo : [1]DEVICE_MEDIA_INFO,
};
PGET_MEDIA_TYPES :: ^struct {
DeviceType : u32,
MediaInfoCount : u32,
MediaInfo : [1]DEVICE_MEDIA_INFO,
};
STORAGE_PREDICT_FAILURE :: struct {
PredictFailure : u32,
VendorSpecific : [512]BYTE,
};
PSTORAGE_PREDICT_FAILURE :: ^struct {
PredictFailure : u32,
VendorSpecific : [512]BYTE,
};
STORAGE_FAILURE_PREDICTION_CONFIG :: struct {
Version : u32,
Size : u32,
Set : BOOLEAN,
Enabled : BOOLEAN,
Reserved : u16,
};
PSTORAGE_FAILURE_PREDICTION_CONFIG :: ^struct {
Version : u32,
Size : u32,
Set : BOOLEAN,
Enabled : BOOLEAN,
Reserved : u16,
};
STORAGE_QUERY_TYPE :: enum {
PropertyStandardQuery = 0,
PropertyExistsQuery,
PropertyMaskQuery,
PropertyQueryMaxDefined,
};
PSTORAGE_QUERY_TYPE :: ^enum {
PropertyStandardQuery = 0,
PropertyExistsQuery,
PropertyMaskQuery,
PropertyQueryMaxDefined,
};
STORAGE_SET_TYPE :: enum {
PropertyStandardSet = 0,
PropertyExistsSet,
PropertySetMaxDefined,
};
PSTORAGE_SET_TYPE :: ^enum {
PropertyStandardSet = 0,
PropertyExistsSet,
PropertySetMaxDefined,
};
STORAGE_PROPERTY_ID :: enum {
StorageDeviceProperty = 0,
StorageAdapterProperty,
StorageDeviceIdProperty,
StorageDeviceUniqueIdProperty,
StorageDeviceWriteCacheProperty,
StorageMiniportProperty,
StorageAccessAlignmentProperty,
StorageDeviceSeekPenaltyProperty,
StorageDeviceTrimProperty,
StorageDeviceWriteAggregationProperty,
StorageDeviceDeviceTelemetryProperty,
StorageDeviceLBProvisioningProperty,
StorageDevicePowerProperty,
StorageDeviceCopyOffloadProperty,
StorageDeviceResiliencyProperty,
StorageDeviceMediumProductType,
StorageAdapterRpmbProperty,
StorageAdapterCryptoProperty,
StorageDeviceIoCapabilityProperty = 48,
StorageAdapterProtocolSpecificProperty,
StorageDeviceProtocolSpecificProperty,
StorageAdapterTemperatureProperty,
StorageDeviceTemperatureProperty,
StorageAdapterPhysicalTopologyProperty,
StorageDevicePhysicalTopologyProperty,
StorageDeviceAttributesProperty,
StorageDeviceManagementStatus,
StorageAdapterSerialNumberProperty,
StorageDeviceLocationProperty,
StorageDeviceNumaProperty,
StorageDeviceZonedDeviceProperty,
StorageDeviceUnsafeShutdownCount,
StorageDeviceEnduranceProperty,
};
PSTORAGE_PROPERTY_ID :: ^enum {
StorageDeviceProperty = 0,
StorageAdapterProperty,
StorageDeviceIdProperty,
StorageDeviceUniqueIdProperty,
StorageDeviceWriteCacheProperty,
StorageMiniportProperty,
StorageAccessAlignmentProperty,
StorageDeviceSeekPenaltyProperty,
StorageDeviceTrimProperty,
StorageDeviceWriteAggregationProperty,
StorageDeviceDeviceTelemetryProperty,
StorageDeviceLBProvisioningProperty,
StorageDevicePowerProperty,
StorageDeviceCopyOffloadProperty,
StorageDeviceResiliencyProperty,
StorageDeviceMediumProductType,
StorageAdapterRpmbProperty,
StorageAdapterCryptoProperty,
StorageDeviceIoCapabilityProperty = 48,
StorageAdapterProtocolSpecificProperty,
StorageDeviceProtocolSpecificProperty,
StorageAdapterTemperatureProperty,
StorageDeviceTemperatureProperty,
StorageAdapterPhysicalTopologyProperty,
StorageDevicePhysicalTopologyProperty,
StorageDeviceAttributesProperty,
StorageDeviceManagementStatus,
StorageAdapterSerialNumberProperty,
StorageDeviceLocationProperty,
StorageDeviceNumaProperty,
StorageDeviceZonedDeviceProperty,
StorageDeviceUnsafeShutdownCount,
StorageDeviceEnduranceProperty,
};
STORAGE_PROPERTY_QUERY :: struct {
PropertyId : STORAGE_PROPERTY_ID,
QueryType : STORAGE_QUERY_TYPE,
AdditionalParameters : [1]BYTE,
};
PSTORAGE_PROPERTY_QUERY :: ^struct {
PropertyId : STORAGE_PROPERTY_ID,
QueryType : STORAGE_QUERY_TYPE,
AdditionalParameters : [1]BYTE,
};
STORAGE_PROPERTY_SET :: struct {
PropertyId : STORAGE_PROPERTY_ID,
SetType : STORAGE_SET_TYPE,
AdditionalParameters : [1]BYTE,
};
PSTORAGE_PROPERTY_SET :: ^struct {
PropertyId : STORAGE_PROPERTY_ID,
SetType : STORAGE_SET_TYPE,
AdditionalParameters : [1]BYTE,
};
STORAGE_DESCRIPTOR_HEADER :: struct {
Version : u32,
Size : u32,
};
PSTORAGE_DESCRIPTOR_HEADER :: ^struct {
Version : u32,
Size : u32,
};
STORAGE_DEVICE_DESCRIPTOR :: struct {
Version : u32,
Size : u32,
DeviceType : BYTE,
DeviceTypeModifier : BYTE,
RemovableMedia : BOOLEAN,
CommandQueueing : BOOLEAN,
VendorIdOffset : u32,
ProductIdOffset : u32,
ProductRevisionOffset : u32,
SerialNumberOffset : u32,
BusType : STORAGE_BUS_TYPE,
RawPropertiesLength : u32,
RawDeviceProperties : [1]BYTE,
};
PSTORAGE_DEVICE_DESCRIPTOR :: ^struct {
Version : u32,
Size : u32,
DeviceType : BYTE,
DeviceTypeModifier : BYTE,
RemovableMedia : BOOLEAN,
CommandQueueing : BOOLEAN,
VendorIdOffset : u32,
ProductIdOffset : u32,
ProductRevisionOffset : u32,
SerialNumberOffset : u32,
BusType : STORAGE_BUS_TYPE,
RawPropertiesLength : u32,
RawDeviceProperties : [1]BYTE,
};
STORAGE_ADAPTER_DESCRIPTOR :: struct {
Version : u32,
Size : u32,
MaximumTransferLength : u32,
MaximumPhysicalPages : u32,
AlignmentMask : u32,
AdapterUsesPio : BOOLEAN,
AdapterScansDown : BOOLEAN,
CommandQueueing : BOOLEAN,
AcceleratedTransfer : BOOLEAN,
BusType : BYTE,
BusMajorVersion : u16,
BusMinorVersion : u16,
SrbType : BYTE,
AddressType : BYTE,
};
PSTORAGE_ADAPTER_DESCRIPTOR :: ^struct {
Version : u32,
Size : u32,
MaximumTransferLength : u32,
MaximumPhysicalPages : u32,
AlignmentMask : u32,
AdapterUsesPio : BOOLEAN,
AdapterScansDown : BOOLEAN,
CommandQueueing : BOOLEAN,
AcceleratedTransfer : BOOLEAN,
BusType : BYTE,
BusMajorVersion : u16,
BusMinorVersion : u16,
SrbType : BYTE,
AddressType : BYTE,
};
STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR :: struct {
Version : u32,
Size : u32,
BytesPerCacheLine : u32,
BytesOffsetForCacheAlignment : u32,
BytesPerLogicalSector : u32,
BytesPerPhysicalSector : u32,
BytesOffsetForSectorAlignment : u32,
};
PSTORAGE_ACCESS_ALIGNMENT_DESCRIPTOR :: ^struct {
Version : u32,
Size : u32,
BytesPerCacheLine : u32,
BytesOffsetForCacheAlignment : u32,
BytesPerLogicalSector : u32,
BytesPerPhysicalSector : u32,
BytesOffsetForSectorAlignment : u32,
};
STORAGE_MEDIUM_PRODUCT_TYPE_DESCRIPTOR :: struct {
Version : u32,
Size : u32,
MediumProductType : u32,
};
PSTORAGE_MEDIUM_PRODUCT_TYPE_DESCRIPTOR :: ^struct {
Version : u32,
Size : u32,
MediumProductType : u32,
};
STORAGE_PORT_CODE_SET :: enum {
StoragePortCodeSetReserved = 0,
StoragePortCodeSetStorport = 1,
StoragePortCodeSetSCSIport = 2,
StoragePortCodeSetSpaceport = 3,
StoragePortCodeSetATAport = 4,
StoragePortCodeSetUSBport = 5,
StoragePortCodeSetSBP2port = 6,
StoragePortCodeSetSDport = 7,
};
PSTORAGE_PORT_CODE_SET :: ^enum {
StoragePortCodeSetReserved = 0,
StoragePortCodeSetStorport = 1,
StoragePortCodeSetSCSIport = 2,
StoragePortCodeSetSpaceport = 3,
StoragePortCodeSetATAport = 4,
StoragePortCodeSetUSBport = 5,
StoragePortCodeSetSBP2port = 6,
StoragePortCodeSetSDport = 7,
};
STORAGE_MINIPORT_DESCRIPTOR :: struct {
Version : u32,
Size : u32,
Portdriver : STORAGE_PORT_CODE_SET,
LUNResetSupported : BOOLEAN,
TargetResetSupported : BOOLEAN,
IoTimeoutValue : u16,
ExtraIoInfoSupported : BOOLEAN,
Reserved0 : [3]BYTE,
Reserved1 : u32,
};
PSTORAGE_MINIPORT_DESCRIPTOR :: ^struct {
Version : u32,
Size : u32,
Portdriver : STORAGE_PORT_CODE_SET,
LUNResetSupported : BOOLEAN,
TargetResetSupported : BOOLEAN,
IoTimeoutValue : u16,
ExtraIoInfoSupported : BOOLEAN,
Reserved0 : [3]BYTE,
Reserved1 : u32,
};
STORAGE_IDENTIFIER_CODE_SET :: enum {
StorageIdCodeSetReserved = 0,
StorageIdCodeSetBinary = 1,
StorageIdCodeSetAscii = 2,
StorageIdCodeSetUtf8 = 3,
};
PSTORAGE_IDENTIFIER_CODE_SET :: ^enum {
StorageIdCodeSetReserved = 0,
StorageIdCodeSetBinary = 1,
StorageIdCodeSetAscii = 2,
StorageIdCodeSetUtf8 = 3,
};
STORAGE_IDENTIFIER_TYPE :: enum {
StorageIdTypeVendorSpecific = 0,
StorageIdTypeVendorId = 1,
StorageIdTypeEUI64 = 2,
StorageIdTypeFCPHName = 3,
StorageIdTypePortRelative = 4,
StorageIdTypeTargetPortGroup = 5,
StorageIdTypeLogicalUnitGroup = 6,
StorageIdTypeMD5LogicalUnitIdentifier = 7,
StorageIdTypeScsiNameString = 8,
};
PSTORAGE_IDENTIFIER_TYPE :: ^enum {
StorageIdTypeVendorSpecific = 0,
StorageIdTypeVendorId = 1,
StorageIdTypeEUI64 = 2,
StorageIdTypeFCPHName = 3,
StorageIdTypePortRelative = 4,
StorageIdTypeTargetPortGroup = 5,
StorageIdTypeLogicalUnitGroup = 6,
StorageIdTypeMD5LogicalUnitIdentifier = 7,
StorageIdTypeScsiNameString = 8,
};
STORAGE_ID_NAA_FORMAT :: enum {
StorageIdNAAFormatIEEEExtended = 2,
StorageIdNAAFormatIEEERegistered = 3,
StorageIdNAAFormatIEEEERegisteredExtended = 5,
};
PSTORAGE_ID_NAA_FORMAT :: ^enum {
StorageIdNAAFormatIEEEExtended = 2,
StorageIdNAAFormatIEEERegistered = 3,
StorageIdNAAFormatIEEEERegisteredExtended = 5,
};
STORAGE_ASSOCIATION_TYPE :: enum {
StorageIdAssocDevice = 0,
StorageIdAssocPort = 1,
StorageIdAssocTarget = 2,
};
PSTORAGE_ASSOCIATION_TYPE :: ^enum {
StorageIdAssocDevice = 0,
StorageIdAssocPort = 1,
StorageIdAssocTarget = 2,
};
STORAGE_IDENTIFIER :: struct {
CodeSet : STORAGE_IDENTIFIER_CODE_SET,
Type : STORAGE_IDENTIFIER_TYPE,
IdentifierSize : u16,
NextOffset : u16,
Association : STORAGE_ASSOCIATION_TYPE,
Identifier : [1]BYTE,
};
PSTORAGE_IDENTIFIER :: ^struct {
CodeSet : STORAGE_IDENTIFIER_CODE_SET,
Type : STORAGE_IDENTIFIER_TYPE,
IdentifierSize : u16,
NextOffset : u16,
Association : STORAGE_ASSOCIATION_TYPE,
Identifier : [1]BYTE,
};
STORAGE_DEVICE_ID_DESCRIPTOR :: struct {
Version : u32,
Size : u32,
NumberOfIdentifiers : u32,
Identifiers : [1]BYTE,
};
PSTORAGE_DEVICE_ID_DESCRIPTOR :: ^struct {
Version : u32,
Size : u32,
NumberOfIdentifiers : u32,
Identifiers : [1]BYTE,
};
DEVICE_SEEK_PENALTY_DESCRIPTOR :: struct {
Version : u32,
Size : u32,
IncursSeekPenalty : BOOLEAN,
};
PDEVICE_SEEK_PENALTY_DESCRIPTOR :: ^struct {
Version : u32,
Size : u32,
IncursSeekPenalty : BOOLEAN,
};
DEVICE_WRITE_AGGREGATION_DESCRIPTOR :: struct {
Version : u32,
Size : u32,
BenefitsFromWriteAggregation : BOOLEAN,
};
PDEVICE_WRITE_AGGREGATION_DESCRIPTOR :: ^struct {
Version : u32,
Size : u32,
BenefitsFromWriteAggregation : BOOLEAN,
};
DEVICE_TRIM_DESCRIPTOR :: struct {
Version : u32,
Size : u32,
TrimEnabled : BOOLEAN,
};
PDEVICE_TRIM_DESCRIPTOR :: ^struct {
Version : u32,
Size : u32,
TrimEnabled : BOOLEAN,
};
DEVICE_LB_PROVISIONING_DESCRIPTOR :: struct {
Version : u32,
Size : u32,
ThinProvisioningEnabled : ,
ThinProvisioningReadZeros : ,
AnchorSupported : ,
UnmapGranularityAlignmentValid : ,
Reserved0 : ,
Reserved1 : [7]BYTE,
OptimalUnmapGranularity : DWORDLONG,
UnmapGranularityAlignment : DWORDLONG,
MaxUnmapLbaCount : u32,
MaxUnmapBlockDescriptorCount : u32,
};
PDEVICE_LB_PROVISIONING_DESCRIPTOR :: ^struct {
Version : u32,
Size : u32,
ThinProvisioningEnabled : ,
ThinProvisioningReadZeros : ,
AnchorSupported : ,
UnmapGranularityAlignmentValid : ,
Reserved0 : ,
Reserved1 : [7]BYTE,
OptimalUnmapGranularity : DWORDLONG,
UnmapGranularityAlignment : DWORDLONG,
MaxUnmapLbaCount : u32,
MaxUnmapBlockDescriptorCount : u32,
};
STORAGE_LB_PROVISIONING_MAP_RESOURCES :: struct {
Size : u32,
Version : u32,
AvailableMappingResourcesValid : ,
UsedMappingResourcesValid : ,
Reserved0 : ,
Reserved1 : [3]BYTE,
AvailableMappingResourcesScope : ,
UsedMappingResourcesScope : ,
Reserved2 : ,
Reserved3 : [3]BYTE,
AvailableMappingResources : DWORDLONG,
UsedMappingResources : DWORDLONG,
};
PSTORAGE_LB_PROVISIONING_MAP_RESOURCES :: ^struct {
Size : u32,
Version : u32,
AvailableMappingResourcesValid : ,
UsedMappingResourcesValid : ,
Reserved0 : ,
Reserved1 : [3]BYTE,
AvailableMappingResourcesScope : ,
UsedMappingResourcesScope : ,
Reserved2 : ,
Reserved3 : [3]BYTE,
AvailableMappingResources : DWORDLONG,
UsedMappingResources : DWORDLONG,
};
DEVICE_POWER_DESCRIPTOR :: struct {
Version : u32,
Size : u32,
DeviceAttentionSupported : BOOLEAN,
AsynchronousNotificationSupported : BOOLEAN,
IdlePowerManagementEnabled : BOOLEAN,
D3ColdEnabled : BOOLEAN,
D3ColdSupported : BOOLEAN,
NoVerifyDuringIdlePower : BOOLEAN,
Reserved : [2]BYTE,
IdleTimeoutInMS : u32,
};
PDEVICE_POWER_DESCRIPTOR :: ^struct {
Version : u32,
Size : u32,
DeviceAttentionSupported : BOOLEAN,
AsynchronousNotificationSupported : BOOLEAN,
IdlePowerManagementEnabled : BOOLEAN,
D3ColdEnabled : BOOLEAN,
D3ColdSupported : BOOLEAN,
NoVerifyDuringIdlePower : BOOLEAN,
Reserved : [2]BYTE,
IdleTimeoutInMS : u32,
};
DEVICE_COPY_OFFLOAD_DESCRIPTOR :: struct {
Version : u32,
Size : u32,
MaximumTokenLifetime : u32,
DefaultTokenLifetime : u32,
MaximumTransferSize : DWORDLONG,
OptimalTransferCount : DWORDLONG,
MaximumDataDescriptors : u32,
MaximumTransferLengthPerDescriptor : u32,
OptimalTransferLengthPerDescriptor : u32,
OptimalTransferLengthGranularity : u16,
Reserved : [2]BYTE,
};
PDEVICE_COPY_OFFLOAD_DESCRIPTOR :: ^struct {
Version : u32,
Size : u32,
MaximumTokenLifetime : u32,
DefaultTokenLifetime : u32,
MaximumTransferSize : DWORDLONG,
OptimalTransferCount : DWORDLONG,
MaximumDataDescriptors : u32,
MaximumTransferLengthPerDescriptor : u32,
OptimalTransferLengthPerDescriptor : u32,
OptimalTransferLengthGranularity : u16,
Reserved : [2]BYTE,
};
STORAGE_DEVICE_RESILIENCY_DESCRIPTOR :: struct {
Version : u32,
Size : u32,
NameOffset : u32,
NumberOfLogicalCopies : u32,
NumberOfPhysicalCopies : u32,
PhysicalDiskRedundancy : u32,
NumberOfColumns : u32,
Interleave : u32,
};
PSTORAGE_DEVICE_RESILIENCY_DESCRIPTOR :: ^struct {
Version : u32,
Size : u32,
NameOffset : u32,
NumberOfLogicalCopies : u32,
NumberOfPhysicalCopies : u32,
PhysicalDiskRedundancy : u32,
NumberOfColumns : u32,
Interleave : u32,
};
STORAGE_RPMB_FRAME_TYPE :: enum {
StorageRpmbFrameTypeUnknown = 0,
StorageRpmbFrameTypeStandard,
StorageRpmbFrameTypeMax,
};
PSTORAGE_RPMB_FRAME_TYPE :: ^enum {
StorageRpmbFrameTypeUnknown = 0,
StorageRpmbFrameTypeStandard,
StorageRpmbFrameTypeMax,
};
STORAGE_RPMB_DESCRIPTOR :: struct {
Version : u32,
Size : u32,
SizeInBytes : u32,
MaxReliableWriteSizeInBytes : u32,
FrameFormat : STORAGE_RPMB_FRAME_TYPE,
};
PSTORAGE_RPMB_DESCRIPTOR :: ^struct {
Version : u32,
Size : u32,
SizeInBytes : u32,
MaxReliableWriteSizeInBytes : u32,
FrameFormat : STORAGE_RPMB_FRAME_TYPE,
};
STORAGE_CRYPTO_ALGORITHM_ID :: enum {
StorageCryptoAlgorithmUnknown = 0,
StorageCryptoAlgorithmXTSAES = 1,
StorageCryptoAlgorithmBitlockerAESCBC,
StorageCryptoAlgorithmAESECB,
StorageCryptoAlgorithmESSIVAESCBC,
StorageCryptoAlgorithmMax,
};
PSTORAGE_CRYPTO_ALGORITHM_ID :: ^enum {
StorageCryptoAlgorithmUnknown = 0,
StorageCryptoAlgorithmXTSAES = 1,
StorageCryptoAlgorithmBitlockerAESCBC,
StorageCryptoAlgorithmAESECB,
StorageCryptoAlgorithmESSIVAESCBC,
StorageCryptoAlgorithmMax,
};
STORAGE_CRYPTO_KEY_SIZE :: enum {
StorageCryptoKeySizeUnknown = 0,
StorageCryptoKeySize128Bits = 1,
StorageCryptoKeySize192Bits,
StorageCryptoKeySize256Bits,
StorageCryptoKeySize512Bits,
};
PSTORAGE_CRYPTO_KEY_SIZE :: ^enum {
StorageCryptoKeySizeUnknown = 0,
StorageCryptoKeySize128Bits = 1,
StorageCryptoKeySize192Bits,
StorageCryptoKeySize256Bits,
StorageCryptoKeySize512Bits,
};
STORAGE_CRYPTO_CAPABILITY :: struct {
Version : u32,
Size : u32,
CryptoCapabilityIndex : u32,
AlgorithmId : STORAGE_CRYPTO_ALGORITHM_ID,
KeySize : STORAGE_CRYPTO_KEY_SIZE,
DataUnitSizeBitmask : u32,
};
PSTORAGE_CRYPTO_CAPABILITY :: ^struct {
Version : u32,
Size : u32,
CryptoCapabilityIndex : u32,
AlgorithmId : STORAGE_CRYPTO_ALGORITHM_ID,
KeySize : STORAGE_CRYPTO_KEY_SIZE,
DataUnitSizeBitmask : u32,
};
STORAGE_CRYPTO_DESCRIPTOR :: struct {
Version : u32,
Size : u32,
NumKeysSupported : u32,
NumCryptoCapabilities : u32,
CryptoCapabilities : [1]STORAGE_CRYPTO_CAPABILITY,
};
PSTORAGE_CRYPTO_DESCRIPTOR :: ^struct {
Version : u32,
Size : u32,
NumKeysSupported : u32,
NumCryptoCapabilities : u32,
CryptoCapabilities : [1]STORAGE_CRYPTO_CAPABILITY,
};
STORAGE_TIER_MEDIA_TYPE :: enum {
StorageTierMediaTypeUnspecified = 0,
StorageTierMediaTypeDisk = 1,
StorageTierMediaTypeSsd = 2,
StorageTierMediaTypeScm = 4,
StorageTierMediaTypeMax,
};
PSTORAGE_TIER_MEDIA_TYPE :: ^enum {
StorageTierMediaTypeUnspecified = 0,
StorageTierMediaTypeDisk = 1,
StorageTierMediaTypeSsd = 2,
StorageTierMediaTypeScm = 4,
StorageTierMediaTypeMax,
};
STORAGE_TIER_CLASS :: enum {
StorageTierClassUnspecified = 0,
StorageTierClassCapacity,
StorageTierClassPerformance,
StorageTierClassMax,
};
PSTORAGE_TIER_CLASS :: ^enum {
StorageTierClassUnspecified = 0,
StorageTierClassCapacity,
StorageTierClassPerformance,
StorageTierClassMax,
};
STORAGE_TIER :: struct {
Id : GUID,
Name : [(256)]WCHAR,
Description : [(256)]WCHAR,
Flags : DWORDLONG,
ProvisionedCapacity : DWORDLONG,
MediaType : STORAGE_TIER_MEDIA_TYPE,
Class : STORAGE_TIER_CLASS,
};
PSTORAGE_TIER :: ^struct {
Id : GUID,
Name : [(256)]WCHAR,
Description : [(256)]WCHAR,
Flags : DWORDLONG,
ProvisionedCapacity : DWORDLONG,
MediaType : STORAGE_TIER_MEDIA_TYPE,
Class : STORAGE_TIER_CLASS,
};
STORAGE_DEVICE_TIERING_DESCRIPTOR :: struct {
Version : u32,
Size : u32,
Flags : u32,
TotalNumberOfTiers : u32,
NumberOfTiersReturned : u32,
Tiers : [1]STORAGE_TIER,
};
PSTORAGE_DEVICE_TIERING_DESCRIPTOR :: ^struct {
Version : u32,
Size : u32,
Flags : u32,
TotalNumberOfTiers : u32,
NumberOfTiersReturned : u32,
Tiers : [1]STORAGE_TIER,
};
STORAGE_DEVICE_FAULT_DOMAIN_DESCRIPTOR :: struct {
Version : u32,
Size : u32,
NumberOfFaultDomains : u32,
FaultDomainIds : [1]GUID,
};
PSTORAGE_DEVICE_FAULT_DOMAIN_DESCRIPTOR :: ^struct {
Version : u32,
Size : u32,
NumberOfFaultDomains : u32,
FaultDomainIds : [1]GUID,
};
STORAGE_PROTOCOL_TYPE :: enum {
ProtocolTypeUnknown = 0x00,
ProtocolTypeScsi,
ProtocolTypeAta,
ProtocolTypeNvme,
ProtocolTypeSd,
ProtocolTypeUfs,
ProtocolTypeProprietary = 0x7E,
ProtocolTypeMaxReserved = 0x7F,
};
PSTORAGE_PROTOCOL_TYPE :: ^enum {
ProtocolTypeUnknown = 0x00,
ProtocolTypeScsi,
ProtocolTypeAta,
ProtocolTypeNvme,
ProtocolTypeSd,
ProtocolTypeUfs,
ProtocolTypeProprietary = 0x7E,
ProtocolTypeMaxReserved = 0x7F,
};
STORAGE_PROTOCOL_NVME_DATA_TYPE :: enum {
NVMeDataTypeUnknown = 0,
NVMeDataTypeIdentify,
NVMeDataTypeLogPage,
NVMeDataTypeFeature,
};
PSTORAGE_PROTOCOL_NVME_DATA_TYPE :: ^enum {
NVMeDataTypeUnknown = 0,
NVMeDataTypeIdentify,
NVMeDataTypeLogPage,
NVMeDataTypeFeature,
};
STORAGE_PROTOCOL_ATA_DATA_TYPE :: enum {
AtaDataTypeUnknown = 0,
AtaDataTypeIdentify,
AtaDataTypeLogPage,
};
PSTORAGE_PROTOCOL_ATA_DATA_TYPE :: ^enum {
AtaDataTypeUnknown = 0,
AtaDataTypeIdentify,
AtaDataTypeLogPage,
};
STORAGE_PROTOCOL_UFS_DATA_TYPE :: enum {
UfsDataTypeUnknown = 0,
UfsDataTypeQueryDescriptor,
UfsDataTypeMax,
};
PSTORAGE_PROTOCOL_UFS_DATA_TYPE :: ^enum {
UfsDataTypeUnknown = 0,
UfsDataTypeQueryDescriptor,
UfsDataTypeMax,
};
STORAGE_PROTOCOL_SPECIFIC_DATA :: struct {
ProtocolType : STORAGE_PROTOCOL_TYPE,
DataType : u32,
ProtocolDataRequestValue : u32,
ProtocolDataRequestSubValue : u32,
ProtocolDataOffset : u32,
ProtocolDataLength : u32,
FixedProtocolReturnData : u32,
ProtocolDataRequestSubValue2 : u32,
ProtocolDataRequestSubValue3 : u32,
Reserved : u32,
};
PSTORAGE_PROTOCOL_SPECIFIC_DATA :: ^struct {
ProtocolType : STORAGE_PROTOCOL_TYPE,
DataType : u32,
ProtocolDataRequestValue : u32,
ProtocolDataRequestSubValue : u32,
ProtocolDataOffset : u32,
ProtocolDataLength : u32,
FixedProtocolReturnData : u32,
ProtocolDataRequestSubValue2 : u32,
ProtocolDataRequestSubValue3 : u32,
Reserved : u32,
};
STORAGE_PROTOCOL_SPECIFIC_DATA_EXT :: struct {
ProtocolType : STORAGE_PROTOCOL_TYPE,
DataType : u32,
ProtocolDataValue : u32,
ProtocolDataSubValue : u32,
ProtocolDataOffset : u32,
ProtocolDataLength : u32,
FixedProtocolReturnData : u32,
ProtocolDataSubValue2 : u32,
ProtocolDataSubValue3 : u32,
ProtocolDataSubValue4 : u32,
ProtocolDataSubValue5 : u32,
Reserved : [5]u32,
};
PSTORAGE_PROTOCOL_SPECIFIC_DATA_EXT :: ^struct {
ProtocolType : STORAGE_PROTOCOL_TYPE,
DataType : u32,
ProtocolDataValue : u32,
ProtocolDataSubValue : u32,
ProtocolDataOffset : u32,
ProtocolDataLength : u32,
FixedProtocolReturnData : u32,
ProtocolDataSubValue2 : u32,
ProtocolDataSubValue3 : u32,
ProtocolDataSubValue4 : u32,
ProtocolDataSubValue5 : u32,
Reserved : [5]u32,
};
STORAGE_PROTOCOL_DATA_DESCRIPTOR :: struct {
Version : u32,
Size : u32,
ProtocolSpecificData : STORAGE_PROTOCOL_SPECIFIC_DATA,
};
PSTORAGE_PROTOCOL_DATA_DESCRIPTOR :: ^struct {
Version : u32,
Size : u32,
ProtocolSpecificData : STORAGE_PROTOCOL_SPECIFIC_DATA,
};
STORAGE_PROTOCOL_DATA_DESCRIPTOR_EXT :: struct {
Version : u32,
Size : u32,
ProtocolSpecificData : STORAGE_PROTOCOL_SPECIFIC_DATA_EXT,
};
PSTORAGE_PROTOCOL_DATA_DESCRIPTOR_EXT :: ^struct {
Version : u32,
Size : u32,
ProtocolSpecificData : STORAGE_PROTOCOL_SPECIFIC_DATA_EXT,
};
STORAGE_TEMPERATURE_INFO :: struct {
Index : u16,
Temperature : SHORT,
OverThreshold : SHORT,
UnderThreshold : SHORT,
OverThresholdChangable : BOOLEAN,
UnderThresholdChangable : BOOLEAN,
EventGenerated : BOOLEAN,
Reserved0 : BYTE,
Reserved1 : u32,
};
PSTORAGE_TEMPERATURE_INFO :: ^struct {
Index : u16,
Temperature : SHORT,
OverThreshold : SHORT,
UnderThreshold : SHORT,
OverThresholdChangable : BOOLEAN,
UnderThresholdChangable : BOOLEAN,
EventGenerated : BOOLEAN,
Reserved0 : BYTE,
Reserved1 : u32,
};
STORAGE_TEMPERATURE_DATA_DESCRIPTOR :: struct {
Version : u32,
Size : u32,
CriticalTemperature : SHORT,
WarningTemperature : SHORT,
InfoCount : u16,
Reserved0 : [2]BYTE,
Reserved1 : [2]u32,
TemperatureInfo : [1]STORAGE_TEMPERATURE_INFO,
};
PSTORAGE_TEMPERATURE_DATA_DESCRIPTOR :: ^struct {
Version : u32,
Size : u32,
CriticalTemperature : SHORT,
WarningTemperature : SHORT,
InfoCount : u16,
Reserved0 : [2]BYTE,
Reserved1 : [2]u32,
TemperatureInfo : [1]STORAGE_TEMPERATURE_INFO,
};
STORAGE_TEMPERATURE_THRESHOLD :: struct {
Version : u32,
Size : u32,
Flags : u16,
Index : u16,
Threshold : SHORT,
OverThreshold : BOOLEAN,
Reserved : BYTE,
};
PSTORAGE_TEMPERATURE_THRESHOLD :: ^struct {
Version : u32,
Size : u32,
Flags : u16,
Index : u16,
Threshold : SHORT,
OverThreshold : BOOLEAN,
Reserved : BYTE,
};
STORAGE_DEVICE_FORM_FACTOR :: enum {
FormFactorUnknown = 0,
FormFactor3_5,
FormFactor2_5,
FormFactor1_8,
FormFactor1_8Less,
FormFactorEmbedded,
FormFactorMemoryCard,
FormFactormSata,
FormFactorM_2,
FormFactorPCIeBoard,
FormFactorDimm,
};
PSTORAGE_DEVICE_FORM_FACTOR :: ^enum {
FormFactorUnknown = 0,
FormFactor3_5,
FormFactor2_5,
FormFactor1_8,
FormFactor1_8Less,
FormFactorEmbedded,
FormFactorMemoryCard,
FormFactormSata,
FormFactorM_2,
FormFactorPCIeBoard,
FormFactorDimm,
};
STORAGE_COMPONENT_HEALTH_STATUS :: enum {
HealthStatusUnknown = 0,
HealthStatusNormal,
HealthStatusThrottled,
HealthStatusWarning,
HealthStatusDisabled,
HealthStatusFailed,
};
PSTORAGE_COMPONENT_HEALTH_STATUS :: ^enum {
HealthStatusUnknown = 0,
HealthStatusNormal,
HealthStatusThrottled,
HealthStatusWarning,
HealthStatusDisabled,
HealthStatusFailed,
};
STORAGE_SPEC_VERSION :: struct #raw_union {
s : struct {
MinorVersion : struct #raw_union {
s : struct {
SubMinor : BYTE,
Minor : BYTE,
},
AsUshort : u16,
},
MajorVersion : u16,
},
AsUlong : u32,
};
PSTORAGE_SPEC_VERSION :: ^struct #raw_union {
s : struct {
MinorVersion : struct #raw_union {
s : struct {
SubMinor : BYTE,
Minor : BYTE,
},
AsUshort : u16,
},
MajorVersion : u16,
},
AsUlong : u32,
};
STORAGE_PHYSICAL_DEVICE_DATA :: struct {
DeviceId : u32,
Role : u32,
HealthStatus : STORAGE_COMPONENT_HEALTH_STATUS,
CommandProtocol : STORAGE_PROTOCOL_TYPE,
SpecVersion : STORAGE_SPEC_VERSION,
FormFactor : STORAGE_DEVICE_FORM_FACTOR,
Vendor : [8]BYTE,
Model : [40]BYTE,
FirmwareRevision : [16]BYTE,
Capacity : DWORDLONG,
PhysicalLocation : [32]BYTE,
Reserved : [2]u32,
};
PSTORAGE_PHYSICAL_DEVICE_DATA :: ^struct {
DeviceId : u32,
Role : u32,
HealthStatus : STORAGE_COMPONENT_HEALTH_STATUS,
CommandProtocol : STORAGE_PROTOCOL_TYPE,
SpecVersion : STORAGE_SPEC_VERSION,
FormFactor : STORAGE_DEVICE_FORM_FACTOR,
Vendor : [8]BYTE,
Model : [40]BYTE,
FirmwareRevision : [16]BYTE,
Capacity : DWORDLONG,
PhysicalLocation : [32]BYTE,
Reserved : [2]u32,
};
STORAGE_PHYSICAL_ADAPTER_DATA :: struct {
AdapterId : u32,
HealthStatus : STORAGE_COMPONENT_HEALTH_STATUS,
CommandProtocol : STORAGE_PROTOCOL_TYPE,
SpecVersion : STORAGE_SPEC_VERSION,
Vendor : [8]BYTE,
Model : [40]BYTE,
FirmwareRevision : [16]BYTE,
PhysicalLocation : [32]BYTE,
ExpanderConnected : BOOLEAN,
Reserved0 : [3]BYTE,
Reserved1 : [3]u32,
};
PSTORAGE_PHYSICAL_ADAPTER_DATA :: ^struct {
AdapterId : u32,
HealthStatus : STORAGE_COMPONENT_HEALTH_STATUS,
CommandProtocol : STORAGE_PROTOCOL_TYPE,
SpecVersion : STORAGE_SPEC_VERSION,
Vendor : [8]BYTE,
Model : [40]BYTE,
FirmwareRevision : [16]BYTE,
PhysicalLocation : [32]BYTE,
ExpanderConnected : BOOLEAN,
Reserved0 : [3]BYTE,
Reserved1 : [3]u32,
};
STORAGE_PHYSICAL_NODE_DATA :: struct {
NodeId : u32,
AdapterCount : u32,
AdapterDataLength : u32,
AdapterDataOffset : u32,
DeviceCount : u32,
DeviceDataLength : u32,
DeviceDataOffset : u32,
Reserved : [3]u32,
};
PSTORAGE_PHYSICAL_NODE_DATA :: ^struct {
NodeId : u32,
AdapterCount : u32,
AdapterDataLength : u32,
AdapterDataOffset : u32,
DeviceCount : u32,
DeviceDataLength : u32,
DeviceDataOffset : u32,
Reserved : [3]u32,
};
STORAGE_PHYSICAL_TOPOLOGY_DESCRIPTOR :: struct {
Version : u32,
Size : u32,
NodeCount : u32,
Reserved : u32,
Node : [1]STORAGE_PHYSICAL_NODE_DATA,
};
PSTORAGE_PHYSICAL_TOPOLOGY_DESCRIPTOR :: ^struct {
Version : u32,
Size : u32,
NodeCount : u32,
Reserved : u32,
Node : [1]STORAGE_PHYSICAL_NODE_DATA,
};
STORAGE_DEVICE_IO_CAPABILITY_DESCRIPTOR :: struct {
Version : u32,
Size : u32,
LunMaxIoCount : u32,
AdapterMaxIoCount : u32,
};
PSTORAGE_DEVICE_IO_CAPABILITY_DESCRIPTOR :: ^struct {
Version : u32,
Size : u32,
LunMaxIoCount : u32,
AdapterMaxIoCount : u32,
};
STORAGE_DEVICE_ATTRIBUTES_DESCRIPTOR :: struct {
Version : u32,
Size : u32,
Attributes : DWORD64,
};
PSTORAGE_DEVICE_ATTRIBUTES_DESCRIPTOR :: ^struct {
Version : u32,
Size : u32,
Attributes : DWORD64,
};
STORAGE_DISK_HEALTH_STATUS :: enum {
DiskHealthUnknown = 0,
DiskHealthUnhealthy,
DiskHealthWarning,
DiskHealthHealthy,
DiskHealthMax,
};
PSTORAGE_DISK_HEALTH_STATUS :: ^enum {
DiskHealthUnknown = 0,
DiskHealthUnhealthy,
DiskHealthWarning,
DiskHealthHealthy,
DiskHealthMax,
};
STORAGE_DISK_OPERATIONAL_STATUS :: enum {
DiskOpStatusNone = 0,
DiskOpStatusUnknown,
DiskOpStatusOk,
DiskOpStatusPredictingFailure,
DiskOpStatusInService,
DiskOpStatusHardwareError,
DiskOpStatusNotUsable,
DiskOpStatusTransientError,
DiskOpStatusMissing,
};
PSTORAGE_DISK_OPERATIONAL_STATUS :: ^enum {
DiskOpStatusNone = 0,
DiskOpStatusUnknown,
DiskOpStatusOk,
DiskOpStatusPredictingFailure,
DiskOpStatusInService,
DiskOpStatusHardwareError,
DiskOpStatusNotUsable,
DiskOpStatusTransientError,
DiskOpStatusMissing,
};
STORAGE_OPERATIONAL_STATUS_REASON :: enum {
DiskOpReasonUnknown = 0,
DiskOpReasonScsiSenseCode,
DiskOpReasonMedia,
DiskOpReasonIo,
DiskOpReasonThresholdExceeded,
DiskOpReasonLostData,
DiskOpReasonEnergySource,
DiskOpReasonConfiguration,
DiskOpReasonDeviceController,
DiskOpReasonMediaController,
DiskOpReasonComponent,
DiskOpReasonNVDIMM_N,
DiskOpReasonBackgroundOperation,
DiskOpReasonInvalidFirmware,
DiskOpReasonHealthCheck,
DiskOpReasonLostDataPersistence,
DiskOpReasonDisabledByPlatform,
DiskOpReasonLostWritePersistence,
DiskOpReasonDataPersistenceLossImminent,
DiskOpReasonWritePersistenceLossImminent,
DiskOpReasonMax,
};
PSTORAGE_OPERATIONAL_STATUS_REASON :: ^enum {
DiskOpReasonUnknown = 0,
DiskOpReasonScsiSenseCode,
DiskOpReasonMedia,
DiskOpReasonIo,
DiskOpReasonThresholdExceeded,
DiskOpReasonLostData,
DiskOpReasonEnergySource,
DiskOpReasonConfiguration,
DiskOpReasonDeviceController,
DiskOpReasonMediaController,
DiskOpReasonComponent,
DiskOpReasonNVDIMM_N,
DiskOpReasonBackgroundOperation,
DiskOpReasonInvalidFirmware,
DiskOpReasonHealthCheck,
DiskOpReasonLostDataPersistence,
DiskOpReasonDisabledByPlatform,
DiskOpReasonLostWritePersistence,
DiskOpReasonDataPersistenceLossImminent,
DiskOpReasonWritePersistenceLossImminent,
DiskOpReasonMax,
};
STORAGE_OPERATIONAL_REASON :: struct {
Version : u32,
Size : u32,
Reason : STORAGE_OPERATIONAL_STATUS_REASON,
RawBytes : struct #raw_union {
ScsiSenseKey : struct {
SenseKey : BYTE,
ASC : BYTE,
ASCQ : BYTE,
Reserved : BYTE,
},
NVDIMM_N : struct {
CriticalHealth : BYTE,
ModuleHealth : [2]BYTE,
ErrorThresholdStatus : BYTE,
},
AsUlong : u32,
},
};
PSTORAGE_OPERATIONAL_REASON :: ^struct {
Version : u32,
Size : u32,
Reason : STORAGE_OPERATIONAL_STATUS_REASON,
RawBytes : struct #raw_union {
ScsiSenseKey : struct {
SenseKey : BYTE,
ASC : BYTE,
ASCQ : BYTE,
Reserved : BYTE,
},
NVDIMM_N : struct {
CriticalHealth : BYTE,
ModuleHealth : [2]BYTE,
ErrorThresholdStatus : BYTE,
},
AsUlong : u32,
},
};
STORAGE_DEVICE_MANAGEMENT_STATUS :: struct {
Version : u32,
Size : u32,
Health : STORAGE_DISK_HEALTH_STATUS,
NumberOfOperationalStatus : u32,
NumberOfAdditionalReasons : u32,
OperationalStatus : [16]STORAGE_DISK_OPERATIONAL_STATUS,
AdditionalReasons : [1]STORAGE_OPERATIONAL_REASON,
};
PSTORAGE_DEVICE_MANAGEMENT_STATUS :: ^struct {
Version : u32,
Size : u32,
Health : STORAGE_DISK_HEALTH_STATUS,
NumberOfOperationalStatus : u32,
NumberOfAdditionalReasons : u32,
OperationalStatus : [16]STORAGE_DISK_OPERATIONAL_STATUS,
AdditionalReasons : [1]STORAGE_OPERATIONAL_REASON,
};
STORAGE_ADAPTER_SERIAL_NUMBER :: struct {
Version : u32,
Size : u32,
SerialNumber : [(128)]WCHAR,
};
PSTORAGE_ADAPTER_SERIAL_NUMBER :: ^struct {
Version : u32,
Size : u32,
SerialNumber : [(128)]WCHAR,
};
STORAGE_ZONED_DEVICE_TYPES :: enum {
ZonedDeviceTypeUnknown = 0,
ZonedDeviceTypeHostManaged,
ZonedDeviceTypeHostAware,
ZonedDeviceTypeDeviceManaged,
};
PSTORAGE_ZONED_DEVICE_TYPES :: ^enum {
ZonedDeviceTypeUnknown = 0,
ZonedDeviceTypeHostManaged,
ZonedDeviceTypeHostAware,
ZonedDeviceTypeDeviceManaged,
};
STORAGE_ZONE_TYPES :: enum {
ZoneTypeUnknown = 0,
ZoneTypeConventional = 1,
ZoneTypeSequentialWriteRequired = 2,
ZoneTypeSequentialWritePreferred = 3,
ZoneTypeMax,
};
PSTORAGE_ZONE_TYPES :: ^enum {
ZoneTypeUnknown = 0,
ZoneTypeConventional = 1,
ZoneTypeSequentialWriteRequired = 2,
ZoneTypeSequentialWritePreferred = 3,
ZoneTypeMax,
};
STORAGE_ZONE_GROUP :: struct {
ZoneCount : u32,
ZoneType : STORAGE_ZONE_TYPES,
ZoneSize : DWORDLONG,
};
PSTORAGE_ZONE_GROUP :: ^struct {
ZoneCount : u32,
ZoneType : STORAGE_ZONE_TYPES,
ZoneSize : DWORDLONG,
};
STORAGE_ZONED_DEVICE_DESCRIPTOR :: struct {
Version : u32,
Size : u32,
DeviceType : STORAGE_ZONED_DEVICE_TYPES,
ZoneCount : u32,
ZoneAttributes : struct #raw_union {
SequentialRequiredZone : struct {
MaxOpenZoneCount : u32,
UnrestrictedRead : BOOLEAN,
Reserved : [3]BYTE,
},
SequentialPreferredZone : struct {
OptimalOpenZoneCount : u32,
Reserved : u32,
},
},
ZoneGroupCount : u32,
ZoneGroup : [1]STORAGE_ZONE_GROUP,
};
PSTORAGE_ZONED_DEVICE_DESCRIPTOR :: ^struct {
Version : u32,
Size : u32,
DeviceType : STORAGE_ZONED_DEVICE_TYPES,
ZoneCount : u32,
ZoneAttributes : struct #raw_union {
SequentialRequiredZone : struct {
MaxOpenZoneCount : u32,
UnrestrictedRead : BOOLEAN,
Reserved : [3]BYTE,
},
SequentialPreferredZone : struct {
OptimalOpenZoneCount : u32,
Reserved : u32,
},
},
ZoneGroupCount : u32,
ZoneGroup : [1]STORAGE_ZONE_GROUP,
};
DEVICE_LOCATION :: struct {
Socket : u32,
Slot : u32,
Adapter : u32,
Port : u32,
u : struct #raw_union {
s : struct {
Channel : u32,
Device : u32,
},
s2 : struct {
Target : u32,
Lun : u32,
},
},
};
PDEVICE_LOCATION :: ^struct {
Socket : u32,
Slot : u32,
Adapter : u32,
Port : u32,
u : struct #raw_union {
s : struct {
Channel : u32,
Device : u32,
},
s2 : struct {
Target : u32,
Lun : u32,
},
},
};
STORAGE_DEVICE_LOCATION_DESCRIPTOR :: struct {
Version : u32,
Size : u32,
Location : DEVICE_LOCATION,
StringOffset : u32,
};
PSTORAGE_DEVICE_LOCATION_DESCRIPTOR :: ^struct {
Version : u32,
Size : u32,
Location : DEVICE_LOCATION,
StringOffset : u32,
};
STORAGE_DEVICE_NUMA_PROPERTY :: struct {
Version : u32,
Size : u32,
NumaNode : u32,
};
PSTORAGE_DEVICE_NUMA_PROPERTY :: ^struct {
Version : u32,
Size : u32,
NumaNode : u32,
};
STORAGE_DEVICE_UNSAFE_SHUTDOWN_COUNT :: struct {
Version : u32,
Size : u32,
UnsafeShutdownCount : u32,
};
PSTORAGE_DEVICE_UNSAFE_SHUTDOWN_COUNT :: ^struct {
Version : u32,
Size : u32,
UnsafeShutdownCount : u32,
};
STORAGE_HW_ENDURANCE_INFO :: struct {
ValidFields : u32,
GroupId : u32,
Flags : struct {
Shared : ,
Reserved : ,
},
LifePercentage : u32,
BytesReadCount : [16]BYTE,
ByteWriteCount : [16]BYTE,
};
PSTORAGE_HW_ENDURANCE_INFO :: ^struct {
ValidFields : u32,
GroupId : u32,
Flags : struct {
Shared : ,
Reserved : ,
},
LifePercentage : u32,
BytesReadCount : [16]BYTE,
ByteWriteCount : [16]BYTE,
};
STORAGE_HW_ENDURANCE_DATA_DESCRIPTOR :: struct {
Version : u32,
Size : u32,
EnduranceInfo : STORAGE_HW_ENDURANCE_INFO,
};
PSTORAGE_HW_ENDURANCE_DATA_DESCRIPTOR :: ^struct {
Version : u32,
Size : u32,
EnduranceInfo : STORAGE_HW_ENDURANCE_INFO,
};
DEVICE_DATA_MANAGEMENT_SET_ACTION :: u32;
DEVICE_DSM_ACTION :: u32;
DEVICE_DATA_SET_RANGE :: struct {
StartingOffset : LONGLONG,
LengthInBytes : DWORDLONG,
};
PDEVICE_DATA_SET_RANGE :: ^struct {
StartingOffset : LONGLONG,
LengthInBytes : DWORDLONG,
};
DEVICE_DSM_RANGE :: struct {
StartingOffset : LONGLONG,
LengthInBytes : DWORDLONG,
};
PDEVICE_DSM_RANGE :: ^struct {
StartingOffset : LONGLONG,
LengthInBytes : DWORDLONG,
};
DEVICE_MANAGE_DATA_SET_ATTRIBUTES :: struct {
Size : u32,
Action : DEVICE_DSM_ACTION,
Flags : u32,
ParameterBlockOffset : u32,
ParameterBlockLength : u32,
DataSetRangesOffset : u32,
DataSetRangesLength : u32,
};
PDEVICE_MANAGE_DATA_SET_ATTRIBUTES :: ^struct {
Size : u32,
Action : DEVICE_DSM_ACTION,
Flags : u32,
ParameterBlockOffset : u32,
ParameterBlockLength : u32,
DataSetRangesOffset : u32,
DataSetRangesLength : u32,
};
DEVICE_DSM_INPUT :: struct {
Size : u32,
Action : DEVICE_DSM_ACTION,
Flags : u32,
ParameterBlockOffset : u32,
ParameterBlockLength : u32,
DataSetRangesOffset : u32,
DataSetRangesLength : u32,
};
PDEVICE_DSM_INPUT :: ^struct {
Size : u32,
Action : DEVICE_DSM_ACTION,
Flags : u32,
ParameterBlockOffset : u32,
ParameterBlockLength : u32,
DataSetRangesOffset : u32,
DataSetRangesLength : u32,
};
DEVICE_MANAGE_DATA_SET_ATTRIBUTES_OUTPUT :: struct {
Size : u32,
Action : DEVICE_DSM_ACTION,
Flags : u32,
OperationStatus : u32,
ExtendedError : u32,
TargetDetailedError : u32,
ReservedStatus : u32,
OutputBlockOffset : u32,
OutputBlockLength : u32,
};
PDEVICE_MANAGE_DATA_SET_ATTRIBUTES_OUTPUT :: ^struct {
Size : u32,
Action : DEVICE_DSM_ACTION,
Flags : u32,
OperationStatus : u32,
ExtendedError : u32,
TargetDetailedError : u32,
ReservedStatus : u32,
OutputBlockOffset : u32,
OutputBlockLength : u32,
};
DEVICE_DSM_OUTPUT :: struct {
Size : u32,
Action : DEVICE_DSM_ACTION,
Flags : u32,
OperationStatus : u32,
ExtendedError : u32,
TargetDetailedError : u32,
ReservedStatus : u32,
OutputBlockOffset : u32,
OutputBlockLength : u32,
};
PDEVICE_DSM_OUTPUT :: ^struct {
Size : u32,
Action : DEVICE_DSM_ACTION,
Flags : u32,
OperationStatus : u32,
ExtendedError : u32,
TargetDetailedError : u32,
ReservedStatus : u32,
OutputBlockOffset : u32,
OutputBlockLength : u32,
};
DEVICE_DSM_DEFINITION :: struct {
Action : DEVICE_DSM_ACTION,
SingleRange : BOOLEAN,
ParameterBlockAlignment : u32,
ParameterBlockLength : u32,
HasOutput : BOOLEAN,
OutputBlockAlignment : u32,
OutputBlockLength : u32,
};
PDEVICE_DSM_DEFINITION :: ^struct {
Action : DEVICE_DSM_ACTION,
SingleRange : BOOLEAN,
ParameterBlockAlignment : u32,
ParameterBlockLength : u32,
HasOutput : BOOLEAN,
OutputBlockAlignment : u32,
OutputBlockLength : u32,
};
DEVICE_DSM_NOTIFICATION_PARAMETERS :: struct {
Size : u32,
Flags : u32,
NumFileTypeIDs : u32,
FileTypeID : [1]GUID,
};
PDEVICE_DSM_NOTIFICATION_PARAMETERS :: ^struct {
Size : u32,
Flags : u32,
NumFileTypeIDs : u32,
FileTypeID : [1]GUID,
};
STORAGE_OFFLOAD_TOKEN :: struct {
TokenType : [4]BYTE,
Reserved : [2]BYTE,
TokenIdLength : [2]BYTE,
u : struct #raw_union {
StorageOffloadZeroDataToken : struct {
Reserved2 : [0x1F8]BYTE,
},
Token : [0x1F8]BYTE,
},
};
PSTORAGE_OFFLOAD_TOKEN :: ^struct {
TokenType : [4]BYTE,
Reserved : [2]BYTE,
TokenIdLength : [2]BYTE,
u : struct #raw_union {
StorageOffloadZeroDataToken : struct {
Reserved2 : [0x1F8]BYTE,
},
Token : [0x1F8]BYTE,
},
};
DEVICE_DSM_OFFLOAD_READ_PARAMETERS :: struct {
Flags : u32,
TimeToLive : u32,
Reserved : [2]u32,
};
PDEVICE_DSM_OFFLOAD_READ_PARAMETERS :: ^struct {
Flags : u32,
TimeToLive : u32,
Reserved : [2]u32,
};
STORAGE_OFFLOAD_READ_OUTPUT :: struct {
OffloadReadFlags : u32,
Reserved : u32,
LengthProtected : DWORDLONG,
TokenLength : u32,
Token : STORAGE_OFFLOAD_TOKEN,
};
PSTORAGE_OFFLOAD_READ_OUTPUT :: ^struct {
OffloadReadFlags : u32,
Reserved : u32,
LengthProtected : DWORDLONG,
TokenLength : u32,
Token : STORAGE_OFFLOAD_TOKEN,
};
DEVICE_DSM_OFFLOAD_WRITE_PARAMETERS :: struct {
Flags : u32,
Reserved : u32,
TokenOffset : DWORDLONG,
Token : STORAGE_OFFLOAD_TOKEN,
};
PDEVICE_DSM_OFFLOAD_WRITE_PARAMETERS :: ^struct {
Flags : u32,
Reserved : u32,
TokenOffset : DWORDLONG,
Token : STORAGE_OFFLOAD_TOKEN,
};
STORAGE_OFFLOAD_WRITE_OUTPUT :: struct {
OffloadWriteFlags : u32,
Reserved : u32,
LengthCopied : DWORDLONG,
};
PSTORAGE_OFFLOAD_WRITE_OUTPUT :: ^struct {
OffloadWriteFlags : u32,
Reserved : u32,
LengthCopied : DWORDLONG,
};
DEVICE_DATA_SET_LBP_STATE_PARAMETERS :: struct {
Version : u32,
Size : u32,
Flags : u32,
OutputVersion : u32,
};
PDEVICE_DATA_SET_LBP_STATE_PARAMETERS :: ^struct {
Version : u32,
Size : u32,
Flags : u32,
OutputVersion : u32,
};
DEVICE_DSM_ALLOCATION_PARAMETERS :: struct {
Version : u32,
Size : u32,
Flags : u32,
OutputVersion : u32,
};
PDEVICE_DSM_ALLOCATION_PARAMETERS :: ^struct {
Version : u32,
Size : u32,
Flags : u32,
OutputVersion : u32,
};
DEVICE_DATA_SET_LB_PROVISIONING_STATE :: struct {
Size : u32,
Version : u32,
SlabSizeInBytes : DWORDLONG,
SlabOffsetDeltaInBytes : u32,
SlabAllocationBitMapBitCount : u32,
SlabAllocationBitMapLength : u32,
SlabAllocationBitMap : [1]u32,
};
PDEVICE_DATA_SET_LB_PROVISIONING_STATE :: ^struct {
Size : u32,
Version : u32,
SlabSizeInBytes : DWORDLONG,
SlabOffsetDeltaInBytes : u32,
SlabAllocationBitMapBitCount : u32,
SlabAllocationBitMapLength : u32,
SlabAllocationBitMap : [1]u32,
};
DEVICE_DSM_ALLOCATION_OUTPUT :: struct {
Size : u32,
Version : u32,
SlabSizeInBytes : DWORDLONG,
SlabOffsetDeltaInBytes : u32,
SlabAllocationBitMapBitCount : u32,
SlabAllocationBitMapLength : u32,
SlabAllocationBitMap : [1]u32,
};
PDEVICE_DSM_ALLOCATION_OUTPUT :: ^struct {
Size : u32,
Version : u32,
SlabSizeInBytes : DWORDLONG,
SlabOffsetDeltaInBytes : u32,
SlabAllocationBitMapBitCount : u32,
SlabAllocationBitMapLength : u32,
SlabAllocationBitMap : [1]u32,
};
DEVICE_DATA_SET_LB_PROVISIONING_STATE_V2 :: struct {
Size : u32,
Version : u32,
SlabSizeInBytes : DWORDLONG,
SlabOffsetDeltaInBytes : DWORDLONG,
SlabAllocationBitMapBitCount : u32,
SlabAllocationBitMapLength : u32,
SlabAllocationBitMap : [1]u32,
};
PDEVICE_DATA_SET_LB_PROVISIONING_STATE_V2 :: ^struct {
Size : u32,
Version : u32,
SlabSizeInBytes : DWORDLONG,
SlabOffsetDeltaInBytes : DWORDLONG,
SlabAllocationBitMapBitCount : u32,
SlabAllocationBitMapLength : u32,
SlabAllocationBitMap : [1]u32,
};
DEVICE_DSM_ALLOCATION_OUTPUT2 :: struct {
Size : u32,
Version : u32,
SlabSizeInBytes : DWORDLONG,
SlabOffsetDeltaInBytes : DWORDLONG,
SlabAllocationBitMapBitCount : u32,
SlabAllocationBitMapLength : u32,
SlabAllocationBitMap : [1]u32,
};
PDEVICE_DSM_ALLOCATION_OUTPUT2 :: ^struct {
Size : u32,
Version : u32,
SlabSizeInBytes : DWORDLONG,
SlabOffsetDeltaInBytes : DWORDLONG,
SlabAllocationBitMapBitCount : u32,
SlabAllocationBitMapLength : u32,
SlabAllocationBitMap : [1]u32,
};
DEVICE_DATA_SET_REPAIR_PARAMETERS :: struct {
NumberOfRepairCopies : u32,
SourceCopy : u32,
RepairCopies : [1]u32,
};
PDEVICE_DATA_SET_REPAIR_PARAMETERS :: ^struct {
NumberOfRepairCopies : u32,
SourceCopy : u32,
RepairCopies : [1]u32,
};
DEVICE_DSM_REPAIR_PARAMETERS :: struct {
NumberOfRepairCopies : u32,
SourceCopy : u32,
RepairCopies : [1]u32,
};
PDEVICE_DSM_REPAIR_PARAMETERS :: ^struct {
NumberOfRepairCopies : u32,
SourceCopy : u32,
RepairCopies : [1]u32,
};
DEVICE_DATA_SET_REPAIR_OUTPUT :: struct {
ParityExtent : DEVICE_DSM_RANGE,
};
PDEVICE_DATA_SET_REPAIR_OUTPUT :: ^struct {
ParityExtent : DEVICE_DSM_RANGE,
};
DEVICE_DSM_REPAIR_OUTPUT :: struct {
ParityExtent : DEVICE_DSM_RANGE,
};
PDEVICE_DSM_REPAIR_OUTPUT :: ^struct {
ParityExtent : DEVICE_DSM_RANGE,
};
DEVICE_DATA_SET_SCRUB_OUTPUT :: struct {
BytesProcessed : DWORDLONG,
BytesRepaired : DWORDLONG,
BytesFailed : DWORDLONG,
};
PDEVICE_DATA_SET_SCRUB_OUTPUT :: ^struct {
BytesProcessed : DWORDLONG,
BytesRepaired : DWORDLONG,
BytesFailed : DWORDLONG,
};
DEVICE_DSM_SCRUB_OUTPUT :: struct {
BytesProcessed : DWORDLONG,
BytesRepaired : DWORDLONG,
BytesFailed : DWORDLONG,
};
PDEVICE_DSM_SCRUB_OUTPUT :: ^struct {
BytesProcessed : DWORDLONG,
BytesRepaired : DWORDLONG,
BytesFailed : DWORDLONG,
};
DEVICE_DATA_SET_SCRUB_EX_OUTPUT :: struct {
BytesProcessed : DWORDLONG,
BytesRepaired : DWORDLONG,
BytesFailed : DWORDLONG,
ParityExtent : DEVICE_DSM_RANGE,
};
PDEVICE_DATA_SET_SCRUB_EX_OUTPUT :: ^struct {
BytesProcessed : DWORDLONG,
BytesRepaired : DWORDLONG,
BytesFailed : DWORDLONG,
ParityExtent : DEVICE_DSM_RANGE,
};
DEVICE_DSM_SCRUB_OUTPUT2 :: struct {
BytesProcessed : DWORDLONG,
BytesRepaired : DWORDLONG,
BytesFailed : DWORDLONG,
ParityExtent : DEVICE_DSM_RANGE,
};
PDEVICE_DSM_SCRUB_OUTPUT2 :: ^struct {
BytesProcessed : DWORDLONG,
BytesRepaired : DWORDLONG,
BytesFailed : DWORDLONG,
ParityExtent : DEVICE_DSM_RANGE,
};
DEVICE_DSM_TIERING_QUERY_INPUT :: struct {
Version : u32,
Size : u32,
Flags : u32,
NumberOfTierIds : u32,
TierIds : [1]GUID,
};
PDEVICE_DSM_TIERING_QUERY_INPUT :: ^struct {
Version : u32,
Size : u32,
Flags : u32,
NumberOfTierIds : u32,
TierIds : [1]GUID,
};
DEVICE_DSM_TIERING_QUERY_PARAMETERS :: struct {
Version : u32,
Size : u32,
Flags : u32,
NumberOfTierIds : u32,
TierIds : [1]GUID,
};
PDEVICE_DSM_TIERING_QUERY_PARAMETERS :: ^struct {
Version : u32,
Size : u32,
Flags : u32,
NumberOfTierIds : u32,
TierIds : [1]GUID,
};
STORAGE_TIER_REGION :: struct {
TierId : GUID,
Offset : DWORDLONG,
Length : DWORDLONG,
};
PSTORAGE_TIER_REGION :: ^struct {
TierId : GUID,
Offset : DWORDLONG,
Length : DWORDLONG,
};
DEVICE_DSM_TIERING_QUERY_OUTPUT :: struct {
Version : u32,
Size : u32,
Flags : u32,
Reserved : u32,
Alignment : DWORDLONG,
TotalNumberOfRegions : u32,
NumberOfRegionsReturned : u32,
Regions : [1]STORAGE_TIER_REGION,
};
PDEVICE_DSM_TIERING_QUERY_OUTPUT :: ^struct {
Version : u32,
Size : u32,
Flags : u32,
Reserved : u32,
Alignment : DWORDLONG,
TotalNumberOfRegions : u32,
NumberOfRegionsReturned : u32,
Regions : [1]STORAGE_TIER_REGION,
};
DEVICE_DSM_NVCACHE_CHANGE_PRIORITY_PARAMETERS :: struct {
Size : u32,
TargetPriority : BYTE,
Reserved : [3]BYTE,
};
PDEVICE_DSM_NVCACHE_CHANGE_PRIORITY_PARAMETERS :: ^struct {
Size : u32,
TargetPriority : BYTE,
Reserved : [3]BYTE,
};
DEVICE_DATA_SET_TOPOLOGY_ID_QUERY_OUTPUT :: struct {
TopologyRangeBytes : DWORDLONG,
TopologyId : [16]BYTE,
};
PDEVICE_DATA_SET_TOPOLOGY_ID_QUERY_OUTPUT :: ^struct {
TopologyRangeBytes : DWORDLONG,
TopologyId : [16]BYTE,
};
DEVICE_DSM_TOPOLOGY_ID_QUERY_OUTPUT :: struct {
TopologyRangeBytes : DWORDLONG,
TopologyId : [16]BYTE,
};
PDEVICE_DSM_TOPOLOGY_ID_QUERY_OUTPUT :: ^struct {
TopologyRangeBytes : DWORDLONG,
TopologyId : [16]BYTE,
};
DEVICE_STORAGE_ADDRESS_RANGE :: struct {
StartAddress : LONGLONG,
LengthInBytes : DWORDLONG,
};
PDEVICE_STORAGE_ADDRESS_RANGE :: ^struct {
StartAddress : LONGLONG,
LengthInBytes : DWORDLONG,
};
DEVICE_DSM_PHYSICAL_ADDRESSES_OUTPUT :: struct {
Version : u32,
Flags : u32,
TotalNumberOfRanges : u32,
NumberOfRangesReturned : u32,
Ranges : [1]DEVICE_STORAGE_ADDRESS_RANGE,
};
PDEVICE_DSM_PHYSICAL_ADDRESSES_OUTPUT :: ^struct {
Version : u32,
Flags : u32,
TotalNumberOfRanges : u32,
NumberOfRangesReturned : u32,
Ranges : [1]DEVICE_STORAGE_ADDRESS_RANGE,
};
DEVICE_DSM_REPORT_ZONES_PARAMETERS :: struct {
Size : u32,
ReportOption : BYTE,
Partial : BYTE,
Reserved : [2]BYTE,
};
PDEVICE_DSM_REPORT_ZONES_PARAMETERS :: ^struct {
Size : u32,
ReportOption : BYTE,
Partial : BYTE,
Reserved : [2]BYTE,
};
STORAGE_ZONES_ATTRIBUTES :: enum {
ZonesAttributeTypeAndLengthMayDifferent = 0,
ZonesAttributeTypeSameLengthSame = 1,
ZonesAttributeTypeSameLastZoneLengthDifferent = 2,
ZonesAttributeTypeMayDifferentLengthSame = 3,
};
PSTORAGE_ZONES_ATTRIBUTES :: ^enum {
ZonesAttributeTypeAndLengthMayDifferent = 0,
ZonesAttributeTypeSameLengthSame = 1,
ZonesAttributeTypeSameLastZoneLengthDifferent = 2,
ZonesAttributeTypeMayDifferentLengthSame = 3,
};
STORAGE_ZONE_CONDITION :: enum {
ZoneConditionConventional = 0x00,
ZoneConditionEmpty = 0x01,
ZoneConditionImplicitlyOpened = 0x02,
ZoneConditionExplicitlyOpened = 0x03,
ZoneConditionClosed = 0x04,
ZoneConditionReadOnly = 0x0D,
ZoneConditionFull = 0x0E,
ZoneConditionOffline = 0x0F,
};
PSTORAGE_ZONE_CONDITION :: ^enum {
ZoneConditionConventional = 0x00,
ZoneConditionEmpty = 0x01,
ZoneConditionImplicitlyOpened = 0x02,
ZoneConditionExplicitlyOpened = 0x03,
ZoneConditionClosed = 0x04,
ZoneConditionReadOnly = 0x0D,
ZoneConditionFull = 0x0E,
ZoneConditionOffline = 0x0F,
};
STORAGE_ZONE_DESCRIPTOR :: struct {
Size : u32,
ZoneType : STORAGE_ZONE_TYPES,
ZoneCondition : STORAGE_ZONE_CONDITION,
ResetWritePointerRecommend : BOOLEAN,
Reserved0 : [3]BYTE,
ZoneSize : DWORDLONG,
WritePointerOffset : DWORDLONG,
};
PSTORAGE_ZONE_DESCRIPTOR :: ^struct {
Size : u32,
ZoneType : STORAGE_ZONE_TYPES,
ZoneCondition : STORAGE_ZONE_CONDITION,
ResetWritePointerRecommend : BOOLEAN,
Reserved0 : [3]BYTE,
ZoneSize : DWORDLONG,
WritePointerOffset : DWORDLONG,
};
DEVICE_DSM_REPORT_ZONES_DATA :: struct {
Size : u32,
ZoneCount : u32,
Attributes : STORAGE_ZONES_ATTRIBUTES,
Reserved0 : u32,
ZoneDescriptors : [1]STORAGE_ZONE_DESCRIPTOR,
};
PDEVICE_DSM_REPORT_ZONES_DATA :: ^struct {
Size : u32,
ZoneCount : u32,
Attributes : STORAGE_ZONES_ATTRIBUTES,
Reserved0 : u32,
ZoneDescriptors : [1]STORAGE_ZONE_DESCRIPTOR,
};
DEVICE_DSM_REPORT_ZONES_OUTPUT :: struct {
Size : u32,
ZoneCount : u32,
Attributes : STORAGE_ZONES_ATTRIBUTES,
Reserved0 : u32,
ZoneDescriptors : [1]STORAGE_ZONE_DESCRIPTOR,
};
PDEVICE_DSM_REPORT_ZONES_OUTPUT :: ^struct {
Size : u32,
ZoneCount : u32,
Attributes : STORAGE_ZONES_ATTRIBUTES,
Reserved0 : u32,
ZoneDescriptors : [1]STORAGE_ZONE_DESCRIPTOR,
};
DEVICE_STORAGE_RANGE_ATTRIBUTES :: struct {
LengthInBytes : DWORDLONG,
using _ : struct #raw_union {
AllFlags : u32,
using _ : struct {
IsRangeBad : ,
},
},
Reserved : u32,
};
PDEVICE_STORAGE_RANGE_ATTRIBUTES :: ^struct {
LengthInBytes : DWORDLONG,
using _ : struct #raw_union {
AllFlags : u32,
using _ : struct {
IsRangeBad : ,
},
},
Reserved : u32,
};
DEVICE_DSM_RANGE_ERROR_INFO :: struct {
Version : u32,
Flags : u32,
TotalNumberOfRanges : u32,
NumberOfRangesReturned : u32,
Ranges : [1]DEVICE_STORAGE_RANGE_ATTRIBUTES,
};
PDEVICE_DSM_RANGE_ERROR_INFO :: ^struct {
Version : u32,
Flags : u32,
TotalNumberOfRanges : u32,
NumberOfRangesReturned : u32,
Ranges : [1]DEVICE_STORAGE_RANGE_ATTRIBUTES,
};
DEVICE_DSM_RANGE_ERROR_OUTPUT :: struct {
Version : u32,
Flags : u32,
TotalNumberOfRanges : u32,
NumberOfRangesReturned : u32,
Ranges : [1]DEVICE_STORAGE_RANGE_ATTRIBUTES,
};
PDEVICE_DSM_RANGE_ERROR_OUTPUT :: ^struct {
Version : u32,
Flags : u32,
TotalNumberOfRanges : u32,
NumberOfRangesReturned : u32,
Ranges : [1]DEVICE_STORAGE_RANGE_ATTRIBUTES,
};
DEVICE_DSM_LOST_QUERY_PARAMETERS :: struct {
Version : u32,
Granularity : DWORDLONG,
};
PDEVICE_DSM_LOST_QUERY_PARAMETERS :: ^struct {
Version : u32,
Granularity : DWORDLONG,
};
DEVICE_DSM_LOST_QUERY_OUTPUT :: struct {
Version : u32,
Size : u32,
Alignment : DWORDLONG,
NumberOfBits : u32,
BitMap : [1]u32,
};
PDEVICE_DSM_LOST_QUERY_OUTPUT :: ^struct {
Version : u32,
Size : u32,
Alignment : DWORDLONG,
NumberOfBits : u32,
BitMap : [1]u32,
};
DEVICE_DSM_FREE_SPACE_OUTPUT :: struct {
Version : u32,
FreeSpace : DWORDLONG,
};
PDEVICE_DSM_FREE_SPACE_OUTPUT :: ^struct {
Version : u32,
FreeSpace : DWORDLONG,
};
DEVICE_DSM_CONVERSION_OUTPUT :: struct {
Version : u32,
Source : GUID,
};
PDEVICE_DSM_CONVERSION_OUTPUT :: ^struct {
Version : u32,
Source : GUID,
};
STORAGE_GET_BC_PROPERTIES_OUTPUT :: struct {
MaximumRequestsPerPeriod : u32,
MinimumPeriod : u32,
MaximumRequestSize : DWORDLONG,
EstimatedTimePerRequest : u32,
NumOutStandingRequests : u32,
RequestSize : DWORDLONG,
};
PSTORAGE_GET_BC_PROPERTIES_OUTPUT :: ^struct {
MaximumRequestsPerPeriod : u32,
MinimumPeriod : u32,
MaximumRequestSize : DWORDLONG,
EstimatedTimePerRequest : u32,
NumOutStandingRequests : u32,
RequestSize : DWORDLONG,
};
STORAGE_ALLOCATE_BC_STREAM_INPUT :: struct {
Version : u32,
RequestsPerPeriod : u32,
Period : u32,
RetryFailures : BOOLEAN,
Discardable : BOOLEAN,
Reserved1 : [2]BOOLEAN,
AccessType : u32,
AccessMode : u32,
};
PSTORAGE_ALLOCATE_BC_STREAM_INPUT :: ^struct {
Version : u32,
RequestsPerPeriod : u32,
Period : u32,
RetryFailures : BOOLEAN,
Discardable : BOOLEAN,
Reserved1 : [2]BOOLEAN,
AccessType : u32,
AccessMode : u32,
};
STORAGE_ALLOCATE_BC_STREAM_OUTPUT :: struct {
RequestSize : DWORDLONG,
NumOutStandingRequests : u32,
};
PSTORAGE_ALLOCATE_BC_STREAM_OUTPUT :: ^struct {
RequestSize : DWORDLONG,
NumOutStandingRequests : u32,
};
STORAGE_PRIORITY_HINT_SUPPORT :: struct {
SupportFlags : u32,
};
PSTORAGE_PRIORITY_HINT_SUPPORT :: ^struct {
SupportFlags : u32,
};
STORAGE_DIAGNOSTIC_LEVEL :: enum {
StorageDiagnosticLevelDefault = 0,
StorageDiagnosticLevelMax,
};
PSTORAGE_DIAGNOSTIC_LEVEL :: ^enum {
StorageDiagnosticLevelDefault = 0,
StorageDiagnosticLevelMax,
};
STORAGE_DIAGNOSTIC_TARGET_TYPE :: enum {
StorageDiagnosticTargetTypeUndefined = 0,
StorageDiagnosticTargetTypePort,
StorageDiagnosticTargetTypeMiniport,
StorageDiagnosticTargetTypeHbaFirmware,
StorageDiagnosticTargetTypeMax,
};
PSTORAGE_DIAGNOSTIC_TARGET_TYPE :: ^enum {
StorageDiagnosticTargetTypeUndefined = 0,
StorageDiagnosticTargetTypePort,
StorageDiagnosticTargetTypeMiniport,
StorageDiagnosticTargetTypeHbaFirmware,
StorageDiagnosticTargetTypeMax,
};
STORAGE_DIAGNOSTIC_REQUEST :: struct {
Version : u32,
Size : u32,
Reserved : u32,
TargetType : STORAGE_DIAGNOSTIC_TARGET_TYPE,
Level : STORAGE_DIAGNOSTIC_LEVEL,
};
PSTORAGE_DIAGNOSTIC_REQUEST :: ^struct {
Version : u32,
Size : u32,
Reserved : u32,
TargetType : STORAGE_DIAGNOSTIC_TARGET_TYPE,
Level : STORAGE_DIAGNOSTIC_LEVEL,
};
STORAGE_DIAGNOSTIC_DATA :: struct {
Version : u32,
Size : u32,
ProviderId : GUID,
BufferSize : u32,
Reserved : u32,
DiagnosticDataBuffer : [1]BYTE,
};
PSTORAGE_DIAGNOSTIC_DATA :: ^struct {
Version : u32,
Size : u32,
ProviderId : GUID,
BufferSize : u32,
Reserved : u32,
DiagnosticDataBuffer : [1]BYTE,
};
PHYSICAL_ELEMENT_STATUS_REQUEST :: struct {
Version : u32,
Size : u32,
StartingElement : u32,
Filter : BYTE,
ReportType : BYTE,
Reserved : [2]BYTE,
};
PPHYSICAL_ELEMENT_STATUS_REQUEST :: ^struct {
Version : u32,
Size : u32,
StartingElement : u32,
Filter : BYTE,
ReportType : BYTE,
Reserved : [2]BYTE,
};
PHYSICAL_ELEMENT_STATUS_DESCRIPTOR :: struct {
Version : u32,
Size : u32,
ElementIdentifier : u32,
PhysicalElementType : BYTE,
PhysicalElementHealth : BYTE,
Reserved1 : [2]BYTE,
AssociatedCapacity : DWORDLONG,
Reserved2 : [4]u32,
};
PPHYSICAL_ELEMENT_STATUS_DESCRIPTOR :: ^struct {
Version : u32,
Size : u32,
ElementIdentifier : u32,
PhysicalElementType : BYTE,
PhysicalElementHealth : BYTE,
Reserved1 : [2]BYTE,
AssociatedCapacity : DWORDLONG,
Reserved2 : [4]u32,
};
PHYSICAL_ELEMENT_STATUS :: struct {
Version : u32,
Size : u32,
DescriptorCount : u32,
ReturnedDescriptorCount : u32,
ElementIdentifierBeingDepoped : u32,
Reserved : u32,
Descriptors : [1]PHYSICAL_ELEMENT_STATUS_DESCRIPTOR,
};
PPHYSICAL_ELEMENT_STATUS :: ^struct {
Version : u32,
Size : u32,
DescriptorCount : u32,
ReturnedDescriptorCount : u32,
ElementIdentifierBeingDepoped : u32,
Reserved : u32,
Descriptors : [1]PHYSICAL_ELEMENT_STATUS_DESCRIPTOR,
};
REMOVE_ELEMENT_AND_TRUNCATE_REQUEST :: struct {
Version : u32,
Size : u32,
RequestCapacity : DWORDLONG,
ElementIdentifier : u32,
Reserved : u32,
};
PREMOVE_ELEMENT_AND_TRUNCATE_REQUEST :: ^struct {
Version : u32,
Size : u32,
RequestCapacity : DWORDLONG,
ElementIdentifier : u32,
Reserved : u32,
};
STORAGE_READ_CAPACITY :: struct {
Version : u32,
Size : u32,
BlockLength : u32,
NumberOfBlocks : LARGE_INTEGER,
DiskLength : LARGE_INTEGER,
};
PSTORAGE_READ_CAPACITY :: ^struct {
Version : u32,
Size : u32,
BlockLength : u32,
NumberOfBlocks : LARGE_INTEGER,
DiskLength : LARGE_INTEGER,
};
WRITE_CACHE_TYPE :: enum {
WriteCacheTypeUnknown,
WriteCacheTypeNone,
WriteCacheTypeWriteBack,
WriteCacheTypeWriteThrough,
};
WRITE_CACHE_ENABLE :: enum {
WriteCacheEnableUnknown,
WriteCacheDisabled,
WriteCacheEnabled,
};
WRITE_CACHE_CHANGE :: enum {
WriteCacheChangeUnknown,
WriteCacheNotChangeable,
WriteCacheChangeable,
};
WRITE_THROUGH :: enum {
WriteThroughUnknown,
WriteThroughNotSupported,
WriteThroughSupported,
};
STORAGE_WRITE_CACHE_PROPERTY :: struct {
Version : u32,
Size : u32,
WriteCacheType : WRITE_CACHE_TYPE,
WriteCacheEnabled : WRITE_CACHE_ENABLE,
WriteCacheChangeable : WRITE_CACHE_CHANGE,
WriteThroughSupported : WRITE_THROUGH,
FlushCacheSupported : BOOLEAN,
UserDefinedPowerProtection : BOOLEAN,
NVCacheEnabled : BOOLEAN,
};
PSTORAGE_WRITE_CACHE_PROPERTY :: ^struct {
Version : u32,
Size : u32,
WriteCacheType : WRITE_CACHE_TYPE,
WriteCacheEnabled : WRITE_CACHE_ENABLE,
WriteCacheChangeable : WRITE_CACHE_CHANGE,
WriteThroughSupported : WRITE_THROUGH,
FlushCacheSupported : BOOLEAN,
UserDefinedPowerProtection : BOOLEAN,
NVCacheEnabled : BOOLEAN,
};
DEVICEDUMP_COLLECTION_TYPEIDE_NOTIFICATION_TYPE :: enum {
TCCollectionBugCheck = 1,
TCCollectionApplicationRequested,
TCCollectionDeviceRequested,
};
PDEVICEDUMP_COLLECTION_TYPE :: ^enum {
TCCollectionBugCheck = 1,
TCCollectionApplicationRequested,
TCCollectionDeviceRequested,
};
DEVICEDUMP_SUBSECTION_POINTER :: struct {
dwSize : u32,
dwFlags : u32,
dwOffset : u32,
};
PDEVICEDUMP_SUBSECTION_POINTER :: ^struct {
dwSize : u32,
dwFlags : u32,
dwOffset : u32,
};
DEVICEDUMP_STRUCTURE_VERSION :: struct {
dwSignature : u32,
dwVersion : u32,
dwSize : u32,
};
PDEVICEDUMP_STRUCTURE_VERSION :: ^struct {
dwSignature : u32,
dwVersion : u32,
dwSize : u32,
};
DEVICEDUMP_SECTION_HEADER :: struct {
guidDeviceDataId : GUID,
sOrganizationID : [16]BYTE,
dwFirmwareRevision : u32,
sModelNumber : [32]BYTE,
szDeviceManufacturingID : [32]BYTE,
dwFlags : u32,
bRestrictedPrivateDataVersion : u32,
dwFirmwareIssueId : u32,
szIssueDescriptionString : [132]BYTE,
};
PDEVICEDUMP_SECTION_HEADER :: ^struct {
guidDeviceDataId : GUID,
sOrganizationID : [16]BYTE,
dwFirmwareRevision : u32,
sModelNumber : [32]BYTE,
szDeviceManufacturingID : [32]BYTE,
dwFlags : u32,
bRestrictedPrivateDataVersion : u32,
dwFirmwareIssueId : u32,
szIssueDescriptionString : [132]BYTE,
};
GP_LOG_PAGE_DESCRIPTOR :: struct {
LogAddress : u16,
LogSectors : u16,
};
PGP_LOG_PAGE_DESCRIPTOR :: ^struct {
LogAddress : u16,
LogSectors : u16,
};
DEVICEDUMP_PUBLIC_SUBSECTION :: struct {
dwFlags : u32,
GPLogTable : [16]GP_LOG_PAGE_DESCRIPTOR,
szDescription : [16]CHAR,
bData : [1]BYTE,
};
PDEVICEDUMP_PUBLIC_SUBSECTION :: ^struct {
dwFlags : u32,
GPLogTable : [16]GP_LOG_PAGE_DESCRIPTOR,
szDescription : [16]CHAR,
bData : [1]BYTE,
};
DEVICEDUMP_RESTRICTED_SUBSECTION :: struct {
bData : [1]BYTE,
};
PDEVICEDUMP_RESTRICTED_SUBSECTION :: ^struct {
bData : [1]BYTE,
};
DEVICEDUMP_PRIVATE_SUBSECTION :: struct {
dwFlags : u32,
GPLogId : GP_LOG_PAGE_DESCRIPTOR,
bData : [1]BYTE,
};
PDEVICEDUMP_PRIVATE_SUBSECTION :: ^struct {
dwFlags : u32,
GPLogId : GP_LOG_PAGE_DESCRIPTOR,
bData : [1]BYTE,
};
DEVICEDUMP_STORAGEDEVICE_DATA :: struct {
Descriptor : DEVICEDUMP_STRUCTURE_VERSION,
SectionHeader : DEVICEDUMP_SECTION_HEADER,
dwBufferSize : u32,
dwReasonForCollection : u32,
PublicData : DEVICEDUMP_SUBSECTION_POINTER,
RestrictedData : DEVICEDUMP_SUBSECTION_POINTER,
PrivateData : DEVICEDUMP_SUBSECTION_POINTER,
};
PDEVICEDUMP_STORAGEDEVICE_DATA :: ^struct {
Descriptor : DEVICEDUMP_STRUCTURE_VERSION,
SectionHeader : DEVICEDUMP_SECTION_HEADER,
dwBufferSize : u32,
dwReasonForCollection : u32,
PublicData : DEVICEDUMP_SUBSECTION_POINTER,
RestrictedData : DEVICEDUMP_SUBSECTION_POINTER,
PrivateData : DEVICEDUMP_SUBSECTION_POINTER,
};
DEVICEDUMP_STORAGESTACK_PUBLIC_STATE_RECORD :: struct {
Cdb : [16]BYTE,
Command : [16]BYTE,
StartTime : DWORDLONG,
EndTime : DWORDLONG,
OperationStatus : u32,
OperationError : u32,
StackSpecific : struct #raw_union {
ExternalStack : struct {
dwReserved : u32,
},
AtaPort : struct {
dwAtaPortSpecific : u32,
},
StorPort : struct {
SrbTag : u32,
},
},
};
PDEVICEDUMP_STORAGESTACK_PUBLIC_STATE_RECORD :: ^struct {
Cdb : [16]BYTE,
Command : [16]BYTE,
StartTime : DWORDLONG,
EndTime : DWORDLONG,
OperationStatus : u32,
OperationError : u32,
StackSpecific : struct #raw_union {
ExternalStack : struct {
dwReserved : u32,
},
AtaPort : struct {
dwAtaPortSpecific : u32,
},
StorPort : struct {
SrbTag : u32,
},
},
};
DEVICEDUMP_STORAGESTACK_PUBLIC_DUMP :: struct {
Descriptor : DEVICEDUMP_STRUCTURE_VERSION,
dwReasonForCollection : u32,
cDriverName : [16]BYTE,
uiNumRecords : u32,
RecordArray : [1]DEVICEDUMP_STORAGESTACK_PUBLIC_STATE_RECORD,
};
PDEVICEDUMP_STORAGESTACK_PUBLIC_DUMP :: ^struct {
Descriptor : DEVICEDUMP_STRUCTURE_VERSION,
dwReasonForCollection : u32,
cDriverName : [16]BYTE,
uiNumRecords : u32,
RecordArray : [1]DEVICEDUMP_STORAGESTACK_PUBLIC_STATE_RECORD,
};
STORAGE_IDLE_POWER :: struct {
Version : u32,
Size : u32,
WakeCapableHint : ,
D3ColdSupported : ,
Reserved : ,
D3IdleTimeout : u32,
};
PSTORAGE_IDLE_POWER :: ^struct {
Version : u32,
Size : u32,
WakeCapableHint : ,
D3ColdSupported : ,
Reserved : ,
D3IdleTimeout : u32,
};
STORAGE_POWERUP_REASON_TYPE :: enum {
StoragePowerupUnknown = 0,
StoragePowerupIO,
StoragePowerupDeviceAttention,
};
PSTORAGE_POWERUP_REASON_TYPE :: ^enum {
StoragePowerupUnknown = 0,
StoragePowerupIO,
StoragePowerupDeviceAttention,
};
STORAGE_IDLE_POWERUP_REASON :: struct {
Version : u32,
Size : u32,
PowerupReason : STORAGE_POWERUP_REASON_TYPE,
};
PSTORAGE_IDLE_POWERUP_REASON :: ^struct {
Version : u32,
Size : u32,
PowerupReason : STORAGE_POWERUP_REASON_TYPE,
};
STORAGE_DEVICE_POWER_CAP_UNITS :: enum {
StorageDevicePowerCapUnitsPercent,
StorageDevicePowerCapUnitsMilliwatts,
};
PSTORAGE_DEVICE_POWER_CAP_UNITS :: ^enum {
StorageDevicePowerCapUnitsPercent,
StorageDevicePowerCapUnitsMilliwatts,
};
STORAGE_DEVICE_POWER_CAP :: struct {
Version : u32,
Size : u32,
Units : STORAGE_DEVICE_POWER_CAP_UNITS,
MaxPower : DWORDLONG,
};
PSTORAGE_DEVICE_POWER_CAP :: ^struct {
Version : u32,
Size : u32,
Units : STORAGE_DEVICE_POWER_CAP_UNITS,
MaxPower : DWORDLONG,
};
STORAGE_RPMB_DATA_FRAME :: struct {
Stuff : [196]BYTE,
KeyOrMAC : [32]BYTE,
Data : [256]BYTE,
Nonce : [16]BYTE,
WriteCounter : [4]BYTE,
Address : [2]BYTE,
BlockCount : [2]BYTE,
OperationResult : [2]BYTE,
RequestOrResponseType : [2]BYTE,
};
PSTORAGE_RPMB_DATA_FRAME :: ^struct {
Stuff : [196]BYTE,
KeyOrMAC : [32]BYTE,
Data : [256]BYTE,
Nonce : [16]BYTE,
WriteCounter : [4]BYTE,
Address : [2]BYTE,
BlockCount : [2]BYTE,
OperationResult : [2]BYTE,
RequestOrResponseType : [2]BYTE,
};
STORAGE_RPMB_COMMAND_TYPE :: enum {
StorRpmbProgramAuthKey = 0x00000001,
StorRpmbQueryWriteCounter = 0x00000002,
StorRpmbAuthenticatedWrite = 0x00000003,
StorRpmbAuthenticatedRead = 0x00000004,
StorRpmbReadResultRequest = 0x00000005,
StorRpmbAuthenticatedDeviceConfigWrite = 0x00000006,
StorRpmbAuthenticatedDeviceConfigRead = 0x00000007,
};
PSTORAGE_RPMB_COMMAND_TYPE :: ^enum {
StorRpmbProgramAuthKey = 0x00000001,
StorRpmbQueryWriteCounter = 0x00000002,
StorRpmbAuthenticatedWrite = 0x00000003,
StorRpmbAuthenticatedRead = 0x00000004,
StorRpmbReadResultRequest = 0x00000005,
StorRpmbAuthenticatedDeviceConfigWrite = 0x00000006,
StorRpmbAuthenticatedDeviceConfigRead = 0x00000007,
};
STORAGE_EVENT_NOTIFICATION :: struct {
Version : u32,
Size : u32,
Events : DWORDLONG,
};
PSTORAGE_EVENT_NOTIFICATION :: ^struct {
Version : u32,
Size : u32,
Events : DWORDLONG,
};
STORAGE_COUNTER_TYPE :: enum {
StorageCounterTypeUnknown = 0,
StorageCounterTypeTemperatureCelsius,
StorageCounterTypeTemperatureCelsiusMax,
StorageCounterTypeReadErrorsTotal,
StorageCounterTypeReadErrorsCorrected,
StorageCounterTypeReadErrorsUncorrected,
StorageCounterTypeWriteErrorsTotal,
StorageCounterTypeWriteErrorsCorrected,
StorageCounterTypeWriteErrorsUncorrected,
StorageCounterTypeManufactureDate,
StorageCounterTypeStartStopCycleCount,
StorageCounterTypeStartStopCycleCountMax,
StorageCounterTypeLoadUnloadCycleCount,
StorageCounterTypeLoadUnloadCycleCountMax,
StorageCounterTypeWearPercentage,
StorageCounterTypeWearPercentageWarning,
StorageCounterTypeWearPercentageMax,
StorageCounterTypePowerOnHours,
StorageCounterTypeReadLatency100NSMax,
StorageCounterTypeWriteLatency100NSMax,
StorageCounterTypeFlushLatency100NSMax,
StorageCounterTypeMax,
};
PSTORAGE_COUNTER_TYPE :: ^enum {
StorageCounterTypeUnknown = 0,
StorageCounterTypeTemperatureCelsius,
StorageCounterTypeTemperatureCelsiusMax,
StorageCounterTypeReadErrorsTotal,
StorageCounterTypeReadErrorsCorrected,
StorageCounterTypeReadErrorsUncorrected,
StorageCounterTypeWriteErrorsTotal,
StorageCounterTypeWriteErrorsCorrected,
StorageCounterTypeWriteErrorsUncorrected,
StorageCounterTypeManufactureDate,
StorageCounterTypeStartStopCycleCount,
StorageCounterTypeStartStopCycleCountMax,
StorageCounterTypeLoadUnloadCycleCount,
StorageCounterTypeLoadUnloadCycleCountMax,
StorageCounterTypeWearPercentage,
StorageCounterTypeWearPercentageWarning,
StorageCounterTypeWearPercentageMax,
StorageCounterTypePowerOnHours,
StorageCounterTypeReadLatency100NSMax,
StorageCounterTypeWriteLatency100NSMax,
StorageCounterTypeFlushLatency100NSMax,
StorageCounterTypeMax,
};
STORAGE_COUNTER :: struct {
Type : STORAGE_COUNTER_TYPE,
Value : struct #raw_union {
ManufactureDate : struct {
Week : u32,
Year : u32,
},
AsUlonglong : DWORDLONG,
},
};
PSTORAGE_COUNTER :: ^struct {
Type : STORAGE_COUNTER_TYPE,
Value : struct #raw_union {
ManufactureDate : struct {
Week : u32,
Year : u32,
},
AsUlonglong : DWORDLONG,
},
};
STORAGE_COUNTERS :: struct {
Version : u32,
Size : u32,
NumberOfCounters : u32,
Counters : [1]STORAGE_COUNTER,
};
PSTORAGE_COUNTERS :: ^struct {
Version : u32,
Size : u32,
NumberOfCounters : u32,
Counters : [1]STORAGE_COUNTER,
};
STORAGE_HW_FIRMWARE_INFO_QUERY :: struct {
Version : u32,
Size : u32,
Flags : u32,
Reserved : u32,
};
PSTORAGE_HW_FIRMWARE_INFO_QUERY :: ^struct {
Version : u32,
Size : u32,
Flags : u32,
Reserved : u32,
};
STORAGE_HW_FIRMWARE_SLOT_INFO :: struct {
Version : u32,
Size : u32,
SlotNumber : BYTE,
ReadOnly : ,
Reserved0 : ,
Reserved1 : [6]BYTE,
Revision : [16]BYTE,
};
PSTORAGE_HW_FIRMWARE_SLOT_INFO :: ^struct {
Version : u32,
Size : u32,
SlotNumber : BYTE,
ReadOnly : ,
Reserved0 : ,
Reserved1 : [6]BYTE,
Revision : [16]BYTE,
};
STORAGE_HW_FIRMWARE_INFO :: struct {
Version : u32,
Size : u32,
SupportUpgrade : ,
Reserved0 : ,
SlotCount : BYTE,
ActiveSlot : BYTE,
PendingActivateSlot : BYTE,
FirmwareShared : BOOLEAN,
Reserved : [3]BYTE,
ImagePayloadAlignment : u32,
ImagePayloadMaxSize : u32,
Slot : [1]STORAGE_HW_FIRMWARE_SLOT_INFO,
};
PSTORAGE_HW_FIRMWARE_INFO :: ^struct {
Version : u32,
Size : u32,
SupportUpgrade : ,
Reserved0 : ,
SlotCount : BYTE,
ActiveSlot : BYTE,
PendingActivateSlot : BYTE,
FirmwareShared : BOOLEAN,
Reserved : [3]BYTE,
ImagePayloadAlignment : u32,
ImagePayloadMaxSize : u32,
Slot : [1]STORAGE_HW_FIRMWARE_SLOT_INFO,
};
STORAGE_HW_FIRMWARE_DOWNLOAD :: struct {
Version : u32,
Size : u32,
Flags : u32,
Slot : BYTE,
Reserved : [3]BYTE,
Offset : DWORDLONG,
BufferSize : DWORDLONG,
ImageBuffer : [1]BYTE,
};
PSTORAGE_HW_FIRMWARE_DOWNLOAD :: ^struct {
Version : u32,
Size : u32,
Flags : u32,
Slot : BYTE,
Reserved : [3]BYTE,
Offset : DWORDLONG,
BufferSize : DWORDLONG,
ImageBuffer : [1]BYTE,
};
STORAGE_HW_FIRMWARE_DOWNLOAD_V2 :: struct {
Version : u32,
Size : u32,
Flags : u32,
Slot : BYTE,
Reserved : [3]BYTE,
Offset : DWORDLONG,
BufferSize : DWORDLONG,
ImageSize : u32,
Reserved2 : u32,
ImageBuffer : [1]BYTE,
};
PSTORAGE_HW_FIRMWARE_DOWNLOAD_V2 :: ^struct {
Version : u32,
Size : u32,
Flags : u32,
Slot : BYTE,
Reserved : [3]BYTE,
Offset : DWORDLONG,
BufferSize : DWORDLONG,
ImageSize : u32,
Reserved2 : u32,
ImageBuffer : [1]BYTE,
};
STORAGE_HW_FIRMWARE_ACTIVATE :: struct {
Version : u32,
Size : u32,
Flags : u32,
Slot : BYTE,
Reserved0 : [3]BYTE,
};
PSTORAGE_HW_FIRMWARE_ACTIVATE :: ^struct {
Version : u32,
Size : u32,
Flags : u32,
Slot : BYTE,
Reserved0 : [3]BYTE,
};
STORAGE_PROTOCOL_COMMAND :: struct {
Version : u32,
Length : u32,
ProtocolType : STORAGE_PROTOCOL_TYPE,
Flags : u32,
ReturnStatus : u32,
ErrorCode : u32,
CommandLength : u32,
ErrorInfoLength : u32,
DataToDeviceTransferLength : u32,
DataFromDeviceTransferLength : u32,
TimeOutValue : u32,
ErrorInfoOffset : u32,
DataToDeviceBufferOffset : u32,
DataFromDeviceBufferOffset : u32,
CommandSpecific : u32,
Reserved0 : u32,
FixedProtocolReturnData : u32,
Reserved1 : [3]u32,
Command : [1]BYTE,
};
PSTORAGE_PROTOCOL_COMMAND :: ^struct {
Version : u32,
Length : u32,
ProtocolType : STORAGE_PROTOCOL_TYPE,
Flags : u32,
ReturnStatus : u32,
ErrorCode : u32,
CommandLength : u32,
ErrorInfoLength : u32,
DataToDeviceTransferLength : u32,
DataFromDeviceTransferLength : u32,
TimeOutValue : u32,
ErrorInfoOffset : u32,
DataToDeviceBufferOffset : u32,
DataFromDeviceBufferOffset : u32,
CommandSpecific : u32,
Reserved0 : u32,
FixedProtocolReturnData : u32,
Reserved1 : [3]u32,
Command : [1]BYTE,
};
STORAGE_ATTRIBUTE_MGMT_ACTION :: enum {
StorAttributeMgmt_ClearAttribute = 0,
StorAttributeMgmt_SetAttribute = 1,
StorAttributeMgmt_ResetAttribute = 2,
};
PSTORAGE_ATTRIBUTE_MGMT_ACTION :: ^enum {
StorAttributeMgmt_ClearAttribute = 0,
StorAttributeMgmt_SetAttribute = 1,
StorAttributeMgmt_ResetAttribute = 2,
};
STORAGE_ATTRIBUTE_MGMT :: struct {
Version : u32,
Size : u32,
Action : STORAGE_ATTRIBUTE_MGMT_ACTION,
Attribute : u32,
};
PSTORAGE_ATTRIBUTE_MGMT :: ^struct {
Version : u32,
Size : u32,
Action : STORAGE_ATTRIBUTE_MGMT_ACTION,
Attribute : u32,
};
SCM_PD_HEALTH_NOTIFICATION_DATA :: struct {
DeviceGuid : GUID,
};
PSCM_PD_HEALTH_NOTIFICATION_DATA :: ^struct {
DeviceGuid : GUID,
};
SCM_LOGICAL_DEVICE_INSTANCE :: struct {
Version : u32,
Size : u32,
DeviceGuid : GUID,
SymbolicLink : [256]WCHAR,
};
PSCM_LOGICAL_DEVICE_INSTANCE :: ^struct {
Version : u32,
Size : u32,
DeviceGuid : GUID,
SymbolicLink : [256]WCHAR,
};
SCM_LOGICAL_DEVICES :: struct {
Version : u32,
Size : u32,
DeviceCount : u32,
Devices : [1]SCM_LOGICAL_DEVICE_INSTANCE,
};
PSCM_LOGICAL_DEVICES :: ^struct {
Version : u32,
Size : u32,
DeviceCount : u32,
Devices : [1]SCM_LOGICAL_DEVICE_INSTANCE,
};
SCM_PHYSICAL_DEVICE_INSTANCE :: struct {
Version : u32,
Size : u32,
NfitHandle : u32,
SymbolicLink : [256]WCHAR,
};
PSCM_PHYSICAL_DEVICE_INSTANCE :: ^struct {
Version : u32,
Size : u32,
NfitHandle : u32,
SymbolicLink : [256]WCHAR,
};
SCM_PHYSICAL_DEVICES :: struct {
Version : u32,
Size : u32,
DeviceCount : u32,
Devices : [1]SCM_PHYSICAL_DEVICE_INSTANCE,
};
PSCM_PHYSICAL_DEVICES :: ^struct {
Version : u32,
Size : u32,
DeviceCount : u32,
Devices : [1]SCM_PHYSICAL_DEVICE_INSTANCE,
};
SCM_REGION_FLAG :: enum {
ScmRegionFlagNone = 0x0,
ScmRegionFlagLabel = 0x1,
};
PSCM_REGION_FLAG :: ^enum {
ScmRegionFlagNone = 0x0,
ScmRegionFlagLabel = 0x1,
};
SCM_REGION :: struct {
Version : u32,
Size : u32,
Flags : u32,
NfitHandle : u32,
LogicalDeviceGuid : GUID,
AddressRangeType : GUID,
AssociatedId : u32,
Length : DWORD64,
StartingDPA : DWORD64,
BaseSPA : DWORD64,
SPAOffset : DWORD64,
RegionOffset : DWORD64,
};
PSCM_REGION :: ^struct {
Version : u32,
Size : u32,
Flags : u32,
NfitHandle : u32,
LogicalDeviceGuid : GUID,
AddressRangeType : GUID,
AssociatedId : u32,
Length : DWORD64,
StartingDPA : DWORD64,
BaseSPA : DWORD64,
SPAOffset : DWORD64,
RegionOffset : DWORD64,
};
SCM_REGIONS :: struct {
Version : u32,
Size : u32,
RegionCount : u32,
Regions : [1]SCM_REGION,
};
PSCM_REGIONS :: ^struct {
Version : u32,
Size : u32,
RegionCount : u32,
Regions : [1]SCM_REGION,
};
SCM_INTERLEAVED_PD_INFO :: struct {
DeviceHandle : u32,
DeviceGuid : GUID,
};
PSCM_INTERLEAVED_PD_INFO :: ^struct {
DeviceHandle : u32,
DeviceGuid : GUID,
};
SCM_LD_INTERLEAVE_SET_INFO :: struct {
Version : u32,
Size : u32,
InterleaveSetSize : u32,
InterleaveSet : [1]SCM_INTERLEAVED_PD_INFO,
};
PSCM_LD_INTERLEAVE_SET_INFO :: ^struct {
Version : u32,
Size : u32,
InterleaveSetSize : u32,
InterleaveSet : [1]SCM_INTERLEAVED_PD_INFO,
};
SCM_PD_QUERY_TYPE :: enum {
ScmPhysicalDeviceQuery_Descriptor = 0,
ScmPhysicalDeviceQuery_IsSupported,
ScmPhysicalDeviceQuery_Max,
};
PSCM_PD_QUERY_TYPE :: ^enum {
ScmPhysicalDeviceQuery_Descriptor = 0,
ScmPhysicalDeviceQuery_IsSupported,
ScmPhysicalDeviceQuery_Max,
};
SCM_PD_PROPERTY_ID :: enum {
ScmPhysicalDeviceProperty_DeviceInfo = 0,
ScmPhysicalDeviceProperty_ManagementStatus,
ScmPhysicalDeviceProperty_FirmwareInfo,
ScmPhysicalDeviceProperty_LocationString,
ScmPhysicalDeviceProperty_DeviceSpecificInfo,
ScmPhysicalDeviceProperty_DeviceHandle,
ScmPhysicalDeviceProperty_Max,
};
PSCM_PD_PROPERTY_ID :: ^enum {
ScmPhysicalDeviceProperty_DeviceInfo = 0,
ScmPhysicalDeviceProperty_ManagementStatus,
ScmPhysicalDeviceProperty_FirmwareInfo,
ScmPhysicalDeviceProperty_LocationString,
ScmPhysicalDeviceProperty_DeviceSpecificInfo,
ScmPhysicalDeviceProperty_DeviceHandle,
ScmPhysicalDeviceProperty_Max,
};
SCM_PD_PROPERTY_QUERY :: struct {
Version : u32,
Size : u32,
PropertyId : SCM_PD_PROPERTY_ID,
QueryType : SCM_PD_QUERY_TYPE,
AdditionalParameters : [1]BYTE,
};
PSCM_PD_PROPERTY_QUERY :: ^struct {
Version : u32,
Size : u32,
PropertyId : SCM_PD_PROPERTY_ID,
QueryType : SCM_PD_QUERY_TYPE,
AdditionalParameters : [1]BYTE,
};
SCM_PD_DESCRIPTOR_HEADER :: struct {
Version : u32,
Size : u32,
};
PSCM_PD_DESCRIPTOR_HEADER :: ^struct {
Version : u32,
Size : u32,
};
SCM_PD_DEVICE_HANDLE :: struct {
Version : u32,
Size : u32,
DeviceGuid : GUID,
DeviceHandle : u32,
};
PSCM_PD_DEVICE_HANDLE :: ^struct {
Version : u32,
Size : u32,
DeviceGuid : GUID,
DeviceHandle : u32,
};
SCM_PD_DEVICE_INFO :: struct {
Version : u32,
Size : u32,
DeviceGuid : GUID,
UnsafeShutdownCount : u32,
PersistentMemorySizeInBytes : DWORD64,
VolatileMemorySizeInBytes : DWORD64,
TotalMemorySizeInBytes : DWORD64,
SlotNumber : u32,
DeviceHandle : u32,
PhysicalId : u16,
NumberOfFormatInterfaceCodes : BYTE,
FormatInterfaceCodes : [8]u16,
VendorId : u32,
ProductId : u32,
SubsystemDeviceId : u32,
SubsystemVendorId : u32,
ManufacturingLocation : BYTE,
ManufacturingWeek : BYTE,
ManufacturingYear : BYTE,
SerialNumber4Byte : u32,
SerialNumberLengthInChars : u32,
SerialNumber : [1]CHAR,
};
PSCM_PD_DEVICE_INFO :: ^struct {
Version : u32,
Size : u32,
DeviceGuid : GUID,
UnsafeShutdownCount : u32,
PersistentMemorySizeInBytes : DWORD64,
VolatileMemorySizeInBytes : DWORD64,
TotalMemorySizeInBytes : DWORD64,
SlotNumber : u32,
DeviceHandle : u32,
PhysicalId : u16,
NumberOfFormatInterfaceCodes : BYTE,
FormatInterfaceCodes : [8]u16,
VendorId : u32,
ProductId : u32,
SubsystemDeviceId : u32,
SubsystemVendorId : u32,
ManufacturingLocation : BYTE,
ManufacturingWeek : BYTE,
ManufacturingYear : BYTE,
SerialNumber4Byte : u32,
SerialNumberLengthInChars : u32,
SerialNumber : [1]CHAR,
};
SCM_PD_DEVICE_SPECIFIC_PROPERTY :: struct {
Name : [128]WCHAR,
Value : LONGLONG,
};
PSCM_PD_DEVICE_SPECIFIC_PROPERTY :: ^struct {
Name : [128]WCHAR,
Value : LONGLONG,
};
SCM_PD_DEVICE_SPECIFIC_INFO :: struct {
Version : u32,
Size : u32,
NumberOfProperties : u32,
DeviceSpecificProperties : [1]SCM_PD_DEVICE_SPECIFIC_PROPERTY,
};
PSCM_PD_DEVICE_SPECIFIC_INFO :: ^struct {
Version : u32,
Size : u32,
NumberOfProperties : u32,
DeviceSpecificProperties : [1]SCM_PD_DEVICE_SPECIFIC_PROPERTY,
};
SCM_PD_FIRMWARE_SLOT_INFO :: struct {
Version : u32,
Size : u32,
SlotNumber : BYTE,
ReadOnly : ,
Reserved0 : ,
Reserved1 : [6]BYTE,
Revision : [32]BYTE,
};
PSCM_PD_FIRMWARE_SLOT_INFO :: ^struct {
Version : u32,
Size : u32,
SlotNumber : BYTE,
ReadOnly : ,
Reserved0 : ,
Reserved1 : [6]BYTE,
Revision : [32]BYTE,
};
SCM_PD_FIRMWARE_INFO :: struct {
Version : u32,
Size : u32,
ActiveSlot : BYTE,
NextActiveSlot : BYTE,
SlotCount : BYTE,
Slots : [1]SCM_PD_FIRMWARE_SLOT_INFO,
};
PSCM_PD_FIRMWARE_INFO :: ^struct {
Version : u32,
Size : u32,
ActiveSlot : BYTE,
NextActiveSlot : BYTE,
SlotCount : BYTE,
Slots : [1]SCM_PD_FIRMWARE_SLOT_INFO,
};
SCM_PD_HEALTH_STATUS :: enum {
ScmPhysicalDeviceHealth_Unknown = 0,
ScmPhysicalDeviceHealth_Unhealthy,
ScmPhysicalDeviceHealth_Warning,
ScmPhysicalDeviceHealth_Healthy,
ScmPhysicalDeviceHealth_Max,
};
PSCM_PD_HEALTH_STATUS :: ^enum {
ScmPhysicalDeviceHealth_Unknown = 0,
ScmPhysicalDeviceHealth_Unhealthy,
ScmPhysicalDeviceHealth_Warning,
ScmPhysicalDeviceHealth_Healthy,
ScmPhysicalDeviceHealth_Max,
};
SCM_PD_OPERATIONAL_STATUS :: enum {
ScmPhysicalDeviceOpStatus_Unknown = 0,
ScmPhysicalDeviceOpStatus_Ok,
ScmPhysicalDeviceOpStatus_PredictingFailure,
ScmPhysicalDeviceOpStatus_InService,
ScmPhysicalDeviceOpStatus_HardwareError,
ScmPhysicalDeviceOpStatus_NotUsable,
ScmPhysicalDeviceOpStatus_TransientError,
ScmPhysicalDeviceOpStatus_Missing,
ScmPhysicalDeviceOpStatus_Max,
};
PSCM_PD_OPERATIONAL_STATUS :: ^enum {
ScmPhysicalDeviceOpStatus_Unknown = 0,
ScmPhysicalDeviceOpStatus_Ok,
ScmPhysicalDeviceOpStatus_PredictingFailure,
ScmPhysicalDeviceOpStatus_InService,
ScmPhysicalDeviceOpStatus_HardwareError,
ScmPhysicalDeviceOpStatus_NotUsable,
ScmPhysicalDeviceOpStatus_TransientError,
ScmPhysicalDeviceOpStatus_Missing,
ScmPhysicalDeviceOpStatus_Max,
};
SCM_PD_OPERATIONAL_STATUS_REASON :: enum {
ScmPhysicalDeviceOpReason_Unknown = 0,
ScmPhysicalDeviceOpReason_Media,
ScmPhysicalDeviceOpReason_ThresholdExceeded,
ScmPhysicalDeviceOpReason_LostData,
ScmPhysicalDeviceOpReason_EnergySource,
ScmPhysicalDeviceOpReason_Configuration,
ScmPhysicalDeviceOpReason_DeviceController,
ScmPhysicalDeviceOpReason_MediaController,
ScmPhysicalDeviceOpReason_Component,
ScmPhysicalDeviceOpReason_BackgroundOperation,
ScmPhysicalDeviceOpReason_InvalidFirmware,
ScmPhysicalDeviceOpReason_HealthCheck,
ScmPhysicalDeviceOpReason_LostDataPersistence,
ScmPhysicalDeviceOpReason_DisabledByPlatform,
ScmPhysicalDeviceOpReason_PermanentError,
ScmPhysicalDeviceOpReason_LostWritePersistence,
ScmPhysicalDeviceOpReason_FatalError,
ScmPhysicalDeviceOpReason_DataPersistenceLossImminent,
ScmPhysicalDeviceOpReason_WritePersistenceLossImminent,
ScmPhysicalDeviceOpReason_MediaRemainingSpareBlock,
ScmPhysicalDeviceOpReason_PerformanceDegradation,
ScmPhysicalDeviceOpReason_ExcessiveTemperature,
ScmPhysicalDeviceOpReason_Max,
};
PSCM_PD_OPERATIONAL_STATUS_REASON :: ^enum {
ScmPhysicalDeviceOpReason_Unknown = 0,
ScmPhysicalDeviceOpReason_Media,
ScmPhysicalDeviceOpReason_ThresholdExceeded,
ScmPhysicalDeviceOpReason_LostData,
ScmPhysicalDeviceOpReason_EnergySource,
ScmPhysicalDeviceOpReason_Configuration,
ScmPhysicalDeviceOpReason_DeviceController,
ScmPhysicalDeviceOpReason_MediaController,
ScmPhysicalDeviceOpReason_Component,
ScmPhysicalDeviceOpReason_BackgroundOperation,
ScmPhysicalDeviceOpReason_InvalidFirmware,
ScmPhysicalDeviceOpReason_HealthCheck,
ScmPhysicalDeviceOpReason_LostDataPersistence,
ScmPhysicalDeviceOpReason_DisabledByPlatform,
ScmPhysicalDeviceOpReason_PermanentError,
ScmPhysicalDeviceOpReason_LostWritePersistence,
ScmPhysicalDeviceOpReason_FatalError,
ScmPhysicalDeviceOpReason_DataPersistenceLossImminent,
ScmPhysicalDeviceOpReason_WritePersistenceLossImminent,
ScmPhysicalDeviceOpReason_MediaRemainingSpareBlock,
ScmPhysicalDeviceOpReason_PerformanceDegradation,
ScmPhysicalDeviceOpReason_ExcessiveTemperature,
ScmPhysicalDeviceOpReason_Max,
};
SCM_PD_MANAGEMENT_STATUS :: struct {
Version : u32,
Size : u32,
Health : SCM_PD_HEALTH_STATUS,
NumberOfOperationalStatus : u32,
NumberOfAdditionalReasons : u32,
OperationalStatus : [16]SCM_PD_OPERATIONAL_STATUS,
AdditionalReasons : [1]SCM_PD_OPERATIONAL_STATUS_REASON,
};
PSCM_PD_MANAGEMENT_STATUS :: ^struct {
Version : u32,
Size : u32,
Health : SCM_PD_HEALTH_STATUS,
NumberOfOperationalStatus : u32,
NumberOfAdditionalReasons : u32,
OperationalStatus : [16]SCM_PD_OPERATIONAL_STATUS,
AdditionalReasons : [1]SCM_PD_OPERATIONAL_STATUS_REASON,
};
SCM_PD_LOCATION_STRING :: struct {
Version : u32,
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment