[PSDK][XDK][NDK][INCLUDE/WINE] Make header changes to sync crypt32, kernel32, and user32 winetests (#8114)

- [PSDK] Sync wincrypt.h to Wine 10.0, keeping our SAL annotated function definitions behind an #ifdef guard
- [XDK] Add definitions to our winnt header that Wine 10.0's winternl.h depends on.
- [INCLUDE/WINE] Sync winternl.h to Wine 10.0
- [OTHER] Fix breaking changes with the synced winternl.h.
This commit is contained in:
Carl J. Bialorucki 2025-07-05 15:14:31 -06:00 committed by GitHub
parent a993c589ae
commit a753f34e30
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
22 changed files with 4663 additions and 696 deletions

View file

@ -371,14 +371,14 @@ static BOOL check_live_target(struct process* pcs)
PEB32 peb32; PEB32 peb32;
C_ASSERT(sizeof(void*) != 4 || FIELD_OFFSET(RTL_USER_PROCESS_PARAMETERS, Environment) == 0x48); C_ASSERT(sizeof(void*) != 4 || FIELD_OFFSET(RTL_USER_PROCESS_PARAMETERS, Environment) == 0x48);
if (!ReadProcessMemory(pcs->handle, pbi.PebBaseAddress, &peb32, sizeof(peb32), NULL)) return FALSE; if (!ReadProcessMemory(pcs->handle, pbi.PebBaseAddress, &peb32, sizeof(peb32), NULL)) return FALSE;
base = peb32.Reserved[0]; base = peb32.Reserved;
if (read_process_memory(pcs, peb32.ProcessParameters + 0x48, &env32, sizeof(env32))) env = env32; if (read_process_memory(pcs, peb32.ProcessParameters + 0x48, &env32, sizeof(env32))) env = env32;
} }
else else
{ {
PEB peb; PEB peb;
if (!ReadProcessMemory(pcs->handle, pbi.PebBaseAddress, &peb, sizeof(peb), NULL)) return FALSE; if (!ReadProcessMemory(pcs->handle, pbi.PebBaseAddress, &peb, sizeof(peb), NULL)) return FALSE;
base = peb.Reserved[0]; base = peb.Reserved;
ReadProcessMemory(pcs->handle, &peb.ProcessParameters->Environment, &env, sizeof(env), NULL); ReadProcessMemory(pcs->handle, &peb.ProcessParameters->Environment, &env, sizeof(env), NULL);
} }

View file

@ -605,27 +605,6 @@ struct cpu
extern struct cpu* dbghelp_current_cpu DECLSPEC_HIDDEN; extern struct cpu* dbghelp_current_cpu DECLSPEC_HIDDEN;
/* Abbreviated 32-bit PEB */
typedef struct _PEB32
{
BOOLEAN InheritedAddressSpace;
BOOLEAN ReadImageFileExecOptions;
BOOLEAN BeingDebugged;
BOOLEAN SpareBool;
DWORD Mutant;
DWORD ImageBaseAddress;
DWORD LdrData;
DWORD ProcessParameters;
DWORD SubSystemData;
DWORD ProcessHeap;
DWORD FastPebLock;
DWORD FastPebLockRoutine;
DWORD FastPebUnlockRoutine;
ULONG EnvironmentUpdateCount;
DWORD KernelCallbackTable;
ULONG Reserved[2];
} PEB32;
/* dbghelp.c */ /* dbghelp.c */
extern struct process* process_find_by_handle(HANDLE hProcess) DECLSPEC_HIDDEN; extern struct process* process_find_by_handle(HANDLE hProcess) DECLSPEC_HIDDEN;
extern BOOL validate_addr64(DWORD64 addr) DECLSPEC_HIDDEN; extern BOOL validate_addr64(DWORD64 addr) DECLSPEC_HIDDEN;

View file

@ -3874,7 +3874,7 @@ static WCHAR *get_lastbootuptime(void)
if (!(ret = heap_alloc( 26 * sizeof(WCHAR) ))) return NULL; if (!(ret = heap_alloc( 26 * sizeof(WCHAR) ))) return NULL;
NtQuerySystemInformation( SystemTimeOfDayInformation, &ti, sizeof(ti), NULL ); NtQuerySystemInformation( SystemTimeOfDayInformation, &ti, sizeof(ti), NULL );
RtlTimeToTimeFields( &ti.liKeBootTime, &tf ); RtlTimeToTimeFields( &ti.BootTime, &tf );
swprintf( ret, fmtW, tf.Year, tf.Month, tf.Day, tf.Hour, tf.Minute, tf.Second, tf.Milliseconds * 1000 ); swprintf( ret, fmtW, tf.Year, tf.Month, tf.Day, tf.Hour, tf.Minute, tf.Second, tf.Milliseconds * 1000 );
return ret; return ret;
} }

View file

