mirror of
https://github.com/odin-lang/Odin.git
synced 2026-01-03 19:52:30 +00:00
Merge pull request #2101 from ftphikari/master
sys/windows: add a bunch of stuff
This commit is contained in:
@@ -128,4 +128,34 @@ foreign advapi32 {
|
||||
lpData: LPCVOID,
|
||||
cbData: DWORD,
|
||||
) -> LSTATUS ---
|
||||
|
||||
GetFileSecurityW :: proc(
|
||||
lpFileName: LPCWSTR,
|
||||
RequestedInformation: SECURITY_INFORMATION,
|
||||
pSecurityDescriptor: PSECURITY_DESCRIPTOR,
|
||||
nLength: DWORD,
|
||||
lpnLengthNeeded: LPDWORD,
|
||||
) -> BOOL ---
|
||||
|
||||
DuplicateToken :: proc(
|
||||
ExistingTokenHandle: HANDLE,
|
||||
ImpersonationLevel: SECURITY_IMPERSONATION_LEVEL,
|
||||
DuplicateTokenHandle: PHANDLE,
|
||||
) -> BOOL ---
|
||||
|
||||
MapGenericMask :: proc(
|
||||
AccessMask: PDWORD,
|
||||
GenericMapping: PGENERIC_MAPPING,
|
||||
) ---
|
||||
|
||||
AccessCheck :: proc(
|
||||
pSecurityDescriptor: PSECURITY_DESCRIPTOR,
|
||||
ClientToken: HANDLE,
|
||||
DesiredAccess: DWORD,
|
||||
GenericMapping: PGENERIC_MAPPING,
|
||||
PrivilegeSet: PPRIVILEGE_SET,
|
||||
PrivilegeSetLength: LPDWORD,
|
||||
GrantedAccess: LPDWORD,
|
||||
AccessStatus: LPBOOL,
|
||||
) -> BOOL ---
|
||||
}
|
||||
|
||||
9
core/sys/windows/comctl32.odin
Normal file
9
core/sys/windows/comctl32.odin
Normal file
@@ -0,0 +1,9 @@
|
||||
// +build windows
|
||||
package sys_windows
|
||||
|
||||
foreign import "system:Comctl32.lib"
|
||||
|
||||
@(default_calling_convention="stdcall")
|
||||
foreign Comctl32 {
|
||||
LoadIconWithScaleDown :: proc(hinst: HINSTANCE, pszName: PCWSTR, cx: c_int, cy: c_int, phico: ^HICON) -> HRESULT ---
|
||||
}
|
||||
@@ -77,6 +77,7 @@ foreign gdi32 {
|
||||
) -> HFONT ---
|
||||
TextOutW :: proc(hdc: HDC, x, y: c_int, lpString: LPCWSTR, c: c_int) -> BOOL ---
|
||||
GetTextExtentPoint32W :: proc(hdc: HDC, lpString: LPCWSTR, c: c_int, psizl: LPSIZE) -> BOOL ---
|
||||
GetTextMetricsW :: proc(hdc: HDC, lptm: LPTEXTMETRICW) -> BOOL ---
|
||||
}
|
||||
|
||||
RGB :: #force_inline proc "contextless" (r, g, b: u8) -> COLORREF {
|
||||
|
||||
@@ -346,6 +346,13 @@ foreign kernel32 {
|
||||
GenerateConsoleCtrlEvent :: proc(dwCtrlEvent: DWORD, dwProcessGroupId: DWORD) -> BOOL ---
|
||||
FreeConsole :: proc() -> BOOL ---
|
||||
GetConsoleWindow :: proc() -> HWND ---
|
||||
|
||||
GetDiskFreeSpaceExW :: proc(
|
||||
lpDirectoryName: LPCWSTR,
|
||||
lpFreeBytesAvailableToCaller: PULARGE_INTEGER,
|
||||
lpTotalNumberOfBytes: PULARGE_INTEGER,
|
||||
lpTotalNumberOfFreeBytes: PULARGE_INTEGER,
|
||||
) -> BOOL ---
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -14,4 +14,9 @@ foreign shell32 {
|
||||
lpDirectory: LPCWSTR,
|
||||
nShowCmd: INT,
|
||||
) -> HINSTANCE ---
|
||||
SHCreateDirectoryExW :: proc(
|
||||
hwnd: HWND,
|
||||
pszPath: LPCWSTR,
|
||||
psa: ^SECURITY_ATTRIBUTES,
|
||||
) -> c_int ---
|
||||
}
|
||||
|
||||
@@ -8,4 +8,5 @@ foreign shlwapi {
|
||||
PathFileExistsW :: proc(pszPath: wstring) -> BOOL ---
|
||||
PathFindExtensionW :: proc(pszPath: wstring) -> wstring ---
|
||||
PathFindFileNameW :: proc(pszPath: wstring) -> wstring ---
|
||||
SHAutoComplete :: proc(hwndEdit: HWND, dwFlags: DWORD) -> LWSTDAPI ---
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ DWORD :: c_ulong
|
||||
DWORDLONG :: c.ulonglong
|
||||
QWORD :: c.ulonglong
|
||||
HANDLE :: distinct LPVOID
|
||||
PHANDLE :: ^HANDLE
|
||||
HINSTANCE :: HANDLE
|
||||
HMODULE :: distinct HINSTANCE
|
||||
HRESULT :: distinct LONG
|
||||
@@ -43,6 +44,7 @@ BOOLEAN :: distinct b8
|
||||
GROUP :: distinct c_uint
|
||||
LARGE_INTEGER :: distinct c_longlong
|
||||
ULARGE_INTEGER :: distinct c_ulonglong
|
||||
PULARGE_INTEGER :: ^ULARGE_INTEGER
|
||||
LONG :: c_long
|
||||
UINT :: c_uint
|
||||
INT :: c_int
|
||||
@@ -133,6 +135,11 @@ LPWSAOVERLAPPED :: distinct rawptr
|
||||
LPWSAOVERLAPPED_COMPLETION_ROUTINE :: distinct rawptr
|
||||
LPCVOID :: rawptr
|
||||
|
||||
PACCESS_TOKEN :: PVOID
|
||||
PSECURITY_DESCRIPTOR :: PVOID
|
||||
PSID :: PVOID
|
||||
PCLAIMS_BLOB :: PVOID
|
||||
|
||||
PCONDITION_VARIABLE :: ^CONDITION_VARIABLE
|
||||
PLARGE_INTEGER :: ^LARGE_INTEGER
|
||||
PSRWLOCK :: ^SRWLOCK
|
||||
@@ -175,6 +182,7 @@ FILE_SHARE_DELETE: DWORD : 0x00000004
|
||||
FILE_GENERIC_ALL: DWORD : 0x10000000
|
||||
FILE_GENERIC_EXECUTE: DWORD : 0x20000000
|
||||
FILE_GENERIC_READ: DWORD : 0x80000000
|
||||
FILE_ALL_ACCESS :: STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x1FF
|
||||
|
||||
FILE_ACTION_ADDED :: 0x00000001
|
||||
FILE_ACTION_REMOVED :: 0x00000002
|
||||
@@ -230,6 +238,20 @@ SECURITY_SQOS_PRESENT: DWORD : 0x00100000
|
||||
|
||||
FIONBIO: c_ulong : 0x8004667e
|
||||
|
||||
OWNER_SECURITY_INFORMATION :: 0x00000001
|
||||
GROUP_SECURITY_INFORMATION :: 0x00000002
|
||||
DACL_SECURITY_INFORMATION :: 0x00000004
|
||||
SACL_SECURITY_INFORMATION :: 0x00000008
|
||||
LABEL_SECURITY_INFORMATION :: 0x00000010
|
||||
ATTRIBUTE_SECURITY_INFORMATION :: 0x00000020
|
||||
SCOPE_SECURITY_INFORMATION :: 0x00000040
|
||||
PROCESS_TRUST_LABEL_SECURITY_INFORMATION :: 0x00000080
|
||||
ACCESS_FILTER_SECURITY_INFORMATION :: 0x00000100
|
||||
BACKUP_SECURITY_INFORMATION :: 0x00010000
|
||||
PROTECTED_DACL_SECURITY_INFORMATION :: 0x80000000
|
||||
PROTECTED_SACL_SECURITY_INFORMATION :: 0x40000000
|
||||
UNPROTECTED_DACL_SECURITY_INFORMATION :: 0x20000000
|
||||
UNPROTECTED_SACL_SECURITY_INFORMATION :: 0x10000000
|
||||
|
||||
GET_FILEEX_INFO_LEVELS :: distinct i32
|
||||
GetFileExInfoStandard: GET_FILEEX_INFO_LEVELS : 0
|
||||
@@ -773,6 +795,30 @@ MSG :: struct {
|
||||
|
||||
LPMSG :: ^MSG
|
||||
|
||||
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,
|
||||
}
|
||||
LPTEXTMETRICW :: ^TEXTMETRICW
|
||||
|
||||
PAINTSTRUCT :: struct {
|
||||
hdc: HDC,
|
||||
fErase: BOOL,
|
||||
@@ -1066,8 +1112,14 @@ WS_EX_TOPMOST : UINT : 0x0000_0008
|
||||
WS_EX_TRANSPARENT : UINT : 0x0000_0020
|
||||
WS_EX_WINDOWEDGE : UINT : 0x0000_0100
|
||||
|
||||
PBS_SMOOTH :: 0x01
|
||||
PBS_VERTICAL :: 0x04
|
||||
PBS_SMOOTH :: 0x01
|
||||
PBS_VERTICAL :: 0x04
|
||||
PBS_MARQUEE :: 0x08
|
||||
PBS_SMOOTHREVERSE :: 0x10
|
||||
|
||||
PBST_NORMAL :: 0x0001
|
||||
PBST_ERROR :: 0x0002
|
||||
PBST_PAUSED :: 0x0003
|
||||
|
||||
QS_ALLEVENTS : UINT : QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY
|
||||
QS_ALLINPUT : UINT : QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY | QS_SENDMESSAGE
|
||||
@@ -1462,6 +1514,24 @@ IDI_WARNING := IDI_EXCLAMATION
|
||||
IDI_ERROR := IDI_HAND
|
||||
IDI_INFORMATION := IDI_ASTERISK
|
||||
|
||||
IMAGE_BITMAP :: 0
|
||||
IMAGE_ICON :: 1
|
||||
IMAGE_CURSOR :: 2
|
||||
IMAGE_ENHMETAFILE :: 3
|
||||
|
||||
LR_DEFAULTCOLOR :: 0x00000000
|
||||
LR_MONOCHROME :: 0x00000001
|
||||
LR_COLOR :: 0x00000002
|
||||
LR_COPYRETURNORG :: 0x00000004
|
||||
LR_COPYDELETEORG :: 0x00000008
|
||||
LR_LOADFROMFILE :: 0x00000010
|
||||
LR_LOADTRANSPARENT :: 0x00000020
|
||||
LR_DEFAULTSIZE :: 0x00000040
|
||||
LR_VGACOLOR :: 0x00000080
|
||||
LR_LOADMAP3DCOLORS :: 0x00001000
|
||||
LR_CREATEDIBSECTION :: 0x00002000
|
||||
LR_COPYFROMRESOURCE :: 0x00004000
|
||||
LR_SHARED :: 0x00008000
|
||||
|
||||
// DIB color table identifiers
|
||||
DIB_RGB_COLORS :: 0
|
||||
@@ -1774,12 +1844,15 @@ WAIT_FAILED: DWORD : 0xFFFFFFFF
|
||||
|
||||
PIPE_ACCESS_INBOUND: DWORD : 0x00000001
|
||||
PIPE_ACCESS_OUTBOUND: DWORD : 0x00000002
|
||||
PIPE_ACCESS_DUPLEX: DWORD : 0x00000003
|
||||
FILE_FLAG_FIRST_PIPE_INSTANCE: DWORD : 0x00080000
|
||||
FILE_FLAG_OVERLAPPED: DWORD : 0x40000000
|
||||
PIPE_WAIT: DWORD : 0x00000000
|
||||
PIPE_TYPE_BYTE: DWORD : 0x00000000
|
||||
PIPE_TYPE_MESSAGE: DWORD : 0x00000004
|
||||
PIPE_REJECT_REMOTE_CLIENTS: DWORD : 0x00000008
|
||||
PIPE_READMODE_BYTE: DWORD : 0x00000000
|
||||
PIPE_READMODE_MESSAGE: DWORD : 0x00000002
|
||||
PIPE_ACCEPT_REMOTE_CLIENTS: DWORD : 0x00000000
|
||||
|
||||
FD_SETSIZE :: 64
|
||||
@@ -1793,7 +1866,58 @@ HEAP_ZERO_MEMORY: DWORD : 0x00000008
|
||||
HANDLE_FLAG_INHERIT: DWORD : 0x00000001
|
||||
HANDLE_FLAG_PROTECT_FROM_CLOSE :: 0x00000002
|
||||
|
||||
TOKEN_READ: DWORD : 0x20008
|
||||
GENERIC_MAPPING :: struct {
|
||||
GenericRead: ACCESS_MASK,
|
||||
GenericWrite: ACCESS_MASK,
|
||||
GenericExecute: ACCESS_MASK,
|
||||
GenericAll: ACCESS_MASK,
|
||||
}
|
||||
PGENERIC_MAPPING :: ^GENERIC_MAPPING
|
||||
|
||||
SECURITY_IMPERSONATION_LEVEL :: enum {
|
||||
SecurityAnonymous,
|
||||
SecurityIdentification,
|
||||
SecurityImpersonation,
|
||||
SecurityDelegation,
|
||||
}
|
||||
|
||||
SECURITY_INFORMATION :: DWORD
|
||||
ANYSIZE_ARRAY :: 1
|
||||
|
||||
LUID_AND_ATTRIBUTES :: struct {
|
||||
Luid: LUID,
|
||||
Attributes: DWORD,
|
||||
}
|
||||
|
||||
PRIVILEGE_SET :: struct {
|
||||
PrivilegeCount: DWORD,
|
||||
Control: DWORD,
|
||||
Privilege: [ANYSIZE_ARRAY]LUID_AND_ATTRIBUTES,
|
||||
}
|
||||
PPRIVILEGE_SET :: ^PRIVILEGE_SET
|
||||
|
||||
// Token Specific Access Rights.
|
||||
TOKEN_ASSIGN_PRIMARY :: 0x0001
|
||||
TOKEN_DUPLICATE :: 0x0002
|
||||
TOKEN_IMPERSONATE :: 0x0004
|
||||
TOKEN_QUERY :: 0x0008
|
||||
TOKEN_QUERY_SOURCE :: 0x0010
|
||||
TOKEN_ADJUST_PRIVILEGES :: 0x0020
|
||||
TOKEN_ADJUST_GROUPS :: 0x0040
|
||||
TOKEN_ADJUST_DEFAULT :: 0x0080
|
||||
TOKEN_ADJUST_SESSIONID :: 0x0100
|
||||
|
||||
TOKEN_ALL_ACCESS_P :: STANDARD_RIGHTS_REQUIRED | TOKEN_ASSIGN_PRIMARY | TOKEN_DUPLICATE | TOKEN_IMPERSONATE | TOKEN_QUERY |\
|
||||
TOKEN_QUERY_SOURCE | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT
|
||||
|
||||
TOKEN_ALL_ACCESS :: TOKEN_ALL_ACCESS_P | TOKEN_ADJUST_SESSIONID
|
||||
TOKEN_READ :: STANDARD_RIGHTS_READ | TOKEN_QUERY
|
||||
TOKEN_WRITE :: STANDARD_RIGHTS_WRITE | TOKEN_ADJUST_PRIVILEGES | TOKEN_ADJUST_GROUPS | TOKEN_ADJUST_DEFAULT
|
||||
TOKEN_EXECUTE :: STANDARD_RIGHTS_EXECUTE
|
||||
TOKEN_TRUST_CONSTRAINT_MASK :: STANDARD_RIGHTS_READ | TOKEN_QUERY | TOKEN_QUERY_SOURCE
|
||||
TOKEN_ACCESS_PSEUDO_HANDLE_WIN8 :: TOKEN_QUERY | TOKEN_QUERY_SOURCE
|
||||
TOKEN_ACCESS_PSEUDO_HANDLE :: TOKEN_ACCESS_PSEUDO_HANDLE_WIN8
|
||||
|
||||
|
||||
CP_ACP :: 0 // default to ANSI code page
|
||||
CP_OEMCP :: 1 // default to OEM code page
|
||||
@@ -3048,6 +3172,22 @@ SHCONTF_FLATLIST :: 0x4000
|
||||
SHCONTF_ENABLE_ASYNC :: 0x8000
|
||||
SHCONTF_INCLUDESUPERHIDDEN :: 0x10000
|
||||
|
||||
SHACF_DEFAULT :: 0x00000000 // Currently (SHACF_FILESYSTEM | SHACF_URLALL)
|
||||
SHACF_FILESYSTEM :: 0x00000001 // This includes the File System as well as the rest of the shell (Desktop\My Computer\Control Panel\)
|
||||
SHACF_URLALL :: (SHACF_URLHISTORY | SHACF_URLMRU)
|
||||
SHACF_URLHISTORY :: 0x00000002 // URLs in the User's History
|
||||
SHACF_URLMRU :: 0x00000004 // URLs in the User's Recently Used list.
|
||||
SHACF_USETAB :: 0x00000008 // Use the tab to move thru the autocomplete possibilities instead of to the next dialog/window control.
|
||||
SHACF_FILESYS_ONLY :: 0x00000010 // This includes the File System
|
||||
SHACF_FILESYS_DIRS :: 0x00000020 // Same as SHACF_FILESYS_ONLY except it only includes directories, UNC servers, and UNC server shares.
|
||||
SHACF_VIRTUAL_NAMESPACE :: 0x00000040 // Also include the virtual namespace
|
||||
SHACF_AUTOSUGGEST_FORCE_ON :: 0x10000000 // Ignore the registry default and force the feature on.
|
||||
SHACF_AUTOSUGGEST_FORCE_OFF :: 0x20000000 // Ignore the registry default and force the feature off.
|
||||
SHACF_AUTOAPPEND_FORCE_ON :: 0x40000000 // Ignore the registry default and force the feature on. (Also know as AutoComplete)
|
||||
SHACF_AUTOAPPEND_FORCE_OFF :: 0x80000000 // Ignore the registry default and force the feature off. (Also know as AutoComplete)
|
||||
|
||||
LWSTDAPI :: HRESULT
|
||||
|
||||
CLSID_FileOpenDialog := &GUID{0xDC1C5A9C, 0xE88A, 0x4DDE, {0xA5, 0xA1, 0x60, 0xF8, 0x2A, 0x20, 0xAE, 0xF7}}
|
||||
CLSID_FileSaveDialog := &GUID{0xC0B4E2F3, 0xBA21, 0x4773, {0x8D, 0xBA, 0x33, 0x5E, 0xC9, 0x46, 0xEB, 0x8B}}
|
||||
|
||||
|
||||
@@ -78,6 +78,7 @@ foreign user32 {
|
||||
LoadIconW :: proc(hInstance: HINSTANCE, lpIconName: LPCWSTR) -> HICON ---
|
||||
LoadCursorA :: proc(hInstance: HINSTANCE, lpCursorName: LPCSTR) -> HCURSOR ---
|
||||
LoadCursorW :: proc(hInstance: HINSTANCE, lpCursorName: LPCWSTR) -> HCURSOR ---
|
||||
LoadImageW :: proc(hInst: HINSTANCE, name: LPCWSTR, type: UINT, cx: c_int, cy: c_int, fuLoad: UINT) -> HANDLE ---
|
||||
|
||||
GetWindowRect :: proc(hWnd: HWND, lpRect: LPRECT) -> BOOL ---
|
||||
GetClientRect :: proc(hWnd: HWND, lpRect: LPRECT) -> BOOL ---
|
||||
|
||||
@@ -454,6 +454,7 @@ TB_ISBUTTONENABLED :: 0x0409
|
||||
TBM_CLEARTICS :: 0x0409
|
||||
TTM_SETTOOLINFOA :: 0x0409
|
||||
CBEM_HASEDITCHANGED :: 0x040a
|
||||
PBM_SETMARQUEE :: 0x040a
|
||||
RB_INSERTBANDW :: 0x040a
|
||||
SB_GETRECT :: 0x040a
|
||||
TB_ISBUTTONCHECKED :: 0x040a
|
||||
@@ -488,10 +489,12 @@ TTM_ENUMTOOLSA :: 0x040e
|
||||
SB_SETICON :: 0x040f
|
||||
TBM_GETTICPOS :: 0x040f
|
||||
TTM_GETCURRENTTOOLA :: 0x040f
|
||||
PBM_SETSTATE :: 0x0410
|
||||
RB_IDTOINDEX :: 0x0410
|
||||
SB_SETTIPTEXTA :: 0x0410
|
||||
TBM_GETNUMTICS :: 0x0410
|
||||
TTM_WINDOWFROMPOINT :: 0x0410
|
||||
PBM_GETSTATE :: 0x0411
|
||||
RB_GETTOOLTIPS :: 0x0411
|
||||
SB_SETTIPTEXTW :: 0x0411
|
||||
TBM_GETSELSTART :: 0x0411
|
||||
|
||||
Reference in New Issue
Block a user