|
@@ -33,6 +33,7 @@ HGDIOBJ :: distinct HANDLE
|
|
|
HBITMAP :: distinct HANDLE
|
|
|
HGLOBAL :: distinct HANDLE
|
|
|
HHOOK :: distinct HANDLE
|
|
|
+HKEY :: distinct HANDLE
|
|
|
BOOL :: distinct b32
|
|
|
BYTE :: distinct u8
|
|
|
BOOLEAN :: distinct b8
|
|
@@ -64,6 +65,8 @@ WPARAM :: UINT_PTR
|
|
|
LRESULT :: LONG_PTR
|
|
|
LPRECT :: ^RECT
|
|
|
LPPOINT :: ^POINT
|
|
|
+LSTATUS :: LONG
|
|
|
+PHKEY :: ^HKEY
|
|
|
|
|
|
UINT8 :: u8
|
|
|
UINT16 :: u16
|
|
@@ -194,11 +197,8 @@ FILE_APPEND_DATA: DWORD : 0x00000004
|
|
|
FILE_WRITE_EA: DWORD : 0x00000010
|
|
|
FILE_WRITE_ATTRIBUTES: DWORD : 0x00000100
|
|
|
FILE_READ_ATTRIBUTES: DWORD : 0x000000080
|
|
|
-READ_CONTROL: DWORD : 0x00020000
|
|
|
-SYNCHRONIZE: DWORD : 0x00100000
|
|
|
GENERIC_READ: DWORD : 0x80000000
|
|
|
GENERIC_WRITE: DWORD : 0x40000000
|
|
|
-STANDARD_RIGHTS_WRITE: DWORD : READ_CONTROL
|
|
|
FILE_GENERIC_WRITE: DWORD : STANDARD_RIGHTS_WRITE |
|
|
|
FILE_WRITE_DATA |
|
|
|
FILE_WRITE_ATTRIBUTES |
|
|
@@ -266,6 +266,156 @@ REASON_CONTEXT :: struct {
|
|
|
}
|
|
|
PREASON_CONTEXT :: ^REASON_CONTEXT
|
|
|
|
|
|
+// RRF - Registry Routine Flags (for RegGetValue)
|
|
|
+RRF_RT_REG_NONE :: 0x00000001
|
|
|
+RRF_RT_REG_SZ :: 0x00000002
|
|
|
+RRF_RT_REG_EXPAND_SZ :: 0x00000004
|
|
|
+RRF_RT_REG_BINARY :: 0x00000008
|
|
|
+RRF_RT_REG_DWORD :: 0x00000010
|
|
|
+RRF_RT_REG_MULTI_SZ :: 0x00000020
|
|
|
+RRF_RT_REG_QWORD :: 0x00000040
|
|
|
+RRF_RT_DWORD :: (RRF_RT_REG_BINARY | RRF_RT_REG_DWORD)
|
|
|
+RRF_RT_QWORD :: (RRF_RT_REG_BINARY | RRF_RT_REG_QWORD)
|
|
|
+RRF_RT_ANY :: 0x0000ffff
|
|
|
+RRF_NOEXPAND :: 0x10000000
|
|
|
+RRF_ZEROONFAILURE :: 0x20000000
|
|
|
+
|
|
|
+ACCESS_MASK :: DWORD
|
|
|
+PACCESS_MASK :: ^ACCESS_MASK
|
|
|
+REGSAM :: ACCESS_MASK
|
|
|
+
|
|
|
+// Reserved Key Handles.
|
|
|
+HKEY_CLASSES_ROOT :: HKEY(uintptr(0x80000000))
|
|
|
+HKEY_CURRENT_USER :: HKEY(uintptr(0x80000001))
|
|
|
+HKEY_LOCAL_MACHINE :: HKEY(uintptr(0x80000002))
|
|
|
+HKEY_USERS :: HKEY(uintptr(0x80000003))
|
|
|
+HKEY_PERFORMANCE_DATA :: HKEY(uintptr(0x80000004))
|
|
|
+HKEY_PERFORMANCE_TEXT :: HKEY(uintptr(0x80000050))
|
|
|
+HKEY_PERFORMANCE_NLSTEXT :: HKEY(uintptr(0x80000060))
|
|
|
+HKEY_CURRENT_CONFIG :: HKEY(uintptr(0x80000005))
|
|
|
+HKEY_DYN_DATA :: HKEY(uintptr(0x80000006))
|
|
|
+HKEY_CURRENT_USER_LOCAL_SETTINGS :: HKEY(uintptr(0x80000007))
|
|
|
+
|
|
|
+// The following are masks for the predefined standard access types
|
|
|
+DELETE : DWORD : 0x00010000
|
|
|
+READ_CONTROL : DWORD : 0x00020000
|
|
|
+WRITE_DAC : DWORD : 0x00040000
|
|
|
+WRITE_OWNER : DWORD : 0x00080000
|
|
|
+SYNCHRONIZE : DWORD : 0x00100000
|
|
|
+
|
|
|
+STANDARD_RIGHTS_REQUIRED : DWORD : 0x000F0000
|
|
|
+STANDARD_RIGHTS_READ : DWORD : READ_CONTROL
|
|
|
+STANDARD_RIGHTS_WRITE : DWORD : READ_CONTROL
|
|
|
+STANDARD_RIGHTS_EXECUTE : DWORD : READ_CONTROL
|
|
|
+STANDARD_RIGHTS_ALL : DWORD : 0x001F0000
|
|
|
+SPECIFIC_RIGHTS_ALL : DWORD : 0x0000FFFF
|
|
|
+
|
|
|
+// Registry Specific Access Rights.
|
|
|
+KEY_QUERY_VALUE :: 0x0001
|
|
|
+KEY_SET_VALUE :: 0x0002
|
|
|
+KEY_CREATE_SUB_KEY :: 0x0004
|
|
|
+KEY_ENUMERATE_SUB_KEYS :: 0x0008
|
|
|
+KEY_NOTIFY :: 0x0010
|
|
|
+KEY_CREATE_LINK :: 0x0020
|
|
|
+KEY_WOW64_32KEY :: 0x0200
|
|
|
+KEY_WOW64_64KEY :: 0x0100
|
|
|
+KEY_WOW64_RES :: 0x0300
|
|
|
+
|
|
|
+KEY_READ :: (STANDARD_RIGHTS_READ | KEY_QUERY_VALUE | KEY_ENUMERATE_SUB_KEYS | KEY_NOTIFY) & (~SYNCHRONIZE)
|
|
|
+KEY_WRITE :: (STANDARD_RIGHTS_WRITE | KEY_SET_VALUE | KEY_CREATE_SUB_KEY) & (~SYNCHRONIZE)
|
|
|
+KEY_EXECUTE :: (KEY_READ) & (~SYNCHRONIZE)
|
|
|
+KEY_ALL_ACCESS :: (STANDARD_RIGHTS_ALL |
|
|
|
+ KEY_QUERY_VALUE |
|
|
|
+ KEY_SET_VALUE |
|
|
|
+ KEY_CREATE_SUB_KEY |
|
|
|
+ KEY_ENUMERATE_SUB_KEYS |
|
|
|
+ KEY_NOTIFY |
|
|
|
+ KEY_CREATE_LINK) & (~SYNCHRONIZE)
|
|
|
+
|
|
|
+// Open/Create Options
|
|
|
+REG_OPTION_RESERVED :: 0x00000000
|
|
|
+REG_OPTION_NON_VOLATILE :: 0x00000000
|
|
|
+REG_OPTION_VOLATILE :: 0x00000001
|
|
|
+REG_OPTION_CREATE_LINK :: 0x00000002
|
|
|
+REG_OPTION_BACKUP_RESTORE :: 0x00000004
|
|
|
+REG_OPTION_OPEN_LINK :: 0x00000008
|
|
|
+REG_OPTION_DONT_VIRTUALIZE :: 0x00000010
|
|
|
+
|
|
|
+REG_LEGAL_OPTION :: REG_OPTION_RESERVED |
|
|
|
+ REG_OPTION_NON_VOLATILE |
|
|
|
+ REG_OPTION_VOLATILE |
|
|
|
+ REG_OPTION_CREATE_LINK |
|
|
|
+ REG_OPTION_BACKUP_RESTORE |
|
|
|
+ REG_OPTION_OPEN_LINK |
|
|
|
+ REG_OPTION_DONT_VIRTUALIZE
|
|
|
+
|
|
|
+REG_OPEN_LEGAL_OPTION :: REG_OPTION_RESERVED |
|
|
|
+ REG_OPTION_BACKUP_RESTORE |
|
|
|
+ REG_OPTION_OPEN_LINK |
|
|
|
+ REG_OPTION_DONT_VIRTUALIZE
|
|
|
+
|
|
|
+// Key creation/open disposition
|
|
|
+REG_CREATED_NEW_KEY :: 0x00000001
|
|
|
+REG_OPENED_EXISTING_KEY :: 0x00000002
|
|
|
+
|
|
|
+// hive format to be used by Reg(Nt)SaveKeyEx
|
|
|
+REG_STANDARD_FORMAT :: 1
|
|
|
+REG_LATEST_FORMAT :: 2
|
|
|
+REG_NO_COMPRESSION :: 4
|
|
|
+
|
|
|
+// Key restore & hive load flags
|
|
|
+REG_WHOLE_HIVE_VOLATILE :: 0x00000001
|
|
|
+REG_REFRESH_HIVE :: 0x00000002
|
|
|
+REG_NO_LAZY_FLUSH :: 0x00000004
|
|
|
+REG_FORCE_RESTORE :: 0x00000008
|
|
|
+REG_APP_HIVE :: 0x00000010
|
|
|
+REG_PROCESS_PRIVATE :: 0x00000020
|
|
|
+REG_START_JOURNAL :: 0x00000040
|
|
|
+REG_HIVE_EXACT_FILE_GROWTH :: 0x00000080
|
|
|
+REG_HIVE_NO_RM :: 0x00000100
|
|
|
+REG_HIVE_SINGLE_LOG :: 0x00000200
|
|
|
+REG_BOOT_HIVE :: 0x00000400
|
|
|
+REG_LOAD_HIVE_OPEN_HANDLE :: 0x00000800
|
|
|
+REG_FLUSH_HIVE_FILE_GROWTH :: 0x00001000
|
|
|
+REG_OPEN_READ_ONLY :: 0x00002000
|
|
|
+REG_IMMUTABLE :: 0x00004000
|
|
|
+REG_NO_IMPERSONATION_FALLBACK :: 0x00008000
|
|
|
+REG_APP_HIVE_OPEN_READ_ONLY :: REG_OPEN_READ_ONLY
|
|
|
+
|
|
|
+// Unload Flags
|
|
|
+REG_FORCE_UNLOAD :: 1
|
|
|
+REG_UNLOAD_LEGAL_FLAGS :: REG_FORCE_UNLOAD
|
|
|
+
|
|
|
+// Notify filter values
|
|
|
+REG_NOTIFY_CHANGE_NAME :: 0x00000001
|
|
|
+REG_NOTIFY_CHANGE_ATTRIBUTES :: 0x00000002
|
|
|
+REG_NOTIFY_CHANGE_LAST_SET :: 0x00000004
|
|
|
+REG_NOTIFY_CHANGE_SECURITY :: 0x00000008
|
|
|
+REG_NOTIFY_THREAD_AGNOSTIC :: 0x10000000
|
|
|
+
|
|
|
+REG_LEGAL_CHANGE_FILTER :: REG_NOTIFY_CHANGE_NAME |
|
|
|
+ REG_NOTIFY_CHANGE_ATTRIBUTES |
|
|
|
+ REG_NOTIFY_CHANGE_LAST_SET |
|
|
|
+ REG_NOTIFY_CHANGE_SECURITY |
|
|
|
+ REG_NOTIFY_THREAD_AGNOSTIC
|
|
|
+
|
|
|
+// Predefined Value Types.
|
|
|
+REG_NONE :: 0
|
|
|
+REG_SZ :: 1
|
|
|
+REG_EXPAND_SZ :: 2
|
|
|
+REG_BINARY :: 3
|
|
|
+REG_DWORD :: 4
|
|
|
+REG_DWORD_LITTLE_ENDIAN :: 4
|
|
|
+REG_DWORD_BIG_ENDIAN :: 5
|
|
|
+REG_LINK :: 6
|
|
|
+REG_MULTI_SZ :: 7
|
|
|
+REG_RESOURCE_LIST :: 8
|
|
|
+REG_FULL_RESOURCE_DESCRIPTOR :: 9
|
|
|
+REG_RESOURCE_REQUIREMENTS_LIST :: 10
|
|
|
+REG_QWORD :: 11
|
|
|
+REG_QWORD_LITTLE_ENDIAN :: 11
|
|
|
+
|
|
|
+
|
|
|
PTIMERAPCROUTINE :: #type proc "stdcall" (lpArgToCompletionRoutine: LPVOID, dwTimerLowValue, dwTimerHighValue: DWORD)
|
|
|
|
|
|
TIMERPROC :: #type proc "stdcall" (HWND, UINT, UINT_PTR, DWORD)
|
|
@@ -1126,34 +1276,6 @@ STD_ERROR_HANDLE: DWORD : ~DWORD(0) -12 + 1
|
|
|
|
|
|
PROGRESS_CONTINUE: DWORD : 0
|
|
|
|
|
|
-ERROR_FILE_NOT_FOUND: DWORD : 2
|
|
|
-ERROR_PATH_NOT_FOUND: DWORD : 3
|
|
|
-ERROR_ACCESS_DENIED: DWORD : 5
|
|
|
-ERROR_NOT_ENOUGH_MEMORY: DWORD : 8
|
|
|
-ERROR_INVALID_HANDLE: DWORD : 6
|
|
|
-ERROR_NO_MORE_FILES: DWORD : 18
|
|
|
-ERROR_SHARING_VIOLATION: DWORD : 32
|
|
|
-ERROR_LOCK_VIOLATION: DWORD : 33
|
|
|
-ERROR_HANDLE_EOF: DWORD : 38
|
|
|
-ERROR_NOT_SUPPORTED: DWORD : 50
|
|
|
-ERROR_FILE_EXISTS: DWORD : 80
|
|
|
-ERROR_INVALID_PARAMETER: DWORD : 87
|
|
|
-ERROR_BROKEN_PIPE: DWORD : 109
|
|
|
-ERROR_CALL_NOT_IMPLEMENTED: DWORD : 120
|
|
|
-ERROR_INSUFFICIENT_BUFFER: DWORD : 122
|
|
|
-ERROR_INVALID_NAME: DWORD : 123
|
|
|
-ERROR_BAD_ARGUMENTS: DWORD: 160
|
|
|
-ERROR_LOCK_FAILED: DWORD : 167
|
|
|
-ERROR_ALREADY_EXISTS: DWORD : 183
|
|
|
-ERROR_NO_DATA: DWORD : 232
|
|
|
-ERROR_ENVVAR_NOT_FOUND: DWORD : 203
|
|
|
-ERROR_OPERATION_ABORTED: DWORD : 995
|
|
|
-ERROR_IO_PENDING: DWORD : 997
|
|
|
-ERROR_TIMEOUT: DWORD : 0x5B4
|
|
|
-ERROR_NO_UNICODE_TRANSLATION: DWORD : 1113
|
|
|
-
|
|
|
-E_NOTIMPL :: HRESULT(-0x7fff_bfff) // 0x8000_4001
|
|
|
-
|
|
|
INVALID_HANDLE :: HANDLE(~uintptr(0))
|
|
|
INVALID_HANDLE_VALUE :: INVALID_HANDLE
|
|
|
|
|
@@ -2329,4 +2451,4 @@ IMAGE_EXPORT_DIRECTORY :: struct {
|
|
|
AddressOfFunctions: DWORD, // RVA from base of image
|
|
|
AddressOfNames: DWORD, // RVA from base of image
|
|
|
AddressOfNameOrdinals: DWORD, // RVA from base of image
|
|
|
-}
|
|
|
+}
|