@ -379,12 +379,12 @@ static BOOL query_image_section( int id, const char *dll_name, const IMAGE_NT_HE
ok( image.SubSystemType == nt_header->OptionalHeader.Subsystem, ok( image.SubSystemType == nt_header->OptionalHeader.Subsystem,
"%u: SubSystemType wrong %08x / %08x\n", id, "%u: SubSystemType wrong %08x / %08x\n", id,
image.SubSystemType, nt_header->OptionalHeader.Subsystem ); image.SubSystemType, nt_header->OptionalHeader.Subsystem );
ok( image.SubsystemVersionLow == nt_header->OptionalHeader.MinorSubsystemVersion, ok( image.MinorSubsystemVersion == nt_header->OptionalHeader.MinorSubsystemVersion,
"%u: SubsystemVersionLow wrong %04x / %04x\n", id, "%u: SubsystemVersionLow wrong %04x / %04x\n", id,
image.SubsystemVersionLow, nt_header->OptionalHeader.MinorSubsystemVersion ); image.MinorSubsystemVersion, nt_header->OptionalHeader.MinorSubsystemVersion );
ok( image.SubsystemVersionHigh == nt_header->OptionalHeader.MajorSubsystemVersion, ok( image.MajorSubsystemVersion == nt_header->OptionalHeader.MajorSubsystemVersion,
"%u: SubsystemVersionHigh wrong %04x / %04x\n", id, "%u: SubsystemVersionHigh wrong %04x / %04x\n", id,
image.SubsystemVersionHigh, nt_header->OptionalHeader.MajorSubsystemVersion ); image.MajorSubsystemVersion, nt_header->OptionalHeader.MajorSubsystemVersion );
ok( image.ImageCharacteristics == nt_header->FileHeader.Characteristics, ok( image.ImageCharacteristics == nt_header->FileHeader.Characteristics,
"%u: ImageCharacteristics wrong %04x / %04x\n", id, "%u: ImageCharacteristics wrong %04x / %04x\n", id,
image.ImageCharacteristics, nt_header->FileHeader.Characteristics ); image.ImageCharacteristics, nt_header->FileHeader.Characteristics );
@ -3652,7 +3652,7 @@ static void test_InMemoryOrderModuleList(void)
PEB_LDR_DATA *ldr = NtCurrentTeb()->Peb->LdrData; PEB_LDR_DATA *ldr = NtCurrentTeb()->Peb->LdrData;
LIST_ENTRY *entry1, *mark1 = &ldr->InLoadOrderModuleList; LIST_ENTRY *entry1, *mark1 = &ldr->InLoadOrderModuleList;
LIST_ENTRY *entry2, *mark2 = &ldr->InMemoryOrderModuleList; LIST_ENTRY *entry2, *mark2 = &ldr->InMemoryOrderModuleList;
LDR_MODULE *module1, *module2; LDR_DATA_TABLE_ENTRY *module1, *module2;
ok(ldr->Initialized == TRUE, "expected TRUE, got %u\n", ldr->Initialized); ok(ldr->Initialized == TRUE, "expected TRUE, got %u\n", ldr->Initialized);
@ -3660,8 +3660,8 @@ static void test_InMemoryOrderModuleList(void)
entry1 != mark1 && entry2 != mark2; entry1 != mark1 && entry2 != mark2;
entry1 = entry1->Flink, entry2 = entry2->Flink) entry1 = entry1->Flink, entry2 = entry2->Flink)
{ {
module1 = CONTAINING_RECORD(entry1, LDR_MODULE, InLoadOrderModuleList); module1 = CONTAINING_RECORD(entry1, LDR_DATA_TABLE_ENTRY, InLoadOrderLinks);
module2 = CONTAINING_RECORD(entry2, LDR_MODULE, InMemoryOrderModuleList); module2 = CONTAINING_RECORD(entry2, LDR_DATA_TABLE_ENTRY, InMemoryOrderLinks);
ok(module1 == module2, "expected module1 == module2, got %p and %p\n", module1, module2); ok(module1 == module2, "expected module1 == module2, got %p and %p\n", module1, module2);
} }
ok(entry1 == mark1, "expected entry1 == mark1, got %p and %p\n", entry1, mark1); ok(entry1 == mark1, "expected entry1 == mark1, got %p and %p\n", entry1, mark1);
@ -3703,13 +3703,13 @@ static void test_HashLinks(void)
static WCHAR kernel32W[] = {'k','e','r','n','e','l','3','2','.','d','l','l',0}; static WCHAR kernel32W[] = {'k','e','r','n','e','l','3','2','.','d','l','l',0};
LIST_ENTRY *hash_map, *entry, *mark; LIST_ENTRY *hash_map, *entry, *mark;
LDR_MODULE *module; LDR_DATA_TABLE_ENTRY *module;
BOOL found; BOOL found;
entry = &NtCurrentTeb()->Peb->LdrData->InLoadOrderModuleList; entry = &NtCurrentTeb()->Peb->LdrData->InLoadOrderModuleList;
entry = entry->Flink; entry = entry->Flink;
module = CONTAINING_RECORD(entry, LDR_MODULE, InLoadOrderModuleList); module = CONTAINING_RECORD(entry, LDR_DATA_TABLE_ENTRY, InLoadOrderLinks);
entry = module->HashLinks.Blink; entry = module->HashLinks.Blink;
hash_map = entry - hash_basename(module->BaseDllName.Buffer); hash_map = entry - hash_basename(module->BaseDllName.Buffer);
@ -3718,7 +3718,7 @@ static void test_HashLinks(void)
found = FALSE; found = FALSE;
for (entry = mark->Flink; entry != mark; entry = entry->Flink) for (entry = mark->Flink; entry != mark; entry = entry->Flink)
{ {
module = CONTAINING_RECORD(entry, LDR_MODULE, HashLinks); module = CONTAINING_RECORD(entry, LDR_DATA_TABLE_ENTRY, HashLinks);
if (!lstrcmpiW(module->BaseDllName.Buffer, ntdllW)) if (!lstrcmpiW(module->BaseDllName.Buffer, ntdllW))
{ {
found = TRUE; found = TRUE;
@ -3731,7 +3731,7 @@ static void test_HashLinks(void)
found = FALSE; found = FALSE;
for (entry = mark->Flink; entry != mark; entry = entry->Flink) for (entry = mark->Flink; entry != mark; entry = entry->Flink)
{ {
module = CONTAINING_RECORD(entry, LDR_MODULE, HashLinks); module = CONTAINING_RECORD(entry, LDR_DATA_TABLE_ENTRY, HashLinks);
if (!lstrcmpiW(module->BaseDllName.Buffer, kernel32W)) if (!lstrcmpiW(module->BaseDllName.Buffer, kernel32W))
{ {
found = TRUE; found = TRUE;

View file

@ -4007,8 +4007,8 @@ static void test_NtQuerySection(void)
ok(info.image.MaximumStackSize == nt->OptionalHeader.SizeOfStackReserve, "expected %#lx, got %#lx\n", (SIZE_T)nt->OptionalHeader.SizeOfStackReserve, info.image.MaximumStackSize); ok(info.image.MaximumStackSize == nt->OptionalHeader.SizeOfStackReserve, "expected %#lx, got %#lx\n", (SIZE_T)nt->OptionalHeader.SizeOfStackReserve, info.image.MaximumStackSize);
ok(info.image.CommittedStackSize == nt->OptionalHeader.SizeOfStackCommit, "expected %#lx, got %#lx\n", (SIZE_T)nt->OptionalHeader.SizeOfStackCommit, info.image.CommittedStackSize); ok(info.image.CommittedStackSize == nt->OptionalHeader.SizeOfStackCommit, "expected %#lx, got %#lx\n", (SIZE_T)nt->OptionalHeader.SizeOfStackCommit, info.image.CommittedStackSize);
ok(info.image.SubSystemType == nt->OptionalHeader.Subsystem, "expected %#x, got %#x\n", nt->OptionalHeader.Subsystem, info.image.SubSystemType); ok(info.image.SubSystemType == nt->OptionalHeader.Subsystem, "expected %#x, got %#x\n", nt->OptionalHeader.Subsystem, info.image.SubSystemType);
ok(info.image.SubsystemVersionLow == nt->OptionalHeader.MinorSubsystemVersion, "expected %#x, got %#x\n", nt->OptionalHeader.MinorSubsystemVersion, info.image.SubsystemVersionLow); ok(info.image.MinorSubsystemVersion == nt->OptionalHeader.MinorSubsystemVersion, "expected %#x, got %#x\n", nt->OptionalHeader.MinorSubsystemVersion, info.image.MinorSubsystemVersion);
ok(info.image.SubsystemVersionHigh == nt->OptionalHeader.MajorSubsystemVersion, "expected %#x, got %#x\n", nt->OptionalHeader.MajorSubsystemVersion, info.image.SubsystemVersionHigh); ok(info.image.MajorSubsystemVersion == nt->OptionalHeader.MajorSubsystemVersion, "expected %#x, got %#x\n", nt->OptionalHeader.MajorSubsystemVersion, info.image.MajorSubsystemVersion);
ok(info.image.ImageCharacteristics == nt->FileHeader.Characteristics, "expected %#x, got %#x\n", nt->FileHeader.Characteristics, info.image.ImageCharacteristics); ok(info.image.ImageCharacteristics == nt->FileHeader.Characteristics, "expected %#x, got %#x\n", nt->FileHeader.Characteristics, info.image.ImageCharacteristics);
ok(info.image.DllCharacteristics == nt->OptionalHeader.DllCharacteristics, "expected %#x, got %#x\n", nt->OptionalHeader.DllCharacteristics, info.image.DllCharacteristics); ok(info.image.DllCharacteristics == nt->OptionalHeader.DllCharacteristics, "expected %#x, got %#x\n", nt->OptionalHeader.DllCharacteristics, info.image.DllCharacteristics);
ok(info.image.Machine == nt->FileHeader.Machine, "expected %#x, got %#x\n", nt->FileHeader.Machine, info.image.Machine); ok(info.image.Machine == nt->FileHeader.Machine, "expected %#x, got %#x\n", nt->FileHeader.Machine, info.image.Machine);

View file

@ -1377,8 +1377,8 @@ static void test_file_rename_information(void)
pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL );
DeleteFileW( newpath ); DeleteFileW( newpath );
fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length );
fri->Replace = FALSE; fri->ReplaceIfExists = FALSE;
fri->RootDir = NULL; fri->RootDirectory = NULL;
fri->FileNameLength = name_str.Length; fri->FileNameLength = name_str.Length;
memcpy( fri->FileName, name_str.Buffer, name_str.Length ); memcpy( fri->FileName, name_str.Buffer, name_str.Length );
pRtlFreeUnicodeString( &name_str ); pRtlFreeUnicodeString( &name_str );
@ -1415,8 +1415,8 @@ static void test_file_rename_information(void)
ok( res != 0, "failed to create temp file\n" ); ok( res != 0, "failed to create temp file\n" );
pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL );
fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length );
fri->Replace = FALSE; fri->ReplaceIfExists = FALSE;
fri->RootDir = NULL; fri->RootDirectory = NULL;
fri->FileNameLength = name_str.Length; fri->FileNameLength = name_str.Length;
memcpy( fri->FileName, name_str.Buffer, name_str.Length ); memcpy( fri->FileName, name_str.Buffer, name_str.Length );
pRtlFreeUnicodeString( &name_str ); pRtlFreeUnicodeString( &name_str );
@ -1445,8 +1445,8 @@ static void test_file_rename_information(void)
ok( res != 0, "failed to create temp file\n" ); ok( res != 0, "failed to create temp file\n" );
pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL );
fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length );
fri->Replace = TRUE; fri->ReplaceIfExists = TRUE;
fri->RootDir = NULL; fri->RootDirectory = NULL;
fri->FileNameLength = name_str.Length; fri->FileNameLength = name_str.Length;
memcpy( fri->FileName, name_str.Buffer, name_str.Length ); memcpy( fri->FileName, name_str.Buffer, name_str.Length );
pRtlFreeUnicodeString( &name_str ); pRtlFreeUnicodeString( &name_str );
@ -1478,8 +1478,8 @@ static void test_file_rename_information(void)
pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL );
fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length );
fri->Replace = FALSE; fri->ReplaceIfExists = FALSE;
fri->RootDir = NULL; fri->RootDirectory = NULL;
fri->FileNameLength = name_str.Length; fri->FileNameLength = name_str.Length;
memcpy( fri->FileName, name_str.Buffer, name_str.Length ); memcpy( fri->FileName, name_str.Buffer, name_str.Length );
pRtlFreeUnicodeString( &name_str ); pRtlFreeUnicodeString( &name_str );
@ -1512,8 +1512,8 @@ static void test_file_rename_information(void)
pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL );
fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length );
fri->Replace = TRUE; fri->ReplaceIfExists = TRUE;
fri->RootDir = NULL; fri->RootDirectory = NULL;
fri->FileNameLength = name_str.Length; fri->FileNameLength = name_str.Length;
memcpy( fri->FileName, name_str.Buffer, name_str.Length ); memcpy( fri->FileName, name_str.Buffer, name_str.Length );
pRtlFreeUnicodeString( &name_str ); pRtlFreeUnicodeString( &name_str );
@ -1547,8 +1547,8 @@ static void test_file_rename_information(void)
pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL );
DeleteFileW( newpath ); DeleteFileW( newpath );
fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length );
fri->Replace = FALSE; fri->ReplaceIfExists = FALSE;
fri->RootDir = NULL; fri->RootDirectory = NULL;
fri->FileNameLength = name_str.Length; fri->FileNameLength = name_str.Length;
memcpy( fri->FileName, name_str.Buffer, name_str.Length ); memcpy( fri->FileName, name_str.Buffer, name_str.Length );
pRtlFreeUnicodeString( &name_str ); pRtlFreeUnicodeString( &name_str );
@ -1594,8 +1594,8 @@ static void test_file_rename_information(void)
pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL );
DeleteFileW( newpath ); DeleteFileW( newpath );
fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length );
fri->Replace = FALSE; fri->ReplaceIfExists = FALSE;
fri->RootDir = NULL; fri->RootDirectory = NULL;
fri->FileNameLength = name_str.Length; fri->FileNameLength = name_str.Length;
memcpy( fri->FileName, name_str.Buffer, name_str.Length ); memcpy( fri->FileName, name_str.Buffer, name_str.Length );
pRtlFreeUnicodeString( &name_str ); pRtlFreeUnicodeString( &name_str );
@ -1634,8 +1634,8 @@ static void test_file_rename_information(void)
ok( res != 0, "failed to create temp file\n" ); ok( res != 0, "failed to create temp file\n" );
pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL );
fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length );
fri->Replace = FALSE; fri->ReplaceIfExists = FALSE;
fri->RootDir = NULL; fri->RootDirectory = NULL;
fri->FileNameLength = name_str.Length; fri->FileNameLength = name_str.Length;
memcpy( fri->FileName, name_str.Buffer, name_str.Length ); memcpy( fri->FileName, name_str.Buffer, name_str.Length );
pRtlFreeUnicodeString( &name_str ); pRtlFreeUnicodeString( &name_str );
@ -1670,8 +1670,8 @@ static void test_file_rename_information(void)
pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL );
fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length );
fri->Replace = FALSE; fri->ReplaceIfExists = FALSE;
fri->RootDir = NULL; fri->RootDirectory = NULL;
fri->FileNameLength = name_str.Length; fri->FileNameLength = name_str.Length;
memcpy( fri->FileName, name_str.Buffer, name_str.Length ); memcpy( fri->FileName, name_str.Buffer, name_str.Length );
pRtlFreeUnicodeString( &name_str ); pRtlFreeUnicodeString( &name_str );
@ -1704,8 +1704,8 @@ static void test_file_rename_information(void)
ok( res != 0, "failed to create temp file\n" ); ok( res != 0, "failed to create temp file\n" );
pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL );
fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length );
fri->Replace = TRUE; fri->ReplaceIfExists = TRUE;
fri->RootDir = NULL; fri->RootDirectory = NULL;
fri->FileNameLength = name_str.Length; fri->FileNameLength = name_str.Length;
memcpy( fri->FileName, name_str.Buffer, name_str.Length ); memcpy( fri->FileName, name_str.Buffer, name_str.Length );
pRtlFreeUnicodeString( &name_str ); pRtlFreeUnicodeString( &name_str );
@ -1740,8 +1740,8 @@ static void test_file_rename_information(void)
pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL );
fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length );
fri->Replace = TRUE; fri->ReplaceIfExists = TRUE;
fri->RootDir = NULL; fri->RootDirectory = NULL;
fri->FileNameLength = name_str.Length; fri->FileNameLength = name_str.Length;
memcpy( fri->FileName, name_str.Buffer, name_str.Length ); memcpy( fri->FileName, name_str.Buffer, name_str.Length );
pRtlFreeUnicodeString( &name_str ); pRtlFreeUnicodeString( &name_str );
@ -1777,8 +1777,8 @@ static void test_file_rename_information(void)
ok( success != 0, "failed to create temp directory\n" ); ok( success != 0, "failed to create temp directory\n" );
pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL );
fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length );
fri->Replace = FALSE; fri->ReplaceIfExists = FALSE;
fri->RootDir = NULL; fri->RootDirectory = NULL;
fri->FileNameLength = name_str.Length; fri->FileNameLength = name_str.Length;
memcpy( fri->FileName, name_str.Buffer, name_str.Length ); memcpy( fri->FileName, name_str.Buffer, name_str.Length );
pRtlFreeUnicodeString( &name_str ); pRtlFreeUnicodeString( &name_str );
@ -1813,8 +1813,8 @@ static void test_file_rename_information(void)
ok( success != 0, "failed to create temp directory\n" ); ok( success != 0, "failed to create temp directory\n" );
pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL );
fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length );
fri->Replace = TRUE; fri->ReplaceIfExists= TRUE;
fri->RootDir = NULL; fri->RootDirectory = NULL;
fri->FileNameLength = name_str.Length; fri->FileNameLength = name_str.Length;
memcpy( fri->FileName, name_str.Buffer, name_str.Length ); memcpy( fri->FileName, name_str.Buffer, name_str.Length );
pRtlFreeUnicodeString( &name_str ); pRtlFreeUnicodeString( &name_str );
@ -1852,8 +1852,8 @@ static void test_file_rename_information(void)
pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL );
fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length );
fri->Replace = TRUE; fri->ReplaceIfExists = TRUE;
fri->RootDir = NULL; fri->RootDirectory = NULL;
fri->FileNameLength = name_str.Length; fri->FileNameLength = name_str.Length;
memcpy( fri->FileName, name_str.Buffer, name_str.Length ); memcpy( fri->FileName, name_str.Buffer, name_str.Length );
pRtlFreeUnicodeString( &name_str ); pRtlFreeUnicodeString( &name_str );
@ -1886,8 +1886,8 @@ static void test_file_rename_information(void)
ok( success != 0, "failed to create temp directory\n" ); ok( success != 0, "failed to create temp directory\n" );
pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL );
fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length );
fri->Replace = FALSE; fri->ReplaceIfExists = FALSE;
fri->RootDir = NULL; fri->RootDirectory = NULL;
fri->FileNameLength = name_str.Length; fri->FileNameLength = name_str.Length;
memcpy( fri->FileName, name_str.Buffer, name_str.Length ); memcpy( fri->FileName, name_str.Buffer, name_str.Length );
pRtlFreeUnicodeString( &name_str ); pRtlFreeUnicodeString( &name_str );
@ -1919,8 +1919,8 @@ static void test_file_rename_information(void)
ok( success != 0, "failed to create temp directory\n" ); ok( success != 0, "failed to create temp directory\n" );
pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL );
fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length );
fri->Replace = TRUE; fri->ReplaceIfExists = TRUE;
fri->RootDir = NULL; fri->RootDirectory = NULL;
fri->FileNameLength = name_str.Length; fri->FileNameLength = name_str.Length;
memcpy( fri->FileName, name_str.Buffer, name_str.Length ); memcpy( fri->FileName, name_str.Buffer, name_str.Length );
pRtlFreeUnicodeString( &name_str ); pRtlFreeUnicodeString( &name_str );
@ -1954,8 +1954,8 @@ static void test_file_rename_information(void)
ok( handle2 != INVALID_HANDLE_VALUE, "CreateFileW failed\n" ); ok( handle2 != INVALID_HANDLE_VALUE, "CreateFileW failed\n" );
fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + lstrlenW(filename) * sizeof(WCHAR) ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + lstrlenW(filename) * sizeof(WCHAR) );
fri->Replace = FALSE; fri->ReplaceIfExists = FALSE;
fri->RootDir = handle2; fri->RootDirectory = handle2;
fri->FileNameLength = lstrlenW(filename) * sizeof(WCHAR); fri->FileNameLength = lstrlenW(filename) * sizeof(WCHAR);
memcpy( fri->FileName, filename, fri->FileNameLength ); memcpy( fri->FileName, filename, fri->FileNameLength );

View file

@ -156,8 +156,8 @@ static void test_query_cpu(void)
ok( sizeof(sci) == ReturnLength, "Inconsistent length %d\n", ReturnLength); ok( sizeof(sci) == ReturnLength, "Inconsistent length %d\n", ReturnLength);
/* Check if we have some return values */ /* Check if we have some return values */
trace("Processor FeatureSet : %08x\n", sci.FeatureSet); trace("Processor FeatureSet : %08x\n", sci.ProcessorFeatureBits);
ok( sci.FeatureSet != 0, "Expected some features for this processor, got %08x\n", sci.FeatureSet); ok( sci.ProcessorFeatureBits != 0, "Expected some features for this processor, got %08x\n", sci.ProcessorFeatureBits);
} }
static void test_query_performance(void) static void test_query_performance(void)
@ -458,9 +458,9 @@ static void test_query_module(void)
ULONG ReturnLength; ULONG ReturnLength;
ULONG ModuleCount, i; ULONG ModuleCount, i;
ULONG SystemInformationLength = sizeof(SYSTEM_MODULE_INFORMATION); ULONG SystemInformationLength = sizeof(RTL_PROCESS_MODULES);
SYSTEM_MODULE_INFORMATION* smi = HeapAlloc(GetProcessHeap(), 0, SystemInformationLength); RTL_PROCESS_MODULES* smi = HeapAlloc(GetProcessHeap(), 0, SystemInformationLength);
SYSTEM_MODULE* sm; RTL_PROCESS_MODULE_INFORMATION* sm;
/* Request the needed length */ /* Request the needed length */
status = pNtQuerySystemInformation(SystemModuleInformation, smi, 0, &ReturnLength); status = pNtQuerySystemInformation(SystemModuleInformation, smi, 0, &ReturnLength);
@ -480,7 +480,7 @@ static void test_query_module(void)
/* Loop through all the modules/drivers, Wine doesn't get here (yet) */ /* Loop through all the modules/drivers, Wine doesn't get here (yet) */
for (i = 0; i < ModuleCount ; i++) for (i = 0; i < ModuleCount ; i++)
{ {
ok( i == sm->Id, "Id (%d) should have matched %u\n", sm->Id, i); ok( i == sm->LoadOrderIndex, "LoadOrderIndex (%d) should have matched %u\n", sm->LoadOrderIndex, i);
sm++; sm++;
} }
@ -590,19 +590,19 @@ static void test_query_handle_ex(void)
ReturnLength = 0xdeadbeef; ReturnLength = 0xdeadbeef;
status = pNtQuerySystemInformation(SystemExtendedHandleInformation, shi, SystemInformationLength, &ReturnLength); status = pNtQuerySystemInformation(SystemExtendedHandleInformation, shi, SystemInformationLength, &ReturnLength);
ok( status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08x\n", status ); ok( status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08x\n", status );
ExpectedLength = FIELD_OFFSET(SYSTEM_HANDLE_INFORMATION_EX, Handle[shi->Count]); ExpectedLength = FIELD_OFFSET(SYSTEM_HANDLE_INFORMATION_EX, Handles[shi->NumberOfHandles]);
ok( ReturnLength == ExpectedLength, "Expected length %u, got %u\n", ExpectedLength, ReturnLength ); ok( ReturnLength == ExpectedLength, "Expected length %u, got %u\n", ExpectedLength, ReturnLength );
ok( shi->Count > 1, "Expected more than 1 handle, got %u\n", (DWORD)shi->Count ); ok( shi->NumberOfHandles > 1, "Expected more than 1 handle, got %u\n", (DWORD)shi->NumberOfHandles );
for (i = 0, found = FALSE; i < shi->Count && !found; i++) for (i = 0, found = FALSE; i < shi->NumberOfHandles && !found; i++)
found = (shi->Handle[i].UniqueProcessId == GetCurrentProcessId()) && found = (shi->Handles[i].UniqueProcessId == GetCurrentProcessId()) &&
((HANDLE)(ULONG_PTR)shi->Handle[i].HandleValue == EventHandle); ((HANDLE)(ULONG_PTR)shi->Handles[i].HandleValue == EventHandle);
ok( found, "Expected to find event handle %p (pid %x) in handle list\n", EventHandle, GetCurrentProcessId() ); ok( found, "Expected to find event handle %p (pid %x) in handle list\n", EventHandle, GetCurrentProcessId() );
if (!found) if (!found)
{ {
for (i = 0; i < shi->Count; i++) for (i = 0; i < shi->NumberOfHandles; i++)
trace( "%d: handle %x pid %x\n", i, (DWORD)shi->Handle[i].HandleValue, (DWORD)shi->Handle[i].UniqueProcessId ); trace( "%d: handle %x pid %x\n", i, (DWORD)shi->Handles[i].HandleValue, (DWORD)shi->Handles[i].UniqueProcessId );
} }
CloseHandle(EventHandle); CloseHandle(EventHandle);
@ -610,9 +610,9 @@ static void test_query_handle_ex(void)
ReturnLength = 0xdeadbeef; ReturnLength = 0xdeadbeef;
status = pNtQuerySystemInformation(SystemExtendedHandleInformation, shi, SystemInformationLength, &ReturnLength); status = pNtQuerySystemInformation(SystemExtendedHandleInformation, shi, SystemInformationLength, &ReturnLength);
ok( status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08x\n", status ); ok( status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08x\n", status );
for (i = 0, found = FALSE; i < shi->Count && !found; i++) for (i = 0, found = FALSE; i < shi->NumberOfHandles && !found; i++)
found = (shi->Handle[i].UniqueProcessId == GetCurrentProcessId()) && found = (shi->Handles[i].UniqueProcessId == GetCurrentProcessId()) &&
((HANDLE)(ULONG_PTR)shi->Handle[i].HandleValue == EventHandle); ((HANDLE)(ULONG_PTR)shi->Handles[i].HandleValue == EventHandle);
ok( !found, "Unexpectedly found event handle in handle list\n" ); ok( !found, "Unexpectedly found event handle in handle list\n" );
status = pNtQuerySystemInformation(SystemExtendedHandleInformation, NULL, SystemInformationLength, &ReturnLength); status = pNtQuerySystemInformation(SystemExtendedHandleInformation, NULL, SystemInformationLength, &ReturnLength);
@ -635,21 +635,21 @@ static void test_query_cache(void)
for (i = sizeof(buffer); i>= expected; i--) for (i = sizeof(buffer); i>= expected; i--)
{ {
ReturnLength = 0xdeadbeef; ReturnLength = 0xdeadbeef;
status = pNtQuerySystemInformation(SystemCacheInformation, sci, i, &ReturnLength); status = pNtQuerySystemInformation(SystemFileCacheInformation, sci, i, &ReturnLength);
ok(!status && (ReturnLength == expected), ok(!status && (ReturnLength == expected),
"%d: got 0x%x and %u (expected STATUS_SUCCESS and %u)\n", i, status, ReturnLength, expected); "%d: got 0x%x and %u (expected STATUS_SUCCESS and %u)\n", i, status, ReturnLength, expected);
} }
/* buffer too small for the full result. /* buffer too small for the full result.
Up to win7, the function succeeds with a partial result. */ Up to win7, the function succeeds with a partial result. */
status = pNtQuerySystemInformation(SystemCacheInformation, sci, i, &ReturnLength); status = pNtQuerySystemInformation(SystemFileCacheInformation, sci, i, &ReturnLength);
if (!status) if (!status)
{ {
expected = offsetof(SYSTEM_CACHE_INFORMATION, MinimumWorkingSet); expected = offsetof(SYSTEM_CACHE_INFORMATION, MinimumWorkingSet);
for (; i>= expected; i--) for (; i>= expected; i--)
{ {
ReturnLength = 0xdeadbeef; ReturnLength = 0xdeadbeef;
status = pNtQuerySystemInformation(SystemCacheInformation, sci, i, &ReturnLength); status = pNtQuerySystemInformation(SystemFileCacheInformation, sci, i, &ReturnLength);
ok(!status && (ReturnLength == expected), ok(!status && (ReturnLength == expected),
"%d: got 0x%x and %u (expected STATUS_SUCCESS and %u)\n", i, status, ReturnLength, expected); "%d: got 0x%x and %u (expected STATUS_SUCCESS and %u)\n", i, status, ReturnLength, expected);
} }
@ -657,7 +657,7 @@ static void test_query_cache(void)
/* buffer too small for the result, this call will always fail */ /* buffer too small for the result, this call will always fail */
ReturnLength = 0xdeadbeef; ReturnLength = 0xdeadbeef;
status = pNtQuerySystemInformation(SystemCacheInformation, sci, i, &ReturnLength); status = pNtQuerySystemInformation(SystemFileCacheInformation, sci, i, &ReturnLength);
ok( status == STATUS_INFO_LENGTH_MISMATCH && ok( status == STATUS_INFO_LENGTH_MISMATCH &&
((ReturnLength == expected) || broken(!ReturnLength) || broken(ReturnLength == 0xfffffff0)), ((ReturnLength == expected) || broken(!ReturnLength) || broken(ReturnLength == 0xfffffff0)),
"%d: got 0x%x and %u (expected STATUS_INFO_LENGTH_MISMATCH and %u)\n", i, status, ReturnLength, expected); "%d: got 0x%x and %u (expected STATUS_INFO_LENGTH_MISMATCH and %u)\n", i, status, ReturnLength, expected);
@ -665,7 +665,7 @@ static void test_query_cache(void)
if (0) { if (0) {
/* this crashes on some vista / win7 machines */ /* this crashes on some vista / win7 machines */
ReturnLength = 0xdeadbeef; ReturnLength = 0xdeadbeef;
status = pNtQuerySystemInformation(SystemCacheInformation, sci, 0, &ReturnLength); status = pNtQuerySystemInformation(SystemFileCacheInformation, sci, 0, &ReturnLength);
ok( status == STATUS_INFO_LENGTH_MISMATCH && ok( status == STATUS_INFO_LENGTH_MISMATCH &&
((ReturnLength == expected) || broken(!ReturnLength) || broken(ReturnLength == 0xfffffff0)), ((ReturnLength == expected) || broken(!ReturnLength) || broken(ReturnLength == 0xfffffff0)),
"0: got 0x%x and %u (expected STATUS_INFO_LENGTH_MISMATCH and %u)\n", status, ReturnLength, expected); "0: got 0x%x and %u (expected STATUS_INFO_LENGTH_MISMATCH and %u)\n", status, ReturnLength, expected);
@ -1129,7 +1129,9 @@ static void test_query_process_vm(void)
NTSTATUS status; NTSTATUS status;
ULONG ReturnLength; ULONG ReturnLength;
VM_COUNTERS pvi; VM_COUNTERS pvi;
#ifndef __REACTOS__
ULONG old_size = FIELD_OFFSET(VM_COUNTERS,PrivatePageCount); ULONG old_size = FIELD_OFFSET(VM_COUNTERS,PrivatePageCount);
#endif
HANDLE process; HANDLE process;
SIZE_T prev_size; SIZE_T prev_size;
const SIZE_T alloc_size = 16 * 1024 * 1024; const SIZE_T alloc_size = 16 * 1024 * 1024;
@ -1139,8 +1141,10 @@ static void test_query_process_vm(void)
ok( status == STATUS_ACCESS_VIOLATION || status == STATUS_INVALID_HANDLE, ok( status == STATUS_ACCESS_VIOLATION || status == STATUS_INVALID_HANDLE,
"Expected STATUS_ACCESS_VIOLATION or STATUS_INVALID_HANDLE(W2K3), got %08x\n", status); "Expected STATUS_ACCESS_VIOLATION or STATUS_INVALID_HANDLE(W2K3), got %08x\n", status);
#ifndef __REACTOS__
status = pNtQueryInformationProcess(NULL, ProcessVmCounters, &pvi, old_size, NULL); status = pNtQueryInformationProcess(NULL, ProcessVmCounters, &pvi, old_size, NULL);
ok( status == STATUS_INVALID_HANDLE, "Expected STATUS_INVALID_HANDLE, got %08x\n", status); ok( status == STATUS_INVALID_HANDLE, "Expected STATUS_INVALID_HANDLE, got %08x\n", status);
#endif
/* Windows XP and W2K3 will report success for a size of 44 AND 48 ! /* Windows XP and W2K3 will report success for a size of 44 AND 48 !
Windows W2K will only report success for 44. Windows W2K will only report success for 44.
@ -1150,13 +1154,17 @@ static void test_query_process_vm(void)
status = pNtQueryInformationProcess( GetCurrentProcess(), ProcessVmCounters, &pvi, 24, &ReturnLength); status = pNtQueryInformationProcess( GetCurrentProcess(), ProcessVmCounters, &pvi, 24, &ReturnLength);
ok( status == STATUS_INFO_LENGTH_MISMATCH, "Expected STATUS_INFO_LENGTH_MISMATCH, got %08x\n", status); ok( status == STATUS_INFO_LENGTH_MISMATCH, "Expected STATUS_INFO_LENGTH_MISMATCH, got %08x\n", status);
#ifndef __REACTOS__
status = pNtQueryInformationProcess( GetCurrentProcess(), ProcessVmCounters, &pvi, old_size, &ReturnLength); status = pNtQueryInformationProcess( GetCurrentProcess(), ProcessVmCounters, &pvi, old_size, &ReturnLength);
ok( status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08x\n", status); ok( status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08x\n", status);
ok( old_size == ReturnLength, "Inconsistent length %d\n", ReturnLength); ok( old_size == ReturnLength, "Inconsistent length %d\n", ReturnLength);
#endif
status = pNtQueryInformationProcess( GetCurrentProcess(), ProcessVmCounters, &pvi, 46, &ReturnLength); status = pNtQueryInformationProcess( GetCurrentProcess(), ProcessVmCounters, &pvi, 46, &ReturnLength);
ok( status == STATUS_INFO_LENGTH_MISMATCH, "Expected STATUS_INFO_LENGTH_MISMATCH, got %08x\n", status); ok( status == STATUS_INFO_LENGTH_MISMATCH, "Expected STATUS_INFO_LENGTH_MISMATCH, got %08x\n", status);
#ifndef __REACTOS__
ok( ReturnLength == old_size || ReturnLength == sizeof(pvi), "Inconsistent length %d\n", ReturnLength); ok( ReturnLength == old_size || ReturnLength == sizeof(pvi), "Inconsistent length %d\n", ReturnLength);
#endif
/* Check if we have some return values */ /* Check if we have some return values */
dump_vm_counters("VM counters for GetCurrentProcess", &pvi); dump_vm_counters("VM counters for GetCurrentProcess", &pvi);
@ -1995,7 +2003,7 @@ static void test_queryvirtualmemory(void)
module = GetModuleHandleA( "ntdll.dll" ); module = GetModuleHandleA( "ntdll.dll" );
memset(msn, 0, sizeof(*msn)); memset(msn, 0, sizeof(*msn));
readcount = 0; readcount = 0;
status = pNtQueryVirtualMemory(NtCurrentProcess(), module, MemorySectionName, msn, sizeof(*msn), &readcount); status = pNtQueryVirtualMemory(NtCurrentProcess(), module, MemoryMappedFilenameInformation, msn, sizeof(*msn), &readcount);
ok( status == STATUS_BUFFER_OVERFLOW, "Expected STATUS_BUFFER_OVERFLOW, got %08x\n", status); ok( status == STATUS_BUFFER_OVERFLOW, "Expected STATUS_BUFFER_OVERFLOW, got %08x\n", status);
ok( readcount > 0, "Expected readcount to be > 0\n"); ok( readcount > 0, "Expected readcount to be > 0\n");
@ -2003,7 +2011,7 @@ static void test_queryvirtualmemory(void)
module = GetModuleHandleA( "ntdll.dll" ); module = GetModuleHandleA( "ntdll.dll" );
memset(msn, 0, sizeof(*msn)); memset(msn, 0, sizeof(*msn));
readcount = 0; readcount = 0;
status = pNtQueryVirtualMemory(NtCurrentProcess(), module, MemorySectionName, msn, sizeof(*msn) - 1, &readcount); status = pNtQueryVirtualMemory(NtCurrentProcess(), module, MemoryMappedFilenameInformation, msn, sizeof(*msn) - 1, &readcount);
ok( status == STATUS_INFO_LENGTH_MISMATCH, "Expected STATUS_INFO_LENGTH_MISMATCH, got %08x\n", status); ok( status == STATUS_INFO_LENGTH_MISMATCH, "Expected STATUS_INFO_LENGTH_MISMATCH, got %08x\n", status);
ok( readcount > 0, "Expected readcount to be > 0\n"); ok( readcount > 0, "Expected readcount to be > 0\n");
@ -2012,7 +2020,7 @@ static void test_queryvirtualmemory(void)
memset(msn, 0x55, sizeof(*msn)); memset(msn, 0x55, sizeof(*msn));
memset(buffer_name, 0x77, sizeof(buffer_name)); memset(buffer_name, 0x77, sizeof(buffer_name));
readcount = 0; readcount = 0;
status = pNtQueryVirtualMemory(NtCurrentProcess(), module, MemorySectionName, msn, sizeof(buffer_name), &readcount); status = pNtQueryVirtualMemory(NtCurrentProcess(), module, MemoryMappedFilenameInformation, msn, sizeof(buffer_name), &readcount);
ok( status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08x\n", status); ok( status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08x\n", status);
ok( readcount > 0, "Expected readcount to be > 0\n"); ok( readcount > 0, "Expected readcount to be > 0\n");
trace ("Section Name: %s\n", wine_dbgstr_w(msn->SectionFileName.Buffer)); trace ("Section Name: %s\n", wine_dbgstr_w(msn->SectionFileName.Buffer));
@ -2024,7 +2032,7 @@ static void test_queryvirtualmemory(void)
trace("Check section name of non mapped memory\n"); trace("Check section name of non mapped memory\n");
memset(msn, 0, sizeof(buffer_name)); memset(msn, 0, sizeof(buffer_name));
readcount = 0; readcount = 0;
status = pNtQueryVirtualMemory(NtCurrentProcess(), &buffer_name, MemorySectionName, msn, sizeof(buffer_name), &readcount); status = pNtQueryVirtualMemory(NtCurrentProcess(), &buffer_name, MemoryMappedFilenameInformation, msn, sizeof(buffer_name), &readcount);
ok( status == STATUS_INVALID_ADDRESS, "Expected STATUS_INVALID_ADDRESS, got %08x\n", status); ok( status == STATUS_INVALID_ADDRESS, "Expected STATUS_INVALID_ADDRESS, got %08x\n", status);
ok( readcount == 0 || broken(readcount != 0) /* wow64 */, "Expected readcount to be 0\n"); ok( readcount == 0 || broken(readcount != 0) /* wow64 */, "Expected readcount to be 0\n");

View file

@ -1623,15 +1623,15 @@ static void test_query_object_types(void)
ok( status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08x\n", status ); ok( status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08x\n", status );
found = FALSE; found = FALSE;
for (i = 0; i < shi->Count; i++) for (i = 0; i < shi->NumberOfHandles; i++)
{ {
if (shi->Handle[i].UniqueProcessId != GetCurrentProcessId()) if (shi->Handles[i].UniqueProcessId != GetCurrentProcessId())
continue; continue;
if ((HANDLE)(ULONG_PTR)shi->Handle[i].HandleValue != handle) if ((HANDLE)(ULONG_PTR)shi->Handles[i].HandleValue != handle)
continue; continue;
ok( shi->Handle[i].ObjectTypeIndex == event_type_index, "Event type does not match: %u vs %u\n", ok( shi->Handles[i].ObjectTypeIndex == event_type_index, "Event type does not match: %u vs %u\n",
shi->Handle[i].ObjectTypeIndex, event_type_index ); shi->Handles[i].ObjectTypeIndex, event_type_index );
found = TRUE; found = TRUE;
break; break;

View file

@ -935,9 +935,9 @@ static void test_RtlThreadErrorMode(void)
"RtlGetThreadErrorMode returned 0x%x, expected 0x%x\n", mode, 0x70); "RtlGetThreadErrorMode returned 0x%x, expected 0x%x\n", mode, 0x70);
if (!is_wow64) if (!is_wow64)
{ {
ok(NtCurrentTeb()->HardErrorDisabled == 0x70, ok(NtCurrentTeb()->HardErrorMode == 0x70,
"The TEB contains 0x%x, expected 0x%x\n", "The TEB contains 0x%x, expected 0x%x\n",
NtCurrentTeb()->HardErrorDisabled, 0x70); NtCurrentTeb()->HardErrorMode, 0x70);
} }
status = pRtlSetThreadErrorMode(0, &mode); status = pRtlSetThreadErrorMode(0, &mode);
@ -951,9 +951,9 @@ static void test_RtlThreadErrorMode(void)
"RtlGetThreadErrorMode returned 0x%x, expected 0x%x\n", mode, 0); "RtlGetThreadErrorMode returned 0x%x, expected 0x%x\n", mode, 0);
if (!is_wow64) if (!is_wow64)
{ {
ok(NtCurrentTeb()->HardErrorDisabled == 0, ok(NtCurrentTeb()->HardErrorMode == 0,
"The TEB contains 0x%x, expected 0x%x\n", "The TEB contains 0x%x, expected 0x%x\n",
NtCurrentTeb()->HardErrorDisabled, 0); NtCurrentTeb()->HardErrorMode, 0);
} }
for (mode = 1; mode; mode <<= 1) for (mode = 1; mode; mode <<= 1)
@ -3242,7 +3242,7 @@ struct ldr_enum_context
int count; int count;
}; };
static void WINAPI ldr_enum_callback(LDR_MODULE *module, void *context, BOOLEAN *stop) static void WINAPI ldr_enum_callback(LDR_DATA_TABLE_ENTRY *module, void *context, BOOLEAN *stop)
{ {
static const WCHAR ntdllW[] = {'n','t','d','l','l','.','d','l','l',0}; static const WCHAR ntdllW[] = {'n','t','d','l','l','.','d','l','l',0};
struct ldr_enum_context *ctx = context; struct ldr_enum_context *ctx = context;
@ -3420,7 +3420,7 @@ static void CALLBACK ldr_notify_callback1(ULONG reason, LDR_DLL_NOTIFICATION_DAT
IMAGE_THUNK_DATA *thunk_list; IMAGE_THUNK_DATA *thunk_list;
DWORD *calls = context; DWORD *calls = context;
LIST_ENTRY *mark; LIST_ENTRY *mark;
LDR_MODULE *mod; LDR_DATA_TABLE_ENTRY *mod;
ULONG size; ULONG size;
int i, j; int i, j;
@ -3435,9 +3435,9 @@ static void CALLBACK ldr_notify_callback1(ULONG reason, LDR_DLL_NOTIFICATION_DAT
/* expect module to be last module listed in LdrData load order list */ /* expect module to be last module listed in LdrData load order list */
mark = &NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList; mark = &NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList;
mod = CONTAINING_RECORD(mark->Blink, LDR_MODULE, InMemoryOrderModuleList); mod = CONTAINING_RECORD(mark->Blink, LDR_DATA_TABLE_ENTRY, InMemoryOrderLinks);
ok(mod->BaseAddress == data->Loaded.DllBase, "Expected base address %p, got %p\n", ok(mod->DllBase == data->Loaded.DllBase, "Expected base address %p, got %p\n",
data->Loaded.DllBase, mod->BaseAddress); data->Loaded.DllBase, mod->DllBase);
ok(!lstrcmpiW(mod->BaseDllName.Buffer, ws2_32dllW), "Expected ws2_32.dll, got %s\n", ok(!lstrcmpiW(mod->BaseDllName.Buffer, ws2_32dllW), "Expected ws2_32.dll, got %s\n",
wine_dbgstr_w(mod->BaseDllName.Buffer)); wine_dbgstr_w(mod->BaseDllName.Buffer));
@ -3487,7 +3487,7 @@ static void CALLBACK ldr_notify_callback_dll_main(ULONG reason, LDR_DLL_NOTIFICA
{ {
DWORD *calls = context; DWORD *calls = context;
LIST_ENTRY *mark; LIST_ENTRY *mark;
LDR_MODULE *mod; LDR_DATA_TABLE_ENTRY *mod;
*calls <<= 4; *calls <<= 4;
*calls |= reason; *calls |= reason;
@ -3496,10 +3496,10 @@ static void CALLBACK ldr_notify_callback_dll_main(ULONG reason, LDR_DLL_NOTIFICA
return; return;
mark = &NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList; mark = &NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList;
mod = CONTAINING_RECORD(mark->Blink, LDR_MODULE, InMemoryOrderModuleList); mod = CONTAINING_RECORD(mark->Blink, LDR_DATA_TABLE_ENTRY, InMemoryOrderLinks);
ok(mod->BaseAddress == data->Loaded.DllBase, "Expected base address %p, got %p\n", ok(mod->DllBase == data->Loaded.DllBase, "Expected base address %p, got %p\n",
data->Loaded.DllBase, mod->BaseAddress); data->Loaded.DllBase, mod->DllBase);
if (mod->BaseAddress != data->Loaded.DllBase) if (mod->DllBase != data->Loaded.DllBase)
return; return;
orig_entry = mod->EntryPoint; orig_entry = mod->EntryPoint;
@ -3526,7 +3526,7 @@ static void CALLBACK ldr_notify_callback_fail(ULONG reason, LDR_DLL_NOTIFICATION
{ {
DWORD *calls = context; DWORD *calls = context;
LIST_ENTRY *mark; LIST_ENTRY *mark;
LDR_MODULE *mod; LDR_DATA_TABLE_ENTRY *mod;
*calls <<= 4; *calls <<= 4;
*calls |= reason; *calls |= reason;
@ -3535,10 +3535,10 @@ static void CALLBACK ldr_notify_callback_fail(ULONG reason, LDR_DLL_NOTIFICATION
return; return;
mark = &NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList; mark = &NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList;
mod = CONTAINING_RECORD(mark->Blink, LDR_MODULE, InMemoryOrderModuleList); mod = CONTAINING_RECORD(mark->Blink, LDR_DATA_TABLE_ENTRY, InMemoryOrderLinks);
ok(mod->BaseAddress == data->Loaded.DllBase, "Expected base address %p, got %p\n", ok(mod->DllBase == data->Loaded.DllBase, "Expected base address %p, got %p\n",
data->Loaded.DllBase, mod->BaseAddress); data->Loaded.DllBase, mod->DllBase);
if (mod->BaseAddress != data->Loaded.DllBase) if (mod->DllBase != data->Loaded.DllBase)
return; return;
orig_entry = mod->EntryPoint; orig_entry = mod->EntryPoint;

View file

@ -381,7 +381,7 @@ static BOOL nt_get_mapped_file_name(HANDLE process, LPVOID addr, LPWSTR name, DW
buf = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, buf_len); buf = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, buf_len);
ret_len = 0xdeadbeef; ret_len = 0xdeadbeef;
status = pNtQueryVirtualMemory(process, addr, MemorySectionName, buf, buf_len, &ret_len); status = pNtQueryVirtualMemory(process, addr, MemoryMappedFilenameInformation, buf, buf_len, &ret_len);
ok(!status, "NtQueryVirtualMemory error %x\n", status); ok(!status, "NtQueryVirtualMemory error %x\n", status);
section_name = (MEMORY_SECTION_NAME *)buf; section_name = (MEMORY_SECTION_NAME *)buf;

View file

@ -26,10 +26,6 @@
#include "winuser.h" #include "winuser.h"
#include "winnls.h" #include "winnls.h"
#ifdef __REACTOS__
#define WM_CLIPBOARDUPDATE 0x031D
#endif
static BOOL (WINAPI *pAddClipboardFormatListener)(HWND hwnd); static BOOL (WINAPI *pAddClipboardFormatListener)(HWND hwnd);
static BOOL (WINAPI *pRemoveClipboardFormatListener)(HWND hwnd); static BOOL (WINAPI *pRemoveClipboardFormatListener)(HWND hwnd);
static BOOL (WINAPI *pGetUpdatedClipboardFormats)( UINT *formats, UINT count, UINT *out_count ); static BOOL (WINAPI *pGetUpdatedClipboardFormats)( UINT *formats, UINT count, UINT *out_count );

View file

@ -2507,7 +2507,7 @@ QSI_DEF(SystemExtendedHandleInformation)
DPRINT("NtQuerySystemInformation - SystemExtendedHandleInformation\n"); DPRINT("NtQuerySystemInformation - SystemExtendedHandleInformation\n");
/* Set initial required buffer size */ /* Set initial required buffer size */
*ReqSize = FIELD_OFFSET(SYSTEM_HANDLE_INFORMATION_EX, Handle); *ReqSize = FIELD_OFFSET(SYSTEM_HANDLE_INFORMATION_EX, Handles);
/* Check user's buffer size */ /* Check user's buffer size */
if (Size < *ReqSize) if (Size < *ReqSize)
@ -2529,7 +2529,7 @@ QSI_DEF(SystemExtendedHandleInformation)
} }
/* Reset of count of handles */ /* Reset of count of handles */
HandleInformation->Count = 0; HandleInformation->NumberOfHandles = 0;
/* Enter a critical region */ /* Enter a critical region */
KeEnterCriticalRegion(); KeEnterCriticalRegion();
@ -2554,7 +2554,7 @@ QSI_DEF(SystemExtendedHandleInformation)
(HandleTableEntry->NextFreeTableEntry != -2)) (HandleTableEntry->NextFreeTableEntry != -2))
{ {
/* Increase of count of handles */ /* Increase of count of handles */
++HandleInformation->Count; ++HandleInformation->NumberOfHandles;
/* Lock the entry */ /* Lock the entry */
if (ExpLockHandleTableEntry(HandleTable, HandleTableEntry)) if (ExpLockHandleTableEntry(HandleTable, HandleTableEntry))
@ -2572,30 +2572,30 @@ QSI_DEF(SystemExtendedHandleInformation)
POBJECT_HEADER ObjectHeader = ObpGetHandleObject(HandleTableEntry); POBJECT_HEADER ObjectHeader = ObpGetHandleObject(HandleTableEntry);
/* Filling handle information */ /* Filling handle information */
HandleInformation->Handle[Index].UniqueProcessId = HandleInformation->Handles[Index].UniqueProcessId =
(USHORT)(ULONG_PTR) HandleTable->UniqueProcessId; (USHORT)(ULONG_PTR) HandleTable->UniqueProcessId;
HandleInformation->Handle[Index].CreatorBackTraceIndex = 0; HandleInformation->Handles[Index].CreatorBackTraceIndex = 0;
#if 0 /* FIXME!!! Type field corrupted */ #if 0 /* FIXME!!! Type field corrupted */
HandleInformation->Handles[Index].ObjectTypeIndex = HandleInformation->Handles[Index].ObjectTypeIndex =
(UCHAR) ObjectHeader->Type->Index; (UCHAR) ObjectHeader->Type->Index;
#else #else
HandleInformation->Handle[Index].ObjectTypeIndex = 0; HandleInformation->Handles[Index].ObjectTypeIndex = 0;
#endif #endif
HandleInformation->Handle[Index].HandleAttributes = HandleInformation->Handles[Index].HandleAttributes =
HandleTableEntry->ObAttributes & OBJ_HANDLE_ATTRIBUTES; HandleTableEntry->ObAttributes & OBJ_HANDLE_ATTRIBUTES;
HandleInformation->Handle[Index].HandleValue = HandleInformation->Handles[Index].HandleValue =
(USHORT)(ULONG_PTR) Handle.GenericHandleOverlay; (USHORT)(ULONG_PTR) Handle.GenericHandleOverlay;
HandleInformation->Handle[Index].Object = &ObjectHeader->Body; HandleInformation->Handles[Index].Object = &ObjectHeader->Body;
HandleInformation->Handle[Index].GrantedAccess = HandleInformation->Handles[Index].GrantedAccess =
HandleTableEntry->GrantedAccess; HandleTableEntry->GrantedAccess;
HandleInformation->Handle[Index].Reserved = 0; HandleInformation->Handles[Index].Reserved = 0;
++Index; ++Index;
} }

View file

@ -1603,9 +1603,9 @@ typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX
typedef struct _SYSTEM_HANDLE_INFORMATION_EX typedef struct _SYSTEM_HANDLE_INFORMATION_EX
{ {
ULONG_PTR Count; ULONG_PTR NumberOfHandles;
ULONG_PTR Reserved; ULONG_PTR Reserved;
SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX Handle[1]; SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX Handles[1];
} SYSTEM_HANDLE_INFORMATION_EX, *PSYSTEM_HANDLE_INFORMATION_EX; } SYSTEM_HANDLE_INFORMATION_EX, *PSYSTEM_HANDLE_INFORMATION_EX;
// FIXME: Class 65-89 // FIXME: Class 65-89

View file

@ -17,6 +17,23 @@ WINAPI
SetThreadStackGuarantee( SetThreadStackGuarantee(
_Inout_ PULONG StackSizeInBytes); _Inout_ PULONG StackSizeInBytes);
#if (_WIN32_WINNT >= 0x602) || defined(__REACTOS__)
FORCEINLINE
HANDLE
GetCurrentProcessToken(
VOID)
{
return (HANDLE)(LONG_PTR)-4;
}
FORCEINLINE
HANDLE
GetCurrentThreadToken(
VOID)
{
return (HANDLE)(LONG_PTR)-5;
}
FORCEINLINE FORCEINLINE
HANDLE HANDLE
GetCurrentThreadEffectiveToken( GetCurrentThreadEffectiveToken(
@ -24,6 +41,7 @@ GetCurrentThreadEffectiveToken(
{ {
return (HANDLE)(LONG_PTR)-6; return (HANDLE)(LONG_PTR)-6;
} }
#endif // (_WIN32_WINNT >= 0x602) || defined(__REACTOS__)
#ifdef __cplusplus #ifdef __cplusplus
} // extern "C" } // extern "C"

View file

@ -0,0 +1,64 @@
/*
* PROJECT: ReactOS SDK
* LICENSE: MIT (https://spdx.org/licenses/MIT)
* PURPOSE: API definitions for api-ms-win-shcore-scaling-l1-1-1.dll
* COPYRIGHT: Copyright 2025 Carl Bialorucki (carl.bialorucki@reactos.org)
*/
#pragma once
#include <shtypes.h>
typedef enum
{
MDT_EFFECTIVE_DPI,
MDT_ANGULAR_DPI,
MDT_RAW_DPI,
MDT_DEFAULT = MDT_EFFECTIVE_DPI
} MONITOR_DPI_TYPE;
typedef enum
{
PROCESS_DPI_UNAWARE,
PROCESS_SYSTEM_DPI_AWARE,
PROCESS_PER_MONITOR_DPI_AWARE
} PROCESS_DPI_AWARENESS;
typedef enum
{
DEVICE_PRIMARY,
DEVICE_IMMERSIVE,
} DISPLAY_DEVICE_TYPE;
typedef enum
{
SCF_VALUE_NONE,
SCF_SCALE,
SCF_PHYSICAL,
} SCALE_CHANGE_FLAGS;
#if (NTDDI_VERSION >= NTDDI_WIN8)
DEVICE_SCALE_FACTOR WINAPI GetScaleFactorForDevice(_In_ DISPLAY_DEVICE_TYPE deviceType);
HRESULT WINAPI RegisterScaleChangeNotifications(_In_ DISPLAY_DEVICE_TYPE displayDevice, _In_ HWND hwndNotify, _In_ UINT uMsgNotify, _Out_ DWORD *pdwCookie);
HRESULT WINAPI RevokeScaleChangeNotifications(_In_ DISPLAY_DEVICE_TYPE displayDevice, _In_ DWORD dwCookie);
#endif // (NTDDI_VERSION >= NTDDI_WIN8)
#if (NTDDI_VERSION >= NTDDI_WINBLUE)
HRESULT WINAPI GetScaleFactorForMonitor(_In_ HMONITOR hMon, _Out_ DEVICE_SCALE_FACTOR *pScale);
HRESULT WINAPI RegisterScaleChangeEvent(_In_ HANDLE hEvent, _Out_ DWORD_PTR *pdwCookie);
HRESULT WINAPI UnregisterScaleChangeEvent(_In_ DWORD_PTR dwCookie);
HRESULT WINAPI SetProcessDpiAwareness(_In_ PROCESS_DPI_AWARENESS value);
HRESULT WINAPI GetProcessDpiAwareness(_In_opt_ HANDLE hprocess, _Out_ PROCESS_DPI_AWARENESS *value);
HRESULT WINAPI GetDpiForMonitor(_In_ HMONITOR hmonitor, _In_ MONITOR_DPI_TYPE dpiType, _Out_ UINT *dpiX, _Out_ UINT *dpiY);
#endif // (NTDDI_VERSION >= NTDDI_WINBLUE)
#if (NTDDI_VERSION >= NTDDI_WIN10)
typedef enum
{
SHELL_UI_COMPONENT_TASKBARS,
SHELL_UI_COMPONENT_NOTIFICATIONAREA,
SHELL_UI_COMPONENT_DESKBAND,
} SHELL_UI_COMPONENT;
UINT WINAPI GetDpiForShellUIComponent(_In_ SHELL_UI_COMPONENT);
#endif // (NTDDI_VERSION >= NTDDI_WIN10)

View file

@ -189,3 +189,24 @@ cpp_quote("#define PERCEIVEDFLAG_NATIVESUPPORT 0x0004")
cpp_quote("#define PERCEIVEDFLAG_GDIPLUS 0x0010") cpp_quote("#define PERCEIVEDFLAG_GDIPLUS 0x0010")
cpp_quote("#define PERCEIVEDFLAG_WMSDK 0x0020") cpp_quote("#define PERCEIVEDFLAG_WMSDK 0x0020")
cpp_quote("#define PERCEIVEDFLAG_ZIPFOLDER 0x0040") cpp_quote("#define PERCEIVEDFLAG_ZIPFOLDER 0x0040")
typedef [v1_enum] enum DEVICE_SCALE_FACTOR
{
DEVICE_SCALE_FACTOR_INVALID = 0,
SCALE_100_PERCENT = 100,
SCALE_120_PERCENT = 120,
SCALE_125_PERCENT = 125,
SCALE_140_PERCENT = 140,
SCALE_150_PERCENT = 150,
SCALE_160_PERCENT = 160,
SCALE_175_PERCENT = 175,
SCALE_180_PERCENT = 180,
SCALE_200_PERCENT = 200,
SCALE_225_PERCENT = 225,
SCALE_250_PERCENT = 250,
SCALE_300_PERCENT = 300,
SCALE_350_PERCENT = 350,
SCALE_400_PERCENT = 400,
SCALE_450_PERCENT = 450,
SCALE_500_PERCENT = 500
} DEVICE_SCALE_FACTOR;

File diff suppressed because it is too large Load diff

View file

@ -10,8 +10,8 @@ extern "C" {
#ifdef _MSC_VER #ifdef _MSC_VER
#pragma warning(push) #pragma warning(push)
#pragma warning(disable:4201) #pragma warning(disable:4201) // nameless struct or union
#pragma warning(disable:4820) #pragma warning(disable:4820) // padding after member
#endif #endif
/* Get/SetSystemPaletteUse() values */ /* Get/SetSystemPaletteUse() values */
@ -1398,13 +1398,459 @@ typedef struct _DRAWPATRECT {
#define DISPLAY_DEVICE_PRIMARY_DEVICE 0x00000004 #define DISPLAY_DEVICE_PRIMARY_DEVICE 0x00000004
#define DISPLAY_DEVICE_MIRRORING_DRIVER 0x00000008 #define DISPLAY_DEVICE_MIRRORING_DRIVER 0x00000008
#define DISPLAY_DEVICE_VGA_COMPATIBLE 0x00000010 #define DISPLAY_DEVICE_VGA_COMPATIBLE 0x00000010
#define DISPLAY_DEVICE_REMOVABLE 0x00000020 #define DISPLAY_DEVICE_TS_COMPATIBLE 0x00200000
#define DISPLAY_DEVICE_DISCONNECT 0x02000000
#define DISPLAY_DEVICE_REMOTE 0x04000000
#define DISPLAY_DEVICE_MODESPRUNED 0x08000000 #define DISPLAY_DEVICE_MODESPRUNED 0x08000000
#define DISPLAY_DEVICE_ACTIVE 0x00000001 #if (_WIN32_WINNT >= 0x500)
#define DISPLAY_DEVICE_ATTACHED 0x00000002 #define DISPLAY_DEVICE_REMOVABLE 0x00000020
#define DISPLAY_DEVICE_RDPUDD 0x01000000
#define DISPLAY_DEVICE_DISCONNECT 0x02000000
#define DISPLAY_DEVICE_REMOTE 0x04000000
#define DISPLAY_DEVICE_ACTIVE 0x00000001
#define DISPLAY_DEVICE_ATTACHED 0x00000002
#endif // (_WIN32_WINNT >= 0x500)
#if (_WIN32_WINNT >= 0x600)
#define DISPLAY_DEVICE_UNSAFE_MODES_ON 0x00080000
#endif // (_WIN32_WINNT >= 0x600)
#if (_WIN32_WINNT >= 0x602)
#define DISPLAY_DEVICE_ACC_DRIVER 0x00000040
#endif // (_WIN32_WINNT >= 0x602)
#if (WINVER >= 0x601)
#define DISPLAYCONFIG_PATH_ACTIVE 0x00000001
#define DISPLAYCONFIG_PATH_PREFERRED_UNSCALED 0x00000004
#define DISPLAYCONFIG_PATH_SUPPORT_VIRTUAL_MODE 0x00000008
#define DISPLAYCONFIG_PATH_BOOST_REFRESH_RATE 0x00000010
#define DISPLAYCONFIG_PATH_VALID_FLAGS 0x0000001D
#define DISPLAYCONFIG_PATH_MODE_IDX_INVALID 0xFFFFFFFF
#define DISPLAYCONFIG_PATH_CLONE_GROUP_INVALID 0x0000FFFF
#define DISPLAYCONFIG_PATH_DESKTOP_IMAGE_IDX_INVALID 0x0000FFFF
#define DISPLAYCONFIG_PATH_SOURCE_MODE_IDX_INVALID 0x0000FFFF
#define DISPLAYCONFIG_PATH_TARGET_MODE_IDX_INVALID 0x0000FFFF
#define DISPLAYCONFIG_SOURCE_IN_USE 0x00000001
#define DISPLAYCONFIG_TARGET_IN_USE 0x00000001
#define DISPLAYCONFIG_TARGET_FORCIBLE 0x00000002
#define DISPLAYCONFIG_TARGET_FORCED_AVAILABILITY_BOOT 0x00000004
#define DISPLAYCONFIG_TARGET_FORCED_AVAILABILITY_PATH 0x00000008
#define DISPLAYCONFIG_TARGET_FORCED_AVAILABILITY_SYSTEM 0x00000010
#define DISPLAYCONFIG_TARGET_IS_HMD 0x00000020
#define QDC_ALL_PATHS 0x00000001
#define QDC_ONLY_ACTIVE_PATHS 0x00000002
#define QDC_DATABASE_CURRENT 0x00000004
#define QDC_VIRTUAL_MODE_AWARE 0x00000010
#define QDC_INCLUDE_HMD 0x00000020
#define QDC_VIRTUAL_REFRESH_RATE_AWARE 0x00000040
#define SDC_TOPOLOGY_INTERNAL 0x00000001
#define SDC_TOPOLOGY_CLONE 0x00000002
#define SDC_TOPOLOGY_EXTEND 0x00000004
#define SDC_TOPOLOGY_EXTERNAL 0x00000008
#define SDC_TOPOLOGY_SUPPLIED 0x00000010
#define SDC_USE_DATABASE_CURRENT (SDC_TOPOLOGY_INTERNAL | SDC_TOPOLOGY_CLONE | SDC_TOPOLOGY_EXTEND | SDC_TOPOLOGY_EXTERNAL)
#define SDC_USE_SUPPLIED_DISPLAY_CONFIG 0x00000020
#define SDC_VALIDATE 0x00000040
#define SDC_APPLY 0x00000080
#define SDC_NO_OPTIMIZATION 0x00000100
#define SDC_SAVE_TO_DATABASE 0x00000200
#define SDC_ALLOW_CHANGES 0x00000400
#define SDC_PATH_PERSIST_IF_REQUIRED 0x00000800
#define SDC_FORCE_MODE_ENUMERATION 0x00001000
#define SDC_ALLOW_PATH_ORDER_CHANGES 0x00002000
#define SDC_VIRTUAL_MODE_AWARE 0x00008000
#define SDC_VIRTUAL_REFRESH_RATE_AWARE 0x00020000
typedef struct DISPLAYCONFIG_RATIONAL
{
UINT32 Numerator;
UINT32 Denominator;
} DISPLAYCONFIG_RATIONAL;
typedef enum
{
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_OTHER = -1,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HD15,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SVIDEO,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPOSITE_VIDEO,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_COMPONENT_VIDEO,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DVI,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_HDMI,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_LVDS,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_D_JPN = 8,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDI,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EXTERNAL,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_EMBEDDED,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EXTERNAL,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_UDI_EMBEDDED,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_SDTVDONGLE,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_MIRACAST,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INDIRECT_WIRED,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INDIRECT_VIRTUAL,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_DISPLAYPORT_USB_TUNNEL,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_INTERNAL = 0x80000000,
DISPLAYCONFIG_OUTPUT_TECHNOLOGY_FORCE_UINT32 = 0xFFFFFFFF
} DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY;
typedef enum
{
DISPLAYCONFIG_SCANLINE_ORDERING_UNSPECIFIED,
DISPLAYCONFIG_SCANLINE_ORDERING_PROGRESSIVE,
DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED,
DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_UPPERFIELDFIRST = DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED,
DISPLAYCONFIG_SCANLINE_ORDERING_INTERLACED_LOWERFIELDFIRST = 3,
DISPLAYCONFIG_SCANLINE_ORDERING_FORCE_UINT32 = 0xFFFFFFFF
} DISPLAYCONFIG_SCANLINE_ORDERING;
typedef struct DISPLAYCONFIG_2DREGION
{
UINT32 cx;
UINT32 cy;
} DISPLAYCONFIG_2DREGION;
typedef struct DISPLAYCONFIG_VIDEO_SIGNAL_INFO
{
UINT64 pixelRate;
DISPLAYCONFIG_RATIONAL hSyncFreq;
DISPLAYCONFIG_RATIONAL vSyncFreq;
DISPLAYCONFIG_2DREGION activeSize;
DISPLAYCONFIG_2DREGION totalSize;
union
{
struct
{
UINT32 videoStandard : 16;
UINT32 vSyncFreqDivider : 6;
UINT32 reserved : 10;
} AdditionalSignalInfo;
UINT32 videoStandard;
} DUMMYUNIONNAME;
DISPLAYCONFIG_SCANLINE_ORDERING scanLineOrdering;
} DISPLAYCONFIG_VIDEO_SIGNAL_INFO;
typedef enum
{
DISPLAYCONFIG_SCALING_IDENTITY = 1,
DISPLAYCONFIG_SCALING_CENTERED,
DISPLAYCONFIG_SCALING_STRETCHED,
DISPLAYCONFIG_SCALING_ASPECTRATIOCENTEREDMAX,
DISPLAYCONFIG_SCALING_CUSTOM,
DISPLAYCONFIG_SCALING_PREFERRED = 128,
DISPLAYCONFIG_SCALING_FORCE_UINT32 = 0xFFFFFFFF
} DISPLAYCONFIG_SCALING;
typedef enum
{
DISPLAYCONFIG_ROTATION_IDENTITY = 1,
DISPLAYCONFIG_ROTATION_ROTATE90,
DISPLAYCONFIG_ROTATION_ROTATE180,
DISPLAYCONFIG_ROTATION_ROTATE270,
DISPLAYCONFIG_ROTATION_FORCE_UINT32 = 0xFFFFFFFF
} DISPLAYCONFIG_ROTATION;
typedef enum
{
DISPLAYCONFIG_MODE_INFO_TYPE_SOURCE = 1,
DISPLAYCONFIG_MODE_INFO_TYPE_TARGET,
DISPLAYCONFIG_MODE_INFO_TYPE_DESKTOP_IMAGE,
DISPLAYCONFIG_MODE_INFO_TYPE_FORCE_UINT32 = 0xFFFFFFFF
} DISPLAYCONFIG_MODE_INFO_TYPE;
typedef enum
{
DISPLAYCONFIG_PIXELFORMAT_8BPP = 1,
DISPLAYCONFIG_PIXELFORMAT_16BPP,
DISPLAYCONFIG_PIXELFORMAT_24BPP,
DISPLAYCONFIG_PIXELFORMAT_32BPP,
DISPLAYCONFIG_PIXELFORMAT_NONGDI,
DISPLAYCONFIG_PIXELFORMAT_FORCE_UINT32 = 0xFFFFFFFF
} DISPLAYCONFIG_PIXELFORMAT;
typedef struct DISPLAYCONFIG_SOURCE_MODE
{
UINT32 width;
UINT32 height;
DISPLAYCONFIG_PIXELFORMAT pixelFormat;
POINTL position;
} DISPLAYCONFIG_SOURCE_MODE;
typedef struct DISPLAYCONFIG_TARGET_MODE
{
DISPLAYCONFIG_VIDEO_SIGNAL_INFO targetVideoSignalInfo;
} DISPLAYCONFIG_TARGET_MODE;
typedef struct DISPLAYCONFIG_DESKTOP_IMAGE_INFO
{
POINTL PathSourceSize;
RECTL DesktopImageRegion;
RECTL DesktopImageClip;
} DISPLAYCONFIG_DESKTOP_IMAGE_INFO;
typedef struct DISPLAYCONFIG_MODE_INFO
{
DISPLAYCONFIG_MODE_INFO_TYPE infoType;
UINT32 id;
LUID adapterId;
union
{
DISPLAYCONFIG_TARGET_MODE targetMode;
DISPLAYCONFIG_SOURCE_MODE sourceMode;
DISPLAYCONFIG_DESKTOP_IMAGE_INFO desktopImageInfo;
} DUMMYUNIONNAME;
} DISPLAYCONFIG_MODE_INFO;
typedef struct DISPLAYCONFIG_PATH_SOURCE_INFO
{
LUID adapterId;
UINT32 id;
union
{
UINT32 modeInfoIdx;
struct
{
UINT32 cloneGroupId : 16;
UINT32 sourceModeInfoIdx : 16;
} DUMMYSTRUCTNAME;
} DUMMYUNIONNAME;
UINT32 statusFlags;
} DISPLAYCONFIG_PATH_SOURCE_INFO;
typedef struct DISPLAYCONFIG_PATH_TARGET_INFO
{
LUID adapterId;
UINT32 id;
union
{
UINT32 modeInfoIdx;
struct
{
UINT32 desktopModeInfoIdx : 16;
UINT32 targetModeInfoIdx : 16;
} DUMMYSTRUCTNAME;
} DUMMYUNIONNAME;
DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY outputTechnology;
DISPLAYCONFIG_ROTATION rotation;
DISPLAYCONFIG_SCALING scaling;
DISPLAYCONFIG_RATIONAL refreshRate;
DISPLAYCONFIG_SCANLINE_ORDERING scanLineOrdering;
BOOL targetAvailable;
UINT32 statusFlags;
} DISPLAYCONFIG_PATH_TARGET_INFO;
typedef struct DISPLAYCONFIG_PATH_INFO
{
DISPLAYCONFIG_PATH_SOURCE_INFO sourceInfo;
DISPLAYCONFIG_PATH_TARGET_INFO targetInfo;
UINT32 flags;
} DISPLAYCONFIG_PATH_INFO;
typedef enum DISPLAYCONFIG_TOPOLOGY_ID
{
DISPLAYCONFIG_TOPOLOGY_INTERNAL = 1,
DISPLAYCONFIG_TOPOLOGY_CLONE = 2,
DISPLAYCONFIG_TOPOLOGY_EXTEND = 4,
DISPLAYCONFIG_TOPOLOGY_EXTERNAL = 8,
DISPLAYCONFIG_TOPOLOGY_FORCE_UINT32 = 0xFFFFFFFF
} DISPLAYCONFIG_TOPOLOGY_ID;
typedef enum
{
DISPLAYCONFIG_DEVICE_INFO_SET_SOURCE_DPI_SCALE = -4, // Needed for Wine's tests
DISPLAYCONFIG_DEVICE_INFO_GET_SOURCE_DPI_SCALE = -3, // Needed for Wine's tests
DISPLAYCONFIG_DEVICE_INFO_GET_SOURCE_NAME = 1,
DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_NAME,
DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_PREFERRED_MODE,
DISPLAYCONFIG_DEVICE_INFO_GET_ADAPTER_NAME,
DISPLAYCONFIG_DEVICE_INFO_SET_TARGET_PERSISTENCE,
DISPLAYCONFIG_DEVICE_INFO_GET_TARGET_BASE_TYPE,
DISPLAYCONFIG_DEVICE_INFO_GET_SUPPORT_VIRTUAL_RESOLUTION,
DISPLAYCONFIG_DEVICE_INFO_SET_SUPPORT_VIRTUAL_RESOLUTION,
DISPLAYCONFIG_DEVICE_INFO_GET_ADVANCED_COLOR_INFO,
DISPLAYCONFIG_DEVICE_INFO_SET_ADVANCED_COLOR_STATE,
DISPLAYCONFIG_DEVICE_INFO_GET_SDR_WHITE_LEVEL,
DISPLAYCONFIG_DEVICE_INFO_GET_MONITOR_SPECIALIZATION,
DISPLAYCONFIG_DEVICE_INFO_SET_MONITOR_SPECIALIZATION,
DISPLAYCONFIG_DEVICE_INFO_SET_RESERVED1,
DISPLAYCONFIG_DEVICE_INFO_GET_ADVANCED_COLOR_INFO_2,
DISPLAYCONFIG_DEVICE_INFO_SET_HDR_STATE,
DISPLAYCONFIG_DEVICE_INFO_SET_WCG_STATE,
DISPLAYCONFIG_DEVICE_INFO_FORCE_UINT32 = 0xFFFFFFFF
} DISPLAYCONFIG_DEVICE_INFO_TYPE;
typedef struct DISPLAYCONFIG_DEVICE_INFO_HEADER
{
DISPLAYCONFIG_DEVICE_INFO_TYPE type;
UINT32 size;
LUID adapterId;
UINT32 id;
} DISPLAYCONFIG_DEVICE_INFO_HEADER;
typedef struct DISPLAYCONFIG_SOURCE_DEVICE_NAME
{
DISPLAYCONFIG_DEVICE_INFO_HEADER header;
WCHAR viewGdiDeviceName[CCHDEVICENAME];
} DISPLAYCONFIG_SOURCE_DEVICE_NAME;
typedef struct DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS
{
union
{
struct
{
UINT32 friendlyNameFromEdid : 1;
UINT32 friendlyNameForced : 1;
UINT32 edidIdsValid : 1;
UINT32 reserved : 29;
} DUMMYSTRUCTNAME;
UINT32 value;
} DUMMYUNIONNAME;
} DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS;
typedef struct DISPLAYCONFIG_TARGET_DEVICE_NAME
{
DISPLAYCONFIG_DEVICE_INFO_HEADER header;
DISPLAYCONFIG_TARGET_DEVICE_NAME_FLAGS flags;
DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY outputTechnology;
UINT16 edidManufactureId;
UINT16 edidProductCodeId;
UINT32 connectorInstance;
WCHAR monitorFriendlyDeviceName[64];
WCHAR monitorDevicePath[128];
} DISPLAYCONFIG_TARGET_DEVICE_NAME;
typedef struct DISPLAYCONFIG_TARGET_PREFERRED_MODE
{
DISPLAYCONFIG_DEVICE_INFO_HEADER header;
UINT32 width;
UINT32 height;
DISPLAYCONFIG_TARGET_MODE targetMode;
} DISPLAYCONFIG_TARGET_PREFERRED_MODE;
typedef struct DISPLAYCONFIG_ADAPTER_NAME
{
DISPLAYCONFIG_DEVICE_INFO_HEADER header;
WCHAR adapterDevicePath[128];
} DISPLAYCONFIG_ADAPTER_NAME;
typedef struct DISPLAYCONFIG_TARGET_BASE_TYPE
{
DISPLAYCONFIG_DEVICE_INFO_HEADER header;
DISPLAYCONFIG_VIDEO_OUTPUT_TECHNOLOGY baseOutputTechnology;
} DISPLAYCONFIG_TARGET_BASE_TYPE;
typedef struct DISPLAYCONFIG_SET_TARGET_PERSISTENCE
{
DISPLAYCONFIG_DEVICE_INFO_HEADER header;
union
{
struct
{
UINT32 bootPersistenceOn : 1;
UINT32 reserved : 31;
} DUMMYSTRUCTNAME;
UINT32 value;
} DUMMYUNIONNAME;
} DISPLAYCONFIG_SET_TARGET_PERSISTENCE;
typedef struct DISPLAYCONFIG_SUPPORT_VIRTUAL_RESOLUTION
{
DISPLAYCONFIG_DEVICE_INFO_HEADER header;
union
{
struct
{
UINT32 disableMonitorVirtualResolution : 1;
UINT32 reserved : 31;
} DUMMYSTRUCTNAME;
UINT32 value;
} DUMMYSTRUCTNAME;
} DISPLAYCONFIG_SUPPORT_VIRTUAL_RESOLUTION;
typedef enum _DISPLAYCONFIG_COLOR_ENCODING
{
DISPLAYCONFIG_COLOR_ENCODING_RGB,
DISPLAYCONFIG_COLOR_ENCODING_YCBCR444,
DISPLAYCONFIG_COLOR_ENCODING_YCBCR422,
DISPLAYCONFIG_COLOR_ENCODING_YCBCR420,
DISPLAYCONFIG_COLOR_ENCODING_INTENSITY,
DISPLAYCONFIG_COLOR_ENCODING_FORCE_UINT32 = 0xFFFFFFFF
} DISPLAYCONFIG_COLOR_ENCODING;
typedef struct _DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO
{
DISPLAYCONFIG_DEVICE_INFO_HEADER header;
union
{
struct
{
UINT32 advancedColorSupported : 1;
UINT32 advancedColorEnabled : 1;
UINT32 wideColorEnforced : 1;
UINT32 advancedColorForceDisabled : 1;
UINT32 reserved :28;
} DUMMYSTRUCTNAME;
UINT32 value;
} DUMMYUNIONNAME;
DISPLAYCONFIG_COLOR_ENCODING colorEncoding;
UINT32 bitsPerColorChannel;
} DISPLAYCONFIG_GET_ADVANCED_COLOR_INFO;
typedef struct _DISPLAYCONFIG_SET_ADVANCED_COLOR_STATE
{
DISPLAYCONFIG_DEVICE_INFO_HEADER header;
union
{
struct
{
UINT32 enableAdvancedColor :1;
UINT32 reserved :31;
} DUMMYSTRUCTNAME;
UINT32 value;
}DUMMYUNIONNAME;
} DISPLAYCONFIG_SET_ADVANCED_COLOR_STATE;
typedef struct _DISPLAYCONFIG_SDR_WHITE_LEVEL
{
DISPLAYCONFIG_DEVICE_INFO_HEADER header;
ULONG SDRWhiteLevel;
} DISPLAYCONFIG_SDR_WHITE_LEVEL;
typedef struct _DISPLAYCONFIG_GET_MONITOR_SPECIALIZATION
{
DISPLAYCONFIG_DEVICE_INFO_HEADER header;
union
{
struct
{
UINT32 isSpecializationEnabled : 1;
UINT32 isSpecializationAvailableForMonitor : 1;
UINT32 isSpecializationAvailableForSystem : 1;
UINT32 reserved : 29;
} DUMMYSTRUCTNAME;
UINT32 value;
} DUMMYUNIONNAME;
} DISPLAYCONFIG_GET_MONITOR_SPECIALIZATION;
typedef struct _DISPLAYCONFIG_SET_MONITOR_SPECIALIZATION
{
DISPLAYCONFIG_DEVICE_INFO_HEADER header;
union
{
struct
{
UINT32 isSpecializationEnabled : 1;
UINT32 reserved : 31;
} DUMMYSTRUCTNAME;
UINT32 value;
} DUMMYUNIONNAME;
GUID specializationType;
GUID specializationSubType;
WCHAR specializationApplicationName[128];
} DISPLAYCONFIG_SET_MONITOR_SPECIALIZATION;
#endif // (WINVER >= 0x601)
#ifndef RC_INVOKED #ifndef RC_INVOKED
typedef struct _ABC { typedef struct _ABC {

View file

@ -7,8 +7,8 @@ extern "C" {
#ifdef _MSC_VER #ifdef _MSC_VER
#pragma warning(push) #pragma warning(push)
#pragma warning(disable:4201) #pragma warning(disable:4201) // nameless struct or union
#pragma warning(disable:4820) #pragma warning(disable:4820) // padding after member
#endif #endif
#if !defined(_USER32_) #if !defined(_USER32_)
@ -1586,6 +1586,15 @@ extern "C" {
#define FE_FONTSMOOTHINGORIENTATIONRGB 0x0001 #define FE_FONTSMOOTHINGORIENTATIONRGB 0x0001
#endif #endif
#endif #endif
#if (NTDDI_VERSION >= NTDDI_WIN10_RS4)
#define SPI_GETHANDEDNESS 0x2024
#define SPI_SETHANDEDNESS 0x2025
typedef enum tagHANDEDNESS
{
HANDEDNESS_LEFT,
HANDEDNESS_RIGHT
} HANDEDNESS, *PHANDEDNESS;
#endif // (NTDDI_VERSION >= NTDDI_WIN10_RS4)
#define SPIF_UPDATEINIFILE 1 #define SPIF_UPDATEINIFILE 1
#define SPIF_SENDCHANGE 2 #define SPIF_SENDCHANGE 2
@ -1931,6 +1940,7 @@ extern "C" {
#if (_WIN32_WINNT >= 0x0501) #if (_WIN32_WINNT >= 0x0501)
#define WM_THEMECHANGED 794 #define WM_THEMECHANGED 794
#define WM_CLIPBOARDUPDATE 797
#endif #endif
#define BM_CLICK 245 #define BM_CLICK 245
@ -2060,7 +2070,14 @@ extern "C" {
#define LB_GETITEMDATA 409 #define LB_GETITEMDATA 409
#define LB_GETITEMHEIGHT 417 #define LB_GETITEMHEIGHT 417
#define LB_GETITEMRECT 408 #define LB_GETITEMRECT 408
#if (_WIN32_WINNT >= 0x501)
#define LB_GETLISTBOXINFO 434 #define LB_GETLISTBOXINFO 434
#define LB_MSGMAX 435
#elif (WINVER >= 0x400)
#define LB_MSGMAX 432
#else
#define LB_MSGMAX 424
#endif /* (_WIN32_WINNT >= 0x501) */
#define LB_GETLOCALE 422 #define LB_GETLOCALE 422
#define LB_GETSEL 391 #define LB_GETSEL 391
#define LB_GETSELCOUNT 400 #define LB_GETSELCOUNT 400
@ -2625,6 +2642,12 @@ extern "C" {
#define EC_LEFTMARGIN 1 #define EC_LEFTMARGIN 1
#define EC_RIGHTMARGIN 2 #define EC_RIGHTMARGIN 2
#define EC_USEFONTINFO 0xffff #define EC_USEFONTINFO 0xffff
#if (WINVER >= 0x500)
#define EMSIS_COMPOSITIONSTRING 1
#define EIMES_GETCOMPSTRATONCE 1
#define EIMES_CANCELCOMPSTRINFOCUS 2
#define EIMES_COMPLETECOMPSTRKILLFOCUS 4
#endif /* (WINVER >= 0x500) */
#define DC_HASDEFID 0x534B #define DC_HASDEFID 0x534B
#define DLGC_WANTARROWS 1 #define DLGC_WANTARROWS 1
#define DLGC_WANTTAB 2 #define DLGC_WANTTAB 2
@ -2675,6 +2698,9 @@ extern "C" {
#define FLASHW_TIMERNOFG 12 #define FLASHW_TIMERNOFG 12
#endif /* (WINVER >= 0x0500) */ #endif /* (WINVER >= 0x0500) */
#define CURSOR_SHOWING 0x00000001 #define CURSOR_SHOWING 0x00000001
#if (WINVER >= 0x602)
#define CURSOR_SUPPRESSED 0x00000002
#endif /* (WINVER >= 0x602) */
#define WS_ACTIVECAPTION 0x00000001 #define WS_ACTIVECAPTION 0x00000001
#if (_WIN32_WINNT >= 0x0400) #if (_WIN32_WINNT >= 0x0400)
#define INPUT_MOUSE 0 #define INPUT_MOUSE 0

File diff suppressed because it is too large Load diff

View file

@ -964,6 +964,7 @@ typedef struct DECLSPEC_ALIGN(16) _XSAVE_FORMAT {
ULONG Cr0NpxState; ULONG Cr0NpxState;
#endif #endif
} XSAVE_FORMAT, *PXSAVE_FORMAT; } XSAVE_FORMAT, *PXSAVE_FORMAT;
typedef XSAVE_FORMAT XMM_SAVE_AREA32, *PXMM_SAVE_AREA32;
typedef struct DECLSPEC_ALIGN(8) _XSAVE_AREA_HEADER { typedef struct DECLSPEC_ALIGN(8) _XSAVE_AREA_HEADER {
ULONG64 Mask; ULONG64 Mask;

View file

@ -83,6 +83,8 @@
#else #else
# define __WINE_ALLOC_SIZE(...) # define __WINE_ALLOC_SIZE(...)
#endif #endif
#define __WINE_DEALLOC(...)
#define __WINE_MALLOC
/*#endif*/ /*#endif*/
#ifdef __GNUC__ #ifdef __GNUC__
@ -349,7 +351,7 @@
/* also in ddk/winddk.h */ /* also in ddk/winddk.h */
#define DUPLICATE_CLOSE_SOURCE 0x00000001 #define DUPLICATE_CLOSE_SOURCE 0x00000001
#define DUPLICATE_SAME_ACCESS 0x00000002 #define DUPLICATE_SAME_ACCESS 0x00000002
/* end winddk.k */ /* end winddk.k */
#define MAILSLOT_NO_MESSAGE ((DWORD)-1) #define MAILSLOT_NO_MESSAGE ((DWORD)-1)
@ -484,6 +486,11 @@
#define PROCESSOR_ARCHITECTURE_ALPHA64 7 #define PROCESSOR_ARCHITECTURE_ALPHA64 7
#define PROCESSOR_ARCHITECTURE_MSIL 8 #define PROCESSOR_ARCHITECTURE_MSIL 8
#define PROCESSOR_ARCHITECTURE_AMD64 9 #define PROCESSOR_ARCHITECTURE_AMD64 9
#define PROCESSOR_ARCHITECTURE_IA32_ON_WIN64 10
#define PROCESSOR_ARCHITECTURE_NEUTRAL 11
#define PROCESSOR_ARCHITECTURE_ARM64 12
#define PROCESSOR_ARCHITECTURE_ARM32_ON_WIN64 13
#define PROCESSOR_ARCHITECTURE_IA32_ON_ARM64 14
#define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF #define PROCESSOR_ARCHITECTURE_UNKNOWN 0xFFFF
/* also in ddk/ntifs.h */ /* also in ddk/ntifs.h */
@ -565,6 +572,14 @@
#define MEM_PHYSICAL 0x400000 #define MEM_PHYSICAL 0x400000
#define MEM_4MB_PAGES 0x80000000 #define MEM_4MB_PAGES 0x80000000
#define MEM_IMAGE SEC_IMAGE #define MEM_IMAGE SEC_IMAGE
#define MEM_EXTENDED_PARAMETER_GRAPHICS 0x00000001
#define MEM_EXTENDED_PARAMETER_NONPAGED 0x00000002
#define MEM_EXTENDED_PARAMETER_ZERO_PAGES_OPTIONAL 0x00000004
#define MEM_EXTENDED_PARAMETER_NONPAGED_LARGE 0x00000008
#define MEM_EXTENDED_PARAMETER_NONPAGED_HUGE 0x00000010
#define MEM_EXTENDED_PARAMETER_SOFT_FAULT_PAGES 0x00000020
#define MEM_EXTENDED_PARAMETER_EC_CODE 0x00000040
#define MEM_EXTENDED_PARAMETER_NUMA_NODE_MANDATORY MINLONG64
#define SEC_NO_CHANGE 0x00400000 #define SEC_NO_CHANGE 0x00400000
#define SEC_FILE 0x00800000 #define SEC_FILE 0x00800000
#define SEC_IMAGE 0x01000000 #define SEC_IMAGE 0x01000000
@ -1074,6 +1089,7 @@
#define WT_TRANSFER_IMPERSONATION 0x00000100 #define WT_TRANSFER_IMPERSONATION 0x00000100
#define WT_SET_MAX_THREADPOOL_THREADS(flags,limit) ((flags)|=(limit)<<16) #define WT_SET_MAX_THREADPOOL_THREADS(flags,limit) ((flags)|=(limit)<<16)
typedef VOID (NTAPI *WORKERCALLBACKFUNC)(PVOID); typedef VOID (NTAPI *WORKERCALLBACKFUNC)(PVOID);
typedef VOID (NTAPI *PFLS_CALLBACK_FUNCTION)(PVOID);
#if (_WIN32_WINNT >= 0x0501) #if (_WIN32_WINNT >= 0x0501)
#define ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION 1 #define ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION 1
#define ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION 2 #define ACTIVATION_CONTEXT_SECTION_DLL_REDIRECTION 2
@ -1082,9 +1098,11 @@ typedef VOID (NTAPI *WORKERCALLBACKFUNC)(PVOID);
#define ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION 5 #define ACTIVATION_CONTEXT_SECTION_COM_INTERFACE_REDIRECTION 5
#define ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION 6 #define ACTIVATION_CONTEXT_SECTION_COM_TYPE_LIBRARY_REDIRECTION 6
#define ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION 7 #define ACTIVATION_CONTEXT_SECTION_COM_PROGID_REDIRECTION 7
#define ACTIVATION_CONTEXT_SECTION_GLOBAL_OBJECT_RENAME_TABLE 8
#define ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES 9 #define ACTIVATION_CONTEXT_SECTION_CLR_SURROGATES 9
#define ACTIVATION_CONTEXT_SECTION_APPLICATION_SETTINGS 10 #define ACTIVATION_CONTEXT_SECTION_APPLICATION_SETTINGS 10
#define ACTIVATION_CONTEXT_SECTION_COMPATIBILITY_INFO 11 #define ACTIVATION_CONTEXT_SECTION_COMPATIBILITY_INFO 11
#define ACTIVATION_CONTEXT_SECTION_WINRT_ACTIVATABLE_CLASSES 12
#endif /* (_WIN32_WINNT >= 0x0501) */ #endif /* (_WIN32_WINNT >= 0x0501) */
#define BTYPE(x) ((x)&N_BTMASK) #define BTYPE(x) ((x)&N_BTMASK)
#define ISPTR(x) (((x)&N_TMASK)==(IMAGE_SYM_DTYPE_POINTER<<N_BTSHFT)) #define ISPTR(x) (((x)&N_TMASK)==(IMAGE_SYM_DTYPE_POINTER<<N_BTSHFT))
@ -1184,6 +1202,82 @@ typedef struct _LDT_ENTRY {
#endif /* _LDT_ENTRY_DEFINED */ #endif /* _LDT_ENTRY_DEFINED */
#define ARM64_MAX_BREAKPOINTS 8
#define ARM64_MAX_WATCHPOINTS 2
typedef enum MEM_EXTENDED_PARAMETER_TYPE
{
MemExtendedParameterInvalidType,
MemExtendedParameterAddressRequirements,
MemExtendedParameterNumaNode,
MemExtendedParameterPartitionHandle,
MemExtendedParameterUserPhysicalHandle,
MemExtendedParameterAttributeFlags,
MemExtendedParameterImageMachine,
MemExtendedParameterMax
} MEM_EXTENDED_PARAMETER_TYPE, *PMEM_EXTENDED_PARAMETER_TYPE;
#define MEM_EXTENDED_PARAMETER_TYPE_BITS 8
typedef struct DECLSPEC_ALIGN(8) MEM_EXTENDED_PARAMETER {
struct
{
DWORD64 Type : MEM_EXTENDED_PARAMETER_TYPE_BITS;
DWORD64 Reserved : 64 - MEM_EXTENDED_PARAMETER_TYPE_BITS;
} DUMMYSTRUCTNAME;
union
{
DWORD64 ULong64;
PVOID Pointer;
SIZE_T Size;
HANDLE Handle;
DWORD ULong;
} DUMMYUNIONNAME;
} MEM_EXTENDED_PARAMETER, *PMEM_EXTENDED_PARAMETER;
typedef struct _SCOPE_TABLE_ARM {
DWORD Count;
struct
{
DWORD BeginAddress;
DWORD EndAddress;
DWORD HandlerAddress;
DWORD JumpTarget;
} ScopeRecord[1];
} SCOPE_TABLE_ARM, *PSCOPE_TABLE_ARM;
typedef SCOPE_TABLE_ARM SCOPE_TABLE_ARM64, *PSCOPE_TABLE_ARM64;
typedef union _ARM64_NT_NEON128
{
struct
{
ULONGLONG Low;
LONGLONG High;
} DUMMYSTRUCTNAME;
double D[2];
float S[4];
WORD H[8];
BYTE B[16];
} ARM64_NT_NEON128, *PARM64_NT_NEON128;
typedef struct _IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY {
DWORD BeginAddress;
union {
DWORD UnwindData;
struct {
DWORD Flag : 2;
DWORD FunctionLength : 11;
DWORD RegF : 3;
DWORD RegI : 4;
DWORD H : 1;
DWORD CR : 2;
DWORD FrameSize : 9;
} DUMMYSTRUCTNAME;
} DUMMYUNIONNAME;
} IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY, * PIMAGE_ARM64_RUNTIME_FUNCTION_ENTRY;
/* FIXME: add more machines */ /* FIXME: add more machines */
#if defined(_X86_) #if defined(_X86_)
#define SIZE_OF_80387_REGISTERS 80 #define SIZE_OF_80387_REGISTERS 80
@ -1270,24 +1364,6 @@ typedef struct _CONTEXT {
#define EXCEPTION_WRITE_FAULT 1 #define EXCEPTION_WRITE_FAULT 1
#define EXCEPTION_EXECUTE_FAULT 8 #define EXCEPTION_EXECUTE_FAULT 8
typedef struct _XMM_SAVE_AREA32 {
WORD ControlWord;
WORD StatusWord;
BYTE TagWord;
BYTE Reserved1;
WORD ErrorOpcode;
DWORD ErrorOffset;
WORD ErrorSelector;
WORD Reserved2;
DWORD DataOffset;
WORD DataSelector;
WORD Reserved3;
DWORD MxCsr;
DWORD MxCsr_Mask;
M128A FloatRegisters[8];
M128A XmmRegisters[16];
BYTE Reserved4[96];
} XMM_SAVE_AREA32, *PXMM_SAVE_AREA32;
typedef struct DECLSPEC_ALIGN(16) _CONTEXT { typedef struct DECLSPEC_ALIGN(16) _CONTEXT {
DWORD64 P1Home; DWORD64 P1Home;
@ -2124,17 +2200,6 @@ typedef struct _IMAGE_ARM_RUNTIME_FUNCTION_ENTRY
} IMAGE_ARM_RUNTIME_FUNCTION_ENTRY, *PIMAGE_ARM_RUNTIME_FUNCTION_ENTRY; } IMAGE_ARM_RUNTIME_FUNCTION_ENTRY, *PIMAGE_ARM_RUNTIME_FUNCTION_ENTRY;
typedef IMAGE_ARM_RUNTIME_FUNCTION_ENTRY RUNTIME_FUNCTION, *PRUNTIME_FUNCTION; typedef IMAGE_ARM_RUNTIME_FUNCTION_ENTRY RUNTIME_FUNCTION, *PRUNTIME_FUNCTION;
typedef struct _SCOPE_TABLE_ARM
{
DWORD Count;
struct
{
DWORD BeginAddress;
DWORD EndAddress;
DWORD HandlerAddress;
DWORD JumpTarget;
} ScopeRecord[1];
} SCOPE_TABLE_ARM, *PSCOPE_TABLE_ARM;
typedef SCOPE_TABLE_ARM SCOPE_TABLE, *PSCOPE_TABLE; typedef SCOPE_TABLE_ARM SCOPE_TABLE, *PSCOPE_TABLE;
typedef struct _DISPATCHER_CONTEXT typedef struct _DISPATCHER_CONTEXT
@ -2256,33 +2321,7 @@ typedef struct _CONTEXT {
} _CONTEXT, *P_CONTEXT; } _CONTEXT, *P_CONTEXT;
typedef _CONTEXT CONTEXT, *PCONTEXT; typedef _CONTEXT CONTEXT, *PCONTEXT;
typedef struct _IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY {
DWORD BeginAddress;
union {
DWORD UnwindData;
struct {
DWORD Flag : 2;
DWORD FunctionLength : 11;
DWORD RegF : 3;
DWORD RegI : 4;
DWORD H : 1;
DWORD CR : 2;
DWORD FrameSize : 9;
} DUMMYSTRUCTNAME;
} DUMMYUNIONNAME;
} IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY, * PIMAGE_ARM64_RUNTIME_FUNCTION_ENTRY;
typedef struct _IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY RUNTIME_FUNCTION, *PRUNTIME_FUNCTION; typedef struct _IMAGE_ARM64_RUNTIME_FUNCTION_ENTRY RUNTIME_FUNCTION, *PRUNTIME_FUNCTION;
typedef struct _SCOPE_TABLE_ARM64 {
DWORD Count;
struct
{
DWORD BeginAddress;
DWORD EndAddress;
DWORD HandlerAddress;
DWORD JumpTarget;
} ScopeRecord[1];
} SCOPE_TABLE_ARM64, *PSCOPE_TABLE_ARM64;
typedef SCOPE_TABLE_ARM64 SCOPE_TABLE, *PSCOPE_TABLE; typedef SCOPE_TABLE_ARM64 SCOPE_TABLE, *PSCOPE_TABLE;
typedef struct _DISPATCHER_CONTEXT { typedef struct _DISPATCHER_CONTEXT {
@ -2304,6 +2343,114 @@ typedef struct _DISPATCHER_CONTEXT {
#endif #endif
typedef CONTEXT *PCONTEXT; typedef CONTEXT *PCONTEXT;
typedef struct DECLSPEC_ALIGN(16) _ARM64EC_NT_CONTEXT
{
union
{
struct
{
DWORD64 AMD64_P1Home; /* 000 */
DWORD64 AMD64_P2Home; /* 008 */
DWORD64 AMD64_P3Home; /* 010 */
DWORD64 AMD64_P4Home; /* 018 */
DWORD64 AMD64_P5Home; /* 020 */
DWORD64 AMD64_P6Home; /* 028 */
DWORD ContextFlags; /* 030 */
DWORD AMD64_MxCsr_copy; /* 034 */
WORD AMD64_SegCs; /* 038 */
WORD AMD64_SegDs; /* 03a */
WORD AMD64_SegEs; /* 03c */
WORD AMD64_SegFs; /* 03e */
WORD AMD64_SegGs; /* 040 */
WORD AMD64_SegSs; /* 042 */
DWORD AMD64_EFlags; /* 044 */
DWORD64 AMD64_Dr0; /* 048 */
DWORD64 AMD64_Dr1; /* 050 */
DWORD64 AMD64_Dr2; /* 058 */
DWORD64 AMD64_Dr3; /* 060 */
DWORD64 AMD64_Dr6; /* 068 */
DWORD64 AMD64_Dr7; /* 070 */
DWORD64 X8; /* 078 (Rax) */
DWORD64 X0; /* 080 (Rcx) */
DWORD64 X1; /* 088 (Rdx) */
DWORD64 X27; /* 090 (Rbx) */
DWORD64 Sp; /* 098 (Rsp) */
DWORD64 Fp; /* 0a0 (Rbp) */
DWORD64 X25; /* 0a8 (Rsi) */
DWORD64 X26; /* 0b0 (Rdi) */
DWORD64 X2; /* 0b8 (R8) */
DWORD64 X3; /* 0c0 (R9) */
DWORD64 X4; /* 0c8 (R10) */
DWORD64 X5; /* 0d0 (R11) */
DWORD64 X19; /* 0d8 (R12) */
DWORD64 X20; /* 0e0 (R13) */
DWORD64 X21; /* 0e8 (R14) */
DWORD64 X22; /* 0f0 (R15) */
DWORD64 Pc; /* 0f8 (Rip) */
struct
{
WORD AMD64_ControlWord; /* 100 */
WORD AMD64_StatusWord; /* 102 */
BYTE AMD64_TagWord; /* 104 */
BYTE AMD64_Reserved1; /* 105 */
WORD AMD64_ErrorOpcode; /* 106 */
DWORD AMD64_ErrorOffset; /* 108 */
WORD AMD64_ErrorSelector; /* 10c */
WORD AMD64_Reserved2; /* 10e */
DWORD AMD64_DataOffset; /* 110 */
WORD AMD64_DataSelector; /* 114 */
WORD AMD64_Reserved3; /* 116 */
DWORD AMD64_MxCsr; /* 118 */
DWORD AMD64_MxCsr_Mask; /* 11c */
DWORD64 Lr; /* 120 (FloatRegisters[0]) */
WORD X16_0; /* 128 */
WORD AMD64_St0_Reserved1; /* 12a */
DWORD AMD64_St0_Reserved2; /* 12c */
DWORD64 X6; /* 130 (FloatRegisters[1]) */
WORD X16_1; /* 138 */
WORD AMD64_St1_Reserved1; /* 13a */
DWORD AMD64_St1_Reserved2; /* 13c */
DWORD64 X7; /* 140 (FloatRegisters[2]) */
WORD X16_2; /* 148 */
WORD AMD64_St2_Reserved1; /* 14a */
DWORD AMD64_St2_Reserved2; /* 14c */
DWORD64 X9; /* 150 (FloatRegisters[3]) */
WORD X16_3; /* 158 */
WORD AMD64_St3_Reserved1; /* 15a */
DWORD AMD64_St3_Reserved2; /* 15c */
DWORD64 X10; /* 160 (FloatRegisters[4]) */
WORD X17_0; /* 168 */
WORD AMD64_St4_Reserved1; /* 16a */
DWORD AMD64_St4_Reserved2; /* 16c */
DWORD64 X11; /* 170 (FloatRegisters[5]) */
WORD X17_1; /* 178 */
WORD AMD64_St5_Reserved1; /* 17a */
DWORD AMD64_St5_Reserved2; /* 17c */
DWORD64 X12; /* 180 (FloatRegisters[6]) */
WORD X17_2; /* 188 */
WORD AMD64_St6_Reserved1; /* 18a */
DWORD AMD64_St6_Reserved2; /* 18c */
DWORD64 X15; /* 190 (FloatRegisters[7]) */
WORD X17_3; /* 198 */
WORD AMD64_St7_Reserved1; /* 19a */
DWORD AMD64_St7_Reserved2; /* 19c */
ARM64_NT_NEON128 V[16]; /* 1a0 (XmmRegisters) */
BYTE AMD64_XSAVE_FORMAT_Reserved4[96]; /* 2a0 */
} DUMMYSTRUCTNAME;
ARM64_NT_NEON128 AMD64_VectorRegister[26]; /* 300 */
DWORD64 AMD64_VectorControl; /* 4a0 */
DWORD64 AMD64_DebugControl; /* 4a8 */
DWORD64 AMD64_LastBranchToRip; /* 4b0 */
DWORD64 AMD64_LastBranchFromRip; /* 4b8 */
DWORD64 AMD64_LastExceptionToRip; /* 4c0 */
DWORD64 AMD64_LastExceptionFromRip; /* 4c8 */
} DUMMYSTRUCTNAME;
#ifdef _ARM64EC_
CONTEXT AMD64_Context;
#endif
} DUMMYUNIONNAME;
} ARM64EC_NT_CONTEXT, *PARM64EC_NT_CONTEXT;
/* The WoW64 context */ /* The WoW64 context */
#define WOW64_CONTEXT_i386 0x00010000 #define WOW64_CONTEXT_i386 0x00010000
#define WOW64_CONTEXT_i486 0x00010000 #define WOW64_CONTEXT_i486 0x00010000
@ -2374,13 +2521,14 @@ typedef struct _WOW64_CONTEXT
#define EXCEPTION_MAXIMUM_PARAMETERS 15 #define EXCEPTION_MAXIMUM_PARAMETERS 15
#define EXCEPTION_NONCONTINUABLE 0x01 #define EXCEPTION_NONCONTINUABLE 0x01
#define EXCEPTION_UNWINDING 0x02 #define EXCEPTION_UNWINDING 0x02
#define EXCEPTION_EXIT_UNWIND 0x04 #define EXCEPTION_EXIT_UNWIND 0x04
#define EXCEPTION_STACK_INVALID 0x08 #define EXCEPTION_STACK_INVALID 0x08
#define EXCEPTION_NESTED_CALL 0x10 #define EXCEPTION_NESTED_CALL 0x10
#define EXCEPTION_TARGET_UNWIND 0x20 #define EXCEPTION_TARGET_UNWIND 0x20
#define EXCEPTION_COLLIDED_UNWIND 0x40 #define EXCEPTION_COLLIDED_UNWIND 0x40
#define EXCEPTION_SOFTWARE_ORIGINATE 0x80
#define EXCEPTION_UNWIND (EXCEPTION_UNWINDING | EXCEPTION_EXIT_UNWIND | \ #define EXCEPTION_UNWIND (EXCEPTION_UNWINDING | EXCEPTION_EXIT_UNWIND | \
EXCEPTION_TARGET_UNWIND | EXCEPTION_COLLIDED_UNWIND) EXCEPTION_TARGET_UNWIND | EXCEPTION_COLLIDED_UNWIND)
@ -4209,12 +4357,17 @@ typedef struct _ACTIVATION_CONTEXT_RUN_LEVEL_INFORMATION {
typedef enum { typedef enum {
ACTCTX_COMPATIBILITY_ELEMENT_TYPE_UNKNOWN = 0, ACTCTX_COMPATIBILITY_ELEMENT_TYPE_UNKNOWN = 0,
ACTCTX_COMPATIBILITY_ELEMENT_TYPE_OS ACTCTX_COMPATIBILITY_ELEMENT_TYPE_OS,
ACTCTX_COMPATIBILITY_ELEMENT_TYPE_MITIGATION,
ACTCTX_COMPATIBILITY_ELEMENT_TYPE_MAXVERSIONTESTED
} ACTCTX_COMPATIBILITY_ELEMENT_TYPE; } ACTCTX_COMPATIBILITY_ELEMENT_TYPE;
typedef struct _COMPATIBILITY_CONTEXT_ELEMENT { typedef struct _COMPATIBILITY_CONTEXT_ELEMENT {
GUID Id; GUID Id;
ACTCTX_COMPATIBILITY_ELEMENT_TYPE Type; ACTCTX_COMPATIBILITY_ELEMENT_TYPE Type;
#if (NTDDI_VERSION >= NTDDI_WIN10_19H1)
ULONGLONG MaxVersionTested;
#endif
} COMPATIBILITY_CONTEXT_ELEMENT, *PCOMPATIBILITY_CONTEXT_ELEMENT; } COMPATIBILITY_CONTEXT_ELEMENT, *PCOMPATIBILITY_CONTEXT_ELEMENT;
typedef struct _ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION { typedef struct _ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION {
@ -4485,6 +4638,11 @@ DbgRaiseAssertionFailure(VOID)
#error Unknown architecture #error Unknown architecture
#endif #endif
typedef enum _CPU_SET_INFORMATION_TYPE
{
CpuSetInformation,
} CPU_SET_INFORMATION_TYPE, *PCPU_SET_INFORMATION_TYPE;
typedef struct _TP_POOL TP_POOL, *PTP_POOL; typedef struct _TP_POOL TP_POOL, *PTP_POOL;
typedef struct _TP_WORK TP_WORK, *PTP_WORK; typedef struct _TP_WORK TP_WORK, *PTP_WORK;
typedef struct _TP_CALLBACK_INSTANCE TP_CALLBACK_INSTANCE, *PTP_CALLBACK_INSTANCE; typedef struct _TP_CALLBACK_INSTANCE TP_CALLBACK_INSTANCE, *PTP_CALLBACK_INSTANCE;