From 7477aa503023bdbe654a9cde7f30fa165c8d5530 Mon Sep 17 00:00:00 2001 From: Justin Miller Date: Wed, 28 May 2025 15:53:15 -0700 Subject: [PATCH] [SDK][MODULES] Fix a test and add wine-10 entries to headers --- modules/rostests/winetests/ntdll/file.c | 6 +- sdk/include/psdk/ip2string.h | 55 ++++++++ sdk/include/psdk/libloaderapi.h | 8 ++ sdk/include/psdk/ntioring_x.h | 39 ++++++ sdk/include/psdk/perflib.h | 123 ++++++++++++++++++ sdk/include/psdk/wincontypes.h | 135 +++++++++++++++++++ sdk/include/psdk/winnls.h | 46 ++++++- sdk/include/reactos/wine/winioctl.h | 2 +- sdk/include/reactos/wine/winternl.h | 164 ++++++++++++++++++++++++ sdk/include/xdk/setypes.h | 12 ++ 10 files changed, 585 insertions(+), 5 deletions(-) create mode 100644 sdk/include/psdk/ip2string.h create mode 100644 sdk/include/psdk/ntioring_x.h create mode 100644 sdk/include/psdk/perflib.h create mode 100644 sdk/include/psdk/wincontypes.h diff --git a/modules/rostests/winetests/ntdll/file.c b/modules/rostests/winetests/ntdll/file.c index 8afc1757117..fec815fa498 100644 --- a/modules/rostests/winetests/ntdll/file.c +++ b/modules/rostests/winetests/ntdll/file.c @@ -3448,12 +3448,12 @@ static void test_query_attribute_information_file(void) ok(status == STATUS_SUCCESS, "expected STATUS_SUCCESS, got %d\n", status); ok(U(io).Status == STATUS_SUCCESS, "expected STATUS_SUCCESS, got %d\n", U(io).Status); - ok(ffai->FileSystemAttribute != 0, "Missing FileSystemAttribute\n"); + ok(ffai->FileSystemAttributes != 0, "Missing FileSystemAttributes\n"); ok(ffai->MaximumComponentNameLength != 0, "Missing MaximumComponentNameLength\n"); ok(ffai->FileSystemNameLength != 0, "Missing FileSystemNameLength\n"); - trace("FileSystemAttribute: %x MaximumComponentNameLength: %x FileSystemName: %s\n", - ffai->FileSystemAttribute, ffai->MaximumComponentNameLength, + trace("FileSystemAttributes: %x MaximumComponentNameLength: %x FileSystemName: %s\n", + ffai->FileSystemAttributes, ffai->MaximumComponentNameLength, wine_dbgstr_wn(ffai->FileSystemName, ffai->FileSystemNameLength / sizeof(WCHAR))); CloseHandle( dir ); diff --git a/sdk/include/psdk/ip2string.h b/sdk/include/psdk/ip2string.h new file mode 100644 index 00000000000..95a841595a5 --- /dev/null +++ b/sdk/include/psdk/ip2string.h @@ -0,0 +1,55 @@ +/* + * Copyright (C) 2019 Alex Henrie + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __WINE_IP2STRING_H +#define __WINE_IP2STRING_H + +#ifdef __cplusplus +extern "C" { +#endif + +NTSYSAPI char * WINAPI RtlIpv4AddressToStringA(const IN_ADDR *address, char *str); +NTSYSAPI WCHAR * WINAPI RtlIpv4AddressToStringW(const IN_ADDR *address, WCHAR *str); +#define RtlIpv4AddressToString WINELIB_NAME_AW(RtlIpv4AddressToString) +NTSYSAPI NTSTATUS WINAPI RtlIpv4AddressToStringExA(const IN_ADDR *address, USHORT port, char *str, ULONG *size); +NTSYSAPI NTSTATUS WINAPI RtlIpv4AddressToStringExW(const IN_ADDR *address, USHORT port, WCHAR *str, ULONG *size); +#define RtlIpv4AddressToStringEx WINELIB_NAME_AW(RtlIpv4AddressToStringEx) +NTSYSAPI char * WINAPI RtlIpv6AddressToStringA(const IN6_ADDR *address, char *str); +NTSYSAPI WCHAR * WINAPI RtlIpv6AddressToStringW(const IN6_ADDR *address, WCHAR *str); +#define RtlIpv6AddressToString WINELIB_NAME_AW(RtlIpv6AddressToString) +NTSYSAPI NTSTATUS WINAPI RtlIpv6AddressToStringExA(const IN6_ADDR *address, LONG scope, USHORT port, char *str, ULONG *size); +NTSYSAPI NTSTATUS WINAPI RtlIpv6AddressToStringExW(const IN6_ADDR *address, LONG scope, USHORT port, WCHAR *str, ULONG *size); +#define RtlIpv6AddressToStringEx WINELIB_NAME_AW(RtlIpv6AddressToStringEx) +NTSYSAPI NTSTATUS WINAPI RtlIpv4StringToAddressA(const char *str, BOOLEAN strict, const char **terminator, IN_ADDR *address); +NTSYSAPI NTSTATUS WINAPI RtlIpv4StringToAddressW(const WCHAR *str, BOOLEAN strict, const WCHAR **terminator, IN_ADDR *address); +#define RtlIpv4StringToAddress WINELIB_NAME_AW(RtlIpv4StringToAddress) +NTSYSAPI NTSTATUS WINAPI RtlIpv4StringToAddressExA(const char *str, BOOLEAN strict, IN_ADDR *address, USHORT *port); +NTSYSAPI NTSTATUS WINAPI RtlIpv4StringToAddressExW(const WCHAR *str, BOOLEAN strict, IN_ADDR *address, USHORT *port); +#define RtlIpv4StringToAddressEx WINELIB_NAME_AW(RtlIpv4StringToAddressEx) +NTSYSAPI NTSTATUS WINAPI RtlIpv6StringToAddressA(const char *str, const char **terminator, IN6_ADDR *address); +NTSYSAPI NTSTATUS WINAPI RtlIpv6StringToAddressW(const WCHAR *str, const WCHAR **terminator, IN6_ADDR *address); +#define RtlIpv6StringToAddress WINELIB_NAME_AW(RtlIpv6StringToAddress) +NTSYSAPI NTSTATUS WINAPI RtlIpv6StringToAddressExA(const char *str, IN6_ADDR *address, ULONG *scope, USHORT *port); +NTSYSAPI NTSTATUS WINAPI RtlIpv6StringToAddressExW(const WCHAR *str, IN6_ADDR *address, ULONG *scope, USHORT *port); +#define RtlIpv6StringToAddressEx WINELIB_NAME_AW(RtlIpv6StringToAddressEx) + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/sdk/include/psdk/libloaderapi.h b/sdk/include/psdk/libloaderapi.h index 8f112a7d60f..f1df3839656 100644 --- a/sdk/include/psdk/libloaderapi.h +++ b/sdk/include/psdk/libloaderapi.h @@ -25,9 +25,17 @@ extern "C" { typedef void *DLL_DIRECTORY_COOKIE, **PDLL_DIRECTORY_COOKIE; +#ifdef __REACTOS__ +DLL_DIRECTORY_COOKIE WINAPI AddDllDirectory(const WCHAR *); +BOOL WINAPI RemoveDllDirectory(DLL_DIRECTORY_COOKIE); +BOOL WINAPI SetDefaultDllDirectories(DWORD); +INT WINAPI FindStringOrdinal(DWORD, const WCHAR *, INT, const WCHAR *, INT, BOOL); +#else WINBASEAPI DLL_DIRECTORY_COOKIE WINAPI AddDllDirectory(const WCHAR *); WINBASEAPI BOOL WINAPI RemoveDllDirectory(DLL_DIRECTORY_COOKIE); WINBASEAPI BOOL WINAPI SetDefaultDllDirectories(DWORD); +WINBASEAPI INT WINAPI FindStringOrdinal(DWORD, const WCHAR *, INT, const WCHAR *, INT, BOOL); +#endif #ifdef __cplusplus } diff --git a/sdk/include/psdk/ntioring_x.h b/sdk/include/psdk/ntioring_x.h new file mode 100644 index 00000000000..bf16d9368d4 --- /dev/null +++ b/sdk/include/psdk/ntioring_x.h @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2023 Paul Gofman for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __NTIORING_X_H_ +#define __NTIORING_X_H_ + +enum IORING_VERSION +{ + IORING_VERSION_INVALID = 0, + IORING_VERSION_1 = 1, + IORING_VERSION_2 = 2, + IORING_VERSION_3 = 300, +}; +typedef enum IORING_VERSION IORING_VERSION; + +enum IORING_FEATURE_FLAGS +{ + IORING_FEATURE_FLAGS_NONE = 0, + IORING_FEATURE_UM_EMULATION = 0x00000001, + IORING_FEATURE_SET_COMPLETION_EVENT = 0x00000002, +}; +typedef enum IORING_FEATURE_FLAGS IORING_FEATURE_FLAGS; + +#endif diff --git a/sdk/include/psdk/perflib.h b/sdk/include/psdk/perflib.h new file mode 100644 index 00000000000..188f26e3e74 --- /dev/null +++ b/sdk/include/psdk/perflib.h @@ -0,0 +1,123 @@ +/* + * Copyright (C) 2017 Austin English + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef _PERFLIB_H_ +#define _PERFLIB_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void * (__WINE_ALLOC_SIZE(1) CDECL * PERF_MEM_ALLOC)(SIZE_T,void*); +typedef void (CDECL * PERF_MEM_FREE)(LPVOID,LPVOID); +typedef ULONG (WINAPI * PERFLIBREQUEST)(ULONG,PVOID,ULONG); + +typedef struct _PERF_COUNTERSET_INFO { + GUID CounterSetGuid; + GUID ProviderGuid; + ULONG NumCounters; + ULONG InstanceType; +} PERF_COUNTERSET_INFO, * PPERF_COUNTERSET_INFO; + +/* PERF_COUNTERSET_INFO InstanceType values. */ +#define PERF_COUNTERSET_FLAG_MULTIPLE 0x00000002 +#define PERF_COUNTERSET_FLAG_AGGREGATE 0x00000004 +#define PERF_COUNTERSET_FLAG_HISTORY 0x00000008 +#define PERF_COUNTERSET_FLAG_INSTANCE 0x00000010 + +#define PERF_COUNTERSET_SINGLE_INSTANCE 0 +#define PERF_COUNTERSET_MULTI_INSTANCES PERF_COUNTERSET_FLAG_MULTIPLE +#define PERF_COUNTERSET_SINGLE_AGGREGATE PERF_COUNTERSET_FLAG_AGGREGATE +#define PERF_COUNTERSET_MULTI_AGGREGATE (PERF_COUNTERSET_FLAG_AGGREGATE | PERF_COUNTERSET_FLAG_MULTIPLE) +#define PERF_COUNTERSET_SINGLE_AGGREGATE_HISTORY (PERF_COUNTERSET_FLAG_HISTORY | PERF_COUNTERSET_SINGLE_AGGREGATE) +#define PERF_COUNTERSET_INSTANCE_AGGREGATE (PERF_COUNTERSET_MULTI_AGGREGATE | PERF_COUNTERSET_FLAG_INSTANCE) + +typedef struct _PERF_COUNTERSET_INSTANCE { + GUID CounterSetGuid; + ULONG dwSize; + ULONG InstanceId; + ULONG InstanceNameOffset; + ULONG InstanceNameSize; +} PERF_COUNTERSET_INSTANCE, * PPERF_COUNTERSET_INSTANCE; + +typedef struct _PERF_COUNTER_INFO { + ULONG CounterId; + ULONG Type; + ULONGLONG Attrib; + ULONG Size; + ULONG DetailLevel; + LONG Scale; + ULONG Offset; +} PERF_COUNTER_INFO, *PPERF_COUNTER_INFO; + +/* PERF_COUNTER_INFO Attrib flags. */ +#define PERF_ATTRIB_BY_REFERENCE 0x00000001 +#define PERF_ATTRIB_NO_DISPLAYABLE 0x00000002 +#define PERF_ATTRIB_NO_GROUP_SEPARATOR 0x00000004 +#define PERF_ATTRIB_DISPLAY_AS_REAL 0x00000008 +#define PERF_ATTRIB_DISPLAY_AS_HEX 0x00000010 + +typedef struct _PROVIDER_CONTEXT { + DWORD ContextSize; + DWORD Reserved; + PERFLIBREQUEST ControlCallback; + PERF_MEM_ALLOC MemAllocRoutine; + PERF_MEM_FREE MemFreeRoutine; + LPVOID pMemContext; +} PERF_PROVIDER_CONTEXT, * PPERF_PROVIDER_CONTEXT; + +typedef struct _PERF_COUNTER_IDENTIFIER { + GUID CounterSetGuid; + ULONG Status; + ULONG Size; + ULONG CounterId; + ULONG InstanceId; + ULONG Index; + ULONG Reserved; +} PERF_COUNTER_IDENTIFIER, *PPERF_COUNTER_IDENTIFIER; + +#define PERF_WILDCARD_COUNTER 0xFFFFFFFF +#define PERF_WILDCARD_INSTANCE L"*" + +typedef struct _PERF_DATA_HEADER { + ULONG dwTotalSize; + ULONG dwNumCounters; + LONGLONG PerfTimeStamp; + LONGLONG PerfTime100NSec; + LONGLONG PerfFreq; + SYSTEMTIME SystemTime; +} PERF_DATA_HEADER, *PPERF_DATA_HEADER; + +PERF_COUNTERSET_INSTANCE WINAPI *PerfCreateInstance(HANDLE, const GUID *, const WCHAR *, ULONG); +ULONG WINAPI PerfDeleteInstance(HANDLE, PERF_COUNTERSET_INSTANCE *); +ULONG WINAPI PerfSetCounterRefValue(HANDLE, PERF_COUNTERSET_INSTANCE *, ULONG, void *); +ULONG WINAPI PerfSetCounterSetInfo(HANDLE, PERF_COUNTERSET_INFO *, ULONG); +ULONG WINAPI PerfStartProvider(GUID *, PERFLIBREQUEST, HANDLE *); +ULONG WINAPI PerfStartProviderEx(GUID *, PERF_PROVIDER_CONTEXT *, HANDLE *); +ULONG WINAPI PerfStopProvider(HANDLE); + +ULONG WINAPI PerfAddCounters(HANDLE, PERF_COUNTER_IDENTIFIER *, DWORD); +ULONG WINAPI PerfCloseQueryHandle(HANDLE); +ULONG WINAPI PerfOpenQueryHandle(const WCHAR *, HANDLE *); +ULONG WINAPI PerfQueryCounterData(HANDLE, PERF_DATA_HEADER *, DWORD, DWORD *); + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* _PERFLIB_H_ */ diff --git a/sdk/include/psdk/wincontypes.h b/sdk/include/psdk/wincontypes.h new file mode 100644 index 00000000000..d724a80921d --- /dev/null +++ b/sdk/include/psdk/wincontypes.h @@ -0,0 +1,135 @@ +/* + * Copyright (C) the Wine project + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef _WINCONTYPES_ +#define _WINCONTYPES_ + +typedef struct tagCOORD +{ + SHORT X; + SHORT Y; +} COORD, *LPCOORD; + +typedef struct tagSMALL_RECT +{ + SHORT Left; + SHORT Top; + SHORT Right; + SHORT Bottom; +} SMALL_RECT,*LPSMALL_RECT; + +typedef struct tagKEY_EVENT_RECORD +{ + BOOL bKeyDown; /* 04 */ + WORD wRepeatCount; /* 08 */ + WORD wVirtualKeyCode; /* 0A */ + WORD wVirtualScanCode; /* 0C */ + union /* 0E */ + { + WCHAR UnicodeChar; /* 0E */ + CHAR AsciiChar; /* 0E */ + } uChar; + DWORD dwControlKeyState; /* 10 */ +} KEY_EVENT_RECORD,*LPKEY_EVENT_RECORD; + +/* dwControlKeyState bitmask */ +#define RIGHT_ALT_PRESSED 0x0001 +#define LEFT_ALT_PRESSED 0x0002 +#define RIGHT_CTRL_PRESSED 0x0004 +#define LEFT_CTRL_PRESSED 0x0008 +#define SHIFT_PRESSED 0x0010 +#define NUMLOCK_ON 0x0020 +#define SCROLLLOCK_ON 0x0040 +#define CAPSLOCK_ON 0x0080 +#define ENHANCED_KEY 0x0100 + +typedef struct tagMOUSE_EVENT_RECORD +{ + COORD dwMousePosition; + DWORD dwButtonState; + DWORD dwControlKeyState; + DWORD dwEventFlags; +} MOUSE_EVENT_RECORD,*LPMOUSE_EVENT_RECORD; + +/* MOUSE_EVENT_RECORD.dwButtonState */ +#define FROM_LEFT_1ST_BUTTON_PRESSED 0x0001 +#define RIGHTMOST_BUTTON_PRESSED 0x0002 +#define FROM_LEFT_2ND_BUTTON_PRESSED 0x0004 +#define FROM_LEFT_3RD_BUTTON_PRESSED 0x0008 +#define FROM_LEFT_4TH_BUTTON_PRESSED 0x0010 + +/* MOUSE_EVENT_RECORD.dwEventFlags */ +#define MOUSE_MOVED 0x0001 +#define DOUBLE_CLICK 0x0002 +#define MOUSE_WHEELED 0x0004 +#define MOUSE_HWHEELED 0x0008 + +typedef struct tagWINDOW_BUFFER_SIZE_RECORD +{ + COORD dwSize; +} WINDOW_BUFFER_SIZE_RECORD,*LPWINDOW_BUFFER_SIZE_RECORD; + +typedef struct tagMENU_EVENT_RECORD +{ + UINT dwCommandId; +} MENU_EVENT_RECORD,*LPMENU_EVENT_RECORD; + +typedef struct tagFOCUS_EVENT_RECORD +{ + BOOL bSetFocus; +} FOCUS_EVENT_RECORD,*LPFOCUS_EVENT_RECORD; + +typedef struct tagINPUT_RECORD +{ + WORD EventType; + union + { + KEY_EVENT_RECORD KeyEvent; + MOUSE_EVENT_RECORD MouseEvent; + WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent; + MENU_EVENT_RECORD MenuEvent; + FOCUS_EVENT_RECORD FocusEvent; + } Event; +} INPUT_RECORD,*PINPUT_RECORD; + +/* INPUT_RECORD.wEventType */ +#define KEY_EVENT 0x01 +#define MOUSE_EVENT 0x02 +#define WINDOW_BUFFER_SIZE_EVENT 0x04 +#define MENU_EVENT 0x08 +#define FOCUS_EVENT 0x10 + +typedef struct tagCHAR_INFO +{ + union + { + WCHAR UnicodeChar; + CHAR AsciiChar; + } Char; + WORD Attributes; +} CHAR_INFO,*LPCHAR_INFO; + +typedef struct _CONSOLE_FONT_INFO +{ + DWORD nFont; + COORD dwFontSize; +} CONSOLE_FONT_INFO,*LPCONSOLE_FONT_INFO; + +typedef void *HPCON; + +#endif /* _WINCONTYPES_ */ diff --git a/sdk/include/psdk/winnls.h b/sdk/include/psdk/winnls.h index b0e4c35460e..0e38a471410 100644 --- a/sdk/include/psdk/winnls.h +++ b/sdk/include/psdk/winnls.h @@ -23,6 +23,10 @@ extern "C" { #endif #define LOCALE_RETURN_GENITIVE_NAMES 0x10000000 #define LOCALE_ALLOW_NEUTRAL_NAMES 0x08000000 +#define LOCALE_SLOCALIZEDDISPLAYNAME 0x00000002 +#if (WINVER >= _WIN32_WINNT_VISTA) +#define LOCALE_SLOCALIZEDLANGUAGENAME 0x0000006f +#endif #define LOCALE_ILANGUAGE 1 #define LOCALE_SLANGUAGE 2 #define LOCALE_SENGLANGUAGE 0x1001 @@ -167,6 +171,10 @@ extern "C" { #define LOCALE_SOPENTYPELANGUAGETAG 0x007a #define LOCALE_SSORTLOCALE 0x007b //#endif /* (WINVER >= _WIN32_WINNT_WIN7) */ +#define LOCALE_SRELATIVELONGDATE 0x007C //Win8 +#define LOCALE_SSHORTESTAM 0x007E +#define LOCALE_SSHORTESTPM 0x007F + #if (WINVER >= 0x0600) #define LOCALE_NAME_USER_DEFAULT NULL @@ -181,9 +189,11 @@ extern "C" { #define NORM_IGNORENONSPACE 2 #define NORM_IGNORESYMBOLS 4 #define NORM_IGNOREWIDTH 131072 -#define LINGUISTIC_IGNORECASE 0x00000010 +#define LINGUISTIC_IGNORECASE 0x00000010 +#define LINGUISTIC_IGNOREDIACRITIC 0x00000020 #define NORM_LINGUISTIC_CASING 0x08000000 #define SORT_STRINGSORT 4096 +#define SORT_DIGITSASNUMBERS 0x00000008 // _WIN32_WINNT_WIN7 #define LCMAP_LOWERCASE 0x00000100 #define LCMAP_UPPERCASE 0x00000200 #define LCMAP_SORTKEY 0x00000400 @@ -205,6 +215,11 @@ extern "C" { #define LCID_SUPPORTED 2 #define LCID_ALTERNATE_SORTS 4 +#define FIND_STARTSWITH 0x00100000 +#define FIND_ENDSWITH 0x00200000 +#define FIND_FROMSTART 0x00400000 +#define FIND_FROMEND 0x00800000 + #define LOCALE_ALL 0x00 #define LOCALE_WINDOWS 0x01 #define LOCALE_SUPPLEMENTAL 0x02 @@ -455,6 +470,8 @@ extern "C" { #define CAL_GREGORIAN_ARABIC 10 #define CAL_GREGORIAN_XLIT_ENGLISH 11 #define CAL_GREGORIAN_XLIT_FRENCH 12 +#define CAL_PERSIAN 22 +#define CAL_UMALQURA 23 #define CSTR_LESS_THAN 1 #define CSTR_EQUAL 2 #define CSTR_GREATER_THAN 3 @@ -728,6 +745,33 @@ EnumSystemLocalesEx( BOOL WINAPI EnumTimeFormatsA(_In_ TIMEFMT_ENUMPROCA, _In_ LCID, _In_ DWORD); BOOL WINAPI EnumTimeFormatsW(_In_ TIMEFMT_ENUMPROCW, _In_ LCID, _In_ DWORD); +WINBASEAPI +int +WINAPI +FindNLSString( + _In_ LCID Locale, + _In_ DWORD dwFindNLSStringFlags, + _In_reads_(cchSource) LPCWSTR lpStringSource, + _In_ int cchSource, + _In_reads_(cchValue) LPCWSTR lpStringValue, + _In_ int cchValue, + _Out_opt_ LPINT pcchFound); + +WINBASEAPI +int +WINAPI +FindNLSStringEx( + _In_opt_ LPCWSTR lpLocaleName, + _In_ DWORD dwFindNLSStringFlags, + _In_reads_(cchSource) LPCWSTR lpStringSource, + _In_ int cchSource, + _In_reads_(cchValue) LPCWSTR lpStringValue, + _In_ int cchValue, + _Out_opt_ LPINT pcchFound, + _In_opt_ LPNLSVERSIONINFO lpVersionInformation, + _In_opt_ LPVOID lpReserved, + _In_opt_ LPARAM sortHandle); + int WINAPI FoldStringA( diff --git a/sdk/include/reactos/wine/winioctl.h b/sdk/include/reactos/wine/winioctl.h index 269f771b57e..4eac18dbc55 100644 --- a/sdk/include/reactos/wine/winioctl.h +++ b/sdk/include/reactos/wine/winioctl.h @@ -433,7 +433,7 @@ typedef struct _FILE_FS_DEVICE_INFORMATION { /* FileFsAttributeInformation = 5 */ typedef struct _FILE_FS_ATTRIBUTE_INFORMATION { - ULONG FileSystemAttribute; + ULONG FileSystemAttributes; LONG MaximumComponentNameLength; ULONG FileSystemNameLength; WCHAR FileSystemName[1]; diff --git a/sdk/include/reactos/wine/winternl.h b/sdk/include/reactos/wine/winternl.h index d011e65927e..39e1e3d8b82 100644 --- a/sdk/include/reactos/wine/winternl.h +++ b/sdk/include/reactos/wine/winternl.h @@ -2222,6 +2222,29 @@ typedef enum _SYSDBG_COMMAND { SysDbgWriteBusData } SYSDBG_COMMAND, *PSYSDBG_COMMAND; +typedef struct _CPTABLEINFO +{ + USHORT CodePage; + USHORT MaximumCharacterSize; + USHORT DefaultChar; + USHORT UniDefaultChar; + USHORT TransDefaultChar; + USHORT TransUniDefaultChar; + USHORT DBCSCodePage; + UCHAR LeadByte[12]; + USHORT *MultiByteTable; + void *WideCharTable; + USHORT *DBCSRanges; + USHORT *DBCSOffsets; +} CPTABLEINFO, *PCPTABLEINFO; + +typedef struct _NLSTABLEINFO +{ + CPTABLEINFO OemTableInfo; + CPTABLEINFO AnsiTableInfo; + USHORT *UpperCaseTable; + USHORT *LowerCaseTable; +} NLSTABLEINFO, *PNLSTABLEINFO; /************************************************************************* * Loader structures @@ -2431,6 +2454,7 @@ NTSYSAPI NTSTATUS WINAPI NtFreeVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG); NTSYSAPI NTSTATUS WINAPI NtFsControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG); NTSYSAPI NTSTATUS WINAPI NtGetContextThread(HANDLE,CONTEXT*); NTSYSAPI ULONG WINAPI NtGetCurrentProcessorNumber(void); +NTSYSAPI NTSTATUS WINAPI NtGetNlsSectionPtr(ULONG,ULONG,void*,void**,SIZE_T*); NTSYSAPI NTSTATUS WINAPI NtGetPlugPlayEvent(ULONG,ULONG,PVOID,ULONG); NTSYSAPI ULONG WINAPI NtGetTickCount(VOID); NTSYSAPI NTSTATUS WINAPI NtGetWriteWatch(HANDLE,ULONG,PVOID,SIZE_T,PVOID*,ULONG_PTR*,ULONG*); @@ -2752,6 +2776,7 @@ NTSYSAPI ULONG WINAPI RtlGetFullPathName_U(PCWSTR,ULONG,PWSTR,PWSTR*); NTSYSAPI NTSTATUS WINAPI RtlGetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN); NTSYSAPI NTSTATUS WINAPI RtlGetLastNtStatus(void); NTSYSAPI DWORD WINAPI RtlGetLastWin32Error(void); +NTSYSAPI NTSTATUS WINAPI RtlGetLocaleFileMappingAddress(void**,LCID*,LARGE_INTEGER*); NTSYSAPI DWORD WINAPI RtlGetLongestNtPathLength(void); NTSYSAPI ULONG WINAPI RtlGetNtGlobalFlags(void); NTSYSAPI BOOLEAN WINAPI RtlGetNtProductType(LPDWORD); @@ -3076,6 +3101,145 @@ typedef struct WCHAR curdir_buffer[MAX_PATH]; } WIN16_SUBSYSTEM_TIB; +/* Undocumented: layout of the locale data in the locale.nls file */ + +typedef struct +{ + UINT sname; /* 000 LOCALE_SNAME */ + UINT sopentypelanguagetag; /* 004 LOCALE_SOPENTYPELANGUAGETAG */ + USHORT ilanguage; /* 008 LOCALE_ILANGUAGE */ + USHORT unique_lcid; /* 00a unique id if lcid == 0x1000 */ + USHORT idigits; /* 00c LOCALE_IDIGITS */ + USHORT inegnumber; /* 00e LOCALE_INEGNUMBER */ + USHORT icurrdigits; /* 010 LOCALE_ICURRDIGITS*/ + USHORT icurrency; /* 012 LOCALE_ICURRENCY */ + USHORT inegcurr; /* 014 LOCALE_INEGCURR */ + USHORT ilzero; /* 016 LOCALE_ILZERO */ + USHORT inotneutral; /* 018 LOCALE_INEUTRAL (inverted) */ + USHORT ifirstdayofweek; /* 01a LOCALE_IFIRSTDAYOFWEEK (monday=0) */ + USHORT ifirstweekofyear; /* 01c LOCALE_IFIRSTWEEKOFYEAR */ + USHORT icountry; /* 01e LOCALE_ICOUNTRY */ + USHORT imeasure; /* 020 LOCALE_IMEASURE */ + USHORT idigitsubstitution; /* 022 LOCALE_IDIGITSUBSTITUTION */ + UINT sgrouping; /* 024 LOCALE_SGROUPING (as binary string) */ + UINT smongrouping; /* 028 LOCALE_SMONGROUPING (as binary string) */ + UINT slist; /* 02c LOCALE_SLIST */ + UINT sdecimal; /* 030 LOCALE_SDECIMAL */ + UINT sthousand; /* 034 LOCALE_STHOUSAND */ + UINT scurrency; /* 038 LOCALE_SCURRENCY */ + UINT smondecimalsep; /* 03c LOCALE_SMONDECIMALSEP */ + UINT smonthousandsep; /* 040 LOCALE_SMONTHOUSANDSEP */ + UINT spositivesign; /* 044 LOCALE_SPOSITIVESIGN */ + UINT snegativesign; /* 048 LOCALE_SNEGATIVESIGN */ + UINT s1159; /* 04c LOCALE_S1159 */ + UINT s2359; /* 050 LOCALE_S2359 */ + UINT snativedigits; /* 054 LOCALE_SNATIVEDIGITS (array of single digits) */ + UINT stimeformat; /* 058 LOCALE_STIMEFORMAT (array of formats) */ + UINT sshortdate; /* 05c LOCALE_SSHORTDATE (array of formats) */ + UINT slongdate; /* 060 LOCALE_SLONGDATE (array of formats) */ + UINT syearmonth; /* 064 LOCALE_SYEARMONTH (array of formats) */ + UINT sduration; /* 068 LOCALE_SDURATION (array of formats) */ + USHORT idefaultlanguage; /* 06c LOCALE_IDEFAULTLANGUAGE */ + USHORT idefaultansicodepage; /* 06e LOCALE_IDEFAULTANSICODEPAGE */ + USHORT idefaultcodepage; /* 070 LOCALE_IDEFAULTCODEPAGE */ + USHORT idefaultmaccodepage; /* 072 LOCALE_IDEFAULTMACCODEPAGE */ + USHORT idefaultebcdiccodepage; /* 074 LOCALE_IDEFAULTEBCDICCODEPAGE */ + USHORT old_geoid; /* 076 LOCALE_IGEOID (older version?) */ + USHORT ipapersize; /* 078 LOCALE_IPAPERSIZE */ + BYTE islamic_cal[2]; /* 07a calendar id for islamic calendars (?) */ + UINT scalendartype; /* 07c string, first char is LOCALE_ICALENDARTYPE, next chars are LOCALE_IOPTIONALCALENDAR */ + UINT sabbrevlangname; /* 080 LOCALE_SABBREVLANGNAME */ + UINT siso639langname; /* 084 LOCALE_SISO639LANGNAME */ + UINT senglanguage; /* 088 LOCALE_SENGLANGUAGE */ + UINT snativelangname; /* 08c LOCALE_SNATIVELANGNAME */ + UINT sengcountry; /* 090 LOCALE_SENGCOUNTRY */ + UINT snativectryname; /* 094 LOCALE_SNATIVECTRYNAME */ + UINT sabbrevctryname; /* 098 LOCALE_SABBREVCTRYNAME */ + UINT siso3166ctryname; /* 09c LOCALE_SISO3166CTRYNAME */ + UINT sintlsymbol; /* 0a0 LOCALE_SINTLSYMBOL */ + UINT sengcurrname; /* 0a4 LOCALE_SENGCURRNAME */ + UINT snativecurrname; /* 0a8 LOCALE_SNATIVECURRNAME */ + UINT fontsignature; /* 0ac LOCALE_FONTSIGNATURE (binary string) */ + UINT siso639langname2; /* 0b0 LOCALE_SISO639LANGNAME2 */ + UINT siso3166ctryname2; /* 0b4 LOCALE_SISO3166CTRYNAME2 */ + UINT sparent; /* 0b8 LOCALE_SPARENT */ + UINT sdayname; /* 0bc LOCALE_SDAYNAME1 (array of days 1..7) */ + UINT sabbrevdayname; /* 0c0 LOCALE_SABBREVDAYNAME1 (array of days 1..7) */ + UINT smonthname; /* 0c4 LOCALE_SMONTHNAME1 (array of months 1..13) */ + UINT sabbrevmonthname; /* 0c8 LOCALE_SABBREVMONTHNAME1 (array of months 1..13) */ + UINT sgenitivemonth; /* 0cc equivalent of LOCALE_SMONTHNAME1 for genitive months */ + UINT sabbrevgenitivemonth; /* 0d0 equivalent of LOCALE_SABBREVMONTHNAME1 for genitive months */ + UINT calnames; /* 0d4 array of calendar names */ + UINT customsorts; /* 0d8 array of custom sort names */ + USHORT inegativepercent; /* 0dc LOCALE_INEGATIVEPERCENT */ + USHORT ipositivepercent; /* 0de LOCALE_IPOSITIVEPERCENT */ + USHORT unknown1; /* 0e0 */ + USHORT ireadinglayout; /* 0e2 LOCALE_IREADINGLAYOUT */ + USHORT unknown2[2]; /* 0e4 */ + UINT unused1; /* 0e8 unused? */ + UINT sengdisplayname; /* 0ec LOCALE_SENGLISHDISPLAYNAME */ + UINT snativedisplayname; /* 0f0 LOCALE_SNATIVEDISPLAYNAME */ + UINT spercent; /* 0f4 LOCALE_SPERCENT */ + UINT snan; /* 0f8 LOCALE_SNAN */ + UINT sposinfinity; /* 0fc LOCALE_SPOSINFINITY */ + UINT sneginfinity; /* 100 LOCALE_SNEGINFINITY */ + UINT unused2; /* 104 unused? */ + UINT serastring; /* 108 CAL_SERASTRING */ + UINT sabbreverastring; /* 10c CAL_SABBREVERASTRING */ + UINT unused3; /* 110 unused? */ + UINT sconsolefallbackname; /* 114 LOCALE_SCONSOLEFALLBACKNAME */ + UINT sshorttime; /* 118 LOCALE_SSHORTTIME (array of formats) */ + UINT sshortestdayname; /* 11c LOCALE_SSHORTESTDAYNAME1 (array of days 1..7) */ + UINT unused4; /* 120 unused? */ + UINT ssortlocale; /* 124 LOCALE_SSORTLOCALE */ + UINT skeyboardstoinstall; /* 128 LOCALE_SKEYBOARDSTOINSTALL */ + UINT sscripts; /* 12c LOCALE_SSCRIPTS */ + UINT srelativelongdate; /* 130 LOCALE_SRELATIVELONGDATE */ + UINT igeoid; /* 134 LOCALE_IGEOID */ + UINT sshortestam; /* 138 LOCALE_SSHORTESTAM */ + UINT sshortestpm; /* 13c LOCALE_SSHORTESTPM */ + UINT smonthday; /* 140 LOCALE_SMONTHDAY (array of formats) */ + UINT keyboard_layout; /* 144 keyboard layouts */ +} NLS_LOCALE_DATA; + +typedef struct +{ + UINT id; /* 00 lcid */ + USHORT idx; /* 04 index in locales array */ + USHORT name; /* 06 locale name */ +} NLS_LOCALE_LCID_INDEX; + +typedef struct +{ + USHORT name; /* 00 locale name */ + USHORT idx; /* 02 index in locales array */ + UINT id; /* 04 lcid */ +} NLS_LOCALE_LCNAME_INDEX; + +typedef struct +{ + UINT offset; /* 00 offset to version, always 8? */ + UINT unknown1; /* 04 */ + UINT version; /* 08 file format version */ + UINT magic; /* 0c magic 'NSDS' */ + UINT unknown2[3]; /* 10 */ + USHORT header_size; /* 1c size of this header (?) */ + USHORT nb_lcids; /* 1e number of lcids in index */ + USHORT nb_locales; /* 20 number of locales in array */ + USHORT locale_size; /* 22 size of NLS_LOCALE_DATA structure */ + UINT locales_offset; /* 24 offset of locales array */ + USHORT nb_lcnames; /* 28 number of lcnames in index */ + USHORT pad; /* 2a */ + UINT lcids_offset; /* 2c offset of lcids index */ + UINT lcnames_offset; /* 30 offset of lcnames index */ + UINT unknown3; /* 34 */ + USHORT nb_calendars; /* 38 number of calendars in array */ + USHORT calendar_size; /* 3a size of calendar structure */ + UINT calendars_offset; /* 3c offset of calendars array */ + UINT strings_offset; /* 40 offset of strings data */ + USHORT unknown4[4]; /* 44 */ +} NLS_LOCALE_HEADER; + #endif /* __WINESRC__ */ #ifdef __cplusplus diff --git a/sdk/include/xdk/setypes.h b/sdk/include/xdk/setypes.h index 0a538747bda..c9ba394d3f7 100644 --- a/sdk/include/xdk/setypes.h +++ b/sdk/include/xdk/setypes.h @@ -753,6 +753,18 @@ typedef struct _ACE_HEADER { #define SUCCESSFUL_ACCESS_ACE_FLAG (0x40) #define FAILED_ACCESS_ACE_FLAG (0x80) +#define SECURITY_APP_PACKAGE_AUTHORITY {0,0,0,0,0,15} +#define SECURITY_APP_PACKAGE_BASE_RID (0x000000002) +#define SECURITY_BUILTIN_APP_PACKAGE_RID_COUNT (0x000000002) +#define SECURITY_APP_PACKAGE_RID_COUNT (0x000000008) +#define SECURITY_CAPABILITY_BASE_RID (0x000000003) +#define SECURITY_CAPABILITY_APP_RID (0x000000400) +#define SECURITY_BUILTIN_CAPABILITY_RID_COUNT (0x000000002) +#define SECURITY_CAPABILITY_RID_COUNT (0x000000005) +#define SECURITY_PARENT_PACKAGE_RID_COUNT SECURITY_APP_PACKAGE_RID_COUNT +#define SECURITY_CHILD_PACKAGE_RID_COUNT (0x00000000c) +#define SECURITY_BUILTIN_PACKAGE_ANY_PACKAGE (0x000000001) + typedef struct _ACCESS_ALLOWED_ACE { ACE_HEADER Header; ACCESS_MASK Mask;