diff --git a/dll/win32/dbghelp/dbghelp.c b/dll/win32/dbghelp/dbghelp.c index 62c249c411b..c4657ee9504 100644 --- a/dll/win32/dbghelp/dbghelp.c +++ b/dll/win32/dbghelp/dbghelp.c @@ -371,14 +371,14 @@ static BOOL check_live_target(struct process* pcs) PEB32 peb32; 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; - base = peb32.Reserved[0]; + base = peb32.Reserved; if (read_process_memory(pcs, peb32.ProcessParameters + 0x48, &env32, sizeof(env32))) env = env32; } else { PEB peb; 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); } diff --git a/dll/win32/dbghelp/dbghelp_private.h b/dll/win32/dbghelp/dbghelp_private.h index 3e307fa07d5..13b17d7e7da 100644 --- a/dll/win32/dbghelp/dbghelp_private.h +++ b/dll/win32/dbghelp/dbghelp_private.h @@ -605,27 +605,6 @@ struct cpu 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 */ extern struct process* process_find_by_handle(HANDLE hProcess) DECLSPEC_HIDDEN; extern BOOL validate_addr64(DWORD64 addr) DECLSPEC_HIDDEN; diff --git a/dll/win32/wbemprox/builtin.c b/dll/win32/wbemprox/builtin.c index d2ad7376191..4b92f2809d6 100644 --- a/dll/win32/wbemprox/builtin.c +++ b/dll/win32/wbemprox/builtin.c @@ -3874,7 +3874,7 @@ static WCHAR *get_lastbootuptime(void) if (!(ret = heap_alloc( 26 * sizeof(WCHAR) ))) return 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 ); return ret; } diff --git a/modules/rostests/winetests/kernel32/loader.c b/modules/rostests/winetests/kernel32/loader.c index cc79e822ddd..a61558178da 100644 --- a/modules/rostests/winetests/kernel32/loader.c +++ b/modules/rostests/winetests/kernel32/loader.c @@ -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, "%u: SubSystemType wrong %08x / %08x\n", id, 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, - image.SubsystemVersionLow, nt_header->OptionalHeader.MinorSubsystemVersion ); - ok( image.SubsystemVersionHigh == nt_header->OptionalHeader.MajorSubsystemVersion, + image.MinorSubsystemVersion, nt_header->OptionalHeader.MinorSubsystemVersion ); + ok( image.MajorSubsystemVersion == nt_header->OptionalHeader.MajorSubsystemVersion, "%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, "%u: ImageCharacteristics wrong %04x / %04x\n", id, image.ImageCharacteristics, nt_header->FileHeader.Characteristics ); @@ -3652,7 +3652,7 @@ static void test_InMemoryOrderModuleList(void) PEB_LDR_DATA *ldr = NtCurrentTeb()->Peb->LdrData; LIST_ENTRY *entry1, *mark1 = &ldr->InLoadOrderModuleList; 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); @@ -3660,8 +3660,8 @@ static void test_InMemoryOrderModuleList(void) entry1 != mark1 && entry2 != mark2; entry1 = entry1->Flink, entry2 = entry2->Flink) { - module1 = CONTAINING_RECORD(entry1, LDR_MODULE, InLoadOrderModuleList); - module2 = CONTAINING_RECORD(entry2, LDR_MODULE, InMemoryOrderModuleList); + module1 = CONTAINING_RECORD(entry1, LDR_DATA_TABLE_ENTRY, InLoadOrderLinks); + module2 = CONTAINING_RECORD(entry2, LDR_DATA_TABLE_ENTRY, InMemoryOrderLinks); 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); @@ -3703,13 +3703,13 @@ static void test_HashLinks(void) static WCHAR kernel32W[] = {'k','e','r','n','e','l','3','2','.','d','l','l',0}; LIST_ENTRY *hash_map, *entry, *mark; - LDR_MODULE *module; + LDR_DATA_TABLE_ENTRY *module; BOOL found; entry = &NtCurrentTeb()->Peb->LdrData->InLoadOrderModuleList; entry = entry->Flink; - module = CONTAINING_RECORD(entry, LDR_MODULE, InLoadOrderModuleList); + module = CONTAINING_RECORD(entry, LDR_DATA_TABLE_ENTRY, InLoadOrderLinks); entry = module->HashLinks.Blink; hash_map = entry - hash_basename(module->BaseDllName.Buffer); @@ -3718,7 +3718,7 @@ static void test_HashLinks(void) found = FALSE; 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)) { found = TRUE; @@ -3731,7 +3731,7 @@ static void test_HashLinks(void) found = FALSE; 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)) { found = TRUE; diff --git a/modules/rostests/winetests/kernel32/virtual.c b/modules/rostests/winetests/kernel32/virtual.c index 81e09f4e1a9..9eab4da7bb2 100644 --- a/modules/rostests/winetests/kernel32/virtual.c +++ b/modules/rostests/winetests/kernel32/virtual.c @@ -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.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.SubsystemVersionLow == nt->OptionalHeader.MinorSubsystemVersion, "expected %#x, got %#x\n", nt->OptionalHeader.MinorSubsystemVersion, info.image.SubsystemVersionLow); - ok(info.image.SubsystemVersionHigh == nt->OptionalHeader.MajorSubsystemVersion, "expected %#x, got %#x\n", nt->OptionalHeader.MajorSubsystemVersion, info.image.SubsystemVersionHigh); + ok(info.image.MinorSubsystemVersion == nt->OptionalHeader.MinorSubsystemVersion, "expected %#x, got %#x\n", nt->OptionalHeader.MinorSubsystemVersion, info.image.MinorSubsystemVersion); + 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.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); diff --git a/modules/rostests/winetests/ntdll/file.c b/modules/rostests/winetests/ntdll/file.c index fec815fa498..eb80ae52bd7 100644 --- a/modules/rostests/winetests/ntdll/file.c +++ b/modules/rostests/winetests/ntdll/file.c @@ -1377,8 +1377,8 @@ static void test_file_rename_information(void) pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); DeleteFileW( newpath ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); - fri->Replace = FALSE; - fri->RootDir = NULL; + fri->ReplaceIfExists = FALSE; + fri->RootDirectory = NULL; fri->FileNameLength = name_str.Length; memcpy( fri->FileName, name_str.Buffer, name_str.Length ); pRtlFreeUnicodeString( &name_str ); @@ -1415,8 +1415,8 @@ static void test_file_rename_information(void) ok( res != 0, "failed to create temp file\n" ); pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); - fri->Replace = FALSE; - fri->RootDir = NULL; + fri->ReplaceIfExists = FALSE; + fri->RootDirectory = NULL; fri->FileNameLength = name_str.Length; memcpy( fri->FileName, name_str.Buffer, name_str.Length ); pRtlFreeUnicodeString( &name_str ); @@ -1445,8 +1445,8 @@ static void test_file_rename_information(void) ok( res != 0, "failed to create temp file\n" ); pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); - fri->Replace = TRUE; - fri->RootDir = NULL; + fri->ReplaceIfExists = TRUE; + fri->RootDirectory = NULL; fri->FileNameLength = name_str.Length; memcpy( fri->FileName, name_str.Buffer, name_str.Length ); pRtlFreeUnicodeString( &name_str ); @@ -1478,8 +1478,8 @@ static void test_file_rename_information(void) pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); - fri->Replace = FALSE; - fri->RootDir = NULL; + fri->ReplaceIfExists = FALSE; + fri->RootDirectory = NULL; fri->FileNameLength = name_str.Length; memcpy( fri->FileName, name_str.Buffer, name_str.Length ); pRtlFreeUnicodeString( &name_str ); @@ -1512,8 +1512,8 @@ static void test_file_rename_information(void) pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); - fri->Replace = TRUE; - fri->RootDir = NULL; + fri->ReplaceIfExists = TRUE; + fri->RootDirectory = NULL; fri->FileNameLength = name_str.Length; memcpy( fri->FileName, name_str.Buffer, name_str.Length ); pRtlFreeUnicodeString( &name_str ); @@ -1547,8 +1547,8 @@ static void test_file_rename_information(void) pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); DeleteFileW( newpath ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); - fri->Replace = FALSE; - fri->RootDir = NULL; + fri->ReplaceIfExists = FALSE; + fri->RootDirectory = NULL; fri->FileNameLength = name_str.Length; memcpy( fri->FileName, name_str.Buffer, name_str.Length ); pRtlFreeUnicodeString( &name_str ); @@ -1594,8 +1594,8 @@ static void test_file_rename_information(void) pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); DeleteFileW( newpath ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); - fri->Replace = FALSE; - fri->RootDir = NULL; + fri->ReplaceIfExists = FALSE; + fri->RootDirectory = NULL; fri->FileNameLength = name_str.Length; memcpy( fri->FileName, name_str.Buffer, name_str.Length ); pRtlFreeUnicodeString( &name_str ); @@ -1634,8 +1634,8 @@ static void test_file_rename_information(void) ok( res != 0, "failed to create temp file\n" ); pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); - fri->Replace = FALSE; - fri->RootDir = NULL; + fri->ReplaceIfExists = FALSE; + fri->RootDirectory = NULL; fri->FileNameLength = name_str.Length; memcpy( fri->FileName, name_str.Buffer, name_str.Length ); pRtlFreeUnicodeString( &name_str ); @@ -1670,8 +1670,8 @@ static void test_file_rename_information(void) pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); - fri->Replace = FALSE; - fri->RootDir = NULL; + fri->ReplaceIfExists = FALSE; + fri->RootDirectory = NULL; fri->FileNameLength = name_str.Length; memcpy( fri->FileName, name_str.Buffer, name_str.Length ); pRtlFreeUnicodeString( &name_str ); @@ -1704,8 +1704,8 @@ static void test_file_rename_information(void) ok( res != 0, "failed to create temp file\n" ); pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); - fri->Replace = TRUE; - fri->RootDir = NULL; + fri->ReplaceIfExists = TRUE; + fri->RootDirectory = NULL; fri->FileNameLength = name_str.Length; memcpy( fri->FileName, name_str.Buffer, name_str.Length ); pRtlFreeUnicodeString( &name_str ); @@ -1740,8 +1740,8 @@ static void test_file_rename_information(void) pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); - fri->Replace = TRUE; - fri->RootDir = NULL; + fri->ReplaceIfExists = TRUE; + fri->RootDirectory = NULL; fri->FileNameLength = name_str.Length; memcpy( fri->FileName, name_str.Buffer, name_str.Length ); pRtlFreeUnicodeString( &name_str ); @@ -1777,8 +1777,8 @@ static void test_file_rename_information(void) ok( success != 0, "failed to create temp directory\n" ); pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); - fri->Replace = FALSE; - fri->RootDir = NULL; + fri->ReplaceIfExists = FALSE; + fri->RootDirectory = NULL; fri->FileNameLength = name_str.Length; memcpy( fri->FileName, name_str.Buffer, name_str.Length ); pRtlFreeUnicodeString( &name_str ); @@ -1813,8 +1813,8 @@ static void test_file_rename_information(void) ok( success != 0, "failed to create temp directory\n" ); pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); - fri->Replace = TRUE; - fri->RootDir = NULL; + fri->ReplaceIfExists= TRUE; + fri->RootDirectory = NULL; fri->FileNameLength = name_str.Length; memcpy( fri->FileName, name_str.Buffer, name_str.Length ); pRtlFreeUnicodeString( &name_str ); @@ -1852,8 +1852,8 @@ static void test_file_rename_information(void) pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); - fri->Replace = TRUE; - fri->RootDir = NULL; + fri->ReplaceIfExists = TRUE; + fri->RootDirectory = NULL; fri->FileNameLength = name_str.Length; memcpy( fri->FileName, name_str.Buffer, name_str.Length ); pRtlFreeUnicodeString( &name_str ); @@ -1886,8 +1886,8 @@ static void test_file_rename_information(void) ok( success != 0, "failed to create temp directory\n" ); pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); - fri->Replace = FALSE; - fri->RootDir = NULL; + fri->ReplaceIfExists = FALSE; + fri->RootDirectory = NULL; fri->FileNameLength = name_str.Length; memcpy( fri->FileName, name_str.Buffer, name_str.Length ); pRtlFreeUnicodeString( &name_str ); @@ -1919,8 +1919,8 @@ static void test_file_rename_information(void) ok( success != 0, "failed to create temp directory\n" ); pRtlDosPathNameToNtPathName_U( newpath, &name_str, NULL, NULL ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + name_str.Length ); - fri->Replace = TRUE; - fri->RootDir = NULL; + fri->ReplaceIfExists = TRUE; + fri->RootDirectory = NULL; fri->FileNameLength = name_str.Length; memcpy( fri->FileName, name_str.Buffer, name_str.Length ); pRtlFreeUnicodeString( &name_str ); @@ -1954,8 +1954,8 @@ static void test_file_rename_information(void) ok( handle2 != INVALID_HANDLE_VALUE, "CreateFileW failed\n" ); fri = HeapAlloc( GetProcessHeap(), 0, sizeof(FILE_RENAME_INFORMATION) + lstrlenW(filename) * sizeof(WCHAR) ); - fri->Replace = FALSE; - fri->RootDir = handle2; + fri->ReplaceIfExists = FALSE; + fri->RootDirectory = handle2; fri->FileNameLength = lstrlenW(filename) * sizeof(WCHAR); memcpy( fri->FileName, filename, fri->FileNameLength ); diff --git a/modules/rostests/winetests/ntdll/info.c b/modules/rostests/winetests/ntdll/info.c index 55f6c3875c6..e4332fe68d2 100644 --- a/modules/rostests/winetests/ntdll/info.c +++ b/modules/rostests/winetests/ntdll/info.c @@ -156,8 +156,8 @@ static void test_query_cpu(void) ok( sizeof(sci) == ReturnLength, "Inconsistent length %d\n", ReturnLength); /* Check if we have some return values */ - trace("Processor FeatureSet : %08x\n", sci.FeatureSet); - ok( sci.FeatureSet != 0, "Expected some features for this processor, got %08x\n", sci.FeatureSet); + trace("Processor FeatureSet : %08x\n", sci.ProcessorFeatureBits); + ok( sci.ProcessorFeatureBits != 0, "Expected some features for this processor, got %08x\n", sci.ProcessorFeatureBits); } static void test_query_performance(void) @@ -458,9 +458,9 @@ static void test_query_module(void) ULONG ReturnLength; ULONG ModuleCount, i; - ULONG SystemInformationLength = sizeof(SYSTEM_MODULE_INFORMATION); - SYSTEM_MODULE_INFORMATION* smi = HeapAlloc(GetProcessHeap(), 0, SystemInformationLength); - SYSTEM_MODULE* sm; + ULONG SystemInformationLength = sizeof(RTL_PROCESS_MODULES); + RTL_PROCESS_MODULES* smi = HeapAlloc(GetProcessHeap(), 0, SystemInformationLength); + RTL_PROCESS_MODULE_INFORMATION* sm; /* Request the needed length */ 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) */ 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++; } @@ -590,19 +590,19 @@ static void test_query_handle_ex(void) ReturnLength = 0xdeadbeef; status = pNtQuerySystemInformation(SystemExtendedHandleInformation, shi, SystemInformationLength, &ReturnLength); 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( 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++) - found = (shi->Handle[i].UniqueProcessId == GetCurrentProcessId()) && - ((HANDLE)(ULONG_PTR)shi->Handle[i].HandleValue == EventHandle); + for (i = 0, found = FALSE; i < shi->NumberOfHandles && !found; i++) + found = (shi->Handles[i].UniqueProcessId == GetCurrentProcessId()) && + ((HANDLE)(ULONG_PTR)shi->Handles[i].HandleValue == EventHandle); ok( found, "Expected to find event handle %p (pid %x) in handle list\n", EventHandle, GetCurrentProcessId() ); if (!found) { - for (i = 0; i < shi->Count; i++) - trace( "%d: handle %x pid %x\n", i, (DWORD)shi->Handle[i].HandleValue, (DWORD)shi->Handle[i].UniqueProcessId ); + for (i = 0; i < shi->NumberOfHandles; i++) + trace( "%d: handle %x pid %x\n", i, (DWORD)shi->Handles[i].HandleValue, (DWORD)shi->Handles[i].UniqueProcessId ); } CloseHandle(EventHandle); @@ -610,9 +610,9 @@ static void test_query_handle_ex(void) ReturnLength = 0xdeadbeef; status = pNtQuerySystemInformation(SystemExtendedHandleInformation, shi, SystemInformationLength, &ReturnLength); ok( status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08x\n", status ); - for (i = 0, found = FALSE; i < shi->Count && !found; i++) - found = (shi->Handle[i].UniqueProcessId == GetCurrentProcessId()) && - ((HANDLE)(ULONG_PTR)shi->Handle[i].HandleValue == EventHandle); + for (i = 0, found = FALSE; i < shi->NumberOfHandles && !found; i++) + found = (shi->Handles[i].UniqueProcessId == GetCurrentProcessId()) && + ((HANDLE)(ULONG_PTR)shi->Handles[i].HandleValue == EventHandle); ok( !found, "Unexpectedly found event handle in handle list\n" ); status = pNtQuerySystemInformation(SystemExtendedHandleInformation, NULL, SystemInformationLength, &ReturnLength); @@ -635,21 +635,21 @@ static void test_query_cache(void) for (i = sizeof(buffer); i>= expected; i--) { ReturnLength = 0xdeadbeef; - status = pNtQuerySystemInformation(SystemCacheInformation, sci, i, &ReturnLength); + status = pNtQuerySystemInformation(SystemFileCacheInformation, sci, i, &ReturnLength); ok(!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. Up to win7, the function succeeds with a partial result. */ - status = pNtQuerySystemInformation(SystemCacheInformation, sci, i, &ReturnLength); + status = pNtQuerySystemInformation(SystemFileCacheInformation, sci, i, &ReturnLength); if (!status) { expected = offsetof(SYSTEM_CACHE_INFORMATION, MinimumWorkingSet); for (; i>= expected; i--) { ReturnLength = 0xdeadbeef; - status = pNtQuerySystemInformation(SystemCacheInformation, sci, i, &ReturnLength); + status = pNtQuerySystemInformation(SystemFileCacheInformation, sci, i, &ReturnLength); ok(!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 */ ReturnLength = 0xdeadbeef; - status = pNtQuerySystemInformation(SystemCacheInformation, sci, i, &ReturnLength); + status = pNtQuerySystemInformation(SystemFileCacheInformation, sci, i, &ReturnLength); ok( status == STATUS_INFO_LENGTH_MISMATCH && ((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); @@ -665,7 +665,7 @@ static void test_query_cache(void) if (0) { /* this crashes on some vista / win7 machines */ ReturnLength = 0xdeadbeef; - status = pNtQuerySystemInformation(SystemCacheInformation, sci, 0, &ReturnLength); + status = pNtQuerySystemInformation(SystemFileCacheInformation, sci, 0, &ReturnLength); ok( status == STATUS_INFO_LENGTH_MISMATCH && ((ReturnLength == expected) || broken(!ReturnLength) || broken(ReturnLength == 0xfffffff0)), "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; ULONG ReturnLength; VM_COUNTERS pvi; +#ifndef __REACTOS__ ULONG old_size = FIELD_OFFSET(VM_COUNTERS,PrivatePageCount); +#endif HANDLE process; SIZE_T prev_size; 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, "Expected STATUS_ACCESS_VIOLATION or STATUS_INVALID_HANDLE(W2K3), got %08x\n", status); +#ifndef __REACTOS__ status = pNtQueryInformationProcess(NULL, ProcessVmCounters, &pvi, old_size, NULL); 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 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); 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); ok( status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08x\n", status); ok( old_size == ReturnLength, "Inconsistent length %d\n", ReturnLength); +#endif status = pNtQueryInformationProcess( GetCurrentProcess(), ProcessVmCounters, &pvi, 46, &ReturnLength); 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); +#endif /* Check if we have some return values */ dump_vm_counters("VM counters for GetCurrentProcess", &pvi); @@ -1995,7 +2003,7 @@ static void test_queryvirtualmemory(void) module = GetModuleHandleA( "ntdll.dll" ); memset(msn, 0, sizeof(*msn)); 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( readcount > 0, "Expected readcount to be > 0\n"); @@ -2003,7 +2011,7 @@ static void test_queryvirtualmemory(void) module = GetModuleHandleA( "ntdll.dll" ); memset(msn, 0, sizeof(*msn)); 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( readcount > 0, "Expected readcount to be > 0\n"); @@ -2012,7 +2020,7 @@ static void test_queryvirtualmemory(void) memset(msn, 0x55, sizeof(*msn)); memset(buffer_name, 0x77, sizeof(buffer_name)); 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( readcount > 0, "Expected readcount to be > 0\n"); 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"); memset(msn, 0, sizeof(buffer_name)); 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( readcount == 0 || broken(readcount != 0) /* wow64 */, "Expected readcount to be 0\n"); diff --git a/modules/rostests/winetests/ntdll/om.c b/modules/rostests/winetests/ntdll/om.c index 84b783b80a0..3b553a0c750 100644 --- a/modules/rostests/winetests/ntdll/om.c +++ b/modules/rostests/winetests/ntdll/om.c @@ -1623,15 +1623,15 @@ static void test_query_object_types(void) ok( status == STATUS_SUCCESS, "Expected STATUS_SUCCESS, got %08x\n", status ); 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; - if ((HANDLE)(ULONG_PTR)shi->Handle[i].HandleValue != handle) + if ((HANDLE)(ULONG_PTR)shi->Handles[i].HandleValue != handle) continue; - ok( shi->Handle[i].ObjectTypeIndex == event_type_index, "Event type does not match: %u vs %u\n", - shi->Handle[i].ObjectTypeIndex, event_type_index ); + ok( shi->Handles[i].ObjectTypeIndex == event_type_index, "Event type does not match: %u vs %u\n", + shi->Handles[i].ObjectTypeIndex, event_type_index ); found = TRUE; break; diff --git a/modules/rostests/winetests/ntdll/rtl.c b/modules/rostests/winetests/ntdll/rtl.c index c4d49ea0512..347474cac50 100644 --- a/modules/rostests/winetests/ntdll/rtl.c +++ b/modules/rostests/winetests/ntdll/rtl.c @@ -935,9 +935,9 @@ static void test_RtlThreadErrorMode(void) "RtlGetThreadErrorMode returned 0x%x, expected 0x%x\n", mode, 0x70); if (!is_wow64) { - ok(NtCurrentTeb()->HardErrorDisabled == 0x70, + ok(NtCurrentTeb()->HardErrorMode == 0x70, "The TEB contains 0x%x, expected 0x%x\n", - NtCurrentTeb()->HardErrorDisabled, 0x70); + NtCurrentTeb()->HardErrorMode, 0x70); } status = pRtlSetThreadErrorMode(0, &mode); @@ -951,9 +951,9 @@ static void test_RtlThreadErrorMode(void) "RtlGetThreadErrorMode returned 0x%x, expected 0x%x\n", mode, 0); if (!is_wow64) { - ok(NtCurrentTeb()->HardErrorDisabled == 0, + ok(NtCurrentTeb()->HardErrorMode == 0, "The TEB contains 0x%x, expected 0x%x\n", - NtCurrentTeb()->HardErrorDisabled, 0); + NtCurrentTeb()->HardErrorMode, 0); } for (mode = 1; mode; mode <<= 1) @@ -3242,7 +3242,7 @@ struct ldr_enum_context 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}; 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; DWORD *calls = context; LIST_ENTRY *mark; - LDR_MODULE *mod; + LDR_DATA_TABLE_ENTRY *mod; ULONG size; 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 */ mark = &NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList; - mod = CONTAINING_RECORD(mark->Blink, LDR_MODULE, InMemoryOrderModuleList); - ok(mod->BaseAddress == data->Loaded.DllBase, "Expected base address %p, got %p\n", - data->Loaded.DllBase, mod->BaseAddress); + mod = CONTAINING_RECORD(mark->Blink, LDR_DATA_TABLE_ENTRY, InMemoryOrderLinks); + ok(mod->DllBase == data->Loaded.DllBase, "Expected base address %p, got %p\n", + data->Loaded.DllBase, mod->DllBase); ok(!lstrcmpiW(mod->BaseDllName.Buffer, ws2_32dllW), "Expected ws2_32.dll, got %s\n", 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; LIST_ENTRY *mark; - LDR_MODULE *mod; + LDR_DATA_TABLE_ENTRY *mod; *calls <<= 4; *calls |= reason; @@ -3496,10 +3496,10 @@ static void CALLBACK ldr_notify_callback_dll_main(ULONG reason, LDR_DLL_NOTIFICA return; mark = &NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList; - mod = CONTAINING_RECORD(mark->Blink, LDR_MODULE, InMemoryOrderModuleList); - ok(mod->BaseAddress == data->Loaded.DllBase, "Expected base address %p, got %p\n", - data->Loaded.DllBase, mod->BaseAddress); - if (mod->BaseAddress != data->Loaded.DllBase) + mod = CONTAINING_RECORD(mark->Blink, LDR_DATA_TABLE_ENTRY, InMemoryOrderLinks); + ok(mod->DllBase == data->Loaded.DllBase, "Expected base address %p, got %p\n", + data->Loaded.DllBase, mod->DllBase); + if (mod->DllBase != data->Loaded.DllBase) return; orig_entry = mod->EntryPoint; @@ -3526,7 +3526,7 @@ static void CALLBACK ldr_notify_callback_fail(ULONG reason, LDR_DLL_NOTIFICATION { DWORD *calls = context; LIST_ENTRY *mark; - LDR_MODULE *mod; + LDR_DATA_TABLE_ENTRY *mod; *calls <<= 4; *calls |= reason; @@ -3535,10 +3535,10 @@ static void CALLBACK ldr_notify_callback_fail(ULONG reason, LDR_DLL_NOTIFICATION return; mark = &NtCurrentTeb()->Peb->LdrData->InMemoryOrderModuleList; - mod = CONTAINING_RECORD(mark->Blink, LDR_MODULE, InMemoryOrderModuleList); - ok(mod->BaseAddress == data->Loaded.DllBase, "Expected base address %p, got %p\n", - data->Loaded.DllBase, mod->BaseAddress); - if (mod->BaseAddress != data->Loaded.DllBase) + mod = CONTAINING_RECORD(mark->Blink, LDR_DATA_TABLE_ENTRY, InMemoryOrderLinks); + ok(mod->DllBase == data->Loaded.DllBase, "Expected base address %p, got %p\n", + data->Loaded.DllBase, mod->DllBase); + if (mod->DllBase != data->Loaded.DllBase) return; orig_entry = mod->EntryPoint; diff --git a/modules/rostests/winetests/psapi/psapi_main.c b/modules/rostests/winetests/psapi/psapi_main.c index 68f0045199f..206da8f2eb0 100644 --- a/modules/rostests/winetests/psapi/psapi_main.c +++ b/modules/rostests/winetests/psapi/psapi_main.c @@ -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); 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); section_name = (MEMORY_SECTION_NAME *)buf; diff --git a/modules/rostests/winetests/user32/clipboard.c b/modules/rostests/winetests/user32/clipboard.c index b00151271ad..eac3df7a4ec 100644 --- a/modules/rostests/winetests/user32/clipboard.c +++ b/modules/rostests/winetests/user32/clipboard.c @@ -26,10 +26,6 @@ #include "winuser.h" #include "winnls.h" -#ifdef __REACTOS__ -#define WM_CLIPBOARDUPDATE 0x031D -#endif - static BOOL (WINAPI *pAddClipboardFormatListener)(HWND hwnd); static BOOL (WINAPI *pRemoveClipboardFormatListener)(HWND hwnd); static BOOL (WINAPI *pGetUpdatedClipboardFormats)( UINT *formats, UINT count, UINT *out_count ); diff --git a/ntoskrnl/ex/sysinfo.c b/ntoskrnl/ex/sysinfo.c index f3aa2457a8a..85d8fe06a08 100644 --- a/ntoskrnl/ex/sysinfo.c +++ b/ntoskrnl/ex/sysinfo.c @@ -2507,7 +2507,7 @@ QSI_DEF(SystemExtendedHandleInformation) DPRINT("NtQuerySystemInformation - SystemExtendedHandleInformation\n"); /* 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 */ if (Size < *ReqSize) @@ -2529,7 +2529,7 @@ QSI_DEF(SystemExtendedHandleInformation) } /* Reset of count of handles */ - HandleInformation->Count = 0; + HandleInformation->NumberOfHandles = 0; /* Enter a critical region */ KeEnterCriticalRegion(); @@ -2554,7 +2554,7 @@ QSI_DEF(SystemExtendedHandleInformation) (HandleTableEntry->NextFreeTableEntry != -2)) { /* Increase of count of handles */ - ++HandleInformation->Count; + ++HandleInformation->NumberOfHandles; /* Lock the entry */ if (ExpLockHandleTableEntry(HandleTable, HandleTableEntry)) @@ -2572,30 +2572,30 @@ QSI_DEF(SystemExtendedHandleInformation) POBJECT_HEADER ObjectHeader = ObpGetHandleObject(HandleTableEntry); /* Filling handle information */ - HandleInformation->Handle[Index].UniqueProcessId = + HandleInformation->Handles[Index].UniqueProcessId = (USHORT)(ULONG_PTR) HandleTable->UniqueProcessId; - HandleInformation->Handle[Index].CreatorBackTraceIndex = 0; + HandleInformation->Handles[Index].CreatorBackTraceIndex = 0; #if 0 /* FIXME!!! Type field corrupted */ HandleInformation->Handles[Index].ObjectTypeIndex = (UCHAR) ObjectHeader->Type->Index; #else - HandleInformation->Handle[Index].ObjectTypeIndex = 0; + HandleInformation->Handles[Index].ObjectTypeIndex = 0; #endif - HandleInformation->Handle[Index].HandleAttributes = + HandleInformation->Handles[Index].HandleAttributes = HandleTableEntry->ObAttributes & OBJ_HANDLE_ATTRIBUTES; - HandleInformation->Handle[Index].HandleValue = + HandleInformation->Handles[Index].HandleValue = (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; - HandleInformation->Handle[Index].Reserved = 0; + HandleInformation->Handles[Index].Reserved = 0; ++Index; } diff --git a/sdk/include/ndk/extypes.h b/sdk/include/ndk/extypes.h index d3f36301768..502a49f4ab7 100644 --- a/sdk/include/ndk/extypes.h +++ b/sdk/include/ndk/extypes.h @@ -1603,9 +1603,9 @@ typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX typedef struct _SYSTEM_HANDLE_INFORMATION_EX { - ULONG_PTR Count; + ULONG_PTR NumberOfHandles; 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; // FIXME: Class 65-89 diff --git a/sdk/include/psdk/processthreadsapi.h b/sdk/include/psdk/processthreadsapi.h index 913cc445c7f..212a530559f 100644 --- a/sdk/include/psdk/processthreadsapi.h +++ b/sdk/include/psdk/processthreadsapi.h @@ -17,6 +17,23 @@ WINAPI SetThreadStackGuarantee( _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 HANDLE GetCurrentThreadEffectiveToken( @@ -24,6 +41,7 @@ GetCurrentThreadEffectiveToken( { return (HANDLE)(LONG_PTR)-6; } +#endif // (_WIN32_WINNT >= 0x602) || defined(__REACTOS__) #ifdef __cplusplus } // extern "C" diff --git a/sdk/include/psdk/shellscalingapi.h b/sdk/include/psdk/shellscalingapi.h new file mode 100644 index 00000000000..fefd959c11b --- /dev/null +++ b/sdk/include/psdk/shellscalingapi.h @@ -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 + +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) diff --git a/sdk/include/psdk/shtypes.idl b/sdk/include/psdk/shtypes.idl index a3b9559f369..f7158acdf6d 100644 --- a/sdk/include/psdk/shtypes.idl +++ b/sdk/include/psdk/shtypes.idl @@ -189,3 +189,24 @@ cpp_quote("#define PERCEIVEDFLAG_NATIVESUPPORT 0x0004") cpp_quote("#define PERCEIVEDFLAG_GDIPLUS 0x0010") cpp_quote("#define PERCEIVEDFLAG_WMSDK 0x0020") 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; diff --git a/sdk/include/psdk/wincrypt.h b/sdk/include/psdk/wincrypt.h index c66061cba5e..75e9a56ff18 100644 --- a/sdk/include/psdk/wincrypt.h +++ b/sdk/include/psdk/wincrypt.h @@ -21,25 +21,34 @@ #ifndef __WINE_WINCRYPT_H #define __WINE_WINCRYPT_H +#ifdef __REACTOS__ #include +#endif #ifdef __cplusplus extern "C" { #endif -#ifdef _MSC_VER -#pragma warning(push) -#pragma warning(disable:4201) +#include +#ifndef __REACTOS__ +#include #endif -#include -/* FIXME: #include */ - +#ifndef WINADVAPI #ifdef _ADVAPI32_ # define WINADVAPI #else # define WINADVAPI DECLSPEC_IMPORT #endif +#endif + +#ifndef WINCRYPT32API +#ifdef _CRYPT32_ +# define WINCRYPT32API +#else +# define WINCRYPT32API DECLSPEC_IMPORT +#endif +#endif /* some typedefs for function parameters */ typedef unsigned int ALG_ID; @@ -97,7 +106,7 @@ typedef struct _HMAC_INFO { BYTE* pbOuterString; DWORD cbOuterString; } HMAC_INFO, *PHMAC_INFO; - + typedef struct _CRYPTOAPI_BLOB { DWORD cbData; BYTE* pbData; @@ -538,7 +547,11 @@ typedef struct _CRL_DIST_POINTS_INFO { #define GET_CRL_DIST_POINT_ERR_INDEX(x) \ (((x) >> CRL_DIST_POINT_ERR_INDEX_SHIFT) & CRL_DIST_POINT_ERR_INDEX_MASK) +#ifdef __REACTOS__ #define CRL_DIST_POINT_ERR_CRL_ISSUER_BIT 0x80000000L +#else +#define CRL_DIST_POINT_ERR_CRL_ISSUER_BIT __MSABI_LONG(0x80000000) +#endif #define IS_CRL_DIST_POINT_ERR_CRL_ISSUER(x) \ ((x) & CRL_DIST_POINT_ERR_CRL_ISSUER_BIT) @@ -581,7 +594,11 @@ typedef struct _CERT_NAME_CONSTRAINTS_INFO { PCERT_GENERAL_SUBTREE rgExcludedSubtree; } CERT_NAME_CONSTRAINTS_INFO, *PCERT_NAME_CONSTRAINTS_INFO; +#ifdef __REACTOS__ #define CERT_EXCLUDED_SUBTREE_BIT 0x80000000L +#else +#define CERT_EXCLUDED_SUBTREE_BIT __MSABI_LONG(0x80000000) +#endif #define IS_CERT_EXCLUDED_SUBTREE(x) ((x) & CERT_EXCLUDED_SUBTREE_BIT) typedef struct _CRYPT_ATTRIBUTE { @@ -615,6 +632,101 @@ typedef struct _CERT_SIGNED_CONTENT_INFO { CRYPT_BIT_BLOB Signature; } CERT_SIGNED_CONTENT_INFO, *PCERT_SIGNED_CONTENT_INFO; +typedef struct _OCSP_SIGNATURE_INFO { + CRYPT_ALGORITHM_IDENTIFIER SignatureAlgorithm; + CRYPT_BIT_BLOB Signature; + DWORD cCertEncoded; + PCERT_BLOB rgCertEncoded; +} OCSP_SIGNATURE_INFO, *POCSP_SIGNATURE_INFO; + +typedef struct _OCSP_SIGNED_REQUEST_INFO { + CRYPT_DER_BLOB ToBeSigned; + POCSP_SIGNATURE_INFO pOptionalSignatureInfo; +} OCSP_SIGNED_REQUEST_INFO, *POCSP_SIGNED_REQUEST_INFO; + +typedef struct _OCSP_CERT_ID { + CRYPT_ALGORITHM_IDENTIFIER HashAlgorithm; + CRYPT_HASH_BLOB IssuerNameHash; + CRYPT_HASH_BLOB IssuerKeyHash; + CRYPT_INTEGER_BLOB SerialNumber; +} OCSP_CERT_ID, *POCSP_CERT_ID; + +typedef struct _OCSP_REQUEST_ENTRY { + OCSP_CERT_ID CertId; + DWORD cExtension; + PCERT_EXTENSION rgExtension; +} OCSP_REQUEST_ENTRY, *POCSP_REQUEST_ENTRY; + +#define OCSP_REQUEST_V1 0 + +typedef struct _OCSP_REQUEST_INFO { + DWORD dwVersion; + PCERT_ALT_NAME_ENTRY pRequestorName; + DWORD cRequestEntry; + POCSP_REQUEST_ENTRY rgRequestEntry; + DWORD cExtension; + PCERT_EXTENSION rgExtension; +} OCSP_REQUEST_INFO, *POCSP_REQUEST_INFO; + +#define OCSP_SUCCESSFUL_RESPONSE 0 +#define OCSP_MALFORMED_REQUEST_RESPONSE 1 +#define OCSP_INTERNAL_ERROR_RESPONSE 2 +#define OCSP_TRY_LATER_RESPONSE 3 +#define OCSP_SIG_REQUIRED_RESPONSE 5 +#define OCSP_UNAUTHORIZED_RESPONSE 6 + +#define szOID_PKIX_OCSP_BASIC_SIGNED_RESPONSE "1.3.6.1.5.5.7.48.1.1" + +typedef struct _OCSP_RESPONSE_INFO { + DWORD dwStatus; + LPSTR pszObjId; + CRYPT_OBJID_BLOB Value; +} OCSP_RESPONSE_INFO, *POCSP_RESPONSE_INFO; + +typedef struct _OCSP_BASIC_SIGNED_RESPONSE_INFO { + CRYPT_DER_BLOB ToBeSigned; + OCSP_SIGNATURE_INFO SignatureInfo; +} OCSP_BASIC_SIGNED_RESPONSE_INFO, *POCSP_BASIC_SIGNED_RESPONSE_INFO; + +typedef struct _OCSP_BASIC_REVOKED_INFO { + FILETIME RevocationDate; + DWORD dwCrlReasonCode; +} OCSP_BASIC_REVOKED_INFO, *POCSP_BASIC_REVOKED_INFO; + +#define OCSP_BASIC_GOOD_CERT_STATUS 0 +#define OCSP_BASIC_REVOKED_CERT_STATUS 1 +#define OCSP_BASIC_UNKNOWN_CERT_STATUS 2 + +typedef struct _OCSP_BASIC_RESPONSE_ENTRY { + OCSP_CERT_ID CertId; + DWORD dwCertStatus; + union { + POCSP_BASIC_REVOKED_INFO pRevokedInfo; + } DUMMYUNIONNAME; + FILETIME ThisUpdate; + FILETIME NextUpdate; + DWORD cExtension; + PCERT_EXTENSION rgExtension; +} OCSP_BASIC_RESPONSE_ENTRY, *POCSP_BASIC_RESPONSE_ENTRY; + +#define OCSP_BASIC_RESPONSE_V1 0 +#define OCSP_BASIC_BY_NAME_RESPONDER_ID 1 +#define OCSP_BASIC_BY_KEY_RESPONDER_ID 2 + +typedef struct _OCSP_BASIC_RESPONSE_INFO { + DWORD dwVersion; + DWORD dwResponderIdChoice; + union { + CERT_NAME_BLOB ByNameResponderId; + CRYPT_HASH_BLOB ByKeyResponderId; + } DUMMYUNIONNAME; + FILETIME ProducedAt; + DWORD cResponseEntry; + POCSP_BASIC_RESPONSE_ENTRY rgResponseEntry; + DWORD cExtension; + PCERT_EXTENSION rgExtension; +} OCSP_BASIC_RESPONSE_INFO, *POCSP_BASIC_RESPONSE_INFO; + typedef struct _CRL_CONTEXT { DWORD dwCertEncodingType; BYTE *pbCrlEncoded; @@ -695,7 +807,7 @@ typedef struct _CRYPT_SMIME_CAPABILITIES { typedef struct _VTableProvStruc { DWORD Version; -#ifdef WINE_STRICT_PROTOTYPES +#ifndef WINE_NO_STRICT_PROTOTYPES BOOL (WINAPI *FuncVerifyImage)(LPCSTR,BYTE*); void (WINAPI *FuncReturnhWnd)(HWND*); #else @@ -998,6 +1110,7 @@ typedef struct _CERT_CHAIN_POLICY_STATUS { #define CERT_CHAIN_POLICY_TRUST_TESTROOT_FLAG 0x00004000 #define CERT_CHAIN_POLICY_ALLOW_TESTROOT_FLAG 0x00008000 #define MICROSOFT_ROOT_CERT_CHAIN_POLICY_ENABLE_TEST_ROOT_FLAG 0x00010000 +#define MICROSOFT_ROOT_CERT_CHAIN_POLICY_CHECK_APPLICATION_ROOT_FLAG 0x00020000 typedef struct _AUTHENTICODE_EXTRA_CERT_CHAIN_POLICY_PARA { DWORD cbSize; @@ -1103,6 +1216,7 @@ typedef struct _CERT_SYSTEM_STORE_RELOCATE_PARA { } DUMMYUNIONNAME2; } CERT_SYSTEM_STORE_RELOCATE_PARA, *PCERT_SYSTEM_STORE_RELOCATE_PARA; +#ifdef __REACTOS__ typedef BOOL (WINAPI *PFN_CERT_ENUM_SYSTEM_STORE_LOCATION)( _In_ LPCWSTR pwszStoreLocation, @@ -1126,10 +1240,22 @@ typedef BOOL _In_ PCERT_PHYSICAL_STORE_INFO pStoreInfo, _Reserved_ void *pvReserved, _Inout_opt_ void *pvArg); +#else +typedef BOOL (WINAPI *PFN_CERT_ENUM_SYSTEM_STORE_LOCATION)( + LPCWSTR pwszStoreLocation, DWORD dwFlags, void *pvReserved, void *pvArg); + +typedef BOOL (WINAPI *PFN_CERT_ENUM_SYSTEM_STORE)(const void *pvSystemStore, + DWORD dwFlags, PCERT_SYSTEM_STORE_INFO pStoreInfo, void *pvReserved, + void *pvArg); + +typedef BOOL (WINAPI *PFN_CERT_ENUM_PHYSICAL_STORE)(const void *pvSystemStore, + DWORD dwFlags, LPCWSTR pwszStoreName, PCERT_PHYSICAL_STORE_INFO pStoreInfo, + void *pvReserved, void *pvArg); +#endif // __REACTOS /* Encode/decode object */ -typedef LPVOID (__WINE_ALLOC_SIZE(1) WINAPI *PFN_CRYPT_ALLOC)(_In_ size_t cbsize); -typedef VOID(WINAPI *PFN_CRYPT_FREE)(_In_ LPVOID pv); +typedef LPVOID (__WINE_ALLOC_SIZE(1) WINAPI *PFN_CRYPT_ALLOC)(size_t cbsize); +typedef VOID (WINAPI *PFN_CRYPT_FREE)(LPVOID pv); typedef struct _CRYPT_ENCODE_PARA { DWORD cbSize; @@ -1152,6 +1278,7 @@ typedef struct _CERT_STORE_PROV_INFO { HCRYPTOIDFUNCADDR hStoreProvFuncAddr2; } CERT_STORE_PROV_INFO, *PCERT_STORE_PROV_INFO; +#ifdef __REACTOS__ typedef BOOL (WINAPI *PFN_CERT_DLL_OPEN_STORE_PROV_FUNC)( _In_ LPCSTR lpszStoreProvider, @@ -1260,6 +1387,60 @@ typedef BOOL _In_ DWORD dwFlags, _In_ DWORD dwCtrlType, _In_opt_ void const *pvCtrlPara); +#else +typedef BOOL (WINAPI *PFN_CERT_DLL_OPEN_STORE_PROV_FUNC)( + LPCSTR lpszStoreProvider, DWORD dwEncodingType, HCRYPTPROV_LEGACY hCryptProv, + DWORD dwFlags, const void *pvPara, HCERTSTORE hCertStore, + PCERT_STORE_PROV_INFO pStoreProvInfo); + +typedef void (WINAPI *PFN_CERT_STORE_PROV_CLOSE)(HCERTSTOREPROV hStoreProv, + DWORD dwFlags); + +typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_READ_CERT)(HCERTSTOREPROV hStoreProv, + PCCERT_CONTEXT pStoreCertContext, DWORD dwFlags, + PCCERT_CONTEXT *ppProvCertContext); + +typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_WRITE_CERT)(HCERTSTOREPROV hStoreProv, + PCCERT_CONTEXT pCertContext, DWORD dwFlags); + +typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_DELETE_CERT)( + HCERTSTOREPROV hStoreProv, PCCERT_CONTEXT pCertContext, DWORD dwFlags); + +typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_SET_CERT_PROPERTY)( + HCERTSTOREPROV hStoreProv, PCCERT_CONTEXT pCertContext, DWORD dwPropId, + DWORD dwFlags, const void *pvData); + +typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_READ_CRL)(HCERTSTOREPROV hStoreProv, + PCCRL_CONTEXT pStoreCrlContext, DWORD dwFlags, + PCCRL_CONTEXT *ppProvCrlContext); + +typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_WRITE_CRL)(HCERTSTOREPROV hStoreProv, + PCCRL_CONTEXT pCrlContext, DWORD dwFlags); + +typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_DELETE_CRL)(HCERTSTOREPROV hStoreProv, + PCCRL_CONTEXT pCrlContext, DWORD dwFlags); + +typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_SET_CRL_PROPERTY)( + HCERTSTOREPROV hStoreProv, PCCRL_CONTEXT pCrlContext, DWORD dwPropId, + DWORD dwFlags, const void *pvData); + +typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_READ_CTL)(HCERTSTOREPROV hStoreProv, + PCCTL_CONTEXT pStoreCtlContext, DWORD dwFlags, + PCCTL_CONTEXT *ppProvCtlContext); + +typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_WRITE_CTL)(HCERTSTOREPROV hStoreProv, + PCCTL_CONTEXT pCtlContext, DWORD dwFlags); + +typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_DELETE_CTL)( + HCERTSTOREPROV hStoreProv, PCCTL_CONTEXT pCtlContext, DWORD dwFlags); + +typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_SET_CTL_PROPERTY)( + HCERTSTOREPROV hStoreProv, PCCTL_CONTEXT pCtlContext, DWORD dwPropId, + DWORD dwFlags, const void *pvData); + +typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_CONTROL)(HCERTSTOREPROV hStoreProv, + DWORD dwFlags, DWORD dwCtrlType, void const *pvCtrlPara); +#endif typedef struct _CERT_STORE_PROV_FIND_INFO { DWORD cbSize; @@ -1271,6 +1452,7 @@ typedef struct _CERT_STORE_PROV_FIND_INFO { typedef const CERT_STORE_PROV_FIND_INFO CCERT_STORE_PROV_FIND_INFO, *PCCERT_STORE_PROV_FIND_INFO; +#ifdef __REACTOS__ typedef _Success_(return != 0) BOOL @@ -1344,6 +1526,38 @@ typedef BOOL _In_ DWORD dwFlags, _Out_writes_bytes_to_opt_(*pcbData, *pcbData) void *pvData, _Inout_ DWORD *pcbData); +#else +typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_FIND_CERT)(HCERTSTOREPROV hStoreProv, + PCCERT_STORE_PROV_FIND_INFO pFindInfo, PCCERT_CONTEXT pPrevCertContext, + DWORD dwFlags, void **ppvStoreProvFindInfo, PCCERT_CONTEXT *ppProvCertContext); + +typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_FREE_FIND_CERT)( + HCERTSTOREPROV hStoreProv, PCCERT_CONTEXT pCertContext, + void *pvStoreProvFindInfo, DWORD dwFlags); + +typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_GET_CERT_PROPERTY)( + HCERTSTOREPROV hStoreProv, PCCERT_CONTEXT pCertContext, DWORD dwPropId, + DWORD dwFlags, void *pvData, DWORD *pcbData); + +typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_FIND_CRL)(HCERTSTOREPROV hStoreProv, + PCCERT_STORE_PROV_FIND_INFO pFindInfo, PCCRL_CONTEXT pPrevCrlContext, + DWORD dwFlags, void **ppvStoreProvFindInfo, PCCRL_CONTEXT *ppProvCrlContext); + +typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_FREE_FIND_CRL)( + HCERTSTOREPROV hStoreProv, PCCRL_CONTEXT pCrlContext, + void *pvStoreProvFindInfo, DWORD dwFlags); + +typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_GET_CRL_PROPERTY)( + HCERTSTOREPROV hStoreProv, PCCRL_CONTEXT pCrlContext, DWORD dwPropId, + DWORD dwFlags, void *pvData, DWORD *pcbData); + +typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_FIND_CTL)(HCERTSTOREPROV hStoreProv, + PCCTL_CONTEXT pCtlContext, void *pvStoreProvFindInfo, DWORD dwFlags); + +typedef BOOL (WINAPI *PFN_CERT_STORE_PROV_GET_CTL_PROPERTY)( + HCERTSTOREPROV hStoreProv, PCCTL_CONTEXT pCtlContext, DWORD dwPropId, + DWORD dwFlags, void *pvData); +#endif typedef struct _CERT_CREATE_CONTEXT_PARA { DWORD cbSize; @@ -1356,6 +1570,7 @@ typedef struct _CRYPT_OID_FUNC_ENTRY { void *pvFuncAddr; } CRYPT_OID_FUNC_ENTRY, *PCRYPT_OID_FUNC_ENTRY; +#ifdef __REACTOS__ typedef BOOL (WINAPI *PFN_CRYPT_ENUM_OID_FUNC)( _In_ DWORD dwEncodingType, @@ -1368,20 +1583,19 @@ typedef BOOL _In_reads_(cValue) const DWORD rgcbValueData[], _Inout_opt_ void *pvArg); +#else +typedef BOOL (WINAPI *PFN_CRYPT_ENUM_OID_FUNC)(DWORD dwEncodingType, + LPCSTR pszFuncName, LPCSTR pszOID, DWORD cValue, const DWORD rgdwValueType[], + LPCWSTR const rgpwszValueName[], const BYTE * const rgpbValueData[], + const DWORD rgcbValueData[], void *pvArg); +#endif + #define CRYPT_MATCH_ANY_ENCODING_TYPE 0xffffffff #define CALG_OID_INFO_CNG_ONLY 0xffffffff #define CALG_OID_INFO_PARAMETERS 0xfffffffe -#if defined(__GNUC__) -#define CRYPT_OID_INFO_HASH_PARAMETERS_ALGORITHM (const WCHAR []){'C','r','y','p','t','O','I','D','I','n','f','o','H','a','s','h','P','a','r','a','m','e','t','e','r','s',0} -#define CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM (const WCHAR []){'C','r','y','p','t','O','I','D','I','n','f','o','E','C','C','P','a','r','a','m','e','t','e','r','s',0} -#define CRYPT_OID_INFO_MGF1_PARAMETERS_ALGORITHM (const WCHAR []){'C','r','y','p','t','O','I','D','I','n','f','o','M','g','f','1','P','a','r','a','m','e','t','e','r','s',0} -#define CRYPT_OID_INFO_NO_SIGN_ALGORITHM (const WCHAR []){'C','r','y','p','t','O','I','D','I','n','f','o','N','o','S','i','g','n',0} -#define CRYPT_OID_INFO_OAEP_PARAMETERS_ALGORITHM (const WCHAR []){'C','r','y','p','t','O','I','D','I','n','f','o','O','A','E','P','P','a','r','a','m','e','t','e','r','s',0} -#define CRYPT_OID_INFO_ECC_WRAP_PARAMETERS_ALGORITHM (const WCHAR []){'C','r','y','p','t','O','I','D','I','n','f','o','E','C','C','W','r','a','p','P','a','r','a','m','e','t','e','r','s',0} -#define CRYPT_OID_INFO_NO_PARAMETERS_ALGORITHM (const WCHAR []){'C','r','y','p','t','O','I','D','I','n','f','o','N','o','P','a','r','a','m','e','t','e','r','s',0} -#elif defined(_MSC_VER) +#if defined(_MSC_VER) || defined(__MINGW32__) #define CRYPT_OID_INFO_HASH_PARAMETERS_ALGORITHM L"CryptOIDInfoHashParameters" #define CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM L"CryptOIDInfoECCParameters" #define CRYPT_OID_INFO_MGF1_PARAMETERS_ALGORITHM L"CryptOIDInfoMgf1Parameters" @@ -1390,13 +1604,13 @@ typedef BOOL #define CRYPT_OID_INFO_ECC_WRAP_PARAMETERS_ALGORITHM L"CryptOIDInfoECCWrapParameters" #define CRYPT_OID_INFO_NO_PARAMETERS_ALGORITHM L"CryptOIDInfoNoParameters" #else -static const WCHAR CRYPT_OID_INFO_HASH_PARAMETERS_ALGORITHM[] = {'C','r','y','p','t','O','I','D','I','n','f','o','H','a','s','h','P','a','r','a','m','e','t','e','r','s',0}; -static const WCHAR CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM[] = {'C','r','y','p','t','O','I','D','I','n','f','o','E','C','C','P','a','r','a','m','e','t','e','r','s',0}; -static const WCHAR CRYPT_OID_INFO_MGF1_PARAMETERS_ALGORITHM[] = {'C','r','y','p','t','O','I','D','I','n','f','o','M','g','f','1','P','a','r','a','m','e','t','e','r','s',0}; -static const WCHAR CRYPT_OID_INFO_NO_SIGN_ALGORITHM[] = {'C','r','y','p','t','O','I','D','I','n','f','o','N','o','S','i','g','n',0}; -static const WCHAR CRYPT_OID_INFO_OAEP_PARAMETERS_ALGORITHM[] = {'C','r','y','p','t','O','I','D','I','n','f','o','O','A','E','P','P','a','r','a','m','e','t','e','r','s',0}; +static const WCHAR CRYPT_OID_INFO_HASH_PARAMETERS_ALGORITHM[] = {'C','r','y','p','t','O','I','D','I','n','f','o','H','a','s','h','P','a','r','a','m','e','t','e','r','s',0}; +static const WCHAR CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM[] = {'C','r','y','p','t','O','I','D','I','n','f','o','E','C','C','P','a','r','a','m','e','t','e','r','s',0}; +static const WCHAR CRYPT_OID_INFO_MGF1_PARAMETERS_ALGORITHM[] = {'C','r','y','p','t','O','I','D','I','n','f','o','M','g','f','1','P','a','r','a','m','e','t','e','r','s',0}; +static const WCHAR CRYPT_OID_INFO_NO_SIGN_ALGORITHM[] = {'C','r','y','p','t','O','I','D','I','n','f','o','N','o','S','i','g','n',0}; +static const WCHAR CRYPT_OID_INFO_OAEP_PARAMETERS_ALGORITHM[] = {'C','r','y','p','t','O','I','D','I','n','f','o','O','A','E','P','P','a','r','a','m','e','t','e','r','s',0}; static const WCHAR CRYPT_OID_INFO_ECC_WRAP_PARAMETERS_ALGORITHM[] = {'C','r','y','p','t','O','I','D','I','n','f','o','E','C','C','W','r','a','p','P','a','r','a','m','e','t','e','r','s',0}; -static const WCHAR CRYPT_OID_INFO_NO_PARAMETERS_ALGORITHM[] = {'C','r','y','p','t','O','I','D','I','n','f','o','N','o','P','a','r','a','m','e','t','e','r','s',0}; +static const WCHAR CRYPT_OID_INFO_NO_PARAMETERS_ALGORITHM[] = {'C','r','y','p','t','O','I','D','I','n','f','o','N','o','P','a','r','a','m','e','t','e','r','s',0}; #endif typedef struct _CRYPT_OID_INFO { @@ -1417,10 +1631,15 @@ typedef struct _CRYPT_OID_INFO { } CRYPT_OID_INFO, *PCRYPT_OID_INFO; typedef const CRYPT_OID_INFO CCRYPT_OID_INFO, *PCCRYPT_OID_INFO; +#ifdef __REACTOS__ typedef BOOL (WINAPI *PFN_CRYPT_ENUM_OID_INFO)( _In_ PCCRYPT_OID_INFO pInfo, _Inout_opt_ void *pvArg); +#else +typedef BOOL (WINAPI *PFN_CRYPT_ENUM_OID_INFO)(PCCRYPT_OID_INFO pInfo, + void *pvArg); +#endif typedef struct _CRYPT_SIGN_MESSAGE_PARA { DWORD cbSize; @@ -1449,12 +1668,17 @@ typedef struct _CRYPT_SIGN_MESSAGE_PARA { #define CRYPT_MESSAGE_KEYID_SIGNER_FLAG 0x00000004 #define CRYPT_MESSAGE_SILENT_KEYSET_FLAG 0x00000008 +#ifdef __REACTOS__ typedef PCCERT_CONTEXT (WINAPI *PFN_CRYPT_GET_SIGNER_CERTIFICATE)( _Inout_opt_ void *pvGetArg, _In_ DWORD dwCertEncodingType, _In_ PCERT_INFO pSignerId, _In_ HCERTSTORE hMsgCertStore); +#else +typedef PCCERT_CONTEXT (WINAPI *PFN_CRYPT_GET_SIGNER_CERTIFICATE)(void *pvArg, + DWORD dwCertEncodingType, PCERT_INFO pSignerId, HCERTSTORE hMsgCertStore); +#endif typedef struct _CRYPT_VERIFY_MESSAGE_PARA { DWORD cbSize; @@ -1538,14 +1762,20 @@ typedef struct _CRYPT_URL_INFO { typedef HANDLE HCRYPTASYNC, *PHCRYPTASYNC; +#ifdef __REACTOS__ typedef void (WINAPI *PFN_CRYPT_ASYNC_PARAM_FREE_FUNC)( _In_ LPSTR pszParamOid, _In_ LPVOID pvParam); +#else +typedef void (WINAPI *PFN_CRYPT_ASYNC_PARAM_FREE_FUNC)(LPSTR pszParamOid, + LPVOID pvParam); +#endif #define CRYPT_PARAM_ASYNC_RETRIEVAL_COMPLETION ((LPCSTR)1) #define CRYPT_PARAM_CANCEL_ASYNC_RETRIEVAL ((LPCSTR)2) +#ifdef __REACTOS__ typedef void (WINAPI *PFN_CRYPT_ASYNC_RETRIEVAL_COMPLETION_FUNC)( _Inout_opt_ void *pvCompletion, @@ -1562,6 +1792,20 @@ typedef struct _CRYPT_ASYNC_RETRIEVAL_COMPLETION { typedef BOOL (WINAPI *PFN_CANCEL_ASYNC_RETRIEVAL_FUNC)( _In_opt_ HCRYPTASYNC hAsyncRetrieve); +#else +typedef void (WINAPI *PFN_CRYPT_ASYNC_RETRIEVAL_COMPLETION_FUNC)( + void *pvCompletion, DWORD dwCompletionCode, LPCSTR pszURL, LPSTR pszObjectOid, + void *pvObject); + +typedef struct _CRYPT_ASYNC_RETRIEVAL_COMPLETION +{ + PFN_CRYPT_ASYNC_RETRIEVAL_COMPLETION_FUNC pfnCompletion; + void *pvCompletion; +} CRYPT_ASYNC_RETRIEVAL_COMPLETION, *PCRYPT_ASYNC_RETRIEVAL_COMPLETION; + +typedef BOOL (WINAPI *PFN_CANCEL_ASYNC_RETRIEVAL_FUNC)( + HCRYPTASYNC hAsyncRetrieve); +#endif typedef struct _CRYPT_BLOB_ARRAY { @@ -1600,11 +1844,16 @@ typedef struct _CRYPT_RETRIEVE_AUX_INFO { DWORD dwMaxUrlRetrievalByteCount; } CRYPT_RETRIEVE_AUX_INFO, *PCRYPT_RETRIEVE_AUX_INFO; +#ifdef __REACTOS__ typedef void (WINAPI *PFN_FREE_ENCODED_OBJECT_FUNC)( _In_opt_ LPCSTR pszObjectOid, _Inout_ PCRYPT_BLOB_ARRAY pObject, _Inout_opt_ void *pvFreeContext); +#else +typedef void (WINAPI *PFN_FREE_ENCODED_OBJECT_FUNC)(LPCSTR pszObjectOid, + PCRYPT_BLOB_ARRAY pObject, void *pvFreeContext); +#endif #define SCHEME_OID_RETRIEVE_ENCODED_OBJECT_FUNC \ "SchemeDllRetrieveEncodedObject" @@ -1652,10 +1901,14 @@ BOOL WINAPI ContextDllCreateObjectContext(LPCSTR pszObjectOid, #define CRYPT_CHECK_FRESHNESS_TIME_VALIDITY 0x00000400 #define CRYPT_ACCUMULATIVE_TIMEOUT 0x00000800 +#ifdef __REACTOS__ typedef BOOL (WINAPI *PFN_CRYPT_CANCEL_RETRIEVAL)( _In_ DWORD dwFlags, _Inout_opt_ void *pvArg); +#else +typedef BOOL (WINAPI *PFN_CRYPT_CANCEL_RETRIEVAL)(DWORD dwFlags, void *pvArg); +#endif typedef struct _CERT_CRL_CONTEXT_PAIR { @@ -1726,7 +1979,7 @@ typedef const CERT_CRL_CONTEXT_PAIR *PCCERT_CRL_CONTEXT_PAIR; #define ALG_TYPE_STREAM (4 << 9) #define ALG_TYPE_DH (5 << 9) #define ALG_TYPE_SECURECHANNEL (6 << 9) -#define ALG_TYPE_DH_EPHEM (7 << 9) /* FIXME: find the real TYPE name */ +#define ALG_TYPE_ECDH (7 << 9) /* SIDs */ #define ALG_SID_ANY (0) @@ -1760,13 +2013,13 @@ typedef const CERT_CRL_CONTEXT_PAIR *PCCERT_CRL_CONTEXT_PAIR; /* Fortezza */ #define ALG_SID_SKIPJACK 10 #define ALG_SID_TEK 11 -/* Diffie-Hellman SIDs */ +/* Diffie-Hellmans SIDs */ #define ALG_SID_DH_SANDF 1 #define ALG_SID_DH_EPHEM 2 #define ALG_SID_AGREED_KEY_ANY 3 #define ALG_SID_KEA 4 #define ALG_SID_ECDH 5 -#define ALG_SID_ECDH_EPHEM 6 /* FIXME: find the real SID name */ +#define ALG_SID_ECDH_EPHEM 6 /* RC2 SIDs */ #define ALG_SID_RC4 1 #define ALG_SID_RC2 2 @@ -1816,14 +2069,15 @@ typedef const CERT_CRL_CONTEXT_PAIR *PCCERT_CRL_CONTEXT_PAIR; #define CALG_RSA_SIGN (ALG_CLASS_SIGNATURE | ALG_TYPE_RSA | ALG_SID_RSA_ANY) #define CALG_DSS_SIGN (ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_DSS_ANY) #define CALG_NO_SIGN (ALG_CLASS_SIGNATURE | ALG_TYPE_ANY | ALG_SID_ANY) +#define CALG_ECDSA (ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_ECDSA) #define CALG_DH_SF (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH | ALG_SID_DH_SANDF) #define CALG_DH_EPHEM (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH | ALG_SID_DH_EPHEM) #define CALG_AGREEDKEY_ANY (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH | ALG_SID_AGREED_KEY_ANY) #define CALG_KEA_KEYX (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH | ALG_SID_KEA) #define CALG_HUGHES_MD5 (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_ANY | ALG_SID_MD5) -#define CALG_RSA_KEYX (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_RSA | ALG_SID_RSA_ANY) #define CALG_ECDH (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH | ALG_SID_ECDH) -#define CALG_ECDH_EPHEM (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_DH_EPHEM | ALG_SID_ECDH_EPHEM) /* FIXME: find the original TYPE and SID names */ +#define CALG_ECDH_EPHEM (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_ECDH | ALG_SID_ECDH_EPHEM) +#define CALG_RSA_KEYX (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_RSA | ALG_SID_RSA_ANY) #define CALG_ECMQV (ALG_CLASS_KEY_EXCHANGE | ALG_TYPE_ANY | ALG_SID_ECMQV) #define CALG_DES (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_DES) #define CALG_RC2 (ALG_CLASS_DATA_ENCRYPT | ALG_TYPE_BLOCK | ALG_SID_RC2) @@ -1847,7 +2101,8 @@ typedef const CERT_CRL_CONTEXT_PAIR *PCCERT_CRL_CONTEXT_PAIR; #define CALG_PCT1_MASTER (ALG_CLASS_MSG_ENCRYPT | ALG_TYPE_SECURECHANNEL | ALG_SID_PCT1_MASTER) #define CALG_SSL2_MASTER (ALG_CLASS_MSG_ENCRYPT | ALG_TYPE_SECURECHANNEL | ALG_SID_SSL2_MASTER) #define CALG_TLS1_MASTER (ALG_CLASS_MSG_ENCRYPT | ALG_TYPE_SECURECHANNEL | ALG_SID_TLS1_MASTER) -#define CALG_ECDSA (ALG_CLASS_SIGNATURE | ALG_TYPE_DSS | ALG_SID_ECDSA) + + /* Protocol Flags */ #define CRYPT_FLAG_PCT1 0x0001 #define CRYPT_FLAG_SSL2 0x0002 @@ -1858,11 +2113,7 @@ typedef const CERT_CRL_CONTEXT_PAIR *PCCERT_CRL_CONTEXT_PAIR; /* Provider names */ #define MS_DEF_PROV_A "Microsoft Base Cryptographic Provider v1.0" -#if defined(__GNUC__) -# define MS_DEF_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \ - 'B','a','s','e',' ','C','r','y','p','t','o','g','r','a','p','h','i','c',' ', \ - 'P','r','o','v','i','d','e','r',' ','v','1','.','0',0 } -#elif defined(_MSC_VER) +#if defined(_MSC_VER) || defined(__MINGW32__) # define MS_DEF_PROV_W L"Microsoft Base Cryptographic Provider v1.0" #else static const WCHAR MS_DEF_PROV_W[] = { 'M','i','c','r','o','s','o','f','t',' ', @@ -1872,11 +2123,7 @@ static const WCHAR MS_DEF_PROV_W[] = { 'M','i','c','r','o','s','o',' #define MS_DEF_PROV WINELIB_NAME_AW(MS_DEF_PROV_) #define MS_ENHANCED_PROV_A "Microsoft Enhanced Cryptographic Provider v1.0" -#if defined(__GNUC__) -# define MS_ENHANCED_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \ - 'E','n','h','a','n','c','e','d',' ','C','r','y','p','t','o','g','r','a','p','h','i','c',' ', \ - 'P','r','o','v','i','d','e','r',' ','v','1','.','0',0 } -#elif defined(_MSC_VER) +#if defined(_MSC_VER) || defined(__MINGW32__) # define MS_ENHANCED_PROV_W L"Microsoft Enhanced Cryptographic Provider v1.0" #else static const WCHAR MS_ENHANCED_PROV_W[] = { 'M','i','c','r','o','s','o','f','t',' ', @@ -1886,11 +2133,7 @@ static const WCHAR MS_ENHANCED_PROV_W[] = { 'M','i','c','r','o','s','o',' #define MS_ENHANCED_PROV WINELIB_NAME_AW(MS_ENHANCED_PROV_) #define MS_STRONG_PROV_A "Microsoft Strong Cryptographic Provider" -#if defined(__GNUC__) -# define MS_STRONG_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \ - 'S','t','r','o','n','g',' ','C','r','y','p','t','o','g','r','a','p','h','i','c',' ', \ - 'P','r','o','v','i','d','e','r',0 } -#elif defined(_MSC_VER) +#if defined(_MSC_VER) || defined(__MINGW32__) # define MS_STRONG_PROV_W L"Microsoft Strong Cryptographic Provider" #else static const WCHAR MS_STRONG_PROV_W[] = { 'M','i','c','r','o','s','o','f','t',' ', @@ -1900,11 +2143,7 @@ static const WCHAR MS_STRONG_PROV_W[] = { 'M','i','c','r','o','s','o',' #define MS_STRONG_PROV WINELIB_NAME_AW(MS_STRONG_PROV_) #define MS_DEF_RSA_SIG_PROV_A "Microsoft RSA Signature Cryptographic Provider" -#if defined(__GNUC__) -# define MS_DEF_RSA_SIG_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \ - 'R','S','A',' ','S','i','g','n','a','t','u','r','e',' ', \ - 'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 } -#elif defined(_MSC_VER) +#if defined(_MSC_VER) || defined(__MINGW32__) # define MS_DEF_RSA_SIG_PROV_W L"Microsoft RSA Signature Cryptographic Provider" #else static const WCHAR MS_DEF_RSA_SIG_PROV_W[] = { 'M','i','c','r','o','s','o','f','t',' ', @@ -1914,11 +2153,7 @@ static const WCHAR MS_DEF_RSA_SIG_PROV_W[] = { 'M','i','c','r','o','s','o',' #define MS_DEF_RSA_SIG_PROV WINELIB_NAME_AW(MS_DEF_RSA_SIG_PROV_) #define MS_DEF_RSA_SCHANNEL_PROV_A "Microsoft RSA SChannel Cryptographic Provider" -#if defined(__GNUC__) -# define MS_DEF_RSA_SCHANNEL_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \ - 'R','S','A',' ','S','C','h','a','n','n','e','l',' ', \ - 'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 } -#elif defined(_MSC_VER) +#if defined(_MSC_VER) || defined(__MINGW32__) # define MS_DEF_RSA_SCHANNEL_PROV_W L"Microsoft RSA SChannel Cryptographic Provider" #else static const WCHAR MS_DEF_RSA_SCHANNEL_PROV_W[] = { 'M','i','c','r','o','s','o','f','t',' ', @@ -1928,11 +2163,7 @@ static const WCHAR MS_DEF_RSA_SCHANNEL_PROV_W[] = { 'M','i','c','r','o','s','o', #define MS_DEF_RSA_SCHANNEL_PROV WINELIB_NAME_AW(MS_DEF_RSA_SCHANNEL_PROV_) #define MS_DEF_DSS_PROV_A "Microsoft Base DSS Cryptographic Provider" -#if defined(__GNUC__) -# define MS_DEF_DSS_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \ - 'B','a','s','e',' ','D','S','S',' ', \ - 'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 } -#elif defined(_MSC_VER) +#if defined(_MSC_VER) || defined(__MINGW32__) # define MS_DEF_DSS_PROV_W L"Microsoft Base DSS Cryptographic Provider" #else static const WCHAR MS_DEF_DSS_PROV_W[] = { 'M','i','c','r','o','s','o','f','t',' ', @@ -1942,12 +2173,7 @@ static const WCHAR MS_DEF_DSS_PROV_W[] = { 'M','i','c','r','o','s','o',' #define MS_DEF_DSS_PROV WINELIB_NAME_AW(MS_DEF_DSS_PROV_) #define MS_DEF_DSS_DH_PROV_A "Microsoft Base DSS and Diffie-Hellman Cryptographic Provider" -#if defined(__GNUC__) -# define MS_DEF_DSS_DH_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \ - 'B','a','s','e',' ','D','S','S',' ','a','n','d',' ', \ - 'D','i','f','f','i','e','-','H','e','l','l','m','a','n',' ', \ - 'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 } -#elif defined(_MSC_VER) +#if defined(_MSC_VER) || defined(__MINGW32__) # define MS_DEF_DSS_DH_PROV_W L"Microsoft Base DSS and Diffie-Hellman Cryptographic Provider" #else static const WCHAR MS_DEF_DSS_DH_PROV_W[] = { 'M','i','c','r','o','s','o','f','t',' ', @@ -1958,12 +2184,7 @@ static const WCHAR MS_DEF_DSS_DH_PROV_W[] = { 'M','i','c','r','o','s','o',' #define MS_DEF_DSS_DH_PROV WINELIB_NAME_AW(MS_DEF_DSS_DH_PROV_) #define MS_ENH_DSS_DH_PROV_A "Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider" -#if defined(__GNUC__) -# define MS_ENH_DSS_DH_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \ - 'E','n','h','a','n','c','e','d',' ','D','S','S',' ','a','n','d',' ', \ - 'D','i','f','f','i','e','-','H','e','l','l','m','a','n',' ', \ - 'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 } -#elif defined(_MSC_VER) +#if defined(_MSC_VER) || defined(__MINGW32__) # define MS_ENH_DSS_DH_PROV_W L"Microsoft Enhanced DSS and Diffie-Hellman Cryptographic Provider" #else static const WCHAR MS_ENH_DSS_DH_PROV_W[] = { 'M','i','c','r','o','s','o','f','t',' ', @@ -1974,11 +2195,7 @@ static const WCHAR MS_ENH_DSS_DH_PROV_W[] = { 'M','i','c','r','o','s','o',' #define MS_ENH_DSS_DH_PROV WINELIB_NAME_AW(MS_ENH_DSS_DH_PROV_) #define MS_DEF_DH_SCHANNEL_PROV_A "Microsoft DH SChannel Cryptographic Provider" -#if defined(__GNUC__) -# define MS_DEF_DH_SCHANNEL_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \ - 'D','H',' ','S','C','h','a','n','n','e','l',' ', \ - 'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 } -#elif defined(_MSC_VER) +#if defined(_MSC_VER) || defined(__MINGW32__) # define MS_DEF_DH_SCHANNEL_PROV_W L"Microsoft DH SChannel Cryptographic Provider" #else static const WCHAR MS_DEF_DH_SCHANNEL_PROV_W[] = { 'M','i','c','r','o','s','o','f','t',' ', @@ -1988,11 +2205,7 @@ static const WCHAR MS_DEF_DH_SCHANNEL_PROV_W[] = { 'M','i','c','r','o','s','o',' #define MS_DEF_DH_SCHANNEL_PROV WINELIB_NAME_AW(MS_DEF_DH_SCHANNEL_PROV_) #define MS_SCARD_PROV_A "Microsoft Base Smart Card Cryptographic Provider" -#if defined(__GNUC__) -# define MS_SCARD_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \ - 'B','a','s','e',' ','S','m','a','r','t',' ','C','a','r','d',' ', \ - 'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 } -#elif defined(_MSC_VER) +#if defined(_MSC_VER) || defined(__MINGW32__) # define MS_SCARD_PROV_W L"Microsoft Base Smart Card Cryptographic Provider" #else static const WCHAR MS_SCARD_PROV_W[] = { 'M','i','c','r','o','s','o','f','t',' ', @@ -2002,11 +2215,7 @@ static const WCHAR MS_SCARD_PROV_W[] = { 'M','i','c','r','o','s','o',' #define MS_SCARD_PROV WINELIB_NAME_AW(MS_SCARD_PROV_) #define MS_ENH_RSA_AES_PROV_A "Microsoft Enhanced RSA and AES Cryptographic Provider" -#if defined(__GNUC__) -# define MS_ENH_RSA_AES_PROV_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \ - 'E','n','h','a','n','c','e','d',' ','R','S','A',' ','a','n','d',' ','A','E','S',' ',\ - 'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',0 } -#elif defined(_MSC_VER) +#if defined(_MSC_VER) || defined(__MINGW32__) # define MS_ENH_RSA_AES_PROV_W L"Microsoft Enhanced RSA and AES Cryptographic Provider" #else static const WCHAR MS_ENH_RSA_AES_PROV_W[] = { 'M','i','c','r','o','s','o','f','t',' ', @@ -2016,12 +2225,7 @@ static const WCHAR MS_ENH_RSA_AES_PROV_W[] = { 'M','i','c','r','o','s' #define MS_ENH_RSA_AES_PROV WINELIB_NAME_AW(MS_ENH_RSA_AES_PROV_) #define MS_ENH_RSA_AES_PROV_XP_A "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)" -#if defined(__GNUC__) -# define MS_ENH_RSA_AES_PROV_XP_W (const WCHAR []){ 'M','i','c','r','o','s','o','f','t',' ', \ - 'E','n','h','a','n','c','e','d',' ','R','S','A',' ','a','n','d',' ','A','E','S',' ',\ - 'C','r','y','p','t','o','g','r','a','p','h','i','c',' ','P','r','o','v','i','d','e','r',' ',\ - '(','P','r','o','t','o','t','y','p','e',')',0 } -#elif defined(_MSC_VER) +#if defined(_MSC_VER) || defined(__MINGW32__) # define MS_ENH_RSA_AES_PROV_XP_W L"Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)" #else static const WCHAR MS_ENH_RSA_AES_PROV_XP_W[] = { 'M','i','c','r','o','s','o','f','t',' ', @@ -2192,7 +2396,7 @@ static const WCHAR MS_ENH_RSA_AES_PROV_XP_W[] = { 'M','i','c','r','o','s','o','f #define CRYPT_MODE_OFB 3 #define CRYPT_MODE_CFB 4 -#define CRYPT_ENCRYPT 0x0001 +#define CRYPT_ENCRYPT 0x0001 #define CRYPT_DECRYPT 0x0002 #define CRYPT_EXPORT 0x0004 #define CRYPT_READ 0x0008 @@ -2338,37 +2542,22 @@ static const WCHAR MS_ENH_RSA_AES_PROV_XP_W[] = { 'M','i','c','r','o','s','o','f #define CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE \ (CERT_SYSTEM_STORE_LOCAL_MACHINE_ENTERPRISE_ID << CERT_SYSTEM_STORE_LOCATION_SHIFT) -#if defined(__GNUC__) -#define CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH (const WCHAR[])\ - {'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t',\ - '\\','S','y','s','t','e','m','C','e','r','t','i','f','i','c','a','t','e','s',\ - 0 } -#define CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH (const WCHAR[])\ - {'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\',\ - 'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r',\ - 't','i','f','i','c','a','t','e','s',0 } -#elif defined(_MSC_VER) +#if defined(_MSC_VER) || defined(__MINGW32__) #define CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH \ L"Software\\Microsoft\\SystemCertificates" #define CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH \ L"Software\\Policies\\Microsoft\\SystemCertificates" #else -static const WCHAR CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH[] = +static const WCHAR CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH[] = {'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\', 'S','y','s','t','e','m','C','e','r','t','i','f','i','c','a','t','e','s',0 }; -static const WCHAR CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH[] = +static const WCHAR CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH[] = {'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\', 'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r', 't','i','f','i','c','a','t','e','s',0 }; #endif -#if defined(__GNUC__) -#define CERT_EFSBLOB_REGPATH (const WCHAR[])\ -{'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\',\ - 'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r',\ - 't','i','f','i','c','a','t','e','s','\\','E','F','S',0 } -#define CERT_EFSBLOB_VALUE_NAME (const WCHAR[]) {'E','F','S','B','l','o','b',0 } -#elif defined(_MSC_VER) +#if defined(_MSC_VER) || defined(__MINGW32__) #define CERT_EFSBLOB_REGPATH CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"\\EFS" #define CERT_EFSBLOB_VALUE_NAME L"EFSBlob" #else @@ -2376,16 +2565,10 @@ static const WCHAR CERT_EFSBLOB_REGPATH[] = {'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\', 'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r', 't','i','f','i','c','a','t','e','s','\\','E','F','S',0 }; -static const CERT_EFSBLOB_VALUE_NAME[] = { 'E','F','S','B','l','o','b',0 }; +static const WCHAR CERT_EFSBLOB_VALUE_NAME[] = { 'E','F','S','B','l','o','b',0 }; #endif -#if defined(__GNUC__) -#define CERT_PROT_ROOT_FLAGS_REGPATH (const WCHAR[])\ -{'\\','R','o','o','t','\\','P','r','o','t','e','c','t','e','d','R','o','o','t',\ - 's',0 } -#define CERT_PROT_ROOT_FLAGS_VALUE_NAME (const WCHAR[])\ -{'F','l','a','g','s',0 } -#elif defined(_MSC_VER) +#if defined(_MSC_VER) || defined(__MINGW32__) #define CERT_PROT_ROOT_FLAGS_REGPATH L"\\Root\\ProtectedRoots" #define CERT_PROT_ROOT_FLAGS_VALUE_NAME L"Flags" #else @@ -2402,13 +2585,7 @@ static const WCHAR CERT_PROT_ROOT_FLAGS_VALUE_NAME[] = {'F','l','a','g','s',0 }; #define CERT_PROT_ROOT_DISABLE_NT_AUTH_REQUIRED_FLAG 0x10 #define CERT_PROT_ROOT_DISABLE_NOT_DEFINED_NAME_CONSTRAINT_FLAG 0x20 -#if defined(__GNUC__) -#define CERT_TRUST_PUB_SAFER_GROUP_POLICY_REGPATH (const WCHAR[])\ -{'S','o','f','t','w','a','r','e','\\','P','o','l','i','c','i','e','s','\\',\ - 'M','i','c','r','o','s','o','f','t','\\','S','y','s','t','e','m','C','e','r',\ - 't','i','f','i','c','a','t','e','s','\\','T','r','u','s','t','e','d',\ - 'P','u','b','l','i','s','h','e','r','\\','S','a','f','e','r',0 } -#elif defined(_MSC_VER) +#if defined(_MSC_VER) || defined(__MINGW32__) #define CERT_TRUST_PUB_SAFER_GROUP_POLICY_REGPATH \ CERT_GROUP_POLICY_SYSTEM_STORE_REGPATH L"\\TrustedPublisher\\Safer" #else @@ -2419,15 +2596,7 @@ static const WCHAR CERT_TRUST_PUB_SAFER_GROUP_POLICY_REGPATH[] = 'P','u','b','l','i','s','h','e','r','\\','S','a','f','e','r',0 }; #endif -#if defined(__GNUC__) -#define CERT_TRUST_PUB_SAFER_LOCAL_MACHINE_REGPATH (const WCHAR[])\ -{'S','o','f','t','w','a','r','e','\\','M','i','c','r','o','s','o','f','t','\\',\ - 'S','y','s','t','e','m','C','e','r','t','i','f','i','c','a','t','e','s','\\',\ - 'T','r','u','s','t','e','d','P','u','b','l','i','s','h','e','r','\\',\ - 'S','a','f','e','r',0 } -#define CERT_TRUST_PUB_AUTHENTICODE_FLAGS_VALUE_NAME (const WCHAR[])\ -{'A','u','t','h','e','n','t','i','c','o','d','e','F','l','a','g','s',0 }; -#elif defined(_MSC_VER) +#if defined(_MSC_VER) || defined(__MINGW32__) #define CERT_TRUST_PUB_SAFER_LOCAL_MACHINE_REGPATH \ CERT_LOCAL_MACHINE_SYSTEM_STORE_REGPATH L"\\TrustedPublisher\\Safer" #define CERT_TRUST_PUB_AUTHENTICODE_FLAGS_VALUE_NAME L"AuthenticodeFlags" @@ -2514,13 +2683,7 @@ static const WCHAR CERT_TRUST_PUB_AUTHENTICODE_FLAGS_VALUE_NAME[] = #define CRYPT_OID_REGPATH "Software\\Microsoft\\Cryptography\\OID" #define CRYPT_OID_REG_ENCODING_TYPE_PREFIX "EncodingType " -#if defined(__GNUC__) -# define CRYPT_OID_REG_DLL_VALUE_NAME (const WCHAR []){ 'D','l','l',0 } -# define CRYPT_OID_REG_FUNC_NAME_VALUE_NAME \ - (const WCHAR []){ 'F','u','n','c','N','a','m','e',0 } -# define CRYPT_OID_REG_FLAGS_VALUE_NAME \ - (const WCHAR []){ 'C','r','y','p','t','F','l','a','g','s',0 } -#elif defined(_MSC_VER) +#if defined(_MSC_VER) || defined(__MINGW32__) # define CRYPT_OID_REG_DLL_VALUE_NAME L"Dll" # define CRYPT_OID_REG_FUNC_NAME_VALUE_NAME L"FuncName" # define CRYPT_OID_REG_FLAGS_VALUE_NAME L"CryptFlags" @@ -2586,23 +2749,7 @@ static const WCHAR CRYPT_OID_REG_FLAGS_VALUE_NAME[] = #define CERT_PHYSICAL_STORE_PREDEFINED_ENUM_FLAG 0x1 /* predefined store names */ -#if defined(__GNUC__) -# define CERT_PHYSICAL_STORE_DEFAULT_NAME (const WCHAR[])\ - {'.','D','e','f','a','u','l','t','0'} -# define CERT_PHYSICAL_STORE_GROUP_POLICY_NAME (const WCHAR[])\ - {'.','G','r','o','u','p','P','o','l','i','c','y',0} -# define CERT_PHYSICAL_STORE_LOCAL_MACHINE_NAME (const WCHAR[])\ - {'.','L','o','c','a','l','M','a','c','h','i','n','e',0} -# define CERT_PHYSICAL_STORE_DS_USER_CERTIFICATE_NAME (const WCHAR[])\ - {'.','U','s','e','r','C','e','r','t','i','f','i','c','a','t','e',0} -# define CERT_PHYSICAL_STORE_LOCAL_MACHINE_GROUP_POLICY_NAME (const WCHAR[])\ - {'.','L','o','c','a','l','M','a','c','h','i','n','e','G','r','o','u','p',\ - 'P','o','l','i','c','y',0} -# define CERT_PHYSICAL_STORE_ENTERPRISE_NAME (const WCHAR[])\ - {'.','E','n','t','e','r','p','r','i','s','e',0} -# define CERT_PHYSICAL_STORE_AUTH_ROOT_NAME (const WCHAR[])\ - {'.','A','u','t','h','R','o','o','t',0} -#elif defined(_MSC_VER) +#if defined(_MSC_VER) || defined(__MINGW32__) # define CERT_PHYSICAL_STORE_DEFAULT_NAME \ L".Default" # define CERT_PHYSICAL_STORE_GROUP_POLICY_NAME \ @@ -2618,7 +2765,7 @@ static const WCHAR CRYPT_OID_REG_FLAGS_VALUE_NAME[] = # define CERT_PHYSICAL_STORE_AUTH_ROOT_NAME \ L".AuthRoot" #else -static const WCHAR CERT_PHYSICAL_STORE_DEFAULT_NAME[] = +static const WCHAR CERT_PHYSICAL_STORE_DEFAULT_NAME[] = {'.','D','e','f','a','u','l','t','0'}; static const WCHAR CERT_PHYSICAL_STORE_GROUP_POLICY_NAME[] = {'.','G','r','o','u','p','P','o','l','i','c','y',0}; @@ -2701,7 +2848,7 @@ static const WCHAR CERT_PHYSICAL_STORE_AUTH_ROOT_NAME[] = #define CERT_SIGNATURE_HASH_PROP_ID 15 #define CERT_SMART_CARD_DATA_PROP_ID 16 #define CERT_EFS_PROP_ID 17 -#define CERT_FORTEZZA_DATA_PROP 18 +#define CERT_FORTEZZA_DATA_PROP_ID 18 #define CERT_ARCHIVED_PROP_ID 19 #define CERT_KEY_IDENTIFIER_PROP_ID 20 #define CERT_AUTO_ENROLL_PROP_ID 21 @@ -2993,6 +3140,12 @@ typedef struct _CTL_FIND_SUBJECT_PARA #define CRYPT_STRING_BASE64X509CRLHEADER 0x00000009 #define CRYPT_STRING_HEXADDR 0x0000000a #define CRYPT_STRING_HEXASCIIADDR 0x0000000b +#define CRYPT_STRING_HEXRAW 0x0000000c +#define CRYPT_STRING_BASE64URI 0x0000000d + +#define CRYPT_STRING_PERCENTESCAPE 0x08000000 +#define CRYPT_STRING_HASHDATA 0x10000000 +#define CRYPT_STRING_STRICT 0x20000000 #define CRYPT_STRING_NOCRLF 0x40000000 #define CRYPT_STRING_NOCR 0x80000000 @@ -3131,6 +3284,9 @@ typedef struct _CTL_FIND_SUBJECT_PARA #define szOID_INFOSEC_mosaicUpdatedSig "2.16.840.1.101.2.1.1.19" #define szOID_INFOSEC_mosaicKMandUpdSig "2.16.840.1.101.2.1.1.20" #define szOID_INFOSEC_mosaicUpdateInteg "2.16.840.1.101.2.1.1.21" +#define szOID_NIST_sha256 "2.16.840.1.101.3.4.2.1" +#define szOID_NIST_sha384 "2.16.840.1.101.3.4.2.2" +#define szOID_NIST_sha512 "2.16.840.1.101.3.4.2.3" #define szOID_COMMON_NAME "2.5.4.3" #define szOID_SUR_NAME "2.5.4.4" #define szOID_DEVICE_SERIAL_NUMBER "2.5.4.5" @@ -3348,10 +3504,6 @@ typedef struct _CTL_FIND_SUBJECT_PARA #define szOID_NETSCAPE_DATA_TYPE "2.16.840.1.113730.2" #define szOID_NETSCAPE_CERT_SEQUENCE "2.16.840.1.113730.2.5" -#define szOID_NIST_sha256 "2.16.840.1.101.3.4.2.1" -#define szOID_NIST_sha384 "2.16.840.1.101.3.4.2.2" -#define szOID_NIST_sha512 "2.16.840.1.101.3.4.2.3" - /* Bits for szOID_NETSCAPE_CERT_TYPE */ #define NETSCAPE_SSL_CLIENT_AUTH_CERT_TYPE 0x80 #define NETSCAPE_SSL_SERVER_AUTH_CERT_TYPE 0x40 @@ -3432,6 +3584,12 @@ typedef struct _CTL_FIND_SUBJECT_PARA #define CMC_ADD_EXTENSIONS ((LPCSTR)62) #define CMC_ADD_ATTRIBUTES ((LPCSTR)63) #define X509_CERTIFICATE_TEMPLATE ((LPCSTR)64) +#define OCSP_SIGNED_REQUEST ((LPCSTR)65) +#define OCSP_REQUEST ((LPCSTR)66) +#define OCSP_RESPONSE ((LPCSTR)67) +#define OCSP_BASIC_SIGNED_RESPONSE ((LPCSTR)68) +#define OCSP_BASIC_RESPONSE ((LPCSTR)69) +#define CNG_RSA_PUBLIC_KEY_BLOB ((LPCSTR)72) #define X509_OBJECT_IDENTIFIER ((LPCSTR)73) #define PKCS7_SIGNER_INFO ((LPCSTR)500) #define CMS_SIGNER_INFO ((LPCSTR)501) @@ -3503,8 +3661,10 @@ typedef struct _CTL_FIND_SUBJECT_PARA #define CERT_NAME_URL_TYPE 7 #define CERT_NAME_UPN_TYPE 8 -#define CERT_NAME_ISSUER_FLAG 0x00000001 -#define CERT_NAME_DISABLE_IE4_UTF8_FLAG 0x00010000 +#define CERT_NAME_ISSUER_FLAG 0x00000001 +#define CERT_NAME_SEARCH_ALL_NAMES_FLAG 0x00000002 +#define CERT_NAME_DISABLE_IE4_UTF8_FLAG 0x00010000 +#define CERT_NAME_STR_ENABLE_PUNYCODE_FLAG 0x00200000 /* CryptFormatObject flags */ #define CRYPT_FORMAT_STR_MULTI_LINE 0x0001 @@ -3638,12 +3798,17 @@ typedef struct _CERT_CHAIN_ENGINE_CONFIG /* message-related definitions */ +#ifdef __REACTOS__ typedef BOOL (WINAPI *PFN_CMSG_STREAM_OUTPUT)( _In_opt_ const void *pvArg, _In_reads_bytes_opt_(cbData) BYTE *pbData, _In_ DWORD cbData, _In_ BOOL fFinal); +#else +typedef BOOL (WINAPI *PFN_CMSG_STREAM_OUTPUT)(const void *pvArg, BYTE *pbData, + DWORD cbData, BOOL fFinal); +#endif #define CMSG_INDEFINITE_LENGTH 0xffffffff @@ -4045,8 +4210,8 @@ typedef struct _CMSG_CMS_RECIPIENT_INFO { #define CMSG_KEY_AGREE_VERSION CMSG_ENVELOPED_RECIPIENT_V3 #define CMSG_MAIL_LIST_VERSION CMSG_ENVELOPED_RECIPIENT_V4 -typedef void * (WINAPI *PFN_CMSG_ALLOC)(_In_ size_t cb); -typedef void (WINAPI *PFN_CMSG_FREE)(_Inout_ void *pv); +typedef void * (__WINE_ALLOC_SIZE(1) WINAPI *PFN_CMSG_ALLOC)(size_t cb); +typedef void (WINAPI *PFN_CMSG_FREE)(void *pv); typedef struct _CMSG_CONTENT_ENCRYPT_INFO { DWORD cbSize; @@ -4094,6 +4259,13 @@ typedef struct _CERT_STRONG_SIGN_PARA { } DUMMYUNIONNAME; } CERT_STRONG_SIGN_PARA, *PCERT_STRONG_SIGN_PARA; +#define CERT_STRONG_SIGN_SERIALIZED_INFO_CHOICE 1 +#define CERT_STRONG_SIGN_OID_INFO_CHOICE 2 + +#define CERT_STRONG_SIGN_ENABLE_CRL_CHECK 0x1 +#define CERT_STRONG_SIGN_ENABLE_OCSP_CHECK 0x2 + +#ifdef __REACTOS__ typedef BOOL (WINAPI *PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY)( _Inout_ PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo, @@ -4115,6 +4287,22 @@ typedef BOOL _In_ DWORD dwFlags, _Reserved_ void *pvReserved, _Out_ HCRYPTKEY *phContentEncryptKey); +#else +typedef BOOL (WINAPI *PFN_CMSG_GEN_CONTENT_ENCRYPT_KEY)( + PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo, DWORD dwFlags, + void *pvReserved); + +typedef BOOL (WINAPI *PFN_CMSG_EXPORT_KEY_TRANS)( + PCMSG_CONTENT_ENCRYPT_INFO pContentEncryptInfo, + PCMSG_KEY_TRANS_RECIPIENT_ENCODE_INFO pKeyTransEncodeInfo, + PCMSG_KEY_TRANS_ENCRYPT_INFO pKeyTransEncryptInfo, + DWORD dwFlags, void *pvReserved); + +typedef BOOL (WINAPI *PFN_CMSG_IMPORT_KEY_TRANS)( + PCRYPT_ALGORITHM_IDENTIFIER pContentEncryptionAlgorithm, + PCMSG_CTRL_KEY_TRANS_DECRYPT_PARA pKeyTransDecryptPara, DWORD dwFlags, + void *pvReserved, HCRYPTKEY *phContentEncryptKey); +#endif /* CryptMsgGetAndVerifySigner flags */ #define CMSG_TRUSTED_SIGNER_FLAG 0x1 @@ -4129,17 +4317,26 @@ typedef BOOL #define CMSG_ENCODE_HASHED_SUBJECT_IDENTIFIER_FLAG 0x2 /* PFXImportCertStore flags */ -#define CRYPT_USER_KEYSET 0x00001000 -#define PKCS12_IMPORT_RESERVED_MASK 0xffff0000 +#define CRYPT_USER_KEYSET 0x00001000 +#define PKCS12_IMPORT_SILENT 0x00000040 +#define PKCS12_PREFER_CNG_KSP 0x00000100 +#define PKCS12_ALWAYS_CNG_KSP 0x00000200 +#define PKCS12_ONLY_CERTIFICATES 0x00000400 +#define PKCS12_ONLY_NOT_ENCRYPTED_CERTIFICATES 0x00000800 +#define PKCS12_ALLOW_OVERWRITE_KEY 0x00004000 +#define PKCS12_NO_PERSIST_KEY 0x00008000 +#define PKCS12_VIRTUAL_ISOLATION_KEY 0x00010000 +#define PKCS12_IMPORT_RESERVED_MASK 0xffff0000 /* PFXExportCertStore flags */ #define REPORT_NO_PRIVATE_KEY 0x00000001 #define REPORT_NOT_ABLE_TO_EXPORT_PRIVATE_KEY 0x00000002 #define EXPORT_PRIVATE_KEYS 0x00000004 #define PKCS12_EXPORT_RESERVED_MASK 0xffff0000 -#define CRYPT_USERDATA 0x00000001 +#define CRYPT_USERDATA 0x00000001 /* function declarations */ +#ifdef __REACTOS__ /* advapi32.dll */ WINADVAPI BOOL @@ -6151,6 +6348,708 @@ FindCertsByIssuer( #ifdef _MSC_VER #pragma warning(pop) #endif +#else +/* advapi32.dll */ +WINADVAPI BOOL WINAPI CryptAcquireContextA(HCRYPTPROV *, LPCSTR, LPCSTR, DWORD, DWORD); +WINADVAPI BOOL WINAPI CryptAcquireContextW (HCRYPTPROV *, LPCWSTR, LPCWSTR, DWORD, DWORD); +#define CryptAcquireContext WINELIB_NAME_AW(CryptAcquireContext) +WINADVAPI BOOL WINAPI CryptGenRandom (HCRYPTPROV, DWORD, BYTE *); +WINADVAPI BOOL WINAPI CryptContextAddRef (HCRYPTPROV, DWORD *, DWORD); +WINADVAPI BOOL WINAPI CryptCreateHash (HCRYPTPROV, ALG_ID, HCRYPTKEY, DWORD, HCRYPTHASH *); +WINADVAPI BOOL WINAPI CryptDecrypt (HCRYPTKEY, HCRYPTHASH, BOOL, DWORD, BYTE *, DWORD *); +WINADVAPI BOOL WINAPI CryptDeriveKey (HCRYPTPROV, ALG_ID, HCRYPTHASH, DWORD, HCRYPTKEY *); +WINADVAPI BOOL WINAPI CryptDestroyHash (HCRYPTHASH); +WINADVAPI BOOL WINAPI CryptDestroyKey (HCRYPTKEY); +WINADVAPI BOOL WINAPI CryptDuplicateKey (HCRYPTKEY, DWORD *, DWORD, HCRYPTKEY *); +WINADVAPI BOOL WINAPI CryptDuplicateHash (HCRYPTHASH, DWORD *, DWORD, HCRYPTHASH *); +WINADVAPI BOOL WINAPI CryptEncrypt (HCRYPTKEY, HCRYPTHASH, BOOL, DWORD, BYTE *, DWORD *, DWORD); +WINADVAPI BOOL WINAPI CryptEnumProvidersA (DWORD, DWORD *, DWORD, DWORD *, LPSTR, DWORD *); +WINADVAPI BOOL WINAPI CryptEnumProvidersW (DWORD, DWORD *, DWORD, DWORD *, LPWSTR, DWORD *); +#define CryptEnumProviders WINELIB_NAME_AW(CryptEnumProviders) +WINADVAPI BOOL WINAPI CryptEnumProviderTypesA (DWORD, DWORD *, DWORD, DWORD *, LPSTR, DWORD *); +WINADVAPI BOOL WINAPI CryptEnumProviderTypesW (DWORD, DWORD *, DWORD, DWORD *, LPWSTR, DWORD *); +#define CryptEnumProviderTypes WINELIB_NAME_AW(CryptEnumProviderTypes) +WINADVAPI BOOL WINAPI CryptExportKey (HCRYPTKEY, HCRYPTKEY, DWORD, DWORD, BYTE *, DWORD *); +WINADVAPI BOOL WINAPI CryptGenKey (HCRYPTPROV, ALG_ID, DWORD, HCRYPTKEY *); +WINADVAPI BOOL WINAPI CryptGetKeyParam (HCRYPTKEY, DWORD, BYTE *, DWORD *, DWORD); +WINADVAPI BOOL WINAPI CryptGetHashParam (HCRYPTHASH, DWORD, BYTE *, DWORD *, DWORD); +WINADVAPI BOOL WINAPI CryptGetProvParam (HCRYPTPROV, DWORD, BYTE *, DWORD *, DWORD); +WINADVAPI BOOL WINAPI CryptGetDefaultProviderA (DWORD, DWORD *, DWORD, LPSTR, DWORD *); +WINADVAPI BOOL WINAPI CryptGetDefaultProviderW (DWORD, DWORD *, DWORD, LPWSTR, DWORD *); +#define CryptGetDefaultProvider WINELIB_NAME_AW(CryptGetDefaultProvider) +WINADVAPI BOOL WINAPI CryptGetUserKey (HCRYPTPROV, DWORD, HCRYPTKEY *); +WINADVAPI BOOL WINAPI CryptHashData (HCRYPTHASH, const BYTE *, DWORD, DWORD); +WINADVAPI BOOL WINAPI CryptHashSessionKey (HCRYPTHASH, HCRYPTKEY, DWORD); +WINADVAPI BOOL WINAPI CryptImportKey (HCRYPTPROV, const BYTE *, DWORD, HCRYPTKEY, DWORD, HCRYPTKEY *); +WINADVAPI BOOL WINAPI CryptReleaseContext (HCRYPTPROV, DWORD); +WINADVAPI BOOL WINAPI CryptSetHashParam (HCRYPTHASH, DWORD, const BYTE *, DWORD); +WINADVAPI BOOL WINAPI CryptSetKeyParam (HCRYPTKEY, DWORD, const BYTE *, DWORD); +WINADVAPI BOOL WINAPI CryptSetProviderA (LPCSTR, DWORD); +WINADVAPI BOOL WINAPI CryptSetProviderW (LPCWSTR, DWORD); +#define CryptSetProvider WINELIB_NAME_AW(CryptSetProvider) +WINADVAPI BOOL WINAPI CryptSetProviderExA (LPCSTR, DWORD, DWORD *, DWORD); +WINADVAPI BOOL WINAPI CryptSetProviderExW (LPCWSTR, DWORD, DWORD *, DWORD); +#define CryptSetProviderEx WINELIB_NAME_AW(CryptSetProviderEx) +WINADVAPI BOOL WINAPI CryptSetProvParam (HCRYPTPROV, DWORD, const BYTE *, DWORD); +WINADVAPI BOOL WINAPI CryptSignHashA (HCRYPTHASH, DWORD, LPCSTR, DWORD, BYTE *, DWORD *); +WINADVAPI BOOL WINAPI CryptSignHashW (HCRYPTHASH, DWORD, LPCWSTR, DWORD, BYTE *, DWORD *); +#define CryptSignHash WINELIB_NAME_AW(CryptSignHash) +WINADVAPI BOOL WINAPI CryptVerifySignatureA (HCRYPTHASH, const BYTE *, DWORD, HCRYPTKEY, LPCSTR, DWORD); +WINADVAPI BOOL WINAPI CryptVerifySignatureW (HCRYPTHASH, const BYTE *, DWORD, HCRYPTKEY, LPCWSTR, DWORD); +#define CryptVerifySignature WINELIB_NAME_AW(CryptVerifySignature) + +/* crypt32.dll functions */ +LPVOID WINAPI CryptMemAlloc(_In_ ULONG cbSize) __WINE_ALLOC_SIZE(1); +LPVOID WINAPI CryptMemRealloc(_In_opt_ LPVOID pv, _In_ ULONG cbSize) __WINE_ALLOC_SIZE(2); +VOID WINAPI CryptMemFree(_In_opt_ LPVOID pv); +WINCRYPT32API VOID WINAPI CryptMemFree(LPVOID pv); +WINCRYPT32API LPVOID WINAPI CryptMemAlloc(ULONG cbSize) __WINE_ALLOC_SIZE(1) __WINE_DEALLOC(CryptMemFree) __WINE_MALLOC; +WINCRYPT32API LPVOID WINAPI CryptMemRealloc(LPVOID pv, ULONG cbSize) __WINE_ALLOC_SIZE(2) __WINE_DEALLOC(CryptMemFree); + +WINCRYPT32API BOOL WINAPI CryptBinaryToStringA(const BYTE *pbBinary, + DWORD cbBinary, DWORD dwFlags, LPSTR pszString, DWORD *pcchString); +WINCRYPT32API BOOL WINAPI CryptBinaryToStringW(const BYTE *pbBinary, + DWORD cbBinary, DWORD dwFlags, LPWSTR pszString, DWORD *pcchString); +#define CryptBinaryToString WINELIB_NAME_AW(CryptBinaryToString) + +WINCRYPT32API BOOL WINAPI CryptStringToBinaryA(LPCSTR pszString, + DWORD cchString, DWORD dwFlags, BYTE *pbBinary, DWORD *pcbBinary, + DWORD *pdwSkip, DWORD *pdwFlags); +WINCRYPT32API BOOL WINAPI CryptStringToBinaryW(LPCWSTR pszString, + DWORD cchString, DWORD dwFlags, BYTE *pbBinary, DWORD *pcbBinary, + DWORD *pdwSkip, DWORD *pdwFlags); +#define CryptStringToBinary WINELIB_NAME_AW(CryptStringToBinary) + +WINCRYPT32API BOOL WINAPI CryptCreateAsyncHandle(DWORD dwFlags, PHCRYPTASYNC phAsync); +WINCRYPT32API BOOL WINAPI CryptSetAsyncParam(HCRYPTASYNC hAsync, LPSTR pszParamOid, + LPVOID pvParam, PFN_CRYPT_ASYNC_PARAM_FREE_FUNC pfnFree); +WINCRYPT32API BOOL WINAPI CryptGetAsyncParam(HCRYPTASYNC hAsync, LPSTR pszParamOid, + LPVOID *ppvParam, PFN_CRYPT_ASYNC_PARAM_FREE_FUNC *ppfnFree); +WINCRYPT32API BOOL WINAPI CryptCloseAsyncHandle(HCRYPTASYNC hAsync); + +WINCRYPT32API BOOL WINAPI CryptRegisterDefaultOIDFunction(DWORD,LPCSTR,DWORD,LPCWSTR); +WINCRYPT32API BOOL WINAPI CryptRegisterOIDFunction(DWORD,LPCSTR,LPCSTR,LPCWSTR,LPCSTR); +WINCRYPT32API BOOL WINAPI CryptGetOIDFunctionValue(DWORD dwEncodingType, LPCSTR pszFuncName, + LPCSTR pszOID, LPCWSTR szValueName, DWORD *pdwValueType, + BYTE *pbValueData, DWORD *pcbValueData); +WINCRYPT32API BOOL WINAPI CryptSetOIDFunctionValue(DWORD dwEncodingType, LPCSTR pszFuncName, + LPCSTR pszOID, LPCWSTR pwszValueName, DWORD dwValueType, + const BYTE *pbValueData, DWORD cbValueData); +WINCRYPT32API BOOL WINAPI CryptUnregisterDefaultOIDFunction(DWORD,LPCSTR,LPCWSTR); +WINCRYPT32API BOOL WINAPI CryptUnregisterOIDFunction(DWORD,LPCSTR,LPCSTR); +WINCRYPT32API BOOL WINAPI CryptEnumOIDFunction(DWORD dwEncodingType, LPCSTR pszFuncName, + LPCSTR pszOID, DWORD dwFlags, void *pvArg, + PFN_CRYPT_ENUM_OID_FUNC pfnEnumOIDFunc); +WINCRYPT32API HCRYPTOIDFUNCSET WINAPI CryptInitOIDFunctionSet(LPCSTR,DWORD); +WINCRYPT32API BOOL WINAPI CryptGetDefaultOIDDllList(HCRYPTOIDFUNCSET hFuncSet, + DWORD dwEncodingType, LPWSTR pwszDllList, DWORD *pcchDllList); +WINCRYPT32API BOOL WINAPI CryptGetDefaultOIDFunctionAddress(HCRYPTOIDFUNCSET hFuncSet, + DWORD dwEncodingType, LPCWSTR pwszDll, DWORD dwFlags, void **ppvFuncAddr, + HCRYPTOIDFUNCADDR *phFuncAddr); +WINCRYPT32API BOOL WINAPI CryptGetOIDFunctionAddress(HCRYPTOIDFUNCSET hFuncSet, + DWORD dwEncodingType, LPCSTR pszOID, DWORD dwFlags, void **ppvFuncAddr, + HCRYPTOIDFUNCADDR *phFuncAddr); +WINCRYPT32API BOOL WINAPI CryptFreeOIDFunctionAddress(HCRYPTOIDFUNCADDR hFuncAddr, + DWORD dwFlags); +WINCRYPT32API BOOL WINAPI CryptInstallOIDFunctionAddress(HMODULE hModule, + DWORD dwEncodingType, LPCSTR pszFuncName, DWORD cFuncEntry, + const CRYPT_OID_FUNC_ENTRY rgFuncEntry[], DWORD dwFlags); +WINCRYPT32API BOOL WINAPI CryptInstallDefaultContext(HCRYPTPROV hCryptProv, + DWORD dwDefaultType, const void *pvDefaultPara, DWORD dwFlags, + void *pvReserved, HCRYPTDEFAULTCONTEXT *phDefaultContext); +WINCRYPT32API BOOL WINAPI CryptUninstallDefaultContext(HCRYPTDEFAULTCONTEXT hDefaultContext, + DWORD dwFlags, void *pvReserved); + +WINCRYPT32API BOOL WINAPI CryptEnumOIDInfo(DWORD dwGroupId, DWORD dwFlags, void *pvArg, + PFN_CRYPT_ENUM_OID_INFO pfnEnumOIDInfo); +WINCRYPT32API PCCRYPT_OID_INFO WINAPI CryptFindOIDInfo(DWORD dwKeyType, void *pvKey, + DWORD dwGroupId); +WINCRYPT32API BOOL WINAPI CryptRegisterOIDInfo(PCCRYPT_OID_INFO pInfo, DWORD dwFlags); +WINCRYPT32API BOOL WINAPI CryptUnregisterOIDInfo(PCCRYPT_OID_INFO pInfo); + +WINCRYPT32API LPCWSTR WINAPI CryptFindLocalizedName(LPCWSTR pwszCryptName); + +WINCRYPT32API LPCSTR WINAPI CertAlgIdToOID(DWORD dwAlgId); +WINCRYPT32API DWORD WINAPI CertOIDToAlgId(LPCSTR pszObjId); + +/* cert store functions */ +WINCRYPT32API HCERTSTORE WINAPI CertOpenStore(LPCSTR lpszStoreProvider, DWORD dwEncodingType, + HCRYPTPROV_LEGACY hCryptProv, DWORD dwFlags, const void *pvPara); + +WINCRYPT32API HCERTSTORE WINAPI CertOpenSystemStoreA(HCRYPTPROV_LEGACY hProv, + LPCSTR szSubSystemProtocol); +WINCRYPT32API HCERTSTORE WINAPI CertOpenSystemStoreW(HCRYPTPROV_LEGACY hProv, + LPCWSTR szSubSystemProtocol); +#define CertOpenSystemStore WINELIB_NAME_AW(CertOpenSystemStore) + +WINCRYPT32API PCCERT_CONTEXT WINAPI CertEnumCertificatesInStore(HCERTSTORE hCertStore, + PCCERT_CONTEXT pPrev); + +WINCRYPT32API PCCRL_CONTEXT WINAPI CertEnumCRLsInStore(HCERTSTORE hCertStore, + PCCRL_CONTEXT pPrev); + +WINCRYPT32API PCCTL_CONTEXT WINAPI CertEnumCTLsInStore(HCERTSTORE hCertStore, + PCCTL_CONTEXT pPrev); + +WINCRYPT32API BOOL WINAPI CertEnumSystemStoreLocation(DWORD dwFlags, void *pvArg, + PFN_CERT_ENUM_SYSTEM_STORE_LOCATION pfnEnum); + +WINCRYPT32API BOOL WINAPI CertEnumSystemStore(DWORD dwFlags, void *pvSystemStoreLocationPara, + void *pvArg, PFN_CERT_ENUM_SYSTEM_STORE pfnEnum); + +WINCRYPT32API BOOL WINAPI CertRegisterSystemStore(const void *store, DWORD flags, + CERT_SYSTEM_STORE_INFO *info, void *reserved); + +WINCRYPT32API BOOL WINAPI CertUnregisterSystemStore(const void *store, DWORD flags); + +WINCRYPT32API BOOL WINAPI CertEnumPhysicalStore(const void *pvSystemStore, DWORD dwFlags, + void *pvArg, PFN_CERT_ENUM_PHYSICAL_STORE pfnEnum); + +WINCRYPT32API BOOL WINAPI CertRegisterPhysicalStore(const void *pvSystemStore, DWORD dwFlags, + LPCWSTR pwszStoreName, PCERT_PHYSICAL_STORE_INFO pStoreInfo, void *pvReserved); + +WINCRYPT32API BOOL WINAPI CertUnregisterPhysicalStore(const void *pvSystemStore, DWORD dwFlags, + LPCWSTR pwszStoreName); + +WINCRYPT32API BOOL WINAPI CertSaveStore(HCERTSTORE hCertStore, DWORD dwMsgAndCertEncodingType, + DWORD dwSaveAs, DWORD dwSaveTo, void* pvSaveToPara, DWORD dwFlags); + +WINCRYPT32API BOOL WINAPI CertAddStoreToCollection(HCERTSTORE hCollectionStore, + HCERTSTORE hSiblingStore, DWORD dwUpdateFlags, DWORD dwPriority); + +WINCRYPT32API void WINAPI CertRemoveStoreFromCollection(HCERTSTORE hCollectionStore, + HCERTSTORE hSiblingStore); + +WINCRYPT32API BOOL WINAPI CertCreateCertificateChainEngine(PCERT_CHAIN_ENGINE_CONFIG pConfig, + HCERTCHAINENGINE *phChainEngine); + +WINCRYPT32API BOOL WINAPI CertResyncCertificateChainEngine(HCERTCHAINENGINE hChainEngine); + +WINCRYPT32API VOID WINAPI CertFreeCertificateChainEngine(HCERTCHAINENGINE hChainEngine); + +WINCRYPT32API BOOL WINAPI CertGetCertificateChain(HCERTCHAINENGINE hChainEngine, + PCCERT_CONTEXT pCertContext, LPFILETIME pTime, HCERTSTORE hAdditionalStore, + PCERT_CHAIN_PARA pChainPara, DWORD dwFlags, LPVOID pvReserved, + PCCERT_CHAIN_CONTEXT *ppChainContext); + +WINCRYPT32API PCCERT_CHAIN_CONTEXT WINAPI CertDuplicateCertificateChain( + PCCERT_CHAIN_CONTEXT pChainContext); + +WINCRYPT32API VOID WINAPI CertFreeCertificateChain(PCCERT_CHAIN_CONTEXT pChainContext); + +WINCRYPT32API PCCERT_CHAIN_CONTEXT WINAPI CertFindChainInStore(HCERTSTORE hCertStore, + DWORD dwCertEncodingType, DWORD dwFindFlags, DWORD dwFindType, + const void *pvFindPara, PCCERT_CHAIN_CONTEXT pPrevChainContext); + +WINCRYPT32API BOOL WINAPI CertVerifyCertificateChainPolicy(LPCSTR szPolicyOID, + PCCERT_CHAIN_CONTEXT pChainContext, PCERT_CHAIN_POLICY_PARA pPolicyPara, + PCERT_CHAIN_POLICY_STATUS pPolicyStatus); + +WINCRYPT32API DWORD WINAPI CertEnumCertificateContextProperties(PCCERT_CONTEXT pCertContext, + DWORD dwPropId); + +WINCRYPT32API BOOL WINAPI CertGetCertificateContextProperty(PCCERT_CONTEXT pCertContext, + DWORD dwPropId, void *pvData, DWORD *pcbData); + +WINCRYPT32API BOOL WINAPI CertSetCertificateContextProperty(PCCERT_CONTEXT pCertContext, + DWORD dwPropId, DWORD dwFlags, const void *pvData); + +WINCRYPT32API DWORD WINAPI CertEnumCRLContextProperties(PCCRL_CONTEXT pCRLContext, + DWORD dwPropId); + +WINCRYPT32API BOOL WINAPI CertGetCRLContextProperty(PCCRL_CONTEXT pCRLContext, + DWORD dwPropId, void *pvData, DWORD *pcbData); + +WINCRYPT32API BOOL WINAPI CertSetCRLContextProperty(PCCRL_CONTEXT pCRLContext, + DWORD dwPropId, DWORD dwFlags, const void *pvData); + +WINCRYPT32API DWORD WINAPI CertEnumCTLContextProperties(PCCTL_CONTEXT pCTLContext, + DWORD dwPropId); + +WINCRYPT32API BOOL WINAPI CertEnumSubjectInSortedCTL(PCCTL_CONTEXT pCTLContext, + void **ppvNextSubject, PCRYPT_DER_BLOB pSubjectIdentifier, + PCRYPT_DER_BLOB pEncodedAttributes); + +WINCRYPT32API BOOL WINAPI CertGetCTLContextProperty(PCCTL_CONTEXT pCTLContext, + DWORD dwPropId, void *pvData, DWORD *pcbData); + +WINCRYPT32API BOOL WINAPI CertSetCTLContextProperty(PCCTL_CONTEXT pCTLContext, + DWORD dwPropId, DWORD dwFlags, const void *pvData); + +WINCRYPT32API BOOL WINAPI CertGetStoreProperty(HCERTSTORE hCertStore, DWORD dwPropId, + void *pvData, DWORD *pcbData); + +WINCRYPT32API BOOL WINAPI CertSetStoreProperty(HCERTSTORE hCertStore, DWORD dwPropId, + DWORD dwFlags, const void *pvData); + +WINCRYPT32API BOOL WINAPI CertControlStore(HCERTSTORE hCertStore, DWORD dwFlags, + DWORD dwCtrlType, void const *pvCtrlPara); + +WINCRYPT32API HCERTSTORE WINAPI CertDuplicateStore(HCERTSTORE hCertStore); + +WINCRYPT32API BOOL WINAPI CertCloseStore( HCERTSTORE hCertStore, DWORD dwFlags ); + +WINCRYPT32API BOOL WINAPI CertFreeCertificateContext( PCCERT_CONTEXT pCertContext ); + +WINCRYPT32API BOOL WINAPI CertFreeCRLContext( PCCRL_CONTEXT pCrlContext ); + +WINCRYPT32API BOOL WINAPI CertFreeCTLContext( PCCTL_CONTEXT pCtlContext ); + +WINCRYPT32API BOOL WINAPI CertAddCertificateContextToStore(HCERTSTORE hCertStore, + PCCERT_CONTEXT pCertContext, DWORD dwAddDisposition, + PCCERT_CONTEXT *ppStoreContext); + +WINCRYPT32API BOOL WINAPI CertAddCRLContextToStore( HCERTSTORE hCertStore, + PCCRL_CONTEXT pCrlContext, DWORD dwAddDisposition, + PCCRL_CONTEXT *ppStoreContext ); + +WINCRYPT32API BOOL WINAPI CertAddCTLContextToStore( HCERTSTORE hCertStore, + PCCTL_CONTEXT pCtlContext, DWORD dwAddDisposition, + PCCTL_CONTEXT *ppStoreContext ); + +WINCRYPT32API BOOL WINAPI CertAddCertificateLinkToStore(HCERTSTORE hCertStore, + PCCERT_CONTEXT pCertContext, DWORD dwAddDisposition, + PCCERT_CONTEXT *ppStoreContext); + +WINCRYPT32API BOOL WINAPI CertAddCRLLinkToStore(HCERTSTORE hCertStore, + PCCRL_CONTEXT pCrlContext, DWORD dwAddDisposition, + PCCRL_CONTEXT *ppStoreContext); + +WINCRYPT32API BOOL WINAPI CertAddCTLLinkToStore(HCERTSTORE hCertStore, + PCCTL_CONTEXT pCtlContext, DWORD dwAddDisposition, + PCCTL_CONTEXT *ppStoreContext); + +WINCRYPT32API BOOL WINAPI CertAddEncodedCertificateToStore(HCERTSTORE hCertStore, + DWORD dwCertEncodingType, const BYTE *pbCertEncoded, DWORD cbCertEncoded, + DWORD dwAddDisposition, PCCERT_CONTEXT *ppCertContext); + +WINCRYPT32API BOOL WINAPI CertAddEncodedCertificateToSystemStoreA(LPCSTR pszCertStoreName, + const BYTE *pbCertEncoded, DWORD cbCertEncoded); +WINCRYPT32API BOOL WINAPI CertAddEncodedCertificateToSystemStoreW(LPCWSTR pszCertStoreName, + const BYTE *pbCertEncoded, DWORD cbCertEncoded); +#define CertAddEncodedCertificateToSystemStore \ + WINELIB_NAME_AW(CertAddEncodedCertificateToSystemStore) + +WINCRYPT32API BOOL WINAPI CertAddEncodedCRLToStore(HCERTSTORE hCertStore, + DWORD dwCertEncodingType, const BYTE *pbCrlEncoded, DWORD cbCrlEncoded, + DWORD dwAddDisposition, PCCRL_CONTEXT *ppCrlContext); + +WINCRYPT32API BOOL WINAPI CertAddEncodedCTLToStore(HCERTSTORE hCertStore, + DWORD dwMsgAndCertEncodingType, const BYTE *pbCtlEncoded, DWORD cbCtlEncoded, + DWORD dwAddDisposition, PCCTL_CONTEXT *ppCtlContext); + +WINCRYPT32API BOOL WINAPI CertAddSerializedElementToStore(HCERTSTORE hCertStore, + const BYTE *pbElement, DWORD cbElement, DWORD dwAddDisposition, DWORD dwFlags, + DWORD dwContextTypeFlags, DWORD *pdwContentType, const void **ppvContext); + +WINCRYPT32API BOOL WINAPI CertCompareCertificate(DWORD dwCertEncodingType, + PCERT_INFO pCertId1, PCERT_INFO pCertId2); +WINCRYPT32API BOOL WINAPI CertCompareCertificateName(DWORD dwCertEncodingType, + PCERT_NAME_BLOB pCertName1, PCERT_NAME_BLOB pCertName2); +WINCRYPT32API BOOL WINAPI CertCompareIntegerBlob(PCRYPT_INTEGER_BLOB pInt1, + PCRYPT_INTEGER_BLOB pInt2); +WINCRYPT32API BOOL WINAPI CertComparePublicKeyInfo(DWORD dwCertEncodingType, + PCERT_PUBLIC_KEY_INFO pPublicKey1, PCERT_PUBLIC_KEY_INFO pPublicKey2); +WINCRYPT32API DWORD WINAPI CertGetPublicKeyLength(DWORD dwCertEncodingType, + PCERT_PUBLIC_KEY_INFO pPublicKey); + +WINCRYPT32API const void * WINAPI CertCreateContext(DWORD dwContextType, DWORD dwEncodingType, + const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, + PCERT_CREATE_CONTEXT_PARA pCreatePara); + +WINCRYPT32API PCCERT_CONTEXT WINAPI CertCreateCertificateContext(DWORD dwCertEncodingType, + const BYTE *pbCertEncoded, DWORD cbCertEncoded); + +WINCRYPT32API PCCRL_CONTEXT WINAPI CertCreateCRLContext( DWORD dwCertEncodingType, + const BYTE* pbCrlEncoded, DWORD cbCrlEncoded); + +WINCRYPT32API PCCTL_CONTEXT WINAPI CertCreateCTLContext(DWORD dwMsgAndCertEncodingType, + const BYTE *pbCtlEncoded, DWORD cbCtlEncoded); + +WINCRYPT32API PCCERT_CONTEXT WINAPI CertCreateSelfSignCertificate(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hProv, + PCERT_NAME_BLOB pSubjectIssuerBlob, DWORD dwFlags, + PCRYPT_KEY_PROV_INFO pKeyProvInfo, + PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, PSYSTEMTIME pStartTime, + PSYSTEMTIME pEndTime, PCERT_EXTENSIONS pExtensions); + +WINCRYPT32API BOOL WINAPI CertDeleteCertificateFromStore(PCCERT_CONTEXT pCertContext); + +WINCRYPT32API BOOL WINAPI CertDeleteCRLFromStore(PCCRL_CONTEXT pCrlContext); + +WINCRYPT32API BOOL WINAPI CertDeleteCTLFromStore(PCCTL_CONTEXT pCtlContext); + +WINCRYPT32API PCCERT_CONTEXT WINAPI CertDuplicateCertificateContext( + PCCERT_CONTEXT pCertContext); + +WINCRYPT32API PCCRL_CONTEXT WINAPI CertDuplicateCRLContext(PCCRL_CONTEXT pCrlContext); + +WINCRYPT32API PCCTL_CONTEXT WINAPI CertDuplicateCTLContext(PCCTL_CONTEXT pCtlContext); + +WINCRYPT32API PCCERT_CONTEXT WINAPI CertFindCertificateInStore( HCERTSTORE hCertStore, + DWORD dwCertEncodingType, DWORD dwFindFlags, DWORD dwFindType, + const void *pvFindPara, PCCERT_CONTEXT pPrevCertContext ); + +WINCRYPT32API PCCRL_CONTEXT WINAPI CertFindCRLInStore(HCERTSTORE hCertStore, + DWORD dwCertEncodingType, DWORD dwFindFlags, DWORD dwFindType, + const void *pvFindPara, PCCRL_CONTEXT pPrevCrlContext); + +WINCRYPT32API PCCTL_CONTEXT WINAPI CertFindCTLInStore(HCERTSTORE hCertStore, + DWORD dwCertEncodingType, DWORD dwFindFlags, DWORD dwFindType, + const void *pvFindPara, PCCTL_CONTEXT pPrevCtlContext); + +WINCRYPT32API PCCERT_CONTEXT WINAPI CertGetIssuerCertificateFromStore(HCERTSTORE hCertStore, + PCCERT_CONTEXT pSubjectContext, PCCERT_CONTEXT pPrevIssuerContext, + DWORD *pdwFlags); + +WINCRYPT32API PCCERT_CONTEXT WINAPI CertGetSubjectCertificateFromStore(HCERTSTORE hCertStore, + DWORD dwCertEncodingType, PCERT_INFO pCertId); + +WINCRYPT32API PCCRL_CONTEXT WINAPI CertGetCRLFromStore(HCERTSTORE hCertStore, + PCCERT_CONTEXT pIssuerContext, PCCRL_CONTEXT pPrevCrlContext, DWORD *pdwFlags); + +WINCRYPT32API BOOL WINAPI CertSerializeCertificateStoreElement(PCCERT_CONTEXT pCertContext, + DWORD dwFlags, BYTE *pbElement, DWORD *pcbElement); + +WINCRYPT32API BOOL WINAPI CertSerializeCRLStoreElement(PCCRL_CONTEXT pCrlContext, + DWORD dwFlags, BYTE *pbElement, DWORD *pcbElement); + +WINCRYPT32API BOOL WINAPI CertSerializeCTLStoreElement(PCCTL_CONTEXT pCtlContext, + DWORD dwFlags, BYTE *pbElement, DWORD *pcbElement); + +WINCRYPT32API BOOL WINAPI CertGetIntendedKeyUsage(DWORD dwCertEncodingType, + PCERT_INFO pCertInfo, BYTE *pbKeyUsage, DWORD cbKeyUsage); + +WINCRYPT32API BOOL WINAPI CertGetEnhancedKeyUsage(PCCERT_CONTEXT pCertContext, DWORD dwFlags, + PCERT_ENHKEY_USAGE pUsage, DWORD *pcbUsage); +WINCRYPT32API BOOL WINAPI CertSetEnhancedKeyUsage(PCCERT_CONTEXT pCertContext, + PCERT_ENHKEY_USAGE pUsage); +WINCRYPT32API BOOL WINAPI CertAddEnhancedKeyUsageIdentifier(PCCERT_CONTEXT pCertContext, + LPCSTR pszUsageIdentifier); +WINCRYPT32API BOOL WINAPI CertRemoveEnhancedKeyUsageIdentifier(PCCERT_CONTEXT pCertContext, + LPCSTR pszUsageIdentifier); +WINCRYPT32API BOOL WINAPI CertGetValidUsages(DWORD cCerts, PCCERT_CONTEXT *rghCerts, + int *cNumOIDs, LPSTR *rghOIDs, DWORD *pcbOIDs); + +WINCRYPT32API BOOL WINAPI CryptEncodeObject(DWORD dwCertEncodingType, LPCSTR lpszStructType, + const void *pvStructInfo, BYTE *pbEncoded, DWORD *pcbEncoded); +WINCRYPT32API BOOL WINAPI CryptEncodeObjectEx(DWORD dwCertEncodingType, LPCSTR lpszStructType, + const void *pvStructInfo, DWORD dwFlags, PCRYPT_ENCODE_PARA pEncodePara, + void *pvEncoded, DWORD *pcbEncoded); + +WINCRYPT32API BOOL WINAPI CryptDecodeObject(DWORD dwCertEncodingType, LPCSTR lpszStructType, + const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, void *pvStructInfo, + DWORD *pcbStructInfo); +WINCRYPT32API BOOL WINAPI CryptDecodeObjectEx(DWORD dwCertEncodingType, LPCSTR lpszStructType, + const BYTE *pbEncoded, DWORD cbEncoded, DWORD dwFlags, + PCRYPT_DECODE_PARA pDecodePara, void *pvStructInfo, DWORD *pcbStructInfo); + +WINCRYPT32API BOOL WINAPI CryptFormatObject(DWORD dwCertEncodingType, DWORD dwFormatType, + DWORD dwFormatStrType, void *pFormatStruct, LPCSTR lpszStructType, + const BYTE *pbEncoded, DWORD cbEncoded, void *pbFormat, DWORD *pcbFormat); + +WINCRYPT32API BOOL WINAPI CryptHashCertificate(HCRYPTPROV_LEGACY hCryptProv, ALG_ID Algid, + DWORD dwFlags, const BYTE *pbEncoded, DWORD cbEncoded, BYTE *pbComputedHash, + DWORD *pcbComputedHash); + +WINCRYPT32API BOOL WINAPI CryptHashCertificate2(LPCWSTR pwszCNGHashAlgid, DWORD dwFlags, + void *pvReserved, const BYTE *pbEncoded, DWORD cbEncoded, BYTE *pbComputedHash, + DWORD *pcbComputedHash); + +WINCRYPT32API BOOL WINAPI CryptHashPublicKeyInfo(HCRYPTPROV_LEGACY hCryptProv, ALG_ID Algid, + DWORD dwFlags, DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, + BYTE *pbComputedHash, DWORD *pcbComputedHash); + +WINCRYPT32API BOOL WINAPI CryptHashToBeSigned(HCRYPTPROV_LEGACY hCryptProv, DWORD dwCertEncodingType, + const BYTE *pbEncoded, DWORD cbEncoded, BYTE *pbComputedHash, + DWORD *pcbComputedHash); + +WINCRYPT32API BOOL WINAPI CryptQueryObject(DWORD dwObjectType, const void* pvObject, + DWORD dwExpectedContentTypeFlags, DWORD dwExpectedFormatTypeFlags, + DWORD dwFlags, DWORD* pdwMsgAndCertEncodingType, DWORD* pdwContentType, + DWORD* pdwFormatType, HCERTSTORE* phCertStore, HCRYPTMSG* phMsg, + const void** ppvContext); + +WINCRYPT32API BOOL WINAPI CryptSignCertificate(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProv, DWORD dwKeySpec, + DWORD dwCertEncodingType, const BYTE *pbEncodedToBeSigned, + DWORD cbEncodedToBeSigned, PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, + const void *pvHashAuxInfo, BYTE *pbSignature, DWORD *pcbSignature); + +WINCRYPT32API BOOL WINAPI CryptSignAndEncodeCertificate(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProv, + DWORD dwKeySpec, DWORD dwCertEncodingType, LPCSTR lpszStructType, + const void *pvStructInfo, PCRYPT_ALGORITHM_IDENTIFIER pSignatureAlgorithm, + const void *pvHashAuxInfo, BYTE *pbEncoded, DWORD *pcbEncoded); + +WINCRYPT32API BOOL WINAPI CryptVerifyCertificateSignature(HCRYPTPROV_LEGACY hCryptProv, + DWORD dwCertEncodingType, const BYTE *pbEncoded, DWORD cbEncoded, + PCERT_PUBLIC_KEY_INFO pPublicKey); + +WINCRYPT32API BOOL WINAPI CryptVerifyCertificateSignatureEx(HCRYPTPROV_LEGACY hCryptProv, + DWORD dwCertEncodingType, DWORD dwSubjectType, void *pvSubject, + DWORD dwIssuerType, void *pvIssuer, DWORD dwFlags, void *pvReserved); + +WINCRYPT32API PCRYPT_ATTRIBUTE WINAPI CertFindAttribute(LPCSTR pszObjId, DWORD cAttr, + CRYPT_ATTRIBUTE rgAttr[]); +WINCRYPT32API PCERT_EXTENSION WINAPI CertFindExtension(LPCSTR pszObjId, DWORD cExtensions, + CERT_EXTENSION rgExtensions[]); +WINCRYPT32API PCERT_RDN_ATTR WINAPI CertFindRDNAttr(LPCSTR pszObjId, PCERT_NAME_INFO pName); + +WINCRYPT32API BOOL WINAPI CertFindSubjectInSortedCTL(PCRYPT_DATA_BLOB pSubjectIdentifier, + PCCTL_CONTEXT pCtlContext, DWORD dwFlags, void *pvReserved, + PCRYPT_DER_BLOB pEncodedAttributes); + +WINCRYPT32API BOOL WINAPI CertIsRDNAttrsInCertificateName(DWORD dwCertEncodingType, + DWORD dwFlags, PCERT_NAME_BLOB pCertName, PCERT_RDN pRDN); + +WINCRYPT32API BOOL WINAPI CertIsValidCRLForCertificate(PCCERT_CONTEXT pCert, + PCCRL_CONTEXT pCrl, DWORD dwFlags, void *pvReserved); +WINCRYPT32API BOOL WINAPI CertFindCertificateInCRL(PCCERT_CONTEXT pCert, + PCCRL_CONTEXT pCrlContext, DWORD dwFlags, void *pvReserved, + PCRL_ENTRY *ppCrlEntry); +WINCRYPT32API BOOL WINAPI CertVerifyCRLRevocation(DWORD dwCertEncodingType, + PCERT_INFO pCertId, DWORD cCrlInfo, PCRL_INFO rgpCrlInfo[]); + +WINCRYPT32API BOOL WINAPI CertVerifySubjectCertificateContext(PCCERT_CONTEXT pSubject, + PCCERT_CONTEXT pIssuer, DWORD *pdwFlags); + +WINCRYPT32API LONG WINAPI CertVerifyCRLTimeValidity(LPFILETIME pTimeToVerify, + PCRL_INFO pCrlInfo); +WINCRYPT32API LONG WINAPI CertVerifyTimeValidity(LPFILETIME pTimeToVerify, + PCERT_INFO pCertInfo); +WINCRYPT32API BOOL WINAPI CertVerifyValidityNesting(PCERT_INFO pSubjectInfo, + PCERT_INFO pIssuerInfo); + +WINCRYPT32API BOOL WINAPI CertVerifyCTLUsage(DWORD dwEncodingType, DWORD dwSubjectType, + void *pvSubject, PCTL_USAGE pSubjectUsage, DWORD dwFlags, + PCTL_VERIFY_USAGE_PARA pVerifyUsagePara, + PCTL_VERIFY_USAGE_STATUS pVerifyUsageStatus); + +WINCRYPT32API BOOL WINAPI CertVerifyRevocation(DWORD dwEncodingType, DWORD dwRevType, + DWORD cContext, PVOID rgpvContext[], DWORD dwFlags, + PCERT_REVOCATION_PARA pRevPara, PCERT_REVOCATION_STATUS pRevStatus); + +WINCRYPT32API BOOL WINAPI CryptExportPublicKeyInfo(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProv, DWORD dwKeySpec, + DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, DWORD *pcbInfo); +WINCRYPT32API BOOL WINAPI CryptExportPublicKeyInfoEx(HCRYPTPROV_OR_NCRYPT_KEY_HANDLE hCryptProv, DWORD dwKeySpec, + DWORD dwCertEncodingType, LPSTR pszPublicKeyObjId, DWORD dwFlags, + void *pvAuxInfo, PCERT_PUBLIC_KEY_INFO pInfo, DWORD *pcbInfo); +WINCRYPT32API BOOL WINAPI CryptImportPublicKeyInfo(HCRYPTPROV hCryptProv, + DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, HCRYPTKEY *phKey); +WINCRYPT32API BOOL WINAPI CryptImportPublicKeyInfoEx(HCRYPTPROV hCryptProv, + DWORD dwCertEncodingType, PCERT_PUBLIC_KEY_INFO pInfo, ALG_ID aiKeyAlg, + DWORD dwFlags, void *pvAuxInfo, HCRYPTKEY *phKey); +WINCRYPT32API BOOL WINAPI CryptImportPublicKeyInfoEx2(DWORD dwCertEncodingType, + PCERT_PUBLIC_KEY_INFO pInfo, DWORD dwFlags, void *pvAuxInfo, + BCRYPT_KEY_HANDLE *phKey); + +WINCRYPT32API BOOL WINAPI CryptAcquireCertificatePrivateKey(PCCERT_CONTEXT pCert, + DWORD dwFlags, void *pvReserved, HCRYPTPROV_OR_NCRYPT_KEY_HANDLE *phCryptProv, DWORD *pdwKeySpec, + BOOL *pfCallerFreeProv); + +WINCRYPT32API BOOL WINAPI CryptFindCertificateKeyProvInfo(PCCERT_CONTEXT pCert, + DWORD dwFlags, void *pvReserved); + +WINCRYPT32API BOOL WINAPI CryptProtectData( DATA_BLOB* pDataIn, LPCWSTR szDataDescr, + DATA_BLOB* pOptionalEntropy, PVOID pvReserved, + CRYPTPROTECT_PROMPTSTRUCT* pPromptStruct, DWORD dwFlags, DATA_BLOB* pDataOut ); + +WINCRYPT32API BOOL WINAPI CryptUnprotectData( DATA_BLOB* pDataIn, LPWSTR* ppszDataDescr, + DATA_BLOB* pOptionalEntropy, PVOID pvReserved, + CRYPTPROTECT_PROMPTSTRUCT* pPromptStruct, DWORD dwFlags, DATA_BLOB* pDataOut ); + +WINCRYPT32API BOOL WINAPI CryptProtectMemory(void *pData, DWORD cbData, DWORD dwFlags); +WINCRYPT32API BOOL WINAPI CryptUnprotectMemory(void *pData, DWORD cbData, DWORD dwFlags); + +WINCRYPT32API DWORD WINAPI CertGetNameStringA(PCCERT_CONTEXT pCertContext, DWORD dwType, + DWORD dwFlags, void *pvTypePara, LPSTR pszNameString, DWORD cchNameString); +WINCRYPT32API DWORD WINAPI CertGetNameStringW(PCCERT_CONTEXT pCertContext, DWORD dwType, + DWORD dwFlags, void *pvTypePara, LPWSTR pszNameString, DWORD cchNameString); +#define CertGetNameString WINELIB_NAME_AW(CertGetNameString) + +WINCRYPT32API DWORD WINAPI CertRDNValueToStrA(DWORD dwValueType, PCERT_RDN_VALUE_BLOB pValue, + LPSTR psz, DWORD csz); +WINCRYPT32API DWORD WINAPI CertRDNValueToStrW(DWORD dwValueType, PCERT_RDN_VALUE_BLOB pValue, + LPWSTR psz, DWORD csz); +#define CertRDNValueToStr WINELIB_NAME_AW(CertRDNValueToStr) + +WINCRYPT32API DWORD WINAPI CertNameToStrA(DWORD dwCertEncodingType, PCERT_NAME_BLOB pName, + DWORD dwStrType, LPSTR psz, DWORD csz); +WINCRYPT32API DWORD WINAPI CertNameToStrW(DWORD dwCertEncodingType, PCERT_NAME_BLOB pName, + DWORD dwStrType, LPWSTR psz, DWORD csz); +#define CertNameToStr WINELIB_NAME_AW(CertNameToStr) + +WINCRYPT32API BOOL WINAPI CertStrToNameA(DWORD dwCertEncodingType, LPCSTR pszX500, + DWORD dwStrType, void *pvReserved, BYTE *pbEncoded, DWORD *pcbEncoded, + LPCSTR *ppszError); +WINCRYPT32API BOOL WINAPI CertStrToNameW(DWORD dwCertEncodingType, LPCWSTR pszX500, + DWORD dwStrType, void *pvReserved, BYTE *pbEncoded, DWORD *pcbEncoded, + LPCWSTR *ppszError); +#define CertStrToName WINELIB_NAME_AW(CertStrToName) + +WINCRYPT32API DWORD WINAPI CryptMsgCalculateEncodedLength(DWORD dwMsgEncodingType, + DWORD dwFlags, DWORD dwMsgType, const void *pvMsgEncodeInfo, + LPSTR pszInnerContentObjID, DWORD cbData); + +WINCRYPT32API BOOL WINAPI CryptMsgClose(HCRYPTMSG hCryptMsg); + +WINCRYPT32API BOOL WINAPI CryptMsgControl(HCRYPTMSG hCryptMsg, DWORD dwFlags, + DWORD dwCtrlType, const void *pvCtrlPara); + +WINCRYPT32API BOOL WINAPI CryptMsgCountersign(HCRYPTMSG hCryptMsg, DWORD dwIndex, + DWORD dwCountersigners, PCMSG_SIGNER_ENCODE_INFO rgCountersigners); + +WINCRYPT32API BOOL WINAPI CryptMsgCountersignEncoded(DWORD dwEncodingType, PBYTE pbSignerInfo, + DWORD cbSignerInfo, DWORD cCountersigners, + PCMSG_SIGNER_ENCODE_INFO rgCountersigners, PBYTE pbCountersignature, + PDWORD pcbCountersignature); + +WINCRYPT32API HCRYPTMSG WINAPI CryptMsgDuplicate(HCRYPTMSG hCryptMsg); + +WINCRYPT32API BOOL WINAPI CryptMsgEncodeAndSignCTL(DWORD dwMsgEncodingType, + PCTL_INFO pCtlInfo, PCMSG_SIGNED_ENCODE_INFO pSignInfo, DWORD dwFlags, + BYTE *pbEncoded, DWORD *pcbEncoded); + +WINCRYPT32API BOOL WINAPI CryptMsgGetAndVerifySigner(HCRYPTMSG hCryptMsg, DWORD cSignerStore, + HCERTSTORE *rghSignerStore, DWORD dwFlags, PCCERT_CONTEXT *ppSigner, + DWORD *pdwSignerIndex); + +WINCRYPT32API BOOL WINAPI CryptMsgGetParam(HCRYPTMSG hCryptMsg, DWORD dwParamType, + DWORD dwIndex, void *pvData, DWORD *pcbData); + +WINCRYPT32API HCRYPTMSG WINAPI CryptMsgOpenToDecode(DWORD dwMsgEncodingType, DWORD dwFlags, + DWORD dwMsgType, HCRYPTPROV_LEGACY hCryptProv, PCERT_INFO pRecipientInfo, + PCMSG_STREAM_INFO pStreamInfo); + +WINCRYPT32API HCRYPTMSG WINAPI CryptMsgOpenToEncode(DWORD dwMsgEncodingType, DWORD dwFlags, + DWORD dwMsgType, const void *pvMsgEncodeInfo, LPSTR pszInnerContentObjID, + PCMSG_STREAM_INFO pStreamInfo); + +WINCRYPT32API BOOL WINAPI CryptMsgSignCTL(DWORD dwMsgEncodingType, BYTE *pbCtlContent, + DWORD cbCtlContent, PCMSG_SIGNED_ENCODE_INFO pSignInfo, DWORD dwFlags, + BYTE *pbEncoded, DWORD *pcbEncoded); + +WINCRYPT32API BOOL WINAPI CryptMsgUpdate(HCRYPTMSG hCryptMsg, const BYTE *pbData, + DWORD cbData, BOOL fFinal); + +WINCRYPT32API BOOL WINAPI CryptMsgVerifyCountersignatureEncoded(HCRYPTPROV_LEGACY hCryptProv, + DWORD dwEncodingType, PBYTE pbSignerInfo, DWORD cbSignerInfo, + PBYTE pbSignerInfoCountersignature, DWORD cbSignerInfoCountersignature, + PCERT_INFO pciCountersigner); + +WINCRYPT32API BOOL WINAPI CryptMsgVerifyCountersignatureEncodedEx(HCRYPTPROV_LEGACY hCryptProv, + DWORD dwEncodingType, PBYTE pbSignerInfo, DWORD cbSignerInfo, + PBYTE pbSignerInfoCountersignature, DWORD cbSignerInfoCountersignature, + DWORD dwSignerType, void *pvSigner, DWORD dwFlags, void *pvReserved); + +WINCRYPT32API BOOL WINAPI CryptSignMessage(PCRYPT_SIGN_MESSAGE_PARA pSignPara, + BOOL fDetachedSignature, DWORD cToBeSigned, const BYTE *rgpbToBeSigned[], + DWORD rgcbToBeSigned[], BYTE *pbSignedBlob, DWORD *pcbSignedBlob); +WINCRYPT32API BOOL WINAPI CryptSignMessageWithKey(PCRYPT_KEY_SIGN_MESSAGE_PARA pSignPara, + const BYTE *pbToBeSigned, DWORD cbToBeSigned, BYTE *pbSignedBlob, + DWORD *pcbSignedBlob); + +WINCRYPT32API BOOL WINAPI CryptVerifyMessageSignature(PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara, + DWORD dwSignerIndex, const BYTE* pbSignedBlob, DWORD cbSignedBlob, + BYTE* pbDecoded, DWORD* pcbDecoded, PCCERT_CONTEXT* ppSignerCert); +WINCRYPT32API BOOL WINAPI CryptVerifyMessageSignatureWithKey( + PCRYPT_KEY_VERIFY_MESSAGE_PARA pVerifyPara, + PCERT_PUBLIC_KEY_INFO pPublicKeyInfo, const BYTE *pbSignedBlob, + DWORD cbSignedBlob, BYTE *pbDecoded, DWORD *pcbDecoded); + +WINCRYPT32API BOOL WINAPI CryptVerifyDetachedMessageSignature( + PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara, DWORD dwSignerIndex, + const BYTE *pbDetachedSignBlob, DWORD cbDetachedSignBlob, DWORD cToBeSigned, + const BYTE *rgpbToBeSigned[], DWORD rgcbToBeSigned[], + PCCERT_CONTEXT *ppSignerCert); +WINCRYPT32API LONG WINAPI CryptGetMessageSignerCount(DWORD dwMsgEncodingType, + const BYTE *pbSignedBlob, DWORD cbSignedBlob); + +WINCRYPT32API BOOL WINAPI CryptEncryptMessage(PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara, + DWORD cRecipientCert, PCCERT_CONTEXT rgpRecipientCert[], + const BYTE *pbToBeEncrypted, DWORD cbToBeEncrypted, BYTE *pbEncryptedBlob, + DWORD *pcbEncryptedBlob); +WINCRYPT32API BOOL WINAPI CryptDecryptMessage(PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara, + const BYTE *pbEncryptedBlob, DWORD cbEncryptedBlob, BYTE *pbDecrypted, + DWORD *pcbDecrypted, PCCERT_CONTEXT *ppXchgCert); + +WINCRYPT32API BOOL WINAPI CryptSignAndEncryptMessage(PCRYPT_SIGN_MESSAGE_PARA pSignPara, + PCRYPT_ENCRYPT_MESSAGE_PARA pEncryptPara, DWORD cRecipientCert, + PCCERT_CONTEXT rgpRecipientCert[], const BYTE *pbToBeSignedAndEncrypted, + DWORD cbToBeSignedAndEncrypted, BYTE *pbSignedAndEncryptedBlob, + DWORD *pcbSignedAndEncryptedBlob); +WINCRYPT32API BOOL WINAPI CryptDecryptAndVerifyMessageSignature( + PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara, + PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara, DWORD dwSignerIndex, + const BYTE *pbEncryptedBlob, DWORD cbEncryptedBlob, BYTE *pbDecrypted, + DWORD *pcbDecrypted, PCCERT_CONTEXT *ppXchgCert, PCCERT_CONTEXT *ppSignerCert); + +WINCRYPT32API HCERTSTORE WINAPI CryptGetMessageCertificates(DWORD dwMsgAndCertEncodingType, + HCRYPTPROV_LEGACY hCryptProv, DWORD dwFlags, const BYTE *pbSignedBlob, + DWORD cbSignedBlob); + +WINCRYPT32API BOOL WINAPI CryptDecodeMessage(DWORD dwMsgTypeFlags, + PCRYPT_DECRYPT_MESSAGE_PARA pDecryptPara, + PCRYPT_VERIFY_MESSAGE_PARA pVerifyPara, DWORD dwSignerIndex, + const BYTE *pbEncodedBlob, DWORD cbEncodedBlob, DWORD dwPrevInnerContentType, + DWORD *pdwMsgType, DWORD *pdwInnerContentType, BYTE *pbDecoded, + DWORD *pcbDecoded, PCCERT_CONTEXT *ppXchgCert, PCCERT_CONTEXT *ppSignerCert); + +WINCRYPT32API BOOL WINAPI CryptHashMessage(PCRYPT_HASH_MESSAGE_PARA pHashPara, + BOOL fDetachedHash, DWORD cToBeHashed, const BYTE *rgpbToBeHashed[], + DWORD rgcbToBeHashed[], BYTE *pbHashedBlob, DWORD *pcbHashedBlob, + BYTE *pbComputedHash, DWORD *pcbComputedHash); +WINCRYPT32API BOOL WINAPI CryptVerifyMessageHash(PCRYPT_HASH_MESSAGE_PARA pHashPara, + BYTE *pbHashedBlob, DWORD cbHashedBlob, BYTE *pbToBeHashed, + DWORD *pcbToBeHashed, BYTE *pbComputedHash, DWORD *pcbComputedHash); +WINCRYPT32API BOOL WINAPI CryptVerifyDetachedMessageHash(PCRYPT_HASH_MESSAGE_PARA pHashPara, + BYTE *pbDetachedHashBlob, DWORD cbDetachedHashBlob, DWORD cToBeHashed, + const BYTE *rgpbToBeHashed[], DWORD rgcbToBeHashed[], BYTE *pbComputedHash, + DWORD *pcbComputedHash); + +/* PFX functions */ +WINCRYPT32API HCERTSTORE WINAPI PFXImportCertStore(CRYPT_DATA_BLOB *pPFX, LPCWSTR szPassword, + DWORD dwFlags); +WINCRYPT32API BOOL WINAPI PFXIsPFXBlob(CRYPT_DATA_BLOB *pPFX); +WINCRYPT32API BOOL WINAPI PFXVerifyPassword(CRYPT_DATA_BLOB *pPFX, LPCWSTR szPassword, + DWORD dwFlags); +WINCRYPT32API BOOL WINAPI PFXExportCertStoreEx(HCERTSTORE hStore, CRYPT_DATA_BLOB *pPFX, + LPCWSTR szPassword, void *pvReserved, DWORD dwFlags); +WINCRYPT32API BOOL WINAPI PFXExportCertStore(HCERTSTORE hStore, CRYPT_DATA_BLOB *pPFX, + LPCWSTR szPassword, DWORD dwFlags); + +/* cryptnet.dll functions */ +BOOL WINAPI CryptCancelAsyncRetrieval(HCRYPTASYNC hAsyncRetrieval); + +BOOL WINAPI CryptGetObjectUrl(LPCSTR pszUrlOid, LPVOID pvPara, DWORD dwFlags, + PCRYPT_URL_ARRAY pUrlArray, DWORD *pcbUrlArray, PCRYPT_URL_INFO pUrlInfo, + DWORD *pcbUrlInfo, LPVOID pvReserved); + +BOOL WINAPI CryptGetTimeValidObject(LPCSTR pszTimeValidOid, void *pvPara, + PCCERT_CONTEXT pIssuer, LPFILETIME pftValidFor, DWORD dwFlags, DWORD dwTimeout, + void **ppvObject, PCRYPT_CREDENTIALS pCredentials, void *pvReserved); + +BOOL WINAPI CryptFlushTimeValidObject(LPCSTR pszFlushTimeValidOid, void *pvPara, + PCCERT_CONTEXT pIssuer, DWORD dwFlags, void *pvReserved); + +BOOL WINAPI CryptInstallCancelRetrieval(PFN_CRYPT_CANCEL_RETRIEVAL pfnCancel, + const void *pvArg, DWORD dwFlags, void *pvReserved); + +BOOL WINAPI CryptUninstallCancelRetrieval(DWORD dwFlags, void *pvReserved); + +BOOL WINAPI CryptRetrieveObjectByUrlA(LPCSTR pszURL, LPCSTR pszObjectOid, + DWORD dwRetrievalFlags, DWORD dwTimeout, LPVOID *ppvObject, + HCRYPTASYNC hAsyncRetrieve, PCRYPT_CREDENTIALS pCredentials, LPVOID pvVerify, + PCRYPT_RETRIEVE_AUX_INFO pAuxInfo); +BOOL WINAPI CryptRetrieveObjectByUrlW(LPCWSTR pszURL, LPCSTR pszObjectOid, + DWORD dwRetrievalFlags, DWORD dwTimeout, LPVOID *ppvObject, + HCRYPTASYNC hAsyncRetrieve, PCRYPT_CREDENTIALS pCredentials, LPVOID pvVerify, + PCRYPT_RETRIEVE_AUX_INFO pAuxInfo); +#define CryptRetrieveObjectByUrl WINELIB_NAME_AW(CryptRetrieveObjectByUrl) + +/* Not found in crypt32.dll but in softpub.dll */ +HRESULT WINAPI FindCertsByIssuer(PCERT_CHAIN pCertChains, DWORD *pcbCertChains, + DWORD *pcCertChains, BYTE* pbEncodedIssuerName, DWORD cbEncodedIssuerName, + LPCWSTR pwszPurpose, DWORD dwKeySpec); +#endif #ifdef __cplusplus } diff --git a/sdk/include/psdk/wingdi.h b/sdk/include/psdk/wingdi.h index 00a0bf8cb71..8f747d21055 100644 --- a/sdk/include/psdk/wingdi.h +++ b/sdk/include/psdk/wingdi.h @@ -10,8 +10,8 @@ extern "C" { #ifdef _MSC_VER #pragma warning(push) -#pragma warning(disable:4201) -#pragma warning(disable:4820) +#pragma warning(disable:4201) // nameless struct or union +#pragma warning(disable:4820) // padding after member #endif /* Get/SetSystemPaletteUse() values */ @@ -1398,13 +1398,459 @@ typedef struct _DRAWPATRECT { #define DISPLAY_DEVICE_PRIMARY_DEVICE 0x00000004 #define DISPLAY_DEVICE_MIRRORING_DRIVER 0x00000008 #define DISPLAY_DEVICE_VGA_COMPATIBLE 0x00000010 -#define DISPLAY_DEVICE_REMOVABLE 0x00000020 -#define DISPLAY_DEVICE_DISCONNECT 0x02000000 -#define DISPLAY_DEVICE_REMOTE 0x04000000 +#define DISPLAY_DEVICE_TS_COMPATIBLE 0x00200000 #define DISPLAY_DEVICE_MODESPRUNED 0x08000000 -#define DISPLAY_DEVICE_ACTIVE 0x00000001 -#define DISPLAY_DEVICE_ATTACHED 0x00000002 +#if (_WIN32_WINNT >= 0x500) +#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 typedef struct _ABC { diff --git a/sdk/include/psdk/winuser.h b/sdk/include/psdk/winuser.h index e556fa9fa47..7602917570f 100644 --- a/sdk/include/psdk/winuser.h +++ b/sdk/include/psdk/winuser.h @@ -7,8 +7,8 @@ extern "C" { #ifdef _MSC_VER #pragma warning(push) -#pragma warning(disable:4201) -#pragma warning(disable:4820) +#pragma warning(disable:4201) // nameless struct or union +#pragma warning(disable:4820) // padding after member #endif #if !defined(_USER32_) @@ -1586,6 +1586,15 @@ extern "C" { #define FE_FONTSMOOTHINGORIENTATIONRGB 0x0001 #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_SENDCHANGE 2 @@ -1931,6 +1940,7 @@ extern "C" { #if (_WIN32_WINNT >= 0x0501) #define WM_THEMECHANGED 794 +#define WM_CLIPBOARDUPDATE 797 #endif #define BM_CLICK 245 @@ -2060,7 +2070,14 @@ extern "C" { #define LB_GETITEMDATA 409 #define LB_GETITEMHEIGHT 417 #define LB_GETITEMRECT 408 +#if (_WIN32_WINNT >= 0x501) #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_GETSEL 391 #define LB_GETSELCOUNT 400 @@ -2625,6 +2642,12 @@ extern "C" { #define EC_LEFTMARGIN 1 #define EC_RIGHTMARGIN 2 #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 DLGC_WANTARROWS 1 #define DLGC_WANTTAB 2 @@ -2675,6 +2698,9 @@ extern "C" { #define FLASHW_TIMERNOFG 12 #endif /* (WINVER >= 0x0500) */ #define CURSOR_SHOWING 0x00000001 +#if (WINVER >= 0x602) +#define CURSOR_SUPPRESSED 0x00000002 +#endif /* (WINVER >= 0x602) */ #define WS_ACTIVECAPTION 0x00000001 #if (_WIN32_WINNT >= 0x0400) #define INPUT_MOUSE 0 diff --git a/sdk/include/reactos/wine/winternl.h b/sdk/include/reactos/wine/winternl.h index 39e1e3d8b82..40c1e998a24 100644 --- a/sdk/include/reactos/wine/winternl.h +++ b/sdk/include/reactos/wine/winternl.h @@ -40,6 +40,55 @@ typedef enum _EVENT_TYPE { SynchronizationEvent } EVENT_TYPE, *PEVENT_TYPE; #define FSCTL_PIPE_LISTEN CTL_CODE(FILE_DEVICE_NAMED_PIPE, 2, METHOD_BUFFERED, FILE_ANY_ACCESS) + +#define DUPLICATE_SAME_ATTRIBUTES 0x00000004 + +#define THREAD_SET_LIMITED_INFORMATION 0x0400 + +#ifndef _NTDEF_ +typedef struct _RTL_BALANCED_NODE +{ + union + { + struct _RTL_BALANCED_NODE *Children[2]; + struct + { + struct _RTL_BALANCED_NODE *Left; + struct _RTL_BALANCED_NODE *Right; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; +#define RTL_BALANCED_NODE_RESERVED_PARENT_MASK 3 + union + { + UCHAR Red : 1; + UCHAR Balance : 2; + ULONG_PTR ParentValue; + } DUMMYUNIONNAME2; +} RTL_BALANCED_NODE, *PRTL_BALANCED_NODE; +#endif // _NTDEF_ + +typedef struct _CONTEXT_CHUNK +{ + LONG Offset; + ULONG Length; +} CONTEXT_CHUNK, *PCONTEXT_CHUNK; + +typedef struct _CONTEXT_EX +{ + CONTEXT_CHUNK All; + CONTEXT_CHUNK Legacy; + CONTEXT_CHUNK XState; +#ifdef _WIN64 + ULONG64 align; +#endif +} CONTEXT_EX, *PCONTEXT_EX; + +typedef struct _RTL_RB_TREE +{ + RTL_BALANCED_NODE *root; + RTL_BALANCED_NODE *min; +} RTL_RB_TREE, *PRTL_RB_TREE; + #endif /* __REACTOS__ */ /********************************************************************** @@ -92,17 +141,11 @@ typedef const UNICODE_STRING *PCUNICODE_STRING; /* 64 bit number of 100 nanoseconds intervals since January 1, 1601 */ typedef struct _FILETIME { -#ifdef WORDS_BIGENDIAN - DWORD dwHighDateTime; - DWORD dwLowDateTime; -#else DWORD dwLowDateTime; DWORD dwHighDateTime; -#endif } FILETIME, *PFILETIME, *LPFILETIME; #endif /* _FILETIME_ */ -#if 0 /* * RTL_SYSTEM_TIME and RTL_TIME_ZONE_INFORMATION are the same as * the SYSTEMTIME and TIME_ZONE_INFORMATION structures defined @@ -121,8 +164,8 @@ typedef struct _RTL_SYSTEM_TIME { WORD wSecond; WORD wMilliseconds; } RTL_SYSTEM_TIME, *PRTL_SYSTEM_TIME; -#endif +#ifdef __REACTOS__ typedef struct _TIME_FIELDS { CSHORT Year; CSHORT Month; @@ -133,14 +176,23 @@ typedef struct _TIME_FIELDS { CSHORT Milliseconds; CSHORT Weekday; } TIME_FIELDS, *PTIME_FIELDS; +#endif // __REACTOS__ typedef struct _RTL_TIME_ZONE_INFORMATION { LONG Bias; WCHAR StandardName[32]; +#ifdef __REACTOS__ TIME_FIELDS StandardDate; +#else + RTL_SYSTEM_TIME StandardDate; +#endif LONG StandardBias; WCHAR DaylightName[32]; +#ifdef __REACTOS__ TIME_FIELDS DaylightDate; +#else + RTL_SYSTEM_TIME DaylightDate; +#endif LONG DaylightBias; } RTL_TIME_ZONE_INFORMATION, *PRTL_TIME_ZONE_INFORMATION; @@ -148,10 +200,18 @@ typedef struct _RTL_TIME_DYNAMIC_ZONE_INFORMATION { LONG Bias; WCHAR StandardName[32]; +#ifdef __REACTOS__ TIME_FIELDS StandardDate; +#else + RTL_SYSTEM_TIME StandardDate; +#endif LONG StandardBias; WCHAR DaylightName[32]; +#ifdef __REACTOS__ TIME_FIELDS DaylightDate; +#else + RTL_SYSTEM_TIME DaylightDate; +#endif LONG DaylightBias; WCHAR TimeZoneKeyName[128]; BOOLEAN DynamicDaylightTimeDisabled; @@ -177,6 +237,13 @@ typedef struct RTL_DRIVE_LETTER_CURDIR UNICODE_STRING DosPath; } RTL_DRIVE_LETTER_CURDIR, *PRTL_DRIVE_LETTER_CURDIR; +typedef struct _RTL_RELATIVE_NAME +{ + UNICODE_STRING RelativeName; + HANDLE ContainerDirectory; + void *CurDirRef; +} RTL_RELATIVE_NAME, *PRTL_RELATIVE_NAME; + typedef struct tagRTL_BITMAP { ULONG SizeOfBitMap; /* Number of bits in the bitmap */ PULONG Buffer; /* Bitmap data, assumed sized to a DWORD boundary */ @@ -221,6 +288,11 @@ typedef struct _RTL_USER_PROCESS_PARAMETERS UNICODE_STRING ShellInfo; UNICODE_STRING RuntimeInfo; RTL_DRIVE_LETTER_CURDIR DLCurrentDirectory[0x20]; + ULONG_PTR EnvironmentSize; + ULONG_PTR EnvironmentVersion; + PVOID PackageDependencyData; + ULONG ProcessGroupId; + ULONG LoaderThreads; } RTL_USER_PROCESS_PARAMETERS, *PRTL_USER_PROCESS_PARAMETERS; /* value for Flags field (FIXME: not the correct name) */ @@ -235,6 +307,8 @@ typedef struct _PEB_LDR_DATA LIST_ENTRY InMemoryOrderModuleList; LIST_ENTRY InInitializationOrderModuleList; PVOID EntryInProgress; + BOOLEAN ShutdownInProgress; + HANDLE ShutdownThreadId; } PEB_LDR_DATA, *PPEB_LDR_DATA; typedef struct _GDI_TEB_BATCH @@ -253,10 +327,11 @@ typedef struct _RTL_ACTIVATION_CONTEXT_STACK_FRAME typedef struct _ACTIVATION_CONTEXT_STACK { - ULONG Flags; - ULONG NextCookieSequenceNumber; RTL_ACTIVATION_CONTEXT_STACK_FRAME *ActiveFrame; LIST_ENTRY FrameListCache; + ULONG Flags; + ULONG NextCookieSequenceNumber; + ULONG_PTR StackId; } ACTIVATION_CONTEXT_STACK, *PACTIVATION_CONTEXT_STACK; typedef struct _TEB_ACTIVE_FRAME_CONTEXT @@ -284,9 +359,107 @@ typedef struct _TEB_ACTIVE_FRAME_EX void *ExtensionIdentifier; } TEB_ACTIVE_FRAME_EX, *PTEB_ACTIVE_FRAME_EX; +typedef struct _FLS_CALLBACK +{ + void *unknown; + PFLS_CALLBACK_FUNCTION callback; /* ~0 if NULL callback is set, NULL if FLS index is free. */ +} FLS_CALLBACK, *PFLS_CALLBACK; + +typedef struct _FLS_INFO_CHUNK +{ + ULONG count; /* number of allocated FLS indexes in the chunk. */ + FLS_CALLBACK callbacks[1]; /* the size is 0x10 for chunk 0 and is twice as + * the previous chunk size for the rest. */ +} FLS_INFO_CHUNK, *PFLS_INFO_CHUNK; + +typedef struct _GLOBAL_FLS_DATA +{ + FLS_INFO_CHUNK *fls_callback_chunks[8]; + LIST_ENTRY fls_list_head; + ULONG fls_high_index; +} GLOBAL_FLS_DATA, *PGLOBAL_FLS_DATA; + +typedef struct _TEB_FLS_DATA +{ + LIST_ENTRY fls_list_entry; + void **fls_data_chunks[8]; +} TEB_FLS_DATA, *PTEB_FLS_DATA; + +/* undocumented layout of WOW64INFO.CrossProcessWorkList and CHPEV2_PROCESS_INFO.CrossProcessWorkList */ + +typedef struct +{ + UINT next; + UINT id; + ULONGLONG addr; + ULONGLONG size; + UINT args[4]; +} CROSS_PROCESS_WORK_ENTRY; + +typedef union +{ + struct + { + UINT first; + UINT counter; + }; + volatile LONGLONG hdr; +} CROSS_PROCESS_WORK_HDR; + +typedef struct +{ + CROSS_PROCESS_WORK_HDR free_list; + CROSS_PROCESS_WORK_HDR work_list; + ULONGLONG unknown[4]; + CROSS_PROCESS_WORK_ENTRY entries[1]; +} CROSS_PROCESS_WORK_LIST; + +typedef enum +{ + CrossProcessPreVirtualAlloc = 0, + CrossProcessPostVirtualAlloc = 1, + CrossProcessPreVirtualFree = 2, + CrossProcessPostVirtualFree = 3, + CrossProcessPreVirtualProtect = 4, + CrossProcessPostVirtualProtect = 5, + CrossProcessFlushCache = 6, + CrossProcessFlushCacheHeavy = 7, + CrossProcessMemoryWrite = 8, +} CROSS_PROCESS_NOTIFICATION; + +#define CROSS_PROCESS_LIST_FLUSH 0x80000000 +#define CROSS_PROCESS_LIST_ENTRY(list,pos) \ + ((CROSS_PROCESS_WORK_ENTRY *)((char *)(list) + ((pos) & ~CROSS_PROCESS_LIST_FLUSH))) + +typedef struct _CHPE_V2_CPU_AREA_INFO +{ + BOOLEAN InSimulation; /* 000 */ + BOOLEAN InSyscallCallback; /* 001 */ + ULONG64 EmulatorStackBase; /* 008 */ + ULONG64 EmulatorStackLimit; /* 010 */ + ARM64EC_NT_CONTEXT *ContextAmd64; /* 018 */ + ULONG *SuspendDoorbell; /* 020 */ + ULONG64 LoadingModuleModflag; /* 028 */ + void *EmulatorData[4]; /* 030 */ + ULONG64 EmulatorDataInline; /* 050 */ +} CHPE_V2_CPU_AREA_INFO, *PCHPE_V2_CPU_AREA_INFO; + +/* equivalent of WOW64INFO, stored after the 64-bit PEB */ +typedef struct _CHPEV2_PROCESS_INFO +{ + ULONG Wow64ExecuteFlags; /* 000 */ + USHORT NativeMachineType; /* 004 */ + USHORT EmulatedMachineType; /* 006 */ + HANDLE SectionHandle; /* 008 */ + CROSS_PROCESS_WORK_LIST *CrossProcessWorkList; /* 010 */ + void *unknown; /* 018 */ +} CHPEV2_PROCESS_INFO, *PCHPEV2_PROCESS_INFO; + #define TEB_ACTIVE_FRAME_CONTEXT_FLAG_EXTENDED 0x00000001 #define TEB_ACTIVE_FRAME_FLAG_EXTENDED 0x00000001 +typedef NTSTATUS (WINAPI *KERNEL_CALLBACK_PROC)(void *, ULONG); /* FIXME: not the correct name */ + /*********************************************************************** * PEB data structure */ @@ -295,7 +468,14 @@ typedef struct _PEB BOOLEAN InheritedAddressSpace; /* 000/000 */ BOOLEAN ReadImageFileExecOptions; /* 001/001 */ BOOLEAN BeingDebugged; /* 002/002 */ - BOOLEAN SpareBool; /* 003/003 */ + UCHAR ImageUsedLargePages : 1; /* 003/003 */ + UCHAR IsProtectedProcess : 1; + UCHAR IsImageDynamicallyRelocated : 1; + UCHAR SkipPatchingUser32Forwarders : 1; + UCHAR IsPackagedProcess : 1; + UCHAR IsAppContainer: 1; + UCHAR IsProtectedProcessLight : 1; + UCHAR IsLongPathAwareProcess : 1; HANDLE Mutant; /* 004/008 */ HMODULE ImageBaseAddress; /* 008/010 */ PPEB_LDR_DATA LdrData; /* 00c/018 */ @@ -303,17 +483,26 @@ typedef struct _PEB PVOID SubSystemData; /* 014/028 */ HANDLE ProcessHeap; /* 018/030 */ PRTL_CRITICAL_SECTION FastPebLock; /* 01c/038 */ - PVOID /*PPEBLOCKROUTINE*/ FastPebLockRoutine; /* 020/040 */ - PVOID /*PPEBLOCKROUTINE*/ FastPebUnlockRoutine; /* 024/048 */ - ULONG EnvironmentUpdateCount; /* 028/050 */ - PVOID KernelCallbackTable; /* 02c/058 */ - ULONG Reserved[2]; /* 030/060 */ - PVOID /*PPEB_FREE_BLOCK*/ FreeList; /* 038/068 */ + PVOID AtlThunkSListPtr; /* 020/040 */ + PVOID IFEOKey; /* 024/048 */ + ULONG ProcessInJob : 1; /* 028/050 */ + ULONG ProcessInitializing : 1; + ULONG ProcessUsingVEH : 1; + ULONG ProcessUsingVCH : 1; + ULONG ProcessUsingFTH : 1; + ULONG ProcessPreviouslyThrottled : 1; + ULONG ProcessCurrentlyThrottled : 1; + ULONG ProcessImagesHotPatched : 1; + ULONG ReservedBits0 : 24; + KERNEL_CALLBACK_PROC *KernelCallbackTable; /* 02c/058 */ + ULONG Reserved; /* 030/060 */ + ULONG AtlThunkSListPtr32; /* 034/064 */ + PVOID ApiSetMap; /* 038/068 */ ULONG TlsExpansionCounter; /* 03c/070 */ PRTL_BITMAP TlsBitmap; /* 040/078 */ ULONG TlsBitmapBits[2]; /* 044/080 */ PVOID ReadOnlySharedMemoryBase; /* 04c/088 */ - PVOID ReadOnlySharedMemoryHeap; /* 050/090 */ + PVOID SharedData; /* 050/090 */ PVOID *ReadOnlyStaticServerData; /* 054/098 */ PVOID AnsiCodePageData; /* 058/0a0 */ PVOID OemCodePageData; /* 05c/0a8 */ @@ -339,9 +528,12 @@ typedef struct _PEB ULONG ImageSubSystem; /* 0b4/128 */ ULONG ImageSubSystemMajorVersion; /* 0b8/12c */ ULONG ImageSubSystemMinorVersion; /* 0bc/130 */ - ULONG ImageProcessAffinityMask; /* 0c0/134 */ - HANDLE GdiHandleBuffer[28]; /* 0c4/138 */ - ULONG unknown[6]; /* 134/218 */ + KAFFINITY ActiveProcessAffinityMask; /* 0c0/138 */ +#ifdef _WIN64 + ULONG GdiHandleBuffer[60]; /* /140 */ +#else + ULONG GdiHandleBuffer[34]; /* 0c4/ */ +#endif PVOID PostProcessInitRoutine; /* 14c/230 */ PRTL_BITMAP TlsExpansionBitmap; /* 150/238 */ ULONG TlsExpansionBitmapBits[32]; /* 154/240 */ @@ -358,8 +550,35 @@ typedef struct _PEB SIZE_T MinimumStackCommit; /* 208/318 */ PVOID *FlsCallback; /* 20c/320 */ LIST_ENTRY FlsListHead; /* 210/328 */ - PRTL_BITMAP FlsBitmap; /* 218/338 */ + union + { + PRTL_BITMAP FlsBitmap; /* 218/338 */ +#ifdef _WIN64 + CHPEV2_PROCESS_INFO *ChpeV2ProcessInfo; /* /338 */ +#endif + }; ULONG FlsBitmapBits[4]; /* 21c/340 */ + ULONG FlsHighIndex; /* 22c/350 */ + PVOID WerRegistrationData; /* 230/358 */ + PVOID WerShipAssertPtr; /* 234/360 */ + PVOID EcCodeBitMap; /* 238/368 */ + PVOID pImageHeaderHash; /* 23c/370 */ + ULONG HeapTracingEnabled : 1; /* 240/378 */ + ULONG CritSecTracingEnabled : 1; + ULONG LibLoaderTracingEnabled : 1; + ULONG SpareTracingBits : 29; + ULONGLONG CsrServerReadOnlySharedMemoryBase; /* 248/380 */ + ULONG TppWorkerpListLock; /* 250/388 */ + LIST_ENTRY TppWorkerpList; /* 254/390 */ + PVOID WaitOnAddressHashTable [0x80]; /* 25c/3a0 */ + PVOID TelemetryCoverageHeader; /* 45c/7a0 */ + ULONG CloudFileFlags; /* 460/7a8 */ + ULONG CloudFileDiagFlags; /* 464/7ac */ + CHAR PlaceholderCompatibilityMode; /* 468/7b0 */ + CHAR PlaceholderCompatibilityModeReserved[7]; /* 469/7b1 */ + PVOID LeapSecondData; /* 470/7b8 */ + ULONG LeapSecondFlags; /* 474/7c0 */ + ULONG NtGlobalFlag2; /* 478/7c4 */ } PEB, *PPEB; @@ -378,27 +597,46 @@ typedef struct _TEB ULONG CountOfOwnedCriticalSections; /* 038/006c */ PVOID CsrClientThread; /* 03c/0070 */ PVOID Win32ThreadInfo; /* 040/0078 */ - ULONG Win32ClientInfo[31]; /* 044/0080 used for user32 private data in Wine */ - PVOID WOW32Reserved; /* 0c0/0100 used for ntdll syscall thunks */ + ULONG User32Reserved[26]; /* 044/0080 */ + ULONG UserReserved[5]; /* 0ac/00e8 */ + PVOID WOW32Reserved; /* 0c0/0100 */ ULONG CurrentLocale; /* 0c4/0108 */ ULONG FpSoftwareStatusRegister; /* 0c8/010c */ - PVOID SystemReserved1[54]; /* 0cc/0110 used for krnl386.exe16 private data in Wine */ + PVOID ReservedForDebuggerInstrumentation[16]; /* 0cc/0110 */ +#ifdef _WIN64 + PVOID SystemReserved1[30]; /* /0190 */ +#else + PVOID SystemReserved1[26]; /* 10c/ used for krnl386 private data in Wine */ +#endif + char PlaceholderCompatibilityMode; /* 174/0280 */ + BOOLEAN PlaceholderHydrationAlwaysExplicit;/* 175/0281 */ + char PlaceholderReserved[10]; /* 176/0282 */ + DWORD ProxiedProcessId; /* 180/028c */ + ACTIVATION_CONTEXT_STACK ActivationContextStack; /* 184/0290 */ + UCHAR WorkingOnBehalfOfTicket[8]; /* 19c/02b8 */ LONG ExceptionCode; /* 1a4/02c0 */ - ACTIVATION_CONTEXT_STACK ActivationContextStack; /* 1a8/02c8 */ - BYTE SpareBytes1[24]; /* 1bc/02e8 */ - PVOID SystemReserved2[10]; /* 1d4/0300 used for ntdll platform-specific private data in Wine */ - GDI_TEB_BATCH GdiTebBatch; /* 1fc/0350 used for ntdll private data in Wine */ - HANDLE gdiRgn; /* 6dc/0838 */ - HANDLE gdiPen; /* 6e0/0840 */ - HANDLE gdiBrush; /* 6e4/0848 */ - CLIENT_ID RealClientId; /* 6e8/0850 */ - HANDLE GdiCachedProcessHandle; /* 6f0/0860 */ - ULONG GdiClientPID; /* 6f4/0868 */ - ULONG GdiClientTID; /* 6f8/086c */ - PVOID GdiThreadLocaleInfo; /* 6fc/0870 */ - ULONG UserReserved[5]; /* 700/0878 */ - PVOID glDispatchTable[280]; /* 714/0890 */ - PVOID glReserved1[26]; /* b74/1150 */ + ACTIVATION_CONTEXT_STACK *ActivationContextStackPointer; /* 1a8/02c8 */ + ULONG_PTR InstrumentationCallbackSp; /* 1ac/02d0 */ + ULONG_PTR InstrumentationCallbackPreviousPc; /* 1b0/02d8 */ + ULONG_PTR InstrumentationCallbackPreviousSp; /* 1b4/02e0 */ +#ifdef _WIN64 + ULONG TxFsContext; /* /02e8 */ + BOOLEAN InstrumentationCallbackDisabled; /* /02ec */ + BOOLEAN UnalignedLoadStoreExceptions; /* /02ed */ +#else + BOOLEAN InstrumentationCallbackDisabled; /* 1b8/ */ + BYTE SpareBytes1[23]; /* 1b9/ */ + ULONG TxFsContext; /* 1d0/ */ +#endif + GDI_TEB_BATCH GdiTebBatch; /* 1d4/02f0 used for ntdll private data in Wine */ + CLIENT_ID RealClientId; /* 6b4/07d8 */ + HANDLE GdiCachedProcessHandle; /* 6bc/07e8 */ + ULONG GdiClientPID; /* 6c0/07f0 */ + ULONG GdiClientTID; /* 6c4/07f4 */ + PVOID GdiThreadLocaleInfo; /* 6c8/07f8 */ + ULONG_PTR Win32ClientInfo[62]; /* 6cc/0800 used for user32 private data in Wine */ + PVOID glDispatchTable[233]; /* 7c4/09f0 */ + PVOID glReserved1[29]; /* b68/1138 */ PVOID glReserved2; /* bdc/1220 */ PVOID glSectionInfo; /* be0/1228 */ PVOID glSection; /* be4/1230 */ @@ -406,39 +644,730 @@ typedef struct _TEB PVOID glCurrentRC; /* bec/1240 */ PVOID glContext; /* bf0/1248 */ ULONG LastStatusValue; /* bf4/1250 */ - UNICODE_STRING StaticUnicodeString; /* bf8/1258 used by advapi32 */ - WCHAR StaticUnicodeBuffer[261]; /* c00/1268 used by advapi32 */ + UNICODE_STRING StaticUnicodeString; /* bf8/1258 */ + WCHAR StaticUnicodeBuffer[261]; /* c00/1268 */ PVOID DeallocationStack; /* e0c/1478 */ PVOID TlsSlots[64]; /* e10/1480 */ LIST_ENTRY TlsLinks; /* f10/1680 */ PVOID Vdm; /* f18/1690 */ PVOID ReservedForNtRpc; /* f1c/1698 */ PVOID DbgSsReserved[2]; /* f20/16a0 */ - ULONG HardErrorDisabled; /* f28/16b0 */ - PVOID Instrumentation[16]; /* f2c/16b8 */ + ULONG HardErrorMode; /* f28/16b0 */ +#ifdef _WIN64 + PVOID Instrumentation[11]; /* /16b8 */ +#else + PVOID Instrumentation[9]; /* f2c/ */ +#endif + GUID ActivityId; /* f50/1710 */ + PVOID SubProcessTag; /* f60/1720 */ + PVOID PerflibData; /* f64/1728 */ + PVOID EtwTraceData; /* f68/1730 */ PVOID WinSockData; /* f6c/1738 */ ULONG GdiBatchCount; /* f70/1740 */ - ULONG Spare2; /* f74/1744 */ - PVOID Spare3; /* f78/1748 used for fakedll thunks */ - PVOID Spare4; /* f7c/1750 */ + ULONG IdealProcessorValue; /* f74/1744 */ + ULONG GuaranteedStackBytes; /* f78/1748 */ + PVOID ReservedForPerf; /* f7c/1750 */ PVOID ReservedForOle; /* f80/1758 */ ULONG WaitingOnLoaderLock; /* f84/1760 */ - PVOID Reserved5[3]; /* f88/1768 used for x86_64 OSX and wineserver shared memory */ + PVOID SavedPriorityState; /* f88/1768 */ + ULONG_PTR ReservedForCodeCoverage; /* f8c/1770 */ + PVOID ThreadPoolData; /* f90/1778 */ PVOID *TlsExpansionSlots; /* f94/1780 */ #ifdef _WIN64 - PVOID DeallocationBStore; /* /1788 */ + union { + PVOID DeallocationBStore; /* /1788 */ + CHPE_V2_CPU_AREA_INFO *ChpeV2CpuAreaInfo; /* /1788 */ + } DUMMYUNIONNAME; PVOID BStoreLimit; /* /1790 */ #endif - ULONG ImpersonationLocale; /* f98/1798 */ + ULONG MuiGeneration; /* f98/1798 */ ULONG IsImpersonating; /* f9c/179c */ PVOID NlsCache; /* fa0/17a0 */ PVOID ShimData; /* fa4/17a8 */ ULONG HeapVirtualAffinity; /* fa8/17b0 */ PVOID CurrentTransactionHandle; /* fac/17b8 */ TEB_ACTIVE_FRAME *ActiveFrame; /* fb0/17c0 */ - PVOID *FlsSlots; /* fb4/17c8 */ + TEB_FLS_DATA *FlsSlots; /* fb4/17c8 */ + PVOID PreferredLanguages; /* fb8/17d0 */ + PVOID UserPrefLanguages; /* fbc/17d8 */ + PVOID MergedPrefLanguages; /* fc0/17e0 */ + ULONG MuiImpersonation; /* fc4/17e8 */ + USHORT CrossTebFlags; /* fc8/17ec */ + USHORT SameTebFlags; /* fca/17ee */ + PVOID TxnScopeEnterCallback; /* fcc/17f0 */ + PVOID TxnScopeExitCallback; /* fd0/17f8 */ + PVOID TxnScopeContext; /* fd4/1800 */ + ULONG LockCount; /* fd8/1808 */ + LONG WowTebOffset; /* fdc/180c */ + PVOID ResourceRetValue; /* fe0/1810 */ + PVOID ReservedForWdf; /* fe4/1818 */ + ULONGLONG ReservedForCrt; /* fe8/1820 */ + GUID EffectiveContainerId; /* ff0/1828 */ } TEB, *PTEB; + +/*********************************************************************** + * The 32-bit/64-bit version of the PEB and TEB for WoW64 + */ +#ifndef __REACTOS__ +typedef struct _NT_TIB32 +{ + ULONG ExceptionList; /* 0000 */ + ULONG StackBase; /* 0004 */ + ULONG StackLimit; /* 0008 */ + ULONG SubSystemTib; /* 000c */ + ULONG FiberData; /* 0010 */ + ULONG ArbitraryUserPointer; /* 0014 */ + ULONG Self; /* 0018 */ +} NT_TIB32; + +typedef struct _NT_TIB64 +{ + ULONG64 ExceptionList; /* 0000 */ + ULONG64 StackBase; /* 0008 */ + ULONG64 StackLimit; /* 0010 */ + ULONG64 SubSystemTib; /* 0018 */ + ULONG64 FiberData; /* 0020 */ + ULONG64 ArbitraryUserPointer; /* 0028 */ + ULONG64 Self; /* 0030 */ +} NT_TIB64; +#endif + +typedef struct _CLIENT_ID32 +{ + ULONG UniqueProcess; + ULONG UniqueThread; +} CLIENT_ID32; + +typedef struct _CLIENT_ID64 +{ + ULONG64 UniqueProcess; + ULONG64 UniqueThread; +} CLIENT_ID64; + +#ifndef __REACTOS__ +typedef struct _LIST_ENTRY32 +{ + ULONG Flink; + ULONG Blink; +} LIST_ENTRY32; + +typedef struct _LIST_ENTRY64 +{ + ULONG64 Flink; + ULONG64 Blink; +} LIST_ENTRY64; +#endif + +typedef struct _UNICODE_STRING32 +{ + USHORT Length; + USHORT MaximumLength; + ULONG Buffer; +} UNICODE_STRING32; + +typedef struct _UNICODE_STRING64 +{ + USHORT Length; + USHORT MaximumLength; + ULONG64 Buffer; +} UNICODE_STRING64; + +typedef struct _ACTIVATION_CONTEXT_STACK32 +{ + ULONG ActiveFrame; + LIST_ENTRY32 FrameListCache; + ULONG Flags; + ULONG NextCookieSequenceNumber; + ULONG32 StackId; +} ACTIVATION_CONTEXT_STACK32; + +typedef struct _ACTIVATION_CONTEXT_STACK64 +{ + ULONG64 ActiveFrame; + LIST_ENTRY64 FrameListCache; + ULONG Flags; + ULONG NextCookieSequenceNumber; + ULONG64 StackId; +} ACTIVATION_CONTEXT_STACK64; + +typedef struct _CURDIR32 +{ + UNICODE_STRING32 DosPath; + ULONG Handle; +} CURDIR32; + +typedef struct _CURDIR64 +{ + UNICODE_STRING64 DosPath; + ULONG64 Handle; +} CURDIR64; + +typedef struct RTL_DRIVE_LETTER_CURDIR32 +{ + USHORT Flags; + USHORT Length; + ULONG TimeStamp; + UNICODE_STRING32 DosPath; +} RTL_DRIVE_LETTER_CURDIR32; + +typedef struct RTL_DRIVE_LETTER_CURDIR64 +{ + USHORT Flags; + USHORT Length; + ULONG TimeStamp; + UNICODE_STRING64 DosPath; +} RTL_DRIVE_LETTER_CURDIR64; + +typedef struct _RTL_USER_PROCESS_PARAMETERS32 +{ + ULONG AllocationSize; + ULONG Size; + ULONG Flags; + ULONG DebugFlags; + ULONG ConsoleHandle; + ULONG ConsoleFlags; + ULONG hStdInput; + ULONG hStdOutput; + ULONG hStdError; + CURDIR32 CurrentDirectory; + UNICODE_STRING32 DllPath; + UNICODE_STRING32 ImagePathName; + UNICODE_STRING32 CommandLine; + ULONG Environment; + ULONG dwX; + ULONG dwY; + ULONG dwXSize; + ULONG dwYSize; + ULONG dwXCountChars; + ULONG dwYCountChars; + ULONG dwFillAttribute; + ULONG dwFlags; + ULONG wShowWindow; + UNICODE_STRING32 WindowTitle; + UNICODE_STRING32 Desktop; + UNICODE_STRING32 ShellInfo; + UNICODE_STRING32 RuntimeInfo; + RTL_DRIVE_LETTER_CURDIR32 DLCurrentDirectory[0x20]; + ULONG EnvironmentSize; + ULONG EnvironmentVersion; + ULONG PackageDependencyData; + ULONG ProcessGroupId; + ULONG LoaderThreads; +} RTL_USER_PROCESS_PARAMETERS32; + +typedef struct _RTL_USER_PROCESS_PARAMETERS64 +{ + ULONG AllocationSize; + ULONG Size; + ULONG Flags; + ULONG DebugFlags; + ULONG64 ConsoleHandle; + ULONG ConsoleFlags; + ULONG64 hStdInput; + ULONG64 hStdOutput; + ULONG64 hStdError; + CURDIR64 CurrentDirectory; + UNICODE_STRING64 DllPath; + UNICODE_STRING64 ImagePathName; + UNICODE_STRING64 CommandLine; + ULONG64 Environment; + ULONG dwX; + ULONG dwY; + ULONG dwXSize; + ULONG dwYSize; + ULONG dwXCountChars; + ULONG dwYCountChars; + ULONG dwFillAttribute; + ULONG dwFlags; + ULONG wShowWindow; + UNICODE_STRING64 WindowTitle; + UNICODE_STRING64 Desktop; + UNICODE_STRING64 ShellInfo; + UNICODE_STRING64 RuntimeInfo; + RTL_DRIVE_LETTER_CURDIR64 DLCurrentDirectory[0x20]; + ULONG64 EnvironmentSize; + ULONG64 EnvironmentVersion; + ULONG64 PackageDependencyData; + ULONG ProcessGroupId; + ULONG LoaderThreads; +} RTL_USER_PROCESS_PARAMETERS64; + +typedef struct _PEB_LDR_DATA32 +{ + ULONG Length; + BOOLEAN Initialized; + ULONG SsHandle; + LIST_ENTRY32 InLoadOrderModuleList; + LIST_ENTRY32 InMemoryOrderModuleList; + LIST_ENTRY32 InInitializationOrderModuleList; + ULONG EntryInProgress; + BOOLEAN ShutdownInProgress; + ULONG ShutdownThreadId; +} PEB_LDR_DATA32, *PPEB_LDR_DATA32; + +typedef struct _PEB_LDR_DATA64 +{ + ULONG Length; + BOOLEAN Initialized; + ULONG64 SsHandle; + LIST_ENTRY64 InLoadOrderModuleList; + LIST_ENTRY64 InMemoryOrderModuleList; + LIST_ENTRY64 InInitializationOrderModuleList; + ULONG64 EntryInProgress; + BOOLEAN ShutdownInProgress; + ULONG64 ShutdownThreadId; +} PEB_LDR_DATA64, *PPEB_LDR_DATA64; + +typedef struct _PEB32 +{ + BOOLEAN InheritedAddressSpace; /* 0000 */ + BOOLEAN ReadImageFileExecOptions; /* 0001 */ + BOOLEAN BeingDebugged; /* 0002 */ + UCHAR ImageUsedLargePages : 1; /* 0003 */ + UCHAR IsProtectedProcess : 1; + UCHAR IsImageDynamicallyRelocated : 1; + UCHAR SkipPatchingUser32Forwarders : 1; + UCHAR IsPackagedProcess : 1; + UCHAR IsAppContainer: 1; + UCHAR IsProtectedProcessLight : 1; + UCHAR IsLongPathAwareProcess : 1; + ULONG Mutant; /* 0004 */ + ULONG ImageBaseAddress; /* 0008 */ + ULONG LdrData; /* 000c */ + ULONG ProcessParameters; /* 0010 */ + ULONG SubSystemData; /* 0014 */ + ULONG ProcessHeap; /* 0018 */ + ULONG FastPebLock; /* 001c */ + ULONG AtlThunkSListPtr; /* 0020 */ + ULONG IFEOKey; /* 0024 */ + ULONG ProcessInJob : 1; /* 0028 */ + ULONG ProcessInitializing : 1; + ULONG ProcessUsingVEH : 1; + ULONG ProcessUsingVCH : 1; + ULONG ProcessUsingFTH : 1; + ULONG ProcessPreviouslyThrottled : 1; + ULONG ProcessCurrentlyThrottled : 1; + ULONG ProcessImagesHotPatched : 1; + ULONG ReservedBits0 : 24; + ULONG KernelCallbackTable; /* 002c */ + ULONG Reserved; /* 0030 */ + ULONG AtlThunkSListPtr32; /* 0034 */ + ULONG ApiSetMap; /* 0038 */ + ULONG TlsExpansionCounter; /* 003c */ + ULONG TlsBitmap; /* 0040 */ + ULONG TlsBitmapBits[2]; /* 0044 */ + ULONG ReadOnlySharedMemoryBase; /* 004c */ + ULONG SharedData; /* 0050 */ + ULONG ReadOnlyStaticServerData; /* 0054 */ + ULONG AnsiCodePageData; /* 0058 */ + ULONG OemCodePageData; /* 005c */ + ULONG UnicodeCaseTableData; /* 0060 */ + ULONG NumberOfProcessors; /* 0064 */ + ULONG NtGlobalFlag; /* 0068 */ + LARGE_INTEGER CriticalSectionTimeout; /* 0070 */ + ULONG HeapSegmentReserve; /* 0078 */ + ULONG HeapSegmentCommit; /* 007c */ + ULONG HeapDeCommitTotalFreeThreshold; /* 0080 */ + ULONG HeapDeCommitFreeBlockThreshold; /* 0084 */ + ULONG NumberOfHeaps; /* 0088 */ + ULONG MaximumNumberOfHeaps; /* 008c */ + ULONG ProcessHeaps; /* 0090 */ + ULONG GdiSharedHandleTable; /* 0094 */ + ULONG ProcessStarterHelper; /* 0098 */ + ULONG GdiDCAttributeList; /* 009c */ + ULONG LoaderLock; /* 00a0 */ + ULONG OSMajorVersion; /* 00a4 */ + ULONG OSMinorVersion; /* 00a8 */ + ULONG OSBuildNumber; /* 00ac */ + ULONG OSPlatformId; /* 00b0 */ + ULONG ImageSubSystem; /* 00b4 */ + ULONG ImageSubSystemMajorVersion; /* 00b8 */ + ULONG ImageSubSystemMinorVersion; /* 00bc */ + ULONG ActiveProcessAffinityMask; /* 00c0 */ + ULONG GdiHandleBuffer[34]; /* 00c4 */ + ULONG PostProcessInitRoutine; /* 014c */ + ULONG TlsExpansionBitmap; /* 0150 */ + ULONG TlsExpansionBitmapBits[32]; /* 0154 */ + ULONG SessionId; /* 01d4 */ + ULARGE_INTEGER AppCompatFlags; /* 01d8 */ + ULARGE_INTEGER AppCompatFlagsUser; /* 01e0 */ + ULONG ShimData; /* 01e8 */ + ULONG AppCompatInfo; /* 01ec */ + UNICODE_STRING32 CSDVersion; /* 01f0 */ + ULONG ActivationContextData; /* 01f8 */ + ULONG ProcessAssemblyStorageMap; /* 01fc */ + ULONG SystemDefaultActivationData; /* 0200 */ + ULONG SystemAssemblyStorageMap; /* 0204 */ + ULONG MinimumStackCommit; /* 0208 */ + ULONG FlsCallback; /* 020c */ + LIST_ENTRY32 FlsListHead; /* 0210 */ + ULONG FlsBitmap; /* 0218 */ + ULONG FlsBitmapBits[4]; /* 021c */ + ULONG FlsHighIndex; /* 022c */ + ULONG WerRegistrationData; /* 0230 */ + ULONG WerShipAssertPtr; /* 0234 */ + ULONG pUnused; /* 0238 */ + ULONG pImageHeaderHash; /* 023c */ + ULONG HeapTracingEnabled : 1; /* 0240 */ + ULONG CritSecTracingEnabled : 1; + ULONG LibLoaderTracingEnabled : 1; + ULONG SpareTracingBits : 29; + ULONGLONG CsrServerReadOnlySharedMemoryBase; /* 0248 */ + ULONG TppWorkerpListLock; /* 0250 */ + LIST_ENTRY32 TppWorkerpList; /* 0254 */ + ULONG WaitOnAddressHashTable [0x80]; /* 025c */ + ULONG TelemetryCoverageHeader; /* 045c */ + ULONG CloudFileFlags; /* 0460 */ + ULONG CloudFileDiagFlags; /* 0464 */ + CHAR PlaceholderCompatibilityMode; /* 0468 */ + CHAR PlaceholderCompatibilityModeReserved[7]; /* 0469 */ + ULONG LeapSecondData; /* 0470 */ + ULONG LeapSecondFlags; /* 0474 */ + ULONG NtGlobalFlag2; /* 0478 */ +} PEB32; + +C_ASSERT( sizeof(PEB32) == 0x480 ); + +typedef struct _PEB64 +{ + BOOLEAN InheritedAddressSpace; /* 0000 */ + BOOLEAN ReadImageFileExecOptions; /* 0001 */ + BOOLEAN BeingDebugged; /* 0002 */ + UCHAR ImageUsedLargePages : 1; /* 0003 */ + UCHAR IsProtectedProcess : 1; + UCHAR IsImageDynamicallyRelocated : 1; + UCHAR SkipPatchingUser32Forwarders : 1; + UCHAR IsPackagedProcess : 1; + UCHAR IsAppContainer: 1; + UCHAR IsProtectedProcessLight : 1; + UCHAR IsLongPathAwareProcess : 1; + ULONG64 Mutant; /* 0008 */ + ULONG64 ImageBaseAddress; /* 0010 */ + ULONG64 LdrData; /* 0018 */ + ULONG64 ProcessParameters; /* 0020 */ + ULONG64 SubSystemData; /* 0028 */ + ULONG64 ProcessHeap; /* 0030 */ + ULONG64 FastPebLock; /* 0038 */ + ULONG64 AtlThunkSListPtr; /* 0040 */ + ULONG64 IFEOKey; /* 0048 */ + ULONG ProcessInJob : 1; /* 0050 */ + ULONG ProcessInitializing : 1; + ULONG ProcessUsingVEH : 1; + ULONG ProcessUsingVCH : 1; + ULONG ProcessUsingFTH : 1; + ULONG ProcessPreviouslyThrottled : 1; + ULONG ProcessCurrentlyThrottled : 1; + ULONG ProcessImagesHotPatched : 1; + ULONG ReservedBits0 : 24; + ULONG64 KernelCallbackTable; /* 0058 */ + ULONG Reserved; /* 0060 */ + ULONG AtlThunkSListPtr32; /* 0064 */ + ULONG64 ApiSetMap; /* 0068 */ + ULONG TlsExpansionCounter; /* 0070 */ + ULONG64 TlsBitmap; /* 0078 */ + ULONG TlsBitmapBits[2]; /* 0080 */ + ULONG64 ReadOnlySharedMemoryBase; /* 0088 */ + ULONG64 SharedData; /* 0090 */ + ULONG64 ReadOnlyStaticServerData; /* 0098 */ + ULONG64 AnsiCodePageData; /* 00a0 */ + ULONG64 OemCodePageData; /* 00a8 */ + ULONG64 UnicodeCaseTableData; /* 00b0 */ + ULONG NumberOfProcessors; /* 00b8 */ + ULONG NtGlobalFlag; /* 00bc */ + LARGE_INTEGER CriticalSectionTimeout; /* 00c0 */ + ULONG64 HeapSegmentReserve; /* 00c8 */ + ULONG64 HeapSegmentCommit; /* 00d0 */ + ULONG64 HeapDeCommitTotalFreeThreshold; /* 00d8 */ + ULONG64 HeapDeCommitFreeBlockThreshold; /* 00e0 */ + ULONG NumberOfHeaps; /* 00e8 */ + ULONG MaximumNumberOfHeaps; /* 00ec */ + ULONG64 ProcessHeaps; /* 00f0 */ + ULONG64 GdiSharedHandleTable; /* 00f8 */ + ULONG64 ProcessStarterHelper; /* 0100 */ + ULONG64 GdiDCAttributeList; /* 0108 */ + ULONG64 LoaderLock; /* 0110 */ + ULONG OSMajorVersion; /* 0118 */ + ULONG OSMinorVersion; /* 011c */ + ULONG OSBuildNumber; /* 0120 */ + ULONG OSPlatformId; /* 0124 */ + ULONG ImageSubSystem; /* 0128 */ + ULONG ImageSubSystemMajorVersion; /* 012c */ + ULONG ImageSubSystemMinorVersion; /* 0130 */ + ULONG64 ActiveProcessAffinityMask; /* 0138 */ + ULONG GdiHandleBuffer[60]; /* 0140 */ + ULONG64 PostProcessInitRoutine; /* 0230 */ + ULONG64 TlsExpansionBitmap; /* 0238 */ + ULONG TlsExpansionBitmapBits[32]; /* 0240 */ + ULONG SessionId; /* 02c0 */ + ULARGE_INTEGER AppCompatFlags; /* 02c8 */ + ULARGE_INTEGER AppCompatFlagsUser; /* 02d0 */ + ULONG64 ShimData; /* 02d8 */ + ULONG64 AppCompatInfo; /* 02e0 */ + UNICODE_STRING64 CSDVersion; /* 02e8 */ + ULONG64 ActivationContextData; /* 02f8 */ + ULONG64 ProcessAssemblyStorageMap; /* 0300 */ + ULONG64 SystemDefaultActivationData; /* 0308 */ + ULONG64 SystemAssemblyStorageMap; /* 0310 */ + ULONG64 MinimumStackCommit; /* 0318 */ + ULONG64 FlsCallback; /* 0320 */ + LIST_ENTRY64 FlsListHead; /* 0328 */ + union + { + ULONG64 FlsBitmap; /* 0338 */ + ULONG64 ChpeV2ProcessInfo; /* 0338 */ + }; + ULONG FlsBitmapBits[4]; /* 0340 */ + ULONG FlsHighIndex; /* 0350 */ + ULONG64 WerRegistrationData; /* 0358 */ + ULONG64 WerShipAssertPtr; /* 0360 */ + ULONG64 pUnused; /* 0368 */ + ULONG64 pImageHeaderHash; /* 0370 */ + ULONG HeapTracingEnabled : 1; /* 0378 */ + ULONG CritSecTracingEnabled : 1; + ULONG LibLoaderTracingEnabled : 1; + ULONG SpareTracingBits : 29; + ULONGLONG CsrServerReadOnlySharedMemoryBase; /* 0380 */ + ULONG TppWorkerpListLock; /* 0388 */ + LIST_ENTRY64 TppWorkerpList; /* 0390 */ + ULONG64 WaitOnAddressHashTable [0x80]; /* 03a0 */ + ULONG64 TelemetryCoverageHeader; /* 07a0 */ + ULONG CloudFileFlags; /* 07a8 */ + ULONG CloudFileDiagFlags; /* 07ac */ + CHAR PlaceholderCompatibilityMode; /* 07b0 */ + CHAR PlaceholderCompatibilityModeReserved[7]; /* 07b1 */ + ULONG64 LeapSecondData; /* 07b8 */ + ULONG LeapSecondFlags; /* 07c0 */ + ULONG NtGlobalFlag2; /* 07c4 */ +} PEB64; + +C_ASSERT( sizeof(PEB64) == 0x7c8 ); + +typedef struct _TEB32 +{ + NT_TIB32 Tib; /* 0000 */ + ULONG EnvironmentPointer; /* 001c */ + CLIENT_ID32 ClientId; /* 0020 */ + ULONG ActiveRpcHandle; /* 0028 */ + ULONG ThreadLocalStoragePointer; /* 002c */ + ULONG Peb; /* 0030 */ + ULONG LastErrorValue; /* 0034 */ + ULONG CountOfOwnedCriticalSections; /* 0038 */ + ULONG CsrClientThread; /* 003c */ + ULONG Win32ThreadInfo; /* 0040 */ + ULONG User32Reserved[26]; /* 0044 */ + ULONG UserReserved[5]; /* 00ac */ + ULONG WOW32Reserved; /* 00c0 */ + ULONG CurrentLocale; /* 00c4 */ + ULONG FpSoftwareStatusRegister; /* 00c8 */ + ULONG ReservedForDebuggerInstrumentation[16]; /* 00cc */ + ULONG SystemReserved1[26]; /* 010c */ + char PlaceholderCompatibilityMode; /* 0174 */ + BOOLEAN PlaceholderHydrationAlwaysExplicit;/* 0175 */ + char PlaceholderReserved[10]; /* 0176 */ + DWORD ProxiedProcessId; /* 0180 */ + ACTIVATION_CONTEXT_STACK32 ActivationContextStack; /* 0184 */ + UCHAR WorkingOnBehalfOfTicket[8]; /* 019c */ + LONG ExceptionCode; /* 01a4 */ + ULONG ActivationContextStackPointer; /* 01a8 */ + ULONG InstrumentationCallbackSp; /* 01ac */ + ULONG InstrumentationCallbackPreviousPc; /* 01b0 */ + ULONG InstrumentationCallbackPreviousSp; /* 01b4 */ + BOOLEAN InstrumentationCallbackDisabled; /* 01b8 */ + BYTE SpareBytes1[23]; /* 01b9 */ + ULONG TxFsContext; /* 01d0 */ + ULONG GdiTebBatch[0x138]; /* 01d4 */ + CLIENT_ID32 RealClientId; /* 06b4 */ + ULONG GdiCachedProcessHandle; /* 06bc */ + ULONG GdiClientPID; /* 06c0 */ + ULONG GdiClientTID; /* 06c4 */ + ULONG GdiThreadLocaleInfo; /* 06c8 */ + ULONG Win32ClientInfo[62]; /* 06cc */ + ULONG glDispatchTable[233]; /* 07c4 */ + ULONG glReserved1[29]; /* 0b68 */ + ULONG glReserved2; /* 0bdc */ + ULONG glSectionInfo; /* 0be0 */ + ULONG glSection; /* 0be4 */ + ULONG glTable; /* 0be8 */ + ULONG glCurrentRC; /* 0bec */ + ULONG glContext; /* 0bf0 */ + ULONG LastStatusValue; /* 0bf4 */ + UNICODE_STRING32 StaticUnicodeString; /* 0bf8 */ + WCHAR StaticUnicodeBuffer[261]; /* 0c00 */ + ULONG DeallocationStack; /* 0e0c */ + ULONG TlsSlots[64]; /* 0e10 */ + LIST_ENTRY32 TlsLinks; /* 0f10 */ + ULONG Vdm; /* 0f18 */ + ULONG ReservedForNtRpc; /* 0f1c */ + ULONG DbgSsReserved[2]; /* 0f20 */ + ULONG HardErrorMode; /* 0f28 */ + ULONG Instrumentation[9]; /* 0f2c */ + GUID ActivityId; /* 0f50 */ + ULONG SubProcessTag; /* 0f60 */ + ULONG PerflibData; /* 0f64 */ + ULONG EtwTraceData; /* 0f68 */ + ULONG WinSockData; /* 0f6c */ + ULONG GdiBatchCount; /* 0f70 */ + ULONG IdealProcessorValue; /* 0f74 */ + ULONG GuaranteedStackBytes; /* 0f78 */ + ULONG ReservedForPerf; /* 0f7c */ + ULONG ReservedForOle; /* 0f80 */ + ULONG WaitingOnLoaderLock; /* 0f84 */ + ULONG SavedPriorityState; /* 0f88 */ + ULONG ReservedForCodeCoverage; /* 0f8c */ + ULONG ThreadPoolData; /* 0f90 */ + ULONG TlsExpansionSlots; /* 0f94 */ + ULONG MuiGeneration; /* 0f98 */ + ULONG IsImpersonating; /* 0f9c */ + ULONG NlsCache; /* 0fa0 */ + ULONG ShimData; /* 0fa4 */ + ULONG HeapVirtualAffinity; /* 0fa8 */ + ULONG CurrentTransactionHandle; /* 0fac */ + ULONG ActiveFrame; /* 0fb0 */ + ULONG FlsSlots; /* 0fb4 */ + ULONG PreferredLanguages; /* 0fb8 */ + ULONG UserPrefLanguages; /* 0fbc */ + ULONG MergedPrefLanguages; /* 0fc0 */ + ULONG MuiImpersonation; /* 0fc4 */ + USHORT CrossTebFlags; /* 0fc8 */ + USHORT SameTebFlags; /* 0fca */ + ULONG TxnScopeEnterCallback; /* 0fcc */ + ULONG TxnScopeExitCallback; /* 0fd0 */ + ULONG TxnScopeContext; /* 0fd4 */ + ULONG LockCount; /* 0fd8 */ + LONG WowTebOffset; /* 0fdc */ + ULONG ResourceRetValue; /* 0fe0 */ + ULONG ReservedForWdf; /* 0fe4 */ + ULONGLONG ReservedForCrt; /* 0fe8 */ + GUID EffectiveContainerId; /* 0ff0 */ +} TEB32; + +C_ASSERT( sizeof(TEB32) == 0x1000 ); + +typedef struct _TEB64 +{ + NT_TIB64 Tib; /* 0000 */ + ULONG64 EnvironmentPointer; /* 0038 */ + CLIENT_ID64 ClientId; /* 0040 */ + ULONG64 ActiveRpcHandle; /* 0050 */ + ULONG64 ThreadLocalStoragePointer; /* 0058 */ + ULONG64 Peb; /* 0060 */ + ULONG LastErrorValue; /* 0068 */ + ULONG CountOfOwnedCriticalSections; /* 006c */ + ULONG64 CsrClientThread; /* 0070 */ + ULONG64 Win32ThreadInfo; /* 0078 */ + ULONG User32Reserved[26]; /* 0080 */ + ULONG UserReserved[5]; /* 00e8 */ + ULONG64 WOW32Reserved; /* 0100 */ + ULONG CurrentLocale; /* 0108 */ + ULONG FpSoftwareStatusRegister; /* 010c */ + ULONG64 ReservedForDebuggerInstrumentation[16]; /* 0110 */ + ULONG64 SystemReserved1[30]; /* 0190 */ + char PlaceholderCompatibilityMode; /* 0280 */ + BOOLEAN PlaceholderHydrationAlwaysExplicit;/* 0281 */ + char PlaceholderReserved[10]; /* 0282 */ + DWORD ProxiedProcessId; /* 028c */ + ACTIVATION_CONTEXT_STACK64 ActivationContextStack; /* 0290 */ + UCHAR WorkingOnBehalfOfTicket[8]; /* 02b8 */ + LONG ExceptionCode; /* 02c0 */ + ULONG64 ActivationContextStackPointer; /* 02c8 */ + ULONG64 InstrumentationCallbackSp; /* 02d0 */ + ULONG64 InstrumentationCallbackPreviousPc; /* 02d8 */ + ULONG64 InstrumentationCallbackPreviousSp; /* 02e0 */ + ULONG TxFsContext; /* 02e8 */ + BOOLEAN InstrumentationCallbackDisabled; /* 02ec */ + BOOLEAN UnalignedLoadStoreExceptions; /* 02ed */ + ULONG64 GdiTebBatch[0x9d]; /* 02f0 */ + CLIENT_ID64 RealClientId; /* 07d8 */ + ULONG64 GdiCachedProcessHandle; /* 07e8 */ + ULONG GdiClientPID; /* 07f0 */ + ULONG GdiClientTID; /* 07f4 */ + ULONG64 GdiThreadLocaleInfo; /* 07f8 */ + ULONG64 Win32ClientInfo[62]; /* 0800 */ + ULONG64 glDispatchTable[233]; /* 09f0 */ + ULONG64 glReserved1[29]; /* 1138 */ + ULONG64 glReserved2; /* 1220 */ + ULONG64 glSectionInfo; /* 1228 */ + ULONG64 glSection; /* 1230 */ + ULONG64 glTable; /* 1238 */ + ULONG64 glCurrentRC; /* 1240 */ + ULONG64 glContext; /* 1248 */ + ULONG LastStatusValue; /* 1250 */ + UNICODE_STRING64 StaticUnicodeString; /* 1258 */ + WCHAR StaticUnicodeBuffer[261]; /* 1268 */ + ULONG64 DeallocationStack; /* 1478 */ + ULONG64 TlsSlots[64]; /* 1480 */ + LIST_ENTRY64 TlsLinks; /* 1680 */ + ULONG64 Vdm; /* 1690 */ + ULONG64 ReservedForNtRpc; /* 1698 */ + ULONG64 DbgSsReserved[2]; /* 16a0 */ + ULONG HardErrorMode; /* 16b0 */ + ULONG64 Instrumentation[11]; /* 16b8 */ + GUID ActivityId; /* 1710 */ + ULONG64 SubProcessTag; /* 1720 */ + ULONG64 PerflibData; /* 1728 */ + ULONG64 EtwTraceData; /* 1730 */ + ULONG64 WinSockData; /* 1738 */ + ULONG GdiBatchCount; /* 1740 */ + ULONG IdealProcessorValue; /* 1744 */ + ULONG GuaranteedStackBytes; /* 1748 */ + ULONG64 ReservedForPerf; /* 1750 */ + ULONG64 ReservedForOle; /* 1758 */ + ULONG WaitingOnLoaderLock; /* 1760 */ + ULONG64 SavedPriorityState; /* 1768 */ + ULONG64 ReservedForCodeCoverage; /* 1770 */ + ULONG64 ThreadPoolData; /* 1778 */ + ULONG64 TlsExpansionSlots; /* 1780 */ + union { + ULONG64 DeallocationBStore; /* 1788 */ + ULONG64 ChpeV2CpuAreaInfo; /* 1788 */ + } DUMMYUNIONNAME; + ULONG64 BStoreLimit; /* 1790 */ + ULONG MuiGeneration; /* 1798 */ + ULONG IsImpersonating; /* 179c */ + ULONG64 NlsCache; /* 17a0 */ + ULONG64 ShimData; /* 17a8 */ + ULONG HeapVirtualAffinity; /* 17b0 */ + ULONG64 CurrentTransactionHandle; /* 17b8 */ + ULONG64 ActiveFrame; /* 17c0 */ + ULONG64 FlsSlots; /* 17c8 */ + ULONG64 PreferredLanguages; /* 17d0 */ + ULONG64 UserPrefLanguages; /* 17d8 */ + ULONG64 MergedPrefLanguages; /* 17e0 */ + ULONG MuiImpersonation; /* 17e8 */ + USHORT CrossTebFlags; /* 17ec */ + USHORT SameTebFlags; /* 17ee */ + ULONG64 TxnScopeEnterCallback; /* 17f0 */ + ULONG64 TxnScopeExitCallback; /* 17f8 */ + ULONG64 TxnScopeContext; /* 1800 */ + ULONG LockCount; /* 1808 */ + LONG WowTebOffset; /* 180c */ + ULONG64 ResourceRetValue; /* 1810 */ + ULONG64 ReservedForWdf; /* 1818 */ + ULONGLONG ReservedForCrt; /* 1820 */ + GUID EffectiveContainerId; /* 1828 */ +} TEB64; + +C_ASSERT( sizeof(TEB64) == 0x1838 ); + +#ifdef _WIN64 +C_ASSERT( sizeof(PEB) == sizeof(PEB64) ); +C_ASSERT( sizeof(TEB) == sizeof(TEB64) ); +#else +C_ASSERT( sizeof(PEB) == sizeof(PEB32) ); +C_ASSERT( sizeof(TEB) == sizeof(TEB32) ); +#endif + +/* reserved TEB64 TLS slots for Wow64 */ +#define WOW64_TLS_CPURESERVED 1 +#define WOW64_TLS_TEMPLIST 3 +#define WOW64_TLS_USERCALLBACKDATA 5 +#define WOW64_TLS_APCLIST 7 +#define WOW64_TLS_FILESYSREDIR 8 +#define WOW64_TLS_WOW64INFO 10 +#define WOW64_TLS_MAX_NUMBER 19 + + /*********************************************************************** * Enums */ @@ -507,6 +1436,19 @@ typedef enum _FILE_INFORMATION_CLASS { FileReplaceCompletionInformation, FileHardLinkFullIdInformation, FileIdExtdBothDirectoryInformation, + FileDispositionInformationEx, + FileRenameInformationEx, + FileRenameInformationExBypassAccessCheck, + FileDesiredStorageClassInformation, + FileStatInformation, + FileMemoryPartitionInformation, + FileStatLxInformation, + FileCaseSensitiveInformation, + FileLinkInformationEx, + FileLinkInformationExBypassAccessCheck, + FileStorageReserveIdInformation, + FileCaseSensitiveInformationForceAccessCheck, + FileKnownFolderInformation, FileMaximumInformation } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS; @@ -652,19 +1594,45 @@ typedef struct _FILE_NAME_INFORMATION { } FILE_NAME_INFORMATION, *PFILE_NAME_INFORMATION; typedef struct _FILE_RENAME_INFORMATION { - BOOLEAN Replace; - HANDLE RootDir; + union { + BOOLEAN ReplaceIfExists; + ULONG Flags; + } DUMMYUNIONNAME; + HANDLE RootDirectory; ULONG FileNameLength; WCHAR FileName[1]; } FILE_RENAME_INFORMATION, *PFILE_RENAME_INFORMATION; +#define FILE_RENAME_REPLACE_IF_EXISTS 0x00000001 +#define FILE_RENAME_POSIX_SEMANTICS 0x00000002 +#define FILE_RENAME_SUPPRESS_PIN_STATE_INHERITANCE 0x00000004 +#define FILE_RENAME_SUPPRESS_STORAGE_RESERVE_INHERITANCE 0x00000008 +#define FILE_RENAME_NO_INCREASE_AVAILABLE_SPACE 0x00000010 +#define FILE_RENAME_NO_DECREASE_AVAILABLE_SPACE 0x00000020 +#define FILE_RENAME_PRESERVE_AVAILABLE_SPACE 0x00000030 +#define FILE_RENAME_IGNORE_READONLY_ATTRIBUTE 0x00000040 + typedef struct _FILE_LINK_INFORMATION { - BOOLEAN ReplaceIfExists; + union { + BOOLEAN ReplaceIfExists; + ULONG Flags; + } DUMMYUNIONNAME; HANDLE RootDirectory; ULONG FileNameLength; WCHAR FileName[1]; } FILE_LINK_INFORMATION, *PFILE_LINK_INFORMATION; +#define FILE_LINK_REPLACE_IF_EXISTS 0x00000001 +#define FILE_LINK_POSIX_SEMANTICS 0x00000002 +#define FILE_LINK_SUPPRESS_STORAGE_RESERVE_INHERITANCE 0x00000008 +#define FILE_LINK_NO_INCREASE_AVAILABLE_SPACE 0x00000010 +#define FILE_LINK_NO_DECREASE_AVAILABLE_SPACE 0x00000020 +#define FILE_LINK_PRESERVE_AVAILABLE_SPACE 0x00000030 +#define FILE_LINK_IGNORE_READONLY_ATTRIBUTE 0x00000040 +#define FILE_LINK_FORCE_RESIZE_TARGET_SR 0x00000080 +#define FILE_LINK_FORCE_RESIZE_SOURCE_SR 0x00000100 +#define FILE_LINK_FORCE_RESIZE_SR 0x00000180 + typedef struct _FILE_NAMES_INFORMATION { ULONG NextEntryOffset; ULONG FileIndex; @@ -676,6 +1644,17 @@ typedef struct _FILE_DISPOSITION_INFORMATION { BOOLEAN DoDeleteFile; } FILE_DISPOSITION_INFORMATION, *PFILE_DISPOSITION_INFORMATION; +typedef struct _FILE_DISPOSITION_INFORMATION_EX { + ULONG Flags; +} FILE_DISPOSITION_INFORMATION_EX, *PFILE_DISPOSITION_INFORMATION_EX; + +#define FILE_DISPOSITION_DO_NOT_DELETE 0x00000000 +#define FILE_DISPOSITION_DELETE 0x00000001 +#define FILE_DISPOSITION_POSIX_SEMANTICS 0x00000002 +#define FILE_DISPOSITION_FORCE_IMAGE_SECTION_CHECK 0x00000004 +#define FILE_DISPOSITION_ON_CLOSE 0x00000008 +#define FILE_DISPOSITION_IGNORE_READONLY_ATTRIBUTE 0x00000010 + typedef struct _FILE_POSITION_INFORMATION { LARGE_INTEGER CurrentByteOffset; } FILE_POSITION_INFORMATION, *PFILE_POSITION_INFORMATION; @@ -759,6 +1738,26 @@ typedef struct _FILE_PIPE_LOCAL_INFORMATION { ULONG NamedPipeEnd; } FILE_PIPE_LOCAL_INFORMATION, *PFILE_PIPE_LOCAL_INFORMATION; +#define FILE_PIPE_DISCONNECTED_STATE 0x00000001 +#define FILE_PIPE_LISTENING_STATE 0x00000002 +#define FILE_PIPE_CONNECTED_STATE 0x00000003 +#define FILE_PIPE_CLOSING_STATE 0x00000004 + +typedef struct _FILE_OBJECTID_BUFFER +{ + BYTE ObjectId[16]; + union + { + struct + { + BYTE BirthVolumeId[16]; + BYTE BirthObjectId[16]; + BYTE DomainId[16]; + } DUMMYSTRUCTNAME; + BYTE ExtendedInfo[48]; + } DUMMYUNIONNAME; +} FILE_OBJECTID_BUFFER, *PFILE_OBJECTID_BUFFER; + typedef struct _FILE_OBJECTID_INFORMATION { LONGLONG FileReference; UCHAR ObjectId[16]; @@ -787,11 +1786,6 @@ typedef struct _FILE_REPARSE_POINT_INFORMATION { ULONG Tag; } FILE_REPARSE_POINT_INFORMATION, *PFILE_REPARSE_POINT_INFORMATION; -#define FILE_PIPE_DISCONNECTED_STATE 0x01 -#define FILE_PIPE_LISTENING_STATE 0x02 -#define FILE_PIPE_CONNECTED_STATE 0x03 -#define FILE_PIPE_CLOSING_STATE 0x04 - typedef struct _FILE_ALL_INFORMATION { FILE_BASIC_INFORMATION BasicInformation; FILE_STANDARD_INFORMATION StandardInformation; @@ -804,6 +1798,20 @@ typedef struct _FILE_ALL_INFORMATION { FILE_NAME_INFORMATION NameInformation; } FILE_ALL_INFORMATION, *PFILE_ALL_INFORMATION; +typedef struct _FILE_STAT_INFORMATION { + LARGE_INTEGER FileId; + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + LARGE_INTEGER AllocationSize; + LARGE_INTEGER EndOfFile; + ULONG FileAttributes; + ULONG ReparseTag; + ULONG NumberOfLinks; + ULONG EffectiveAccess; +} FILE_STAT_INFORMATION, *PFILE_STAT_INFORMATION; + typedef struct _FILE_IO_COMPLETION_NOTIFICATION_INFORMATION { ULONG Flags; } FILE_IO_COMPLETION_NOTIFICATION_INFORMATION, *PFILE_IO_COMPLETION_NOTIFICATION_INFORMATION; @@ -812,6 +1820,13 @@ typedef struct _FILE_IO_COMPLETION_NOTIFICATION_INFORMATION { #define FILE_SKIP_SET_EVENT_ON_HANDLE 0x2 #define FILE_SKIP_SET_USER_EVENT_ON_FAST_IO 0x4 +typedef struct _PROCESS_INSTRUMENTATION_CALLBACK_INFORMATION +{ + ULONG Version; + ULONG Reserved; + VOID *Callback; +} PROCESS_INSTRUMENTATION_CALLBACK_INFORMATION, *PPROCESS_INSTRUMENTATION_CALLBACK_INFORMATION; + typedef enum _FSINFOCLASS { FileFsVolumeInformation = 1, FileFsLabelInformation, @@ -821,6 +1836,12 @@ typedef enum _FSINFOCLASS { FileFsControlInformation, FileFsFullSizeInformation, FileFsObjectIdInformation, + FileFsDriverPathInformation, + FileFsVolumeFlagsInformation, + FileFsSectorSizeInformation, + FileFsDataCopyInformation, + FileFsMetadataSizeInformation, + FileFsFullSizeInformationEx, FileFsMaximumInformation } FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS; @@ -833,6 +1854,8 @@ typedef enum _KEY_INFORMATION_CLASS { KeyFlagsInformation, KeyVirtualizationInformation, KeyHandleTagsInformation, + KeyTrustInformation, + KeyLayerInformation, MaxKeyInfoClass } KEY_INFORMATION_CLASS; @@ -841,7 +1864,8 @@ typedef enum _KEY_VALUE_INFORMATION_CLASS { KeyValueFullInformation, KeyValuePartialInformation, KeyValueFullInformationAlign64, - KeyValuePartialInformationAlign64 + KeyValuePartialInformationAlign64, + KeyValueLayerInformation, } KEY_VALUE_INFORMATION_CLASS; typedef enum _OBJECT_INFORMATION_CLASS { @@ -849,7 +1873,9 @@ typedef enum _OBJECT_INFORMATION_CLASS { ObjectNameInformation, ObjectTypeInformation, ObjectTypesInformation, - ObjectDataInformation + ObjectHandleFlagInformation, + ObjectSessionInformation, + ObjectSessionObjectInformation, } OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS; typedef enum _PROCESSINFOCLASS { @@ -886,6 +1912,7 @@ typedef enum _PROCESSINFOCLASS { ProcessDebugObjectHandle = 30, ProcessDebugFlags = 31, ProcessHandleTracing = 32, + ProcessIoPriority = 33, ProcessExecuteFlags = 34, ProcessTlsInformation = 35, ProcessCookie = 36, @@ -903,8 +1930,74 @@ typedef enum _PROCESSINFOCLASS { ProcessTokenVirtualizationEnabled = 48, ProcessConsoleHostProcess = 49, ProcessWindowInformation = 50, - MaxProcessInfoClass -} PROCESSINFOCLASS, PROCESS_INFORMATION_CLASS; + ProcessHandleInformation = 51, + ProcessMitigationPolicy = 52, + ProcessDynamicFunctionTableInformation = 53, + ProcessHandleCheckingMode = 54, + ProcessKeepAliveCount = 55, + ProcessRevokeFileHandles = 56, + ProcessWorkingSetControl = 57, + ProcessHandleTable = 58, + ProcessCheckStackExtentsMode = 59, + ProcessCommandLineInformation = 60, + ProcessProtectionInformation = 61, + ProcessMemoryExhaustion = 62, + ProcessFaultInformation = 63, + ProcessTelemetryIdInformation = 64, + ProcessCommitReleaseInformation = 65, + ProcessDefaultCpuSetsInformation = 66, + ProcessAllowedCpuSetsInformation = 67, + ProcessSubsystemProcess = 68, + ProcessJobMemoryInformation = 69, + ProcessInPrivate = 70, + ProcessRaiseUMExceptionOnInvalidHandleClose = 71, + ProcessIumChallengeResponse = 72, + ProcessChildProcessInformation = 73, + ProcessHighGraphicsPriorityInformation = 74, + ProcessSubsystemInformation = 75, + ProcessEnergyValues = 76, + ProcessPowerThrottlingState = 77, + ProcessReserved3Information = 78, + ProcessWin32kSyscallFilterInformation = 79, + ProcessDisableSystemAllowedCpuSets = 80, + ProcessWakeInformation = 81, + ProcessEnergyTrackingState = 82, + ProcessManageWritesToExecutableMemory = 83, + ProcessCaptureTrustletLiveDump = 84, + ProcessTelemetryCoverage = 85, + ProcessEnclaveInformation = 86, + ProcessEnableReadWriteVmLogging = 87, + ProcessUptimeInformation = 88, + ProcessImageSection = 89, + ProcessDebugAuthInformation = 90, + ProcessSystemResourceManagement = 91, + ProcessSequenceNumber = 92, + ProcessLoaderDetour = 93, + ProcessSecurityDomainInformation = 94, + ProcessCombineSecurityDomainsInformation = 95, + ProcessEnableLogging = 96, + ProcessLeapSecondInformation = 97, + ProcessFiberShadowStackAllocation = 98, + ProcessFreeFiberShadowStackAllocation = 99, + ProcessAltSystemCallInformation = 100, + ProcessDynamicEHContinuationTargets = 101, + ProcessDynamicEnforcedCetCompatibleRanges = 102, + ProcessCreateStateChange = 103, + ProcessApplyStateChange = 104, + ProcessEnableOptionalXStateFeatures = 105, + ProcessAltPrefetchParam = 106, + ProcessAssignCpuPartitions = 107, + ProcessPriorityClassEx = 108, + ProcessMembershipInformation = 109, + ProcessEffectiveIoPriority = 110, + ProcessEffectivePagePriority = 111, + MaxProcessInfoClass, +#ifdef __WINESRC__ + ProcessWineMakeProcessSystem = 1000, + ProcessWineLdtCopy, + ProcessWineGrantAdminToken, +#endif +} PROCESSINFOCLASS; #define MEM_EXECUTE_OPTION_DISABLE 0x01 #define MEM_EXECUTE_OPTION_ENABLE 0x02 @@ -921,54 +2014,57 @@ typedef enum _SYSTEM_INFORMATION_CLASS { SystemCpuInformation = 1, SystemPerformanceInformation = 2, SystemTimeOfDayInformation = 3, /* was SystemTimeInformation */ - Unknown4, + SystemPathInformation = 4, SystemProcessInformation = 5, - Unknown6, - Unknown7, + SystemCallCountInformation = 6, + SystemDeviceInformation = 7, SystemProcessorPerformanceInformation = 8, - Unknown9, - Unknown10, + SystemFlagsInformation = 9, + SystemCallTimeInformation = 10, SystemModuleInformation = 11, - Unknown12, - Unknown13, - Unknown14, - Unknown15, + SystemLocksInformation = 12, + SystemStackTraceInformation = 13, + SystemPagedPoolInformation = 14, + SystemNonPagedPoolInformation = 15, SystemHandleInformation = 16, - Unknown17, + SystemObjectInformation = 17, SystemPageFileInformation = 18, - Unknown19, - Unknown20, - SystemCacheInformation = 21, - Unknown22, + SystemVdmInstemulInformation = 19, + SystemVdmBopInformation = 20, + SystemFileCacheInformation = 21, + SystemPoolTagInformation = 22, SystemInterruptInformation = 23, - SystemDpcBehaviourInformation = 24, + SystemDpcBehaviorInformation = 24, SystemFullMemoryInformation = 25, SystemNotImplemented6 = 25, - SystemLoadImage = 26, - SystemUnloadImage = 27, + SystemLoadGdiDriverInformation = 26, + SystemUnloadGdiDriverInformation = 27, SystemTimeAdjustmentInformation = 28, SystemTimeAdjustment = 28, SystemSummaryMemoryInformation = 29, - SystemNotImplemented7 = 29, - SystemNextEventIdInformation = 30, - SystemNotImplemented8 = 30, - SystemEventIdsInformation = 31, - SystemCrashDumpInformation = 32, + SystemMirrorMemoryInformation = 30, + SystemPerformanceTraceInformation = 31, + SystemObsolete0 = 32, SystemExceptionInformation = 33, SystemCrashDumpStateInformation = 34, SystemKernelDebuggerInformation = 35, SystemContextSwitchInformation = 36, SystemRegistryQuotaInformation = 37, + SystemExtendServiceTableInformation = 38, + SystemPrioritySeparation = 39, + SystemVerifierAddDriverInformation = 40, + SystemVerifierRemoveDriverInformation = 41, + SystemProcessorIdleInformation = 42, + SystemLegacyDriverInformation = 43, SystemCurrentTimeZoneInformation = 44, - SystemTimeZoneInformation = 44, SystemLookasideInformation = 45, - SystemSetTimeSlipEvent = 46, - SystemCreateSession = 47, - SystemDeleteSession = 48, - SystemInvalidInfoClass4 = 49, + SystemTimeSlipNotification = 46, + SystemSessionCreate = 47, + SystemSessionDetach = 48, + SystemSessionInformation = 49, SystemRangeStartInformation = 50, SystemVerifierInformation = 51, - SystemAddVerifier = 52, + SystemVerifierThunkExtend = 52, SystemSessionProcessesInformation = 53, SystemLoadGdiDriverInSystemSpace = 54, SystemNumaProcessorMap = 55, @@ -990,7 +2086,7 @@ typedef enum _SYSTEM_INFORMATION_CLASS { SystemWatchdogTimerHandler = 71, SystemWatchdogTimerInformation = 72, SystemLogicalProcessorInformation = 73, - SystemWow64SharedInformation = 74, + SystemWow64SharedInformationObsolete = 74, SystemRegisterFirmwareTableInformationHandler = 75, SystemFirmwareTableInformation = 76, SystemModuleInformationEx = 77, @@ -998,12 +2094,191 @@ typedef enum _SYSTEM_INFORMATION_CLASS { SystemSuperfetchInformation = 79, SystemMemoryListInformation = 80, SystemFileCacheInformationEx = 81, + SystemThreadPriorityClientIdInformation = 82, + SystemProcessorIdleCycleTimeInformation = 83, + SystemVerifierCancellationInformation = 84, + SystemProcessorPowerInformationEx = 85, + SystemRefTraceInformation = 86, + SystemSpecialPoolInformation = 87, + SystemProcessIdInformation = 88, + SystemErrorPortInformation = 89, + SystemBootEnvironmentInformation = 90, + SystemHypervisorInformation = 91, + SystemVerifierInformationEx = 92, + SystemTimeZoneInformation = 93, + SystemImageFileExecutionOptionsInformation = 94, + SystemCoverageInformation = 95, + SystemPrefetchPatchInformation = 96, + SystemVerifierFaultsInformation = 97, + SystemSystemPartitionInformation = 98, + SystemSystemDiskInformation = 99, + SystemProcessorPerformanceDistribution = 100, + SystemNumaProximityNodeInformation = 101, + SystemDynamicTimeZoneInformation = 102, + SystemCodeIntegrityInformation = 103, + SystemProcessorMicrocodeUpdateInformation = 104, + SystemProcessorBrandString = 105, + SystemVirtualAddressInformation = 106, SystemLogicalProcessorInformationEx = 107, - SystemInformationClassMax + SystemProcessorCycleTimeInformation = 108, + SystemStoreInformation = 109, + SystemRegistryAppendString = 110, + SystemAitSamplingValue = 111, + SystemVhdBootInformation = 112, + SystemCpuQuotaInformation = 113, + SystemNativeBasicInformation = 114, + SystemErrorPortTimeouts = 115, + SystemLowPriorityIoInformation = 116, + SystemTpmBootEntropyInformation = 117, + SystemVerifierCountersInformation = 118, + SystemPagedPoolInformationEx = 119, + SystemSystemPtesInformationEx = 120, + SystemNodeDistanceInformation = 121, + SystemAcpiAuditInformation = 122, + SystemBasicPerformanceInformation = 123, + SystemQueryPerformanceCounterInformation = 124, + SystemSessionBigPoolInformation = 125, + SystemBootGraphicsInformation = 126, + SystemScrubPhysicalMemoryInformation = 127, + SystemBadPageInformation = 128, + SystemProcessorProfileControlArea = 129, + SystemCombinePhysicalMemoryInformation = 130, + SystemEntropyInterruptTimingInformation = 131, + SystemConsoleInformation = 132, + SystemPlatformBinaryInformation = 133, + SystemPolicyInformation = 134, + SystemHypervisorProcessorCountInformation = 135, + SystemDeviceDataInformation = 136, + SystemDeviceDataEnumerationInformation = 137, + SystemMemoryTopologyInformation = 138, + SystemMemoryChannelInformation = 139, + SystemBootLogoInformation = 140, + SystemProcessorPerformanceInformationEx = 141, + SystemCriticalProcessErrorLogInformation = 142, + SystemSecureBootPolicyInformation = 143, + SystemPageFileInformationEx = 144, + SystemSecureBootInformation = 145, + SystemEntropyInterruptTimingRawInformation = 146, + SystemPortableWorkspaceEfiLauncherInformation = 147, + SystemFullProcessInformation = 148, + SystemKernelDebuggerInformationEx = 149, + SystemBootMetadataInformation = 150, + SystemSoftRebootInformation = 151, + SystemElamCertificateInformation = 152, + SystemOfflineDumpConfigInformation = 153, + SystemProcessorFeaturesInformation = 154, + SystemRegistryReconciliationInformation = 155, + SystemEdidInformation = 156, + SystemManufacturingInformation = 157, + SystemEnergyEstimationConfigInformation = 158, + SystemHypervisorDetailInformation = 159, + SystemProcessorCycleStatsInformation = 160, + SystemVmGenerationCountInformation = 161, + SystemTrustedPlatformModuleInformation = 162, + SystemKernelDebuggerFlags = 163, + SystemCodeIntegrityPolicyInformation = 164, + SystemIsolatedUserModeInformation = 165, + SystemHardwareSecurityTestInterfaceResultsInformation = 166, + SystemSingleModuleInformation = 167, + SystemAllowedCpuSetsInformation = 168, + SystemVsmProtectionInformation = 169, + SystemInterruptCpuSetsInformation = 170, + SystemSecureBootPolicyFullInformation = 171, + SystemCodeIntegrityPolicyFullInformation = 172, + SystemAffinitizedInterruptProcessorInformation = 173, + SystemRootSiloInformation = 174, + SystemCpuSetInformation = 175, + SystemCpuSetTagInformation = 176, + SystemWin32WerStartCallout = 177, + SystemSecureKernelProfileInformation = 178, + SystemCodeIntegrityPlatformManifestInformation = 179, + SystemInterruptSteeringInformation = 180, + SystemSupportedProcessorArchitectures = 181, + SystemMemoryUsageInformation = 182, + SystemCodeIntegrityCertificateInformation = 183, + SystemPhysicalMemoryInformation = 184, + SystemControlFlowTransition = 185, + SystemKernelDebuggingAllowed = 186, + SystemActivityModerationExeState = 187, + SystemActivityModerationUserSettings = 188, + SystemCodeIntegrityPoliciesFullInformation = 189, + SystemCodeIntegrityUnlockInformation = 190, + SystemIntegrityQuotaInformation = 191, + SystemFlushInformation = 192, + SystemProcessorIdleMaskInformation = 193, + SystemSecureDumpEncryptionInformation = 194, + SystemWriteConstraintInformation = 195, + SystemKernelVaShadowInformation = 196, + SystemHypervisorSharedPageInformation = 197, + SystemFirmwareBootPerformanceInformation = 198, + SystemCodeIntegrityVerificationInformation = 199, + SystemFirmwarePartitionInformation = 200, + SystemSpeculationControlInformation = 201, + SystemDmaGuardPolicyInformation = 202, + SystemEnclaveLaunchControlInformation = 203, + SystemWorkloadAllowedCpuSetsInformation = 204, + SystemCodeIntegrityUnlockModeInformation = 205, + SystemLeapSecondInformation = 206, + SystemFlags2Information = 207, + SystemSecurityModelInformation = 208, + SystemCodeIntegritySyntheticCacheInformation = 209, + SystemFeatureConfigurationInformation = 210, + SystemFeatureConfigurationSectionInformation = 211, + SystemFeatureUsageSubscriptionInformation = 212, + SystemSecureSpeculationControlInformation = 213, + SystemSpacesBootInformation = 214, + SystemFwRamdiskInformation = 215, + SystemWheaIpmiHardwareInformation = 216, + SystemDifSetRuleClassInformation = 217, + SystemDifClearRuleClassInformation = 218, + SystemDifApplyPluginVerificationOnDriver = 219, + SystemDifRemovePluginVerificationOnDriver = 220, + SystemShadowStackInformation = 221, + SystemBuildVersionInformation = 222, + SystemPoolLimitInformation = 223, + SystemCodeIntegrityAddDynamicStore = 224, + SystemCodeIntegrityClearDynamicStores = 225, + SystemDifPoolTrackingInformation = 226, + SystemPoolZeroingInformation = 227, + SystemDpcWatchdogInformation = 228, + SystemDpcWatchdogInformation2 = 229, + SystemSupportedProcessorArchitectures2 = 230, + SystemSingleProcessorRelationshipInformation = 231, + SystemXfgCheckFailureInformation = 232, + SystemIommuStateInformation = 233, + SystemHypervisorMinrootInformation = 234, + SystemHypervisorBootPagesInformation = 235, + SystemPointerAuthInformation = 236, + SystemSecureKernelDebuggerInformation = 237, + SystemOriginalImageFeatureInformation = 238, +#ifdef __WINESRC__ + SystemWineVersionInformation = 1000, +#endif } SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS; +typedef struct _SYSTEM_CODEINTEGRITY_INFORMATION +{ + ULONG Length; + ULONG CodeIntegrityOptions; +} SYSTEM_CODEINTEGRITY_INFORMATION, *PSYSTEM_CODEINTEGRITY_INFORMATION; + +#define CODEINTEGRITY_OPTION_ENABLED 0x0001 +#define CODEINTEGRITY_OPTION_TESTSIGN 0x0002 +#define CODEINTEGRITY_OPTION_UMCI_ENABLED 0x0004 +#define CODEINTEGRITY_OPTION_UMCI_AUDITMODE_ENABLED 0x0008 +#define CODEINTEGRITY_OPTION_UMCI_EXCLUSIONPATHS_ENABLED 0x0010 +#define CODEINTEGRITY_OPTION_TEST_BUILD 0x0020 +#define CODEINTEGRITY_OPTION_PREPRODUCTION_BUILD 0x0040 +#define CODEINTEGRITY_OPTION_DEBUGMODE_ENABLED 0x0080 +#define CODEINTEGRITY_OPTION_FLIGHT_BUILD 0x0100 +#define CODEINTEGRITY_OPTION_FLIGHTING_ENABLED 0x0200 +#define CODEINTEGRITY_OPTION_HVCI_KMCI_ENABLED 0x0400 +#define CODEINTEGRITY_OPTION_HVCI_KMCI_AUDITMODE_ENABLED 0x0800 +#define CODEINTEGRITY_OPTION_HVCI_KMCI_STRICTMODE_ENABLED 0x1000 +#define CODEINTEGRITY_OPTION_HVCI_IUM_ENABLED 0x2000 + typedef enum _THREADINFOCLASS { - ThreadBasicInformation, + ThreadBasicInformation = 0, ThreadTimes, ThreadPriority, ThreadBasePriority, @@ -1037,7 +2312,32 @@ typedef enum _THREADINFOCLASS { ThreadUmsInformation, ThreadCounterProfiling, ThreadIdealProcessorEx, - MaxThreadInfoClass + ThreadCpuAccountingInformation, + ThreadSuspendCount, + ThreadHeterogeneousCpuPolicy, + ThreadContainerId, + ThreadNameInformation, + ThreadSelectedCpuSets, + ThreadSystemThreadInformation, + ThreadActualGroupAffinity, + ThreadDynamicCodePolicyInfo, + ThreadExplicitCaseSensitivity, + ThreadWorkOnBehalfTicket, + ThreadSubsystemInformation, + ThreadDbgkWerReportActive, + ThreadAttachContainer, + ThreadManageWritesToExecutableMemory, + ThreadPowerThrottlingState, + ThreadWorkloadClass, + ThreadCreateStateChange, + ThreadApplyStateChange, + ThreadStrongerBadHandleChecks, + ThreadEffectiveIoPriority, + ThreadEffectivePagePriority, + MaxThreadInfoClass, +#ifdef __WINESRC__ + ThreadWineNativeThreadName = 1000, +#endif } THREADINFOCLASS; typedef struct _THREAD_BASIC_INFORMATION @@ -1056,6 +2356,20 @@ typedef struct _THREAD_DESCRIPTOR_INFORMATION LDT_ENTRY Entry; } THREAD_DESCRIPTOR_INFORMATION, *PTHREAD_DESCRIPTOR_INFORMATION; +typedef struct _THREAD_NAME_INFORMATION +{ + UNICODE_STRING ThreadName; +} THREAD_NAME_INFORMATION, *PTHREAD_NAME_INFORMATION; + +typedef struct _MANAGE_WRITES_TO_EXECUTABLE_MEMORY +{ + ULONG Version : 8; + ULONG ProcessEnableWriteExceptions : 1; + ULONG ThreadAllowWrites : 1; + ULONG Spare : 22; + PVOID KernelWriteToExecutableSignal; +} MANAGE_WRITES_TO_EXECUTABLE_MEMORY, *PMANAGE_WRITES_TO_EXECUTABLE_MEMORY; + typedef struct _KERNEL_USER_TIMES { LARGE_INTEGER CreateTime; LARGE_INTEGER ExitTime; @@ -1069,9 +2383,23 @@ typedef enum _WINSTATIONINFOCLASS { typedef enum _MEMORY_INFORMATION_CLASS { MemoryBasicInformation, - MemoryWorkingSetList, - MemorySectionName, - MemoryBasicVlmInformation + MemoryWorkingSetInformation, + MemoryMappedFilenameInformation, + MemoryRegionInformation, + MemoryWorkingSetExInformation, + MemorySharedCommitInformation, + MemoryImageInformation, + MemoryRegionInformationEx, + MemoryPrivilegedBasicInformation, + MemoryEnclaveImageInformation, + MemoryBasicInformationCapped, + MemoryPhysicalContiguityInformation, + MemoryBadInformation, + MemoryBadInformationAllProcesses, +#ifdef __WINESRC__ + MemoryWineUnixFuncs = 1000, + MemoryWineUnixWow64Funcs, +#endif } MEMORY_INFORMATION_CLASS; typedef struct _MEMORY_SECTION_NAME @@ -1079,6 +2407,65 @@ typedef struct _MEMORY_SECTION_NAME UNICODE_STRING SectionFileName; } MEMORY_SECTION_NAME, *PMEMORY_SECTION_NAME; +typedef union _MEMORY_WORKING_SET_EX_BLOCK { + ULONG_PTR Flags; + struct { + ULONG_PTR Valid : 1; + ULONG_PTR ShareCount : 3; + ULONG_PTR Win32Protection : 11; + ULONG_PTR Shared : 1; + ULONG_PTR Node : 6; + ULONG_PTR Locked : 1; + ULONG_PTR LargePage : 1; + } DUMMYSTRUCTNAME; +} MEMORY_WORKING_SET_EX_BLOCK, *PMEMORY_WORKING_SET_EX_BLOCK; + +typedef struct _MEMORY_WORKING_SET_EX_INFORMATION { + PVOID VirtualAddress; + MEMORY_WORKING_SET_EX_BLOCK VirtualAttributes; +} MEMORY_WORKING_SET_EX_INFORMATION, *PMEMORY_WORKING_SET_EX_INFORMATION; + +typedef struct _MEMORY_REGION_INFORMATION +{ + PVOID AllocationBase; + ULONG AllocationProtect; + union + { + ULONG RegionType; + struct + { + ULONG Private : 1; + ULONG MappedDataFile : 1; + ULONG MappedImage : 1; + ULONG MappedPageFile : 1; + ULONG MappedPhysical : 1; + ULONG DirectMapped : 1; + ULONG Reserved : 26; + } DUMMYSTRUCTNAME; + } DUMMYUNIONNAME; + SIZE_T RegionSize; + SIZE_T CommitSize; + ULONG_PTR PartitionId; + ULONG_PTR NodePreference; +} MEMORY_REGION_INFORMATION, *PMEMORY_REGION_INFORMATION; + +typedef struct _MEMORY_IMAGE_INFORMATION +{ + PVOID ImageBase; + SIZE_T SizeOfImage; + union + { + ULONG ImageFlags; + struct + { + ULONG ImagePartialMap : 1; + ULONG ImageNotExecutable : 1; + ULONG ImageSigningLevel : 4; + ULONG Reserved : 26; + }; + }; +} MEMORY_IMAGE_INFORMATION, *PMEMORY_IMAGE_INFORMATION; + typedef enum _MUTANT_INFORMATION_CLASS { MutantBasicInformation @@ -1101,6 +2488,24 @@ typedef struct _TIMER_BASIC_INFORMATION BOOLEAN TimerState; } TIMER_BASIC_INFORMATION, *PTIMER_BASIC_INFORMATION; +typedef enum +{ + VmPrefetchInformation, + VmPagePriorityInformation, + VmCfgCallTargetInformation, + VmPageDirtyStateInformation, + VmImageHotPatchInformation, + VmPhysicalContiguityInformation, + VmVirtualMachinePrepopulateInformation, + VmRemoveFromWorkingSetInformation, +} VIRTUAL_MEMORY_INFORMATION_CLASS, *PVIRTUAL_MEMORY_INFORMATION_CLASS; + +typedef struct _MEMORY_RANGE_ENTRY +{ + PVOID VirtualAddress; + SIZE_T NumberOfBytes; +} MEMORY_RANGE_ENTRY, *PMEMORY_RANGE_ENTRY; + /* return type of RtlDetermineDosPathNameType_U (FIXME: not the correct names) */ typedef enum @@ -1137,6 +2542,18 @@ typedef struct _SYSTEM_THREAD_INFORMATION DWORD dwUnknown; /* 3c/4c */ } SYSTEM_THREAD_INFORMATION, *PSYSTEM_THREAD_INFORMATION; +typedef struct _SYSTEM_EXTENDED_THREAD_INFORMATION +{ + SYSTEM_THREAD_INFORMATION ThreadInfo; /* 00/00 */ + void *StackBase; /* 40/50 */ + void *StackLimit; /* 44/58 */ + void *Win32StartAddress; /* 48/60 */ + void *TebBase; /* 4c/68 */ + ULONG_PTR Reserved2; /* 50/70 */ + ULONG_PTR Reserved3; /* 54/78 */ + ULONG_PTR Reserved4; /* 58/80 */ +} SYSTEM_EXTENDED_THREAD_INFORMATION, *PSYSTEM_EXTENDED_THREAD_INFORMATION; + typedef struct _IO_STATUS_BLOCK { union { NTSTATUS Status; @@ -1229,6 +2646,18 @@ typedef struct _KEY_VALUE_PARTIAL_INFORMATION { UCHAR Data[1]; } KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION; +typedef struct _KEY_VALUE_PARTIAL_INFORMATION_ALIGN64 { + ULONG Type; + ULONG DataLength; + UCHAR Data[1]; +} KEY_VALUE_PARTIAL_INFORMATION_ALIGN64, *PKEY_VALUE_PARTIAL_INFORMATION_ALIGN64; + +typedef enum _MEMORY_RESERVE_OBJECT_TYPE +{ + MemoryReserveObjectTypeUserApc, + MemoryReserveObjectTypeIoCompletion +} MEMORY_RESERVE_OBJECT_TYPE, PMEMORY_RESERVE_OBJECT_TYPE; + #ifndef __OBJECT_ATTRIBUTES_DEFINED__ #define __OBJECT_ATTRIBUTES_DEFINED__ typedef struct _OBJECT_ATTRIBUTES { @@ -1241,10 +2670,10 @@ typedef struct _OBJECT_ATTRIBUTES { } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES; #endif -typedef struct _OBJECT_DATA_INFORMATION { - BOOLEAN InheritHandle; +typedef struct _OBJECT_HANDLE_FLAG_INFORMATION { + BOOLEAN Inherit; BOOLEAN ProtectFromClose; -} OBJECT_DATA_INFORMATION, *POBJECT_DATA_INFORMATION; +} OBJECT_HANDLE_FLAG_INFORMATION, *POBJECT_HANDLE_FLAG_INFORMATION; typedef struct _OBJECT_BASIC_INFORMATION { ULONG Attributes; @@ -1284,7 +2713,7 @@ typedef struct __OBJECT_TYPE_INFORMATION { BOOLEAN SecurityRequired; BOOLEAN MaintainHandleCount; UCHAR TypeIndex; - CHAR Reserved; + CHAR ReservedByte; ULONG PoolType; ULONG DefaultPagedPoolCharge; ULONG DefaultNonPagedPoolCharge; @@ -1297,10 +2726,10 @@ typedef struct _OBJECT_TYPES_INFORMATION typedef struct _PROCESS_BASIC_INFORMATION { #ifdef __WINESRC__ - DWORD_PTR ExitStatus; - PPEB PebBaseAddress; - DWORD_PTR AffinityMask; - DWORD_PTR BasePriority; + NTSTATUS ExitStatus; + PEB *PebBaseAddress; + ULONG_PTR AffinityMask; + LONG BasePriority; ULONG_PTR UniqueProcessId; ULONG_PTR InheritedFromUniqueProcessId; #else @@ -1312,6 +2741,15 @@ typedef struct _PROCESS_BASIC_INFORMATION { #endif } PROCESS_BASIC_INFORMATION, *PPROCESS_BASIC_INFORMATION; +typedef struct _PROCESS_BASIC_INFORMATION64 { + NTSTATUS ExitStatus; + UINT64 PebBaseAddress; + UINT64 AffinityMask; + LONG BasePriority; + UINT64 UniqueProcessId; + UINT64 InheritedFromUniqueProcessId; +} PROCESS_BASIC_INFORMATION64; + #define PROCESS_PRIOCLASS_IDLE 1 #define PROCESS_PRIOCLASS_NORMAL 2 #define PROCESS_PRIOCLASS_HIGH 3 @@ -1324,11 +2762,44 @@ typedef struct _PROCESS_PRIORITY_CLASS { UCHAR PriorityClass; } PROCESS_PRIORITY_CLASS, *PPROCESS_PRIORITY_CLASS; -typedef struct _RTL_HEAP_DEFINITION { - ULONG Length; /* = sizeof(RTL_HEAP_DEFINITION) */ +typedef struct _PROCESS_CYCLE_TIME_INFORMATION { + ULONGLONG AccumulatedCycles; + ULONGLONG CurrentCycleCount; +} PROCESS_CYCLE_TIME_INFORMATION, *PPROCESS_CYCLE_TIME_INFORMATION; - ULONG Unknown[11]; -} RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION; +typedef struct _PROCESS_STACK_ALLOCATION_INFORMATION +{ + SIZE_T ReserveSize; + SIZE_T ZeroBits; + PVOID StackBase; +} PROCESS_STACK_ALLOCATION_INFORMATION, *PPROCESS_STACK_ALLOCATION_INFORMATION; + +typedef struct _PROCESS_STACK_ALLOCATION_INFORMATION_EX +{ + ULONG PreferredNode; + ULONG Reserved0; + ULONG Reserved1; + ULONG Reserved2; + PROCESS_STACK_ALLOCATION_INFORMATION AllocInfo; +} PROCESS_STACK_ALLOCATION_INFORMATION_EX, *PPROCESS_STACK_ALLOCATION_INFORMATION_EX; + +typedef NTSTATUS (NTAPI RTL_HEAP_COMMIT_ROUTINE)(PVOID base, PVOID *address, PSIZE_T size); +typedef RTL_HEAP_COMMIT_ROUTINE *PRTL_HEAP_COMMIT_ROUTINE; + +typedef struct _RTL_HEAP_PARAMETERS +{ + ULONG Length; + SIZE_T SegmentReserve; + SIZE_T SegmentCommit; + SIZE_T DeCommitFreeblockThreshold; + SIZE_T DeCommitTotalFreeThreshold; + SIZE_T MaximumAllocationSize; + SIZE_T VirtualMemoryThreshold; + SIZE_T InitialCommit; + SIZE_T InitialReserve; + PRTL_HEAP_COMMIT_ROUTINE CommitRoutine; + SIZE_T Reserved[2]; +} RTL_HEAP_PARAMETERS, *PRTL_HEAP_PARAMETERS; typedef struct _RTL_RWLOCK { RTL_CRITICAL_SECTION rtlCS; @@ -1370,18 +2841,18 @@ typedef struct _SYSTEM_BASIC_INFORMATION { /* System Information Class 0x01 */ typedef struct _SYSTEM_CPU_INFORMATION { - WORD Architecture; - WORD Level; - WORD Revision; /* combination of CPU model and stepping */ - WORD Reserved; /* always zero */ - DWORD FeatureSet; /* see bit flags below */ + USHORT ProcessorArchitecture; + USHORT ProcessorLevel; + USHORT ProcessorRevision; + USHORT MaximumProcessors; + ULONG ProcessorFeatureBits; } SYSTEM_CPU_INFORMATION, *PSYSTEM_CPU_INFORMATION; /* definitions of bits in the Feature set for the x86 processors */ #define CPU_FEATURE_VME 0x00000005 /* Virtual 86 Mode Extensions */ #define CPU_FEATURE_TSC 0x00000002 /* Time Stamp Counter available */ #define CPU_FEATURE_CMOV 0x00000008 /* Conditional Move instruction*/ -#define CPU_FEATURE_PGE 0x00000014 /* Page table Entry Global bit */ +#define CPU_FEATURE_PGE 0x00000014 /* Page table Entry Global bit */ #define CPU_FEATURE_PSE 0x00000024 /* Page Size Extension */ #define CPU_FEATURE_MTRR 0x00000040 /* Memory Type Range Registers */ #define CPU_FEATURE_CX8 0x00000080 /* Compare and eXchange 8 byte instr. */ @@ -1395,6 +2866,51 @@ typedef struct _SYSTEM_CPU_INFORMATION { #define CPU_FEATURE_SSE2 0x00010000 /* SSE2 extensions (XMMI64) */ #define CPU_FEATURE_DS 0x00020000 /* Debug Store */ #define CPU_FEATURE_HTT 0x00040000 /* Hyper Threading Technology */ +#define CPU_FEATURE_SSE3 0x00080000 /* SSE3 extensions */ +#define CPU_FEATURE_CX128 0x00100000 /* cmpxchg16b instruction */ +#define CPU_FEATURE_XSAVE 0x00800000 /* XSAVE instructions */ +#define CPU_FEATURE_2NDLEV 0x04000000 /* Second-level address translation */ +#define CPU_FEATURE_VIRT 0x08000000 /* Virtualization support */ +#define CPU_FEATURE_RDFS 0x10000000 /* RDFSBASE etc. instructions */ +#define CPU_FEATURE_NX 0x20000000 /* Data execution prevention */ + +/* FIXME: following values are made up, actual flags are unknown */ +#define CPU_FEATURE_SSSE3 0x00008000 /* SSSE3 instructions */ +#define CPU_FEATURE_SSE41 0x01000000 /* SSE41 instructions */ +#define CPU_FEATURE_SSE42 0x02000000 /* SSE42 instructions */ +#define CPU_FEATURE_AVX 0x40000000 /* AVX instructions */ +#define CPU_FEATURE_AVX2 0x80000000 /* AVX2 instructions */ +#define CPU_FEATURE_PAE 0x00200000 +#define CPU_FEATURE_DAZ 0x00400000 + +#define CPU_FEATURE_ARM_VFP_32 0x00000001 +#define CPU_FEATURE_ARM_NEON 0x00000002 +#define CPU_FEATURE_ARM_V8_CRC32 0x00000004 +#define CPU_FEATURE_ARM_V8_CRYPTO 0x00000008 +#define CPU_FEATURE_ARM_V81_ATOMIC 0x00000010 +#define CPU_FEATURE_ARM_V82_DP 0x00000020 +#define CPU_FEATURE_ARM_V83_JSCVT 0x00000040 +#define CPU_FEATURE_ARM_V83_LRCPC 0x00000080 +#define CPU_FEATURE_ARM_SVE 0x00000100 +#define CPU_FEATURE_ARM_SVE2 0x00000200 +#define CPU_FEATURE_ARM_SVE2_1 0x00000400 +#define CPU_FEATURE_ARM_SVE_AES 0x00000800 +#define CPU_FEATURE_ARM_SVE_PMULL128 0x00001000 +#define CPU_FEATURE_ARM_SVE_BITPERM 0x00002000 +#define CPU_FEATURE_ARM_SVE_BF16 0x00004000 +#define CPU_FEATURE_ARM_SVE_EBF16 0x00008000 +#define CPU_FEATURE_ARM_SVE_B16B16 0x00010000 +#define CPU_FEATURE_ARM_SVE_SHA3 0x00020000 +#define CPU_FEATURE_ARM_SVE_SM4 0x00040000 +#define CPU_FEATURE_ARM_SVE_I8MM 0x00080000 +#define CPU_FEATURE_ARM_SVE_F32MM 0x00100000 +#define CPU_FEATURE_ARM_SVE_F64MM 0x00200000 + +typedef struct _SYSTEM_PROCESSOR_FEATURES_INFORMATION +{ + ULONGLONG ProcessorFeatureBits; + ULONGLONG Reserved[3]; +} SYSTEM_PROCESSOR_FEATURES_INFORMATION, *PSYSTEM_PROCESSOR_FEATURES_INFORMATION; /* System Information Class 0x02 */ @@ -1479,11 +2995,13 @@ typedef struct _SYSTEM_PERFORMANCE_INFORMATION { typedef struct _SYSTEM_TIMEOFDAY_INFORMATION { #ifdef __WINESRC__ - LARGE_INTEGER liKeBootTime; - LARGE_INTEGER liKeSystemTime; - LARGE_INTEGER liExpTimeZoneBias; - ULONG uCurrentTimeZoneId; - DWORD dwUnknown1[5]; + LARGE_INTEGER BootTime; + LARGE_INTEGER SystemTime; + LARGE_INTEGER TimeZoneBias; + ULONG TimeZoneId; + ULONG Reserved; + ULONGLONG BootTimeBias; + ULONGLONG SleepTimeBias; #else BYTE Reserved1[48]; #endif @@ -1526,45 +3044,48 @@ typedef struct _SYSTEM_HANDLE_INFORMATION { SYSTEM_HANDLE_ENTRY Handle[1]; } SYSTEM_HANDLE_INFORMATION, *PSYSTEM_HANDLE_INFORMATION; -/* System Information Class 0x40 */ - typedef struct _SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX { - PVOID Object; + void *Object; ULONG_PTR UniqueProcessId; ULONG_PTR HandleValue; - ULONG GrantedAccess; - USHORT CreatorBackTraceIndex; - USHORT ObjectTypeIndex; - ULONG HandleAttributes; - ULONG Reserved; -} SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX, *PSYSTEM_HANDLE_TABLE_ENTRY_INFO_EX; + ULONG GrantedAccess; + USHORT CreatorBackTraceIndex; + USHORT ObjectTypeIndex; + ULONG HandleAttributes; + ULONG Reserved; +} SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX; typedef struct _SYSTEM_HANDLE_INFORMATION_EX { - ULONG_PTR Count; - ULONG_PTR Reserved; - SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX Handle[1]; -} SYSTEM_HANDLE_INFORMATION_EX, *PSYSTEM_HANDLE_INFORMATION_EX; + ULONG_PTR NumberOfHandles; + ULONG_PTR Reserved; + SYSTEM_HANDLE_TABLE_ENTRY_INFO_EX Handles[1]; +} SYSTEM_HANDLE_INFORMATION_EX; /* System Information Class 0x15 */ typedef struct _SYSTEM_CACHE_INFORMATION { - ULONG CurrentSize; - ULONG PeakSize; + SIZE_T CurrentSize; + SIZE_T PeakSize; ULONG PageFaultCount; - ULONG MinimumWorkingSet; - ULONG MaximumWorkingSet; - ULONG unused[4]; -#ifdef _WIN64 - ULONG unknown64[7]; -#endif + SIZE_T MinimumWorkingSet; + SIZE_T MaximumWorkingSet; + SIZE_T CurrentSizeIncludingTransitionInPages; + SIZE_T PeakSizeIncludingTransitionInPages; + ULONG TransitionRePurposeCount; + ULONG Flags; } SYSTEM_CACHE_INFORMATION, *PSYSTEM_CACHE_INFORMATION; /* System Information Class 0x17 */ typedef struct _SYSTEM_INTERRUPT_INFORMATION { - BYTE Reserved1[24]; + ULONG ContextSwitches; + ULONG DpcCount; + ULONG DpcRate; + ULONG TimeIncrement; + ULONG DpcBypassCount; + ULONG ApcBypassCount; } SYSTEM_INTERRUPT_INFORMATION, *PSYSTEM_INTERRUPT_INFORMATION; typedef struct _SYSTEM_CONFIGURATION_INFO { @@ -1599,12 +3120,17 @@ typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION { BOOLEAN DebuggerNotPresent; } SYSTEM_KERNEL_DEBUGGER_INFORMATION, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION; -/* System Information Class 0x05 */ +typedef struct _SYSTEM_KERNEL_DEBUGGER_INFORMATION_EX { + BOOLEAN DebuggerAllowed; + BOOLEAN DebuggerEnabled; + BOOLEAN DebuggerPresent; +} SYSTEM_KERNEL_DEBUGGER_INFORMATION_EX, *PSYSTEM_KERNEL_DEBUGGER_INFORMATION_EX; -typedef struct _VM_COUNTERS_ { +typedef struct _VM_COUNTERS +{ SIZE_T PeakVirtualSize; SIZE_T VirtualSize; - ULONG PageFaultCount; + ULONG PageFaultCount; SIZE_T PeakWorkingSetSize; SIZE_T WorkingSetSize; SIZE_T QuotaPeakPagedPoolUsage; @@ -1613,14 +3139,32 @@ typedef struct _VM_COUNTERS_ { SIZE_T QuotaNonPagedPoolUsage; SIZE_T PagefileUsage; SIZE_T PeakPagefileUsage; - SIZE_T PrivatePageCount; } VM_COUNTERS, *PVM_COUNTERS; +typedef struct _VM_COUNTERS_EX +{ + SIZE_T PeakVirtualSize; + SIZE_T VirtualSize; + ULONG PageFaultCount; + SIZE_T PeakWorkingSetSize; + SIZE_T WorkingSetSize; + SIZE_T QuotaPeakPagedPoolUsage; + SIZE_T QuotaPagedPoolUsage; + SIZE_T QuotaPeakNonPagedPoolUsage; + SIZE_T QuotaNonPagedPoolUsage; + SIZE_T PagefileUsage; + SIZE_T PeakPagefileUsage; + SIZE_T PrivateUsage; +} VM_COUNTERS_EX, *PVM_COUNTERS_EX; + typedef struct _SYSTEM_PROCESS_INFORMATION { #ifdef __WINESRC__ /* win32/win64 */ ULONG NextEntryOffset; /* 00/00 */ DWORD dwThreadCount; /* 04/04 */ - DWORD dwUnknown1[6]; /* 08/08 */ + LARGE_INTEGER WorkingSetPrivateSize; /* 08/08 */ + ULONG HardFaultCount; /* 10/10 */ + ULONG NumberOfThreadsHighWatermark;/* 14/14 */ + ULONGLONG CycleTime; /* 18/18 */ LARGE_INTEGER CreationTime; /* 20/20 */ LARGE_INTEGER UserTime; /* 28/28 */ LARGE_INTEGER KernelTime; /* 30/30 */ @@ -1630,8 +3174,8 @@ typedef struct _SYSTEM_PROCESS_INFORMATION { HANDLE ParentProcessId; /* 48/58 */ ULONG HandleCount; /* 4c/60 */ ULONG SessionId; /* 50/64 */ - DWORD dwUnknown4; /* 54/68 */ - VM_COUNTERS vmCounters; /* 58/70 */ + ULONG_PTR UniqueProcessKey; /* 54/68 */ + VM_COUNTERS_EX vmCounters; /* 58/70 */ IO_COUNTERS ioCounters; /* 88/d0 */ SYSTEM_THREAD_INFORMATION ti[1]; /* b8/100 */ #else @@ -1655,11 +3199,53 @@ typedef struct _SYSTEM_REGISTRY_QUOTA_INFORMATION { PVOID Reserved1; } SYSTEM_REGISTRY_QUOTA_INFORMATION, *PSYSTEM_REGISTRY_QUOTA_INFORMATION; +typedef struct _SYSTEM_TIME_ADJUSTMENT_QUERY { + ULONG TimeAdjustment; + ULONG TimeIncrement; + BOOLEAN TimeAdjustmentDisabled; +} SYSTEM_TIME_ADJUSTMENT_QUERY, *PSYSTEM_TIME_ADJUSTMENT_QUERY; + typedef struct _SYSTEM_TIME_ADJUSTMENT { ULONG TimeAdjustment; BOOLEAN TimeAdjustmentDisabled; } SYSTEM_TIME_ADJUSTMENT, *PSYSTEM_TIME_ADJUSTMENT; +typedef enum _SYSTEM_FIRMWARE_TABLE_ACTION +{ + SystemFirmwareTable_Enumerate = 0, + SystemFirmwareTable_Get = 1 +} SYSTEM_FIRMWARE_TABLE_ACTION, *PSYSTEM_FIRMWARE_TABLE_ACTION; + +/* System Information Class 0x4C */ + +typedef struct _SYSTEM_FIRMWARE_TABLE_INFORMATION +{ + ULONG ProviderSignature; + SYSTEM_FIRMWARE_TABLE_ACTION Action; + ULONG TableID; + ULONG TableBufferLength; + UCHAR TableBuffer[1]; +} SYSTEM_FIRMWARE_TABLE_INFORMATION, *PSYSTEM_FIRMWARE_TABLE_INFORMATION; + +typedef struct _SYSTEM_PROCESS_ID_INFORMATION +{ + ULONG_PTR ProcessId; + UNICODE_STRING ImageName; +} SYSTEM_PROCESS_ID_INFORMATION, *PSYSTEM_PROCESS_ID_INFORMATION; + +#ifndef __REACTOS__ +typedef struct _TIME_FIELDS +{ CSHORT Year; + CSHORT Month; + CSHORT Day; + CSHORT Hour; + CSHORT Minute; + CSHORT Second; + CSHORT Milliseconds; + CSHORT Weekday; +} TIME_FIELDS, *PTIME_FIELDS; +#endif + typedef struct _WINSTATIONINFORMATIONW { BYTE Reserved2[70]; ULONG LogonId; @@ -1684,11 +3270,11 @@ typedef struct _DEBUG_BUFFER { PVOID RemoteSectionBase; ULONG SectionBaseDelta; HANDLE EventPairHandle; - ULONG Unknown[2]; + SIZE_T Unknown[2]; HANDLE RemoteThreadHandle; ULONG InfoClassMask; - ULONG SizeOfInfo; - ULONG AllocatedSize; + SIZE_T SizeOfInfo; + SIZE_T AllocatedSize; ULONG SectionSize; PVOID ModuleInformation; PVOID BackTraceInformation; @@ -1755,12 +3341,6 @@ typedef struct _PORT_MESSAGE_HEADER { typedef unsigned short RTL_ATOM, *PRTL_ATOM; -/* Wine doesn't implement atom table as NT does: - * - in NT, atom tables are user space tables, which ntdll directly accesses - * - on Wine, (even local) atom tables are wineserver objects, hence a HANDLE - */ -typedef struct atom_table *RTL_ATOM_TABLE, **PRTL_ATOM_TABLE; - typedef enum _ATOM_INFORMATION_CLASS { AtomBasicInformation = 0, AtomTableInformation = 1, @@ -1791,6 +3371,26 @@ typedef struct _RTL_HANDLE_TABLE PVOID MaxHandle; /* 0x1c */ } RTL_HANDLE_TABLE; +typedef struct _RTL_ATOM_TABLE_ENTRY +{ + struct _RTL_ATOM_TABLE_ENTRY *HashLink; + WORD HandleIndex; + WORD Atom; + WORD ReferenceCount; + UCHAR Flags; + UCHAR NameLength; + WCHAR Name[1]; +} RTL_ATOM_TABLE_ENTRY, *PRTL_ATOM_TABLE_ENTRY; + +typedef struct _RTL_ATOM_TABLE +{ + ULONG Signature; + RTL_CRITICAL_SECTION CriticalSection; + RTL_HANDLE_TABLE HandleTable; + ULONG NumberOfBuckets; + RTL_ATOM_TABLE_ENTRY *Buckets[1]; +} *RTL_ATOM_TABLE, **PRTL_ATOM_TABLE; + /*********************************************************************** * Defines */ @@ -1813,7 +3413,7 @@ typedef struct _RTL_HANDLE_TABLE #define FILE_OPEN_FOR_BACKUP_INTENT 0x00004000 #define FILE_NO_COMPRESSION 0x00008000 #define FILE_RESERVE_OPFILTER 0x00100000 -#define FILE_TRANSACTED_MODE 0x00200000 +#define FILE_OPEN_REPARSE_POINT 0x00200000 #define FILE_OPEN_OFFLINE_FILE 0x00400000 #define FILE_OPEN_FOR_FREE_SPACE_QUERY 0x00800000 @@ -1876,6 +3476,7 @@ typedef struct _RTL_HANDLE_TABLE #define LOGONID_CURRENT ((ULONG)-1) +#define OBJ_PROTECT_CLOSE 0x00000001 #define OBJ_INHERIT 0x00000002 #define OBJ_PERMANENT 0x00000010 #define OBJ_EXCLUSIVE 0x00000020 @@ -1883,8 +3484,7 @@ typedef struct _RTL_HANDLE_TABLE #define OBJ_OPENIF 0x00000080 #define OBJ_OPENLINK 0x00000100 #define OBJ_KERNEL_HANDLE 0x00000200 -#define OBJ_FORCE_ACCESS_CHECK 0x00000400 -#define OBJ_VALID_ATTRIBUTES 0x000007F2 +#define OBJ_VALID_ATTRIBUTES 0x000003F2 #define SERVERNAME_CURRENT ((HANDLE)NULL) @@ -1986,6 +3586,9 @@ typedef void (NTAPI *RTL_WAITORTIMERCALLBACKFUNC)(PVOID,BOOLEAN); /* FIXME: not #define RTL_QUERY_REGISTRY_NOEXPAND 0x00000010 #define RTL_QUERY_REGISTRY_DIRECT 0x00000020 #define RTL_QUERY_REGISTRY_DELETE 0x00000040 +#define RTL_QUERY_REGISTRY_TYPECHECK 0x00000100 + +#define RTL_QUERY_REGISTRY_TYPECHECK_SHIFT 24 typedef NTSTATUS (WINAPI *PRTL_QUERY_REGISTRY_ROUTINE)( PCWSTR ValueName, ULONG ValueType, @@ -2039,6 +3642,9 @@ typedef enum _SECTION_INFORMATION_CLASS { SectionBasicInformation, SectionImageInformation, + SectionRelocationInformation, + SectionOriginalBaseInformation, + SectionInternalImageInformation } SECTION_INFORMATION_CLASS; typedef struct _SECTION_BASIC_INFORMATION { @@ -2053,9 +3659,10 @@ typedef struct _SECTION_IMAGE_INFORMATION { SIZE_T MaximumStackSize; SIZE_T CommittedStackSize; ULONG SubSystemType; - WORD SubsystemVersionLow; - WORD SubsystemVersionHigh; - ULONG GpValue; + USHORT MinorSubsystemVersion; + USHORT MajorSubsystemVersion; + USHORT MajorOperatingSystemVersion; + USHORT MinorOperatingSystemVersion; USHORT ImageCharacteristics; USHORT DllCharacteristics; USHORT Machine; @@ -2070,7 +3677,8 @@ typedef struct _SECTION_IMAGE_INFORMATION { UCHAR ImageDynamicallyRelocated : 1; UCHAR ImageMappedFlat : 1; UCHAR BaseBelow4gb : 1; - UCHAR Reserved : 3; + UCHAR ComPlusPrefer32bit : 1; + UCHAR Reserved : 2; } DUMMYSTRUCTNAME; } DUMMYUNIONNAME; ULONG LoaderFlags; @@ -2153,11 +3761,11 @@ typedef struct _DIRECTORY_BASIC_INFORMATION { } DIRECTORY_BASIC_INFORMATION, *PDIRECTORY_BASIC_INFORMATION; typedef struct _INITIAL_TEB { - PVOID StackBase; - PVOID StackLimit; - PVOID StackCommit; - PVOID StackCommitMax; - PVOID StackReserved; + void *OldStackBase; + void *OldStackLimit; + void *StackBase; + void *StackLimit; + void *DeallocationStack; } INITIAL_TEB, *PINITIAL_TEB; typedef enum _PORT_INFORMATION_CLASS { @@ -2177,6 +3785,12 @@ typedef struct _FILE_COMPLETION_INFORMATION { #define IO_COMPLETION_MODIFY_STATE 0x0002 #define IO_COMPLETION_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|SYNCHRONIZE|0x3) +typedef struct _FILE_IO_COMPLETION_INFORMATION { + ULONG_PTR CompletionKey; + ULONG_PTR CompletionValue; + IO_STATUS_BLOCK IoStatusBlock; +} FILE_IO_COMPLETION_INFORMATION, *PFILE_IO_COMPLETION_INFORMATION; + typedef enum _HARDERROR_RESPONSE_OPTION { OptionAbortRetryIgnore, OptionOk, @@ -2219,7 +3833,27 @@ typedef enum _SYSDBG_COMMAND { SysDbgReadMsr, SysDbgWriteMsr, SysDbgReadBusData, - SysDbgWriteBusData + SysDbgWriteBusData, + SysDbgCheckLowMemory, + SysDbgEnableKernelDebugger, + SysDbgDisableKernelDebugger, + SysDbgGetAutoKdEnable, + SysDbgSetAutoKdEnable, + SysDbgGetPrintBufferSize, + SysDbgSetPrintBufferSize, + SysDbgGetKdUmExceptionEnable, + SysDbgSetKdUmExceptionEnable, + SysDbgGetTriageDump, + SysDbgGetKdBlockEnable, + SysDbgSetKdBlockEnable, + SysDbgRegisterForUmBreakInfo, + SysDbgGetUmBreakPid, + SysDbgClearUmBreakPid, + SysDbgGetUmAttachPid, + SysDbgClearUmAttachPid, + SysDbgGetLiveKernelDump, + SysDbgKdPullRemoteFile, + SysDbgMaxInfoClass } SYSDBG_COMMAND, *PSYSDBG_COMMAND; typedef struct _CPTABLEINFO @@ -2251,12 +3885,77 @@ typedef struct _NLSTABLEINFO * * Those are not part of standard Winternl.h */ -typedef struct _LDR_MODULE + +typedef struct _LDR_SERVICE_TAG_RECORD { - LIST_ENTRY InLoadOrderModuleList; - LIST_ENTRY InMemoryOrderModuleList; - LIST_ENTRY InInitializationOrderModuleList; - void* BaseAddress; + struct _LDR_SERVICE_TAG_RECORD *Next; + ULONG ServiceTag; +} LDR_SERVICE_TAG_RECORD, *PLDR_SERVICE_TAG_RECORD; + +typedef struct _LDRP_CSLIST +{ + SINGLE_LIST_ENTRY *Tail; +} LDRP_CSLIST, *PLDRP_CSLIST; + +typedef struct _LDR_DEPENDENCY +{ + SINGLE_LIST_ENTRY dependency_to_entry; + struct _LDR_DDAG_NODE *dependency_to; + SINGLE_LIST_ENTRY dependency_from_entry; + struct _LDR_DDAG_NODE *dependency_from; +} LDR_DEPENDENCY, *PLDR_DEPENDENCY; + +typedef enum _LDR_DDAG_STATE +{ + LdrModulesMerged = -5, + LdrModulesInitError = -4, + LdrModulesSnapError = -3, + LdrModulesUnloaded = -2, + LdrModulesUnloading = -1, + LdrModulesPlaceHolder = 0, + LdrModulesMapping = 1, + LdrModulesMapped = 2, + LdrModulesWaitingForDependencies = 3, + LdrModulesSnapping = 4, + LdrModulesSnapped = 5, + LdrModulesCondensed = 6, + LdrModulesReadyToInit = 7, + LdrModulesInitializing = 8, + LdrModulesReadyToRun = 9, +} LDR_DDAG_STATE; + +typedef struct _LDR_DDAG_NODE +{ + LIST_ENTRY Modules; + LDR_SERVICE_TAG_RECORD *ServiceTagList; + LONG LoadCount; + ULONG LoadWhileUnloadingCount; + ULONG LowestLink; + LDRP_CSLIST Dependencies; + LDRP_CSLIST IncomingDependencies; + LDR_DDAG_STATE State; + SINGLE_LIST_ENTRY CondenseLink; + ULONG PreorderNumber; +} LDR_DDAG_NODE, *PLDR_DDAG_NODE; + +typedef enum _LDR_DLL_LOAD_REASON +{ + LoadReasonStaticDependency, + LoadReasonStaticForwarderDependency, + LoadReasonDynamicForwarderDependency, + LoadReasonDelayloadDependency, + LoadReasonDynamicLoad, + LoadReasonAsImageLoad, + LoadReasonAsDataLoad, + LoadReasonUnknown = -1 +} LDR_DLL_LOAD_REASON, *PLDR_DLL_LOAD_REASON; + +typedef struct _LDR_DATA_TABLE_ENTRY +{ + LIST_ENTRY InLoadOrderLinks; + LIST_ENTRY InMemoryOrderLinks; + LIST_ENTRY InInitializationOrderLinks; + void* DllBase; void* EntryPoint; ULONG SizeOfImage; UNICODE_STRING FullDllName; @@ -2267,33 +3966,37 @@ typedef struct _LDR_MODULE LIST_ENTRY HashLinks; ULONG TimeDateStamp; HANDLE ActivationContext; - PVOID PatchInformation; - LIST_ENTRY ForwarderLinks; - LIST_ENTRY ServiceTagLinks; - LIST_ENTRY StaticLinks; - PVOID ContextInformation; + void* Lock; + LDR_DDAG_NODE* DdagNode; + LIST_ENTRY NodeModuleLink; + struct _LDRP_LOAD_CONTEXT *LoadContext; + void* ParentDllBase; + void* SwitchBackContext; + RTL_BALANCED_NODE BaseAddressIndexNode; + RTL_BALANCED_NODE MappingInfoIndexNode; ULONG_PTR OriginalBase; LARGE_INTEGER LoadTime; - - /* Not part of Win7 but used by Wine */ - HANDLE SectionHandle; -} LDR_MODULE, *PLDR_MODULE; + ULONG BaseNameHashValue; + LDR_DLL_LOAD_REASON LoadReason; + ULONG ImplicitPathOptions; + ULONG ReferenceCount; +} LDR_DATA_TABLE_ENTRY, *PLDR_DATA_TABLE_ENTRY; typedef struct _LDR_DLL_LOADED_NOTIFICATION_DATA { ULONG Flags; - PCUNICODE_STRING FullDllName; - PCUNICODE_STRING BaseDllName; - PVOID DllBase; + const UNICODE_STRING *FullDllName; + const UNICODE_STRING *BaseDllName; + void *DllBase; ULONG SizeOfImage; } LDR_DLL_LOADED_NOTIFICATION_DATA, *PLDR_DLL_LOADED_NOTIFICATION_DATA; typedef struct _LDR_DLL_UNLOADED_NOTIFICATION_DATA { ULONG Flags; - PCUNICODE_STRING FullDllName; - PCUNICODE_STRING BaseDllName; - PVOID DllBase; + const UNICODE_STRING *FullDllName; + const UNICODE_STRING *BaseDllName; + void *DllBase; ULONG SizeOfImage; } LDR_DLL_UNLOADED_NOTIFICATION_DATA, *PLDR_DLL_UNLOADED_NOTIFICATION_DATA; @@ -2305,13 +4008,14 @@ typedef union _LDR_DLL_NOTIFICATION_DATA typedef void (CALLBACK *PLDR_DLL_NOTIFICATION_FUNCTION)(ULONG, LDR_DLL_NOTIFICATION_DATA*, void*); -/* those defines are (some of the) regular LDR_MODULE.Flags values */ +/* those defines are (some of the) regular LDR_DATA_TABLE_ENTRY.Flags values */ #define LDR_IMAGE_IS_DLL 0x00000004 #define LDR_LOAD_IN_PROGRESS 0x00001000 #define LDR_UNLOAD_IN_PROGRESS 0x00002000 #define LDR_NO_DLL_CALLS 0x00040000 #define LDR_PROCESS_ATTACHED 0x00080000 -#define LDR_MODULE_REBASED 0x00200000 +#define LDR_COR_IMAGE 0x00400000 +#define LDR_COR_ILONLY 0x01000000 /* these ones is Wine specific */ #define LDR_DONT_RESOLVE_REFS 0x40000000 @@ -2320,31 +4024,56 @@ typedef void (CALLBACK *PLDR_DLL_NOTIFICATION_FUNCTION)(ULONG, LDR_DLL_NOTIFICAT /* flag for LdrAddRefDll */ #define LDR_ADDREF_DLL_PIN 0x00000001 -/* FIXME: to be checked */ -#define MAXIMUM_FILENAME_LENGTH 256 +/* flags for LdrGetDllHandleEx */ +#define LDR_GET_DLL_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT 0x00000001 +#define LDR_GET_DLL_HANDLE_EX_FLAG_PIN 0x00000002 #define LDR_DLL_NOTIFICATION_REASON_LOADED 1 #define LDR_DLL_NOTIFICATION_REASON_UNLOADED 2 -typedef struct _SYSTEM_MODULE +/* FIXME: to be checked */ +#define MAXIMUM_FILENAME_LENGTH 256 + +typedef struct _RTL_PROCESS_MODULE_INFORMATION { - PVOID Reserved1; /* 00/00 */ - PVOID Reserved2; /* 04/08 */ + PVOID Section; /* 00/00 */ + PVOID MappedBaseAddress; /* 04/08 */ PVOID ImageBaseAddress; /* 08/10 */ ULONG ImageSize; /* 0c/18 */ ULONG Flags; /* 10/1c */ - WORD Id; /* 14/20 */ - WORD Rank; /* 16/22 */ - WORD Unknown; /* 18/24 */ + WORD LoadOrderIndex; /* 14/20 */ + WORD InitOrderIndex; /* 16/22 */ + WORD LoadCount; /* 18/24 */ WORD NameOffset; /* 1a/26 */ BYTE Name[MAXIMUM_FILENAME_LENGTH]; /* 1c/28 */ -} SYSTEM_MODULE, *PSYSTEM_MODULE; +} RTL_PROCESS_MODULE_INFORMATION, *PRTL_PROCESS_MODULE_INFORMATION; -typedef struct _SYSTEM_MODULE_INFORMATION +typedef struct _RTL_PROCESS_MODULES { ULONG ModulesCount; - SYSTEM_MODULE Modules[1]; /* FIXME: should be Modules[0] */ -} SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION; + RTL_PROCESS_MODULE_INFORMATION Modules[1]; /* FIXME: should be Modules[0] */ +} RTL_PROCESS_MODULES, *PRTL_PROCESS_MODULES; + +#define PROCESS_CREATE_FLAGS_BREAKAWAY 0x00000001 +#define PROCESS_CREATE_FLAGS_NO_DEBUG_INHERIT 0x00000002 +#define PROCESS_CREATE_FLAGS_INHERIT_HANDLES 0x00000004 +#define PROCESS_CREATE_FLAGS_OVERRIDE_ADDRESS_SPACE 0x00000008 +#define PROCESS_CREATE_FLAGS_LARGE_PAGES 0x00000010 +#define PROCESS_CREATE_FLAGS_LARGE_PAGE_SYSTEM_DLL 0x00000020 +#define PROCESS_CREATE_FLAGS_PROTECTED_PROCESS 0x00000040 +#define PROCESS_CREATE_FLAGS_CREATE_SESSION 0x00000080 +#define PROCESS_CREATE_FLAGS_INHERIT_FROM_PARENT 0x00000100 +#define PROCESS_CREATE_FLAGS_SUSPENDED 0x00000200 +#define PROCESS_CREATE_FLAGS_EXTENDED_UNKNOWN 0x00000400 + +typedef struct _RTL_PROCESS_MODULE_INFORMATION_EX +{ + USHORT NextOffset; + RTL_PROCESS_MODULE_INFORMATION BaseInfo; + ULONG ImageCheckSum; + ULONG TimeDateStamp; + void *DefaultBase; +} RTL_PROCESS_MODULE_INFORMATION_EX; #define THREAD_CREATE_FLAGS_CREATE_SUSPENDED 0x00000001 #define THREAD_CREATE_FLAGS_SKIP_THREAD_ATTACH 0x00000002 @@ -2353,39 +4082,490 @@ typedef struct _SYSTEM_MODULE_INFORMATION #define THREAD_CREATE_FLAGS_ACCESS_CHECK_IN_TARGET 0x00000020 #define THREAD_CREATE_FLAGS_INITIAL_THREAD 0x00000080 +#ifdef __WINESRC__ + +/* Wine-specific exceptions codes */ + +#define EXCEPTION_WINE_STUB 0x80000100 /* stub entry point called */ +#define EXCEPTION_WINE_ASSERTION 0x80000101 /* assertion failed */ + +/* Wine extension; Windows doesn't have a name for this code. This is an + undocumented exception understood by MS VC debugger, allowing the program + to name a particular thread. */ +#define EXCEPTION_WINE_NAME_THREAD 0x406D1388 + +/* used for C++ exceptions in msvcrt + * parameters: + * [0] CXX_FRAME_MAGIC + * [1] pointer to exception object + * [2] pointer to type + */ +#define EXCEPTION_WINE_CXX_EXCEPTION 0xe06d7363 +#define EXCEPTION_WINE_CXX_FRAME_MAGIC 0x19930520 + +#endif + +typedef LONG (CALLBACK *PRTL_EXCEPTION_FILTER)(PEXCEPTION_POINTERS); + +typedef void (CALLBACK *PTP_IO_CALLBACK)(PTP_CALLBACK_INSTANCE,void*,void*,IO_STATUS_BLOCK*,PTP_IO); + +#define PS_ATTRIBUTE_THREAD 0x00010000 +#define PS_ATTRIBUTE_INPUT 0x00020000 +#define PS_ATTRIBUTE_ADDITIVE 0x00040000 + +typedef enum _PS_ATTRIBUTE_NUM +{ + PsAttributeParentProcess, + PsAttributeDebugPort, + PsAttributeToken, + PsAttributeClientId, + PsAttributeTebAddress, + PsAttributeImageName, + PsAttributeImageInfo, + PsAttributeMemoryReserve, + PsAttributePriorityClass, + PsAttributeErrorMode, + PsAttributeStdHandleInfo, + PsAttributeHandleList, + PsAttributeGroupAffinity, + PsAttributePreferredNode, + PsAttributeIdealProcessor, + PsAttributeUmsThread, + PsAttributeMitigationOptions, + PsAttributeProtectionLevel, + PsAttributeSecureProcess, + PsAttributeJobList, + PsAttributeChildProcessPolicy, + PsAttributeAllApplicationPackagesPolicy, + PsAttributeWin32kFilter, + PsAttributeSafeOpenPromptOriginClaim, + PsAttributeBnoIsolation, + PsAttributeDesktopAppPolicy, + PsAttributeChpe, + PsAttributeMitigationAuditOptions, + PsAttributeMachineType, + PsAttributeComponentFilter, + PsAttributeEnableOptionalXStateFeatures, + PsAttributeMax +} PS_ATTRIBUTE_NUM; + +#define PS_ATTRIBUTE_PARENT_PROCESS (PsAttributeParentProcess | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE) +#define PS_ATTRIBUTE_DEBUG_PORT (PsAttributeDebugPort | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE) +#define PS_ATTRIBUTE_TOKEN (PsAttributeToken | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE) +#define PS_ATTRIBUTE_CLIENT_ID (PsAttributeClientId | PS_ATTRIBUTE_THREAD) +#define PS_ATTRIBUTE_TEB_ADDRESS (PsAttributeTebAddress | PS_ATTRIBUTE_THREAD) +#define PS_ATTRIBUTE_IMAGE_NAME (PsAttributeImageName | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_IMAGE_INFO (PsAttributeImageInfo) +#define PS_ATTRIBUTE_MEMORY_RESERVE (PsAttributeMemoryReserve | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_PRIORITY_CLASS (PsAttributePriorityClass | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_ERROR_MODE (PsAttributeErrorMode | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_STD_HANDLE_INFO (PsAttributeStdHandleInfo | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_HANDLE_LIST (PsAttributeHandleList | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_GROUP_AFFINITY (PsAttributeGroupAffinity | PS_ATTRIBUTE_THREAD | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_PREFERRED_NODE (PsAttributePreferredNode | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_IDEAL_PROCESSOR (PsAttributeIdealProcessor | PS_ATTRIBUTE_THREAD | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_MITIGATION_OPTIONS (PsAttributeMitigationOptions | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_PROTECTION_LEVEL (PsAttributeProtectionLevel | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE) +#define PS_ATTRIBUTE_SECURE_PROCESS (PsAttributeSecureProcess | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_JOB_LIST (PsAttributeJobList | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_CHILD_PROCESS_POLICY (PsAttributeChildProcessPolicy | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_ALL_APPLICATION_PACKAGES_POLICY (PsAttributeAllApplicationPackagesPolicy | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_WIN32K_FILTER (PsAttributeWin32kFilter | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_SAFE_OPEN_PROMPT_ORIGIN_CLAIM (PsAttributeSafeOpenPromptOriginClaim | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_BNO_ISOLATION (PsAttributeBnoIsolation | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_DESKTOP_APP_POLICY (PsAttributeDesktopAppPolicy | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_CHPE (PsAttributeChpe | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE) +#define PS_ATTRIBUTE_MITIGATION_AUDIT_OPTIONS (PsAttributeMitigationAuditOptions | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_MACHINE_TYPE (PsAttributeMachineType | PS_ATTRIBUTE_INPUT | PS_ATTRIBUTE_ADDITIVE) +#define PS_ATTRIBUTE_COMPONENT_FILTER (PsAttributeComponentFilter | PS_ATTRIBUTE_INPUT) +#define PS_ATTRIBUTE_ENABLE_OPTIONAL_XSTATE_FEATURES (PsAttributeEnableOptionalXStateFeatures | PS_ATTRIBUTE_THREAD | PS_ATTRIBUTE_INPUT) + +typedef struct _PS_ATTRIBUTE +{ + ULONG_PTR Attribute; + SIZE_T Size; + union + { + ULONG_PTR Value; + void *ValuePtr; + }; + SIZE_T *ReturnLength; +} PS_ATTRIBUTE; + +typedef struct _PS_ATTRIBUTE_LIST +{ + SIZE_T TotalLength; + PS_ATTRIBUTE Attributes[1]; +} PS_ATTRIBUTE_LIST, *PPS_ATTRIBUTE_LIST; + +typedef enum _PS_CREATE_STATE +{ + PsCreateInitialState, + PsCreateFailOnFileOpen, + PsCreateFailOnSectionCreate, + PsCreateFailExeFormat, + PsCreateFailMachineMismatch, + PsCreateFailExeName, + PsCreateSuccess, + PsCreateMaximumStates +} PS_CREATE_STATE; + +typedef struct _PS_CREATE_INFO +{ + SIZE_T Size; + PS_CREATE_STATE State; + union + { + struct + { + union + { + ULONG InitFlags; + struct + { + UCHAR WriteOutputOnExit : 1; + UCHAR DetectManifest : 1; + UCHAR IFEOSkipDebugger : 1; + UCHAR IFEODoNotPropagateKeyState : 1; + UCHAR SpareBits1 : 4; + UCHAR SpareBits2 : 8; + USHORT ProhibitedImageCharacteristics : 16; + }; + }; + ACCESS_MASK AdditionalFileAccess; + } InitState; + struct + { + HANDLE FileHandle; + } FailSection; + struct + { + USHORT DllCharacteristics; + } ExeFormat; + struct + { + HANDLE IFEOKey; + } ExeName; + struct + { + union + { + ULONG OutputFlags; + struct + { + UCHAR ProtectedProcess : 1; + UCHAR AddressSpaceOverride : 1; + UCHAR DevOverrideEnabled : 1; + UCHAR ManifestDetected : 1; + UCHAR ProtectedProcessLight : 1; + UCHAR SpareBits1 : 3; + UCHAR SpareBits2 : 8; + USHORT SpareBits3 : 16; + }; + }; + HANDLE FileHandle; + HANDLE SectionHandle; + ULONGLONG UserProcessParametersNative; + ULONG UserProcessParametersWow64; + ULONG CurrentParameterFlags; + ULONGLONG PebAddressNative; + ULONG PebAddressWow64; + ULONGLONG ManifestAddress; + ULONG ManifestSize; + } SuccessState; + }; +} PS_CREATE_INFO, *PPS_CREATE_INFO; + +typedef struct _DBGKM_EXCEPTION +{ + EXCEPTION_RECORD ExceptionRecord; + ULONG FirstChance; +} DBGKM_EXCEPTION, *PDBGKM_EXCEPTION; + +typedef struct _DBGKM_CREATE_THREAD +{ + ULONG SubSystemKey; + PVOID StartAddress; +} DBGKM_CREATE_THREAD, *PDBGKM_CREATE_THREAD; + +typedef struct _DBGKM_CREATE_PROCESS +{ + ULONG SubSystemKey; + HANDLE FileHandle; + PVOID BaseOfImage; + ULONG DebugInfoFileOffset; + ULONG DebugInfoSize; + DBGKM_CREATE_THREAD InitialThread; +} DBGKM_CREATE_PROCESS, *PDBGKM_CREATE_PROCESS; + +typedef struct _DBGKM_EXIT_THREAD +{ + NTSTATUS ExitStatus; +} DBGKM_EXIT_THREAD, *PDBGKM_EXIT_THREAD; + +typedef struct _DBGKM_EXIT_PROCESS +{ + NTSTATUS ExitStatus; +} DBGKM_EXIT_PROCESS, *PDBGKM_EXIT_PROCESS; + +typedef struct _DBGKM_LOAD_DLL +{ + HANDLE FileHandle; + PVOID BaseOfDll; + ULONG DebugInfoFileOffset; + ULONG DebugInfoSize; + PVOID NamePointer; +} DBGKM_LOAD_DLL, *PDBGKM_LOAD_DLL; + +typedef struct _DBGKM_UNLOAD_DLL +{ + PVOID BaseAddress; +} DBGKM_UNLOAD_DLL, *PDBGKM_UNLOAD_DLL; + +typedef enum _DBG_STATE +{ + DbgIdle, + DbgReplyPending, + DbgCreateThreadStateChange, + DbgCreateProcessStateChange, + DbgExitThreadStateChange, + DbgExitProcessStateChange, + DbgExceptionStateChange, + DbgBreakpointStateChange, + DbgSingleStepStateChange, + DbgLoadDllStateChange, + DbgUnloadDllStateChange +} DBG_STATE, *PDBG_STATE; + +typedef struct _DBGUI_CREATE_THREAD +{ + HANDLE HandleToThread; + DBGKM_CREATE_THREAD NewThread; +} DBGUI_CREATE_THREAD, *PDBGUI_CREATE_THREAD; + +typedef struct _DBGUI_CREATE_PROCESS +{ + HANDLE HandleToProcess; + HANDLE HandleToThread; + DBGKM_CREATE_PROCESS NewProcess; +} DBGUI_CREATE_PROCESS, *PDBGUI_CREATE_PROCESS; + +typedef struct _DBGUI_WAIT_STATE_CHANGE +{ + DBG_STATE NewState; + CLIENT_ID AppClientId; + union + { + DBGKM_EXCEPTION Exception; + DBGUI_CREATE_THREAD CreateThread; + DBGUI_CREATE_PROCESS CreateProcessInfo; + DBGKM_EXIT_THREAD ExitThread; + DBGKM_EXIT_PROCESS ExitProcess; + DBGKM_LOAD_DLL LoadDll; + DBGKM_UNLOAD_DLL UnloadDll; + } StateInfo; +} DBGUI_WAIT_STATE_CHANGE, *PDBGUI_WAIT_STATE_CHANGE; + +struct _DEBUG_EVENT; + +#define DEBUG_READ_EVENT 0x0001 +#define DEBUG_PROCESS_ASSIGN 0x0002 +#define DEBUG_SET_INFORMATION 0x0004 +#define DEBUG_QUERY_INFORMATION 0x0008 +#define DEBUG_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | SYNCHRONIZE | 0x0f) + +#define DEBUG_KILL_ON_CLOSE 0x1 + +typedef enum _DEBUGOBJECTINFOCLASS +{ + DebugObjectKillProcessOnExitInformation = 1, + MaxDebugObjectInfoClass +} DEBUGOBJECTINFOCLASS, *PDEBUGOBJECTINFOCLASS; + + +typedef struct _WOW64_CPURESERVED +{ + USHORT Flags; + USHORT Machine; + /* CONTEXT context */ + /* CONTEXT_EX *context_ex */ +} WOW64_CPURESERVED, *PWOW64_CPURESERVED; + +#define WOW64_CPURESERVED_FLAG_RESET_STATE 1 + +typedef struct _WOW64_CPU_AREA_INFO +{ + void *Context; + void *ContextEx; + void *ContextFlagsLocation; + WOW64_CPURESERVED *CpuReserved; + ULONG ContextFlag; + USHORT Machine; +} WOW64_CPU_AREA_INFO, *PWOW64_CPU_AREA_INFO; + +typedef struct _WOW64INFO +{ + ULONG NativeSystemPageSize; + ULONG CpuFlags; + ULONG Wow64ExecuteFlags; + ULONG unknown; + ULONGLONG SectionHandle; + ULONGLONG CrossProcessWorkList; + USHORT NativeMachineType; + USHORT EmulatedMachineType; +} WOW64INFO; +C_ASSERT( sizeof(WOW64INFO) == 40 ); + +#define WOW64_CPUFLAGS_MSFT64 0x01 +#define WOW64_CPUFLAGS_SOFTWARE 0x02 + +/* wow64.dll functions */ +void * WINAPI Wow64AllocateTemp(SIZE_T); +void WINAPI Wow64ApcRoutine(ULONG_PTR,ULONG_PTR,ULONG_PTR,CONTEXT*); +NTSTATUS WINAPI Wow64KiUserCallbackDispatcher(ULONG,void*,ULONG,void**,ULONG*); +void WINAPI Wow64PassExceptionToGuest(EXCEPTION_POINTERS*); +void WINAPI Wow64PrepareForException(EXCEPTION_RECORD*,CONTEXT*); +void WINAPI Wow64ProcessPendingCrossProcessItems(void); +NTSTATUS WINAPI Wow64RaiseException(int,EXCEPTION_RECORD*); +NTSTATUS WINAPI Wow64SystemServiceEx(UINT,UINT*); + +#ifdef __WINESRC__ +/* undocumented layout of LdrSystemDllInitBlock */ +/* this varies across Windows version; we are using the win10-2004 layout */ +typedef struct +{ + ULONG version; + ULONG unknown1[3]; + ULONG64 unknown2; + ULONG64 pLdrInitializeThunk; + ULONG64 pKiUserExceptionDispatcher; + ULONG64 pKiUserApcDispatcher; + ULONG64 pKiUserCallbackDispatcher; + ULONG64 pRtlUserThreadStart; + ULONG64 pRtlpQueryProcessDebugInformationRemote; + ULONG64 ntdll_handle; + ULONG64 pLdrSystemDllInitBlock; + ULONG64 pRtlpFreezeTimeBias; +} SYSTEM_DLL_INIT_BLOCK; +#endif + +typedef struct +{ + ULONG_PTR *ServiceTable; + ULONG_PTR *CounterTable; + ULONG_PTR ServiceLimit; + BYTE *ArgumentTable; +} SYSTEM_SERVICE_TABLE; + +/* ApiSet structures (format for version 6) */ + +typedef struct _API_SET_NAMESPACE +{ + ULONG Version; + ULONG Size; + ULONG Flags; + ULONG Count; + ULONG EntryOffset; + ULONG HashOffset; + ULONG HashFactor; +} API_SET_NAMESPACE; + +typedef struct _API_SET_HASH_ENTRY +{ + ULONG Hash; + ULONG Index; +} API_SET_HASH_ENTRY; + +typedef struct _API_SET_NAMESPACE_ENTRY +{ + ULONG Flags; + ULONG NameOffset; + ULONG NameLength; + ULONG HashedLength; + ULONG ValueOffset; + ULONG ValueCount; +} API_SET_NAMESPACE_ENTRY; + +typedef struct _API_SET_VALUE_ENTRY +{ + ULONG Flags; + ULONG NameOffset; + ULONG NameLength; + ULONG ValueOffset; + ULONG ValueLength; +} API_SET_VALUE_ENTRY; + +typedef enum _KCONTINUE_TYPE +{ + KCONTINUE_UNWIND, + KCONTINUE_RESUME, + KCONTINUE_LONGJUMP, + KCONTINUE_SET, + KCONTINUE_LAST, +} KCONTINUE_TYPE; + +typedef struct _KCONTINUE_ARGUMENT +{ + KCONTINUE_TYPE ContinueType; + ULONG ContinueFlags; + ULONGLONG Reserved[2]; +} KCONTINUE_ARGUMENT, *PKCONTINUE_ARGUMENT; + +#define KCONTINUE_FLAG_TEST_ALERT 0x01 +#define KCONTINUE_FLAG_DELIVER_APC 0x02 + + +#define HASH_STRING_ALGORITHM_DEFAULT 0 +#define HASH_STRING_ALGORITHM_X65599 1 +#define HASH_STRING_ALGORITHM_INVALID 0xffffffff + /*********************************************************************** * Function declarations */ -#if defined(__i386__) && defined(__GNUC__) -static inline void WINAPI DbgBreakPoint(void) { __asm__ __volatile__("int3"); } -static inline void WINAPI DbgUserBreakPoint(void) { __asm__ __volatile__("int3"); } -#else /* __i386__ && __GNUC__ */ -NTSYSAPI void WINAPI DbgBreakPoint(void); -NTSYSAPI void WINAPI DbgUserBreakPoint(void); -#endif /* __i386__ && __GNUC__ */ -#ifndef __REACTOS__ +NTSYSAPI NTSTATUS WINAPI ApiSetQueryApiSetPresence(const UNICODE_STRING*,BOOLEAN*); +NTSYSAPI NTSTATUS WINAPI ApiSetQueryApiSetPresenceEx(const UNICODE_STRING*,BOOLEAN*,BOOLEAN*); +NTSYSAPI void WINAPI DbgBreakPoint(void); NTSYSAPI NTSTATUS WINAPIV DbgPrint(LPCSTR fmt, ...); -#endif /* __REACTOS__ */ NTSYSAPI NTSTATUS WINAPIV DbgPrintEx(ULONG iComponentId, ULONG Level, LPCSTR fmt, ...); +NTSYSAPI NTSTATUS WINAPI DbgUiConnectToDbg(void); +NTSYSAPI NTSTATUS WINAPI DbgUiContinue(CLIENT_ID*,NTSTATUS); +NTSYSAPI NTSTATUS WINAPI DbgUiConvertStateChangeStructure(DBGUI_WAIT_STATE_CHANGE*,struct _DEBUG_EVENT*); +NTSYSAPI NTSTATUS WINAPI DbgUiDebugActiveProcess(HANDLE); +NTSYSAPI HANDLE WINAPI DbgUiGetThreadDebugObject(void); +NTSYSAPI NTSTATUS WINAPI DbgUiIssueRemoteBreakin(HANDLE); +NTSYSAPI void WINAPI DbgUiRemoteBreakin(void*); +NTSYSAPI void WINAPI DbgUiSetThreadDebugObject(HANDLE); +NTSYSAPI NTSTATUS WINAPI DbgUiStopDebugging(HANDLE); +NTSYSAPI NTSTATUS WINAPI DbgUiWaitStateChange(DBGUI_WAIT_STATE_CHANGE*,LARGE_INTEGER*); +NTSYSAPI void WINAPI DbgUserBreakPoint(void); NTSYSAPI NTSTATUS WINAPI LdrAccessResource(HMODULE,const IMAGE_RESOURCE_DATA_ENTRY*,void**,PULONG); +NTSYSAPI NTSTATUS WINAPI LdrAddDllDirectory(const UNICODE_STRING*,void**); NTSYSAPI NTSTATUS WINAPI LdrAddRefDll(ULONG,HMODULE); +NTSYSAPI NTSTATUS WINAPI LdrDisableThreadCalloutsForDll(HMODULE); +NTSYSAPI NTSTATUS WINAPI LdrFindEntryForAddress(const void*, PLDR_DATA_TABLE_ENTRY*); NTSYSAPI NTSTATUS WINAPI LdrFindResourceDirectory_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DIRECTORY**); NTSYSAPI NTSTATUS WINAPI LdrFindResource_U(HMODULE,const LDR_RESOURCE_INFO*,ULONG,const IMAGE_RESOURCE_DATA_ENTRY**); -NTSYSAPI NTSTATUS WINAPI LdrDisableThreadCalloutsForDll(HMODULE); -NTSYSAPI NTSTATUS WINAPI LdrFindEntryForAddress(const void*, PLDR_MODULE*); +NTSYSAPI NTSTATUS WINAPI LdrGetDllDirectory(UNICODE_STRING*); +NTSYSAPI NTSTATUS WINAPI LdrGetDllFullName(HMODULE, UNICODE_STRING*); NTSYSAPI NTSTATUS WINAPI LdrGetDllHandle(LPCWSTR, ULONG, const UNICODE_STRING*, HMODULE*); +NTSYSAPI NTSTATUS WINAPI LdrGetDllHandleEx(ULONG, LPCWSTR, ULONG *, const UNICODE_STRING*, HMODULE*); +NTSYSAPI NTSTATUS WINAPI LdrGetDllPath(PCWSTR,ULONG,PWSTR*,PWSTR*); NTSYSAPI NTSTATUS WINAPI LdrGetProcedureAddress(HMODULE, const ANSI_STRING*, ULONG, void**); -NTSYSAPI void WINAPI LdrInitializeThunk(void*,ULONG_PTR,ULONG_PTR,ULONG_PTR); NTSYSAPI NTSTATUS WINAPI LdrLoadDll(LPCWSTR, DWORD, const UNICODE_STRING*, HMODULE*); NTSYSAPI NTSTATUS WINAPI LdrLockLoaderLock(ULONG,ULONG*,ULONG_PTR*); IMAGE_BASE_RELOCATION * WINAPI LdrProcessRelocationBlock(void*,UINT,USHORT*,INT_PTR); NTSYSAPI NTSTATUS WINAPI LdrQueryImageFileExecutionOptions(const UNICODE_STRING*,LPCWSTR,ULONG,void*,ULONG,ULONG*); -NTSYSAPI NTSTATUS WINAPI LdrQueryProcessModuleInformation(SYSTEM_MODULE_INFORMATION*, ULONG, ULONG*); +NTSYSAPI NTSTATUS WINAPI LdrQueryProcessModuleInformation(RTL_PROCESS_MODULES*, ULONG, ULONG*); +NTSYSAPI NTSTATUS WINAPI LdrRegisterDllNotification(ULONG,PLDR_DLL_NOTIFICATION_FUNCTION,void*,void**); +NTSYSAPI NTSTATUS WINAPI LdrRemoveDllDirectory(void*); +NTSYSAPI NTSTATUS WINAPI LdrSetDefaultDllDirectories(ULONG); +NTSYSAPI NTSTATUS WINAPI LdrSetDllDirectory(const UNICODE_STRING*); NTSYSAPI void WINAPI LdrShutdownProcess(void); NTSYSAPI void WINAPI LdrShutdownThread(void); NTSYSAPI NTSTATUS WINAPI LdrUnloadDll(HMODULE); NTSYSAPI NTSTATUS WINAPI LdrUnlockLoaderLock(ULONG,ULONG_PTR); +NTSYSAPI NTSTATUS WINAPI LdrUnregisterDllNotification(void*); NTSYSAPI NTSTATUS WINAPI NtAcceptConnectPort(PHANDLE,ULONG,PLPC_MESSAGE,BOOLEAN,PLPC_SECTION_WRITE,PLPC_SECTION_READ); NTSYSAPI NTSTATUS WINAPI NtAccessCheck(PSECURITY_DESCRIPTOR,HANDLE,ACCESS_MASK,PGENERIC_MAPPING,PPRIVILEGE_SET,PULONG,PULONG,NTSTATUS*); NTSYSAPI NTSTATUS WINAPI NtAccessCheckAndAuditAlarm(PUNICODE_STRING,HANDLE,PUNICODE_STRING,PUNICODE_STRING,PSECURITY_DESCRIPTOR,ACCESS_MASK,PGENERIC_MAPPING,BOOLEAN,PACCESS_MASK,PBOOLEAN,PBOOLEAN); @@ -2394,21 +4574,30 @@ NTSYSAPI NTSTATUS WINAPI NtAdjustGroupsToken(HANDLE,BOOLEAN,PTOKEN_GROUPS,ULONG NTSYSAPI NTSTATUS WINAPI NtAdjustPrivilegesToken(HANDLE,BOOLEAN,PTOKEN_PRIVILEGES,DWORD,PTOKEN_PRIVILEGES,PDWORD); NTSYSAPI NTSTATUS WINAPI NtAlertResumeThread(HANDLE,PULONG); NTSYSAPI NTSTATUS WINAPI NtAlertThread(HANDLE ThreadHandle); +NTSYSAPI NTSTATUS WINAPI NtAlertThreadByThreadId(HANDLE); NTSYSAPI NTSTATUS WINAPI NtAllocateLocallyUniqueId(PLUID lpLuid); +NTSYSAPI NTSTATUS WINAPI NtAllocateReserveObject(HANDLE *handle,const OBJECT_ATTRIBUTES *attr,MEMORY_RESERVE_OBJECT_TYPE type); NTSYSAPI NTSTATUS WINAPI NtAllocateUuids(PULARGE_INTEGER,PULONG,PULONG,PUCHAR); -NTSYSAPI NTSTATUS WINAPI NtAllocateVirtualMemory(HANDLE,PVOID*,ULONG,SIZE_T*,ULONG,ULONG); +NTSYSAPI NTSTATUS WINAPI NtAllocateVirtualMemory(HANDLE,PVOID*,ULONG_PTR,SIZE_T*,ULONG,ULONG); +NTSYSAPI NTSTATUS WINAPI NtAllocateVirtualMemoryEx(HANDLE,PVOID*,SIZE_T*,ULONG,ULONG,MEM_EXTENDED_PARAMETER*,ULONG); NTSYSAPI NTSTATUS WINAPI NtAreMappedFilesTheSame(PVOID,PVOID); NTSYSAPI NTSTATUS WINAPI NtAssignProcessToJobObject(HANDLE,HANDLE); NTSYSAPI NTSTATUS WINAPI NtCallbackReturn(PVOID,ULONG,NTSTATUS); NTSYSAPI NTSTATUS WINAPI NtCancelIoFile(HANDLE,PIO_STATUS_BLOCK); NTSYSAPI NTSTATUS WINAPI NtCancelIoFileEx(HANDLE,PIO_STATUS_BLOCK,PIO_STATUS_BLOCK); +NTSYSAPI NTSTATUS WINAPI NtCancelSynchronousIoFile(HANDLE,PIO_STATUS_BLOCK,PIO_STATUS_BLOCK); NTSYSAPI NTSTATUS WINAPI NtCancelTimer(HANDLE, BOOLEAN*); NTSYSAPI NTSTATUS WINAPI NtClearEvent(HANDLE); NTSYSAPI NTSTATUS WINAPI NtClose(HANDLE); NTSYSAPI NTSTATUS WINAPI NtCloseObjectAuditAlarm(PUNICODE_STRING,HANDLE,BOOLEAN); +NTSYSAPI NTSTATUS WINAPI NtCommitTransaction(HANDLE,BOOLEAN); +NTSYSAPI NTSTATUS WINAPI NtCompareObjects(HANDLE,HANDLE); +NTSYSAPI NTSTATUS WINAPI NtCompareTokens(HANDLE,HANDLE,BOOLEAN*); NTSYSAPI NTSTATUS WINAPI NtCompleteConnectPort(HANDLE); NTSYSAPI NTSTATUS WINAPI NtConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PLPC_SECTION_READ,PULONG,PVOID,PULONG); NTSYSAPI NTSTATUS WINAPI NtContinue(PCONTEXT,BOOLEAN); +NTSYSAPI NTSTATUS WINAPI NtContinueEx(CONTEXT*,KCONTINUE_ARGUMENT*); +NTSYSAPI NTSTATUS WINAPI NtCreateDebugObject(HANDLE*,ACCESS_MASK,OBJECT_ATTRIBUTES*,ULONG); NTSYSAPI NTSTATUS WINAPI NtCreateDirectoryObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES); NTSYSAPI NTSTATUS WINAPI NtCreateEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *,EVENT_TYPE,BOOLEAN); NTSYSAPI NTSTATUS WINAPI NtCreateEventPair(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES); @@ -2418,6 +4607,7 @@ NTSYSAPI NTSTATUS WINAPI NtCreateJobObject(PHANDLE,ACCESS_MASK,const OBJECT_ATT NTSYSAPI NTSTATUS WINAPI NtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG); NTSYSAPI NTSTATUS WINAPI NtCreateKeyTransacted(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,HANDLE,ULONG*); NTSYSAPI NTSTATUS WINAPI NtCreateKeyedEvent(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG); +NTSYSAPI NTSTATUS WINAPI NtCreateLowBoxToken(HANDLE*,HANDLE,ACCESS_MASK,OBJECT_ATTRIBUTES*,SID*,ULONG,SID_AND_ATTRIBUTES*,ULONG,HANDLE*); NTSYSAPI NTSTATUS WINAPI NtCreateMailslotFile(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,PLARGE_INTEGER); NTSYSAPI NTSTATUS WINAPI NtCreateMutant(HANDLE*,ACCESS_MASK,const OBJECT_ATTRIBUTES*,BOOLEAN); NTSYSAPI NTSTATUS WINAPI NtCreateNamedPipeFile(PHANDLE,ULONG,POBJECT_ATTRIBUTES,PIO_STATUS_BLOCK,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,ULONG,PLARGE_INTEGER); @@ -2429,8 +4619,13 @@ NTSYSAPI NTSTATUS WINAPI NtCreateSection(HANDLE*,ACCESS_MASK,const OBJECT_ATTRI NTSYSAPI NTSTATUS WINAPI NtCreateSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,LONG,LONG); NTSYSAPI NTSTATUS WINAPI NtCreateSymbolicLinkObject(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,PUNICODE_STRING); NTSYSAPI NTSTATUS WINAPI NtCreateThread(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,HANDLE,PCLIENT_ID,PCONTEXT,PINITIAL_TEB,BOOLEAN); +NTSYSAPI NTSTATUS WINAPI NtCreateThreadEx(HANDLE*,ACCESS_MASK,OBJECT_ATTRIBUTES*,HANDLE,PRTL_THREAD_START_ROUTINE,void*,ULONG,ULONG_PTR,SIZE_T,SIZE_T,PS_ATTRIBUTE_LIST*); NTSYSAPI NTSTATUS WINAPI NtCreateTimer(HANDLE*, ACCESS_MASK, const OBJECT_ATTRIBUTES*, TIMER_TYPE); NTSYSAPI NTSTATUS WINAPI NtCreateToken(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,TOKEN_TYPE,PLUID,PLARGE_INTEGER,PTOKEN_USER,PTOKEN_GROUPS,PTOKEN_PRIVILEGES,PTOKEN_OWNER,PTOKEN_PRIMARY_GROUP,PTOKEN_DEFAULT_DACL,PTOKEN_SOURCE); +NTSYSAPI NTSTATUS WINAPI NtCreateTransaction(PHANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,LPGUID,HANDLE,ULONG,ULONG,ULONG,PLARGE_INTEGER,PUNICODE_STRING); +NTSYSAPI NTSTATUS WINAPI NtCreateUserProcess(HANDLE*,HANDLE*,ACCESS_MASK,ACCESS_MASK,OBJECT_ATTRIBUTES*,OBJECT_ATTRIBUTES*,ULONG,ULONG,RTL_USER_PROCESS_PARAMETERS*,PS_CREATE_INFO*,PS_ATTRIBUTE_LIST*); +NTSYSAPI NTSTATUS WINAPI NtDebugActiveProcess(HANDLE,HANDLE); +NTSYSAPI NTSTATUS WINAPI NtDebugContinue(HANDLE,CLIENT_ID*,NTSTATUS); NTSYSAPI NTSTATUS WINAPI NtDelayExecution(BOOLEAN,const LARGE_INTEGER*); NTSYSAPI NTSTATUS WINAPI NtDeleteAtom(RTL_ATOM); NTSYSAPI NTSTATUS WINAPI NtDeleteFile(POBJECT_ATTRIBUTES); @@ -2439,21 +4634,24 @@ NTSYSAPI NTSTATUS WINAPI NtDeleteValueKey(HANDLE,const UNICODE_STRING *); NTSYSAPI NTSTATUS WINAPI NtDeviceIoControlFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,PVOID,ULONG,PVOID,ULONG); NTSYSAPI NTSTATUS WINAPI NtDisplayString(PUNICODE_STRING); NTSYSAPI NTSTATUS WINAPI NtDuplicateObject(HANDLE,HANDLE,HANDLE,PHANDLE,ACCESS_MASK,ULONG,ULONG); -NTSYSAPI NTSTATUS WINAPI NtDuplicateToken(HANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,SECURITY_IMPERSONATION_LEVEL,TOKEN_TYPE,PHANDLE); +NTSYSAPI NTSTATUS WINAPI NtDuplicateToken(HANDLE,ACCESS_MASK,POBJECT_ATTRIBUTES,BOOLEAN,TOKEN_TYPE,PHANDLE); NTSYSAPI NTSTATUS WINAPI NtEnumerateKey(HANDLE,ULONG,KEY_INFORMATION_CLASS,void *,DWORD,DWORD *); NTSYSAPI NTSTATUS WINAPI NtEnumerateValueKey(HANDLE,ULONG,KEY_VALUE_INFORMATION_CLASS,PVOID,ULONG,PULONG); NTSYSAPI NTSTATUS WINAPI NtExtendSection(HANDLE,PLARGE_INTEGER); NTSYSAPI NTSTATUS WINAPI NtFilterToken(HANDLE,ULONG,TOKEN_GROUPS*,TOKEN_PRIVILEGES*,TOKEN_GROUPS*,HANDLE*); NTSYSAPI NTSTATUS WINAPI NtFindAtom(const WCHAR*,ULONG,RTL_ATOM*); NTSYSAPI NTSTATUS WINAPI NtFlushBuffersFile(HANDLE,IO_STATUS_BLOCK*); +NTSYSAPI NTSTATUS WINAPI NtFlushBuffersFileEx(HANDLE,ULONG,void*,ULONG,IO_STATUS_BLOCK*); NTSYSAPI NTSTATUS WINAPI NtFlushInstructionCache(HANDLE,LPCVOID,SIZE_T); NTSYSAPI NTSTATUS WINAPI NtFlushKey(HANDLE); +NTSYSAPI NTSTATUS WINAPI NtFlushProcessWriteBuffers(void); NTSYSAPI NTSTATUS WINAPI NtFlushVirtualMemory(HANDLE,LPCVOID*,SIZE_T*,ULONG); NTSYSAPI NTSTATUS WINAPI NtFlushWriteBuffer(VOID); 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 NtGetNextThread(HANDLE,HANDLE,ACCESS_MASK,ULONG,ULONG,HANDLE*); NTSYSAPI NTSTATUS WINAPI NtGetNlsSectionPtr(ULONG,ULONG,void*,void**,SIZE_T*); NTSYSAPI NTSTATUS WINAPI NtGetPlugPlayEvent(ULONG,ULONG,PVOID,ULONG); NTSYSAPI ULONG WINAPI NtGetTickCount(VOID); @@ -2461,16 +4659,21 @@ NTSYSAPI NTSTATUS WINAPI NtGetWriteWatch(HANDLE,ULONG,PVOID,SIZE_T,PVOID*,ULONG NTSYSAPI NTSTATUS WINAPI NtImpersonateAnonymousToken(HANDLE); NTSYSAPI NTSTATUS WINAPI NtImpersonateClientOfPort(HANDLE,PPORT_MESSAGE); NTSYSAPI NTSTATUS WINAPI NtImpersonateThread(HANDLE,HANDLE,PSECURITY_QUALITY_OF_SERVICE); +NTSYSAPI NTSTATUS WINAPI NtInitializeNlsFiles(void**,LCID*,LARGE_INTEGER*); NTSYSAPI NTSTATUS WINAPI NtInitializeRegistry(BOOLEAN); NTSYSAPI NTSTATUS WINAPI NtInitiatePowerAction(POWER_ACTION,SYSTEM_POWER_STATE,ULONG,BOOLEAN); NTSYSAPI NTSTATUS WINAPI NtIsProcessInJob(HANDLE,HANDLE); NTSYSAPI NTSTATUS WINAPI NtListenPort(HANDLE,PLPC_MESSAGE); NTSYSAPI NTSTATUS WINAPI NtLoadDriver(const UNICODE_STRING *); NTSYSAPI NTSTATUS WINAPI NtLoadKey(const OBJECT_ATTRIBUTES *,OBJECT_ATTRIBUTES *); +NTSYSAPI NTSTATUS WINAPI NtLoadKey2(const OBJECT_ATTRIBUTES *,OBJECT_ATTRIBUTES *,ULONG); +NTSYSAPI NTSTATUS WINAPI NtLoadKeyEx(const OBJECT_ATTRIBUTES *,OBJECT_ATTRIBUTES *,ULONG,HANDLE,HANDLE,ACCESS_MASK,HANDLE *,IO_STATUS_BLOCK *); NTSYSAPI NTSTATUS WINAPI NtLockFile(HANDLE,HANDLE,PIO_APC_ROUTINE,void*,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,ULONG*,BOOLEAN,BOOLEAN); NTSYSAPI NTSTATUS WINAPI NtLockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG); +NTSYSAPI NTSTATUS WINAPI NtMakePermanentObject(HANDLE); NTSYSAPI NTSTATUS WINAPI NtMakeTemporaryObject(HANDLE); -NTSYSAPI NTSTATUS WINAPI NtMapViewOfSection(HANDLE,HANDLE,PVOID*,ULONG,SIZE_T,const LARGE_INTEGER*,SIZE_T*,SECTION_INHERIT,ULONG,ULONG); +NTSYSAPI NTSTATUS WINAPI NtMapViewOfSection(HANDLE,HANDLE,PVOID*,ULONG_PTR,SIZE_T,const LARGE_INTEGER*,SIZE_T*,SECTION_INHERIT,ULONG,ULONG); +NTSYSAPI NTSTATUS WINAPI NtMapViewOfSectionEx(HANDLE,HANDLE,PVOID*,const LARGE_INTEGER*,SIZE_T*,ULONG,ULONG,MEM_EXTENDED_PARAMETER*,ULONG); NTSYSAPI NTSTATUS WINAPI NtNotifyChangeDirectoryFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,ULONG,BOOLEAN); NTSYSAPI NTSTATUS WINAPI NtNotifyChangeKey(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN); NTSYSAPI NTSTATUS WINAPI NtNotifyChangeMultipleKeys(HANDLE,ULONG,OBJECT_ATTRIBUTES*,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,ULONG,BOOLEAN,PVOID,ULONG,BOOLEAN); @@ -2502,8 +4705,9 @@ NTSYSAPI NTSTATUS WINAPI NtPrivilegeCheck(HANDLE,PPRIVILEGE_SET,PBOOLEAN); NTSYSAPI NTSTATUS WINAPI NtPrivilegeObjectAuditAlarm(PUNICODE_STRING,HANDLE,HANDLE,ULONG,PPRIVILEGE_SET,BOOLEAN); NTSYSAPI NTSTATUS WINAPI NtPrivilegedServiceAuditAlarm(PUNICODE_STRING,PUNICODE_STRING,HANDLE,PPRIVILEGE_SET,BOOLEAN); NTSYSAPI NTSTATUS WINAPI NtProtectVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG,ULONG*); -NTSYSAPI NTSTATUS WINAPI NtPulseEvent(HANDLE,PULONG); +NTSYSAPI NTSTATUS WINAPI NtPulseEvent(HANDLE,LONG*); NTSYSAPI NTSTATUS WINAPI NtQueueApcThread(HANDLE,PNTAPCFUNC,ULONG_PTR,ULONG_PTR,ULONG_PTR); +NTSYSAPI NTSTATUS WINAPI NtQueueApcThreadEx(HANDLE,HANDLE,PNTAPCFUNC,ULONG_PTR,ULONG_PTR,ULONG_PTR); NTSYSAPI NTSTATUS WINAPI NtQueryAttributesFile(const OBJECT_ATTRIBUTES*,FILE_BASIC_INFORMATION*); NTSYSAPI NTSTATUS WINAPI NtQueryDefaultLocale(BOOLEAN,LCID*); NTSYSAPI NTSTATUS WINAPI NtQueryDefaultUILanguage(LANGID*); @@ -2513,7 +4717,7 @@ NTSYSAPI NTSTATUS WINAPI NtQueryEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,BOOL NTSYSAPI NTSTATUS WINAPI NtQueryEvent(HANDLE,EVENT_INFORMATION_CLASS,PVOID,ULONG,PULONG); NTSYSAPI NTSTATUS WINAPI NtQueryFullAttributesFile(const OBJECT_ATTRIBUTES*,FILE_NETWORK_OPEN_INFORMATION*); NTSYSAPI NTSTATUS WINAPI NtQueryInformationAtom(RTL_ATOM,ATOM_INFORMATION_CLASS,PVOID,ULONG,ULONG*); -NTSYSAPI NTSTATUS WINAPI NtQueryInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,LONG,FILE_INFORMATION_CLASS); +NTSYSAPI NTSTATUS WINAPI NtQueryInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS); NTSYSAPI NTSTATUS WINAPI NtQueryInformationJobObject(HANDLE,JOBOBJECTINFOCLASS,PVOID,ULONG,PULONG); NTSYSAPI NTSTATUS WINAPI NtQueryInformationPort(HANDLE,PORT_INFORMATION_CLASS,PVOID,ULONG,PULONG); NTSYSAPI NTSTATUS WINAPI NtQueryInformationProcess(HANDLE,PROCESSINFOCLASS,PVOID,ULONG,PULONG); @@ -2533,6 +4737,7 @@ NTSYSAPI NTSTATUS WINAPI NtQuerySection(HANDLE,SECTION_INFORMATION_CLASS,PVOID, NTSYSAPI NTSTATUS WINAPI NtQuerySemaphore(HANDLE,SEMAPHORE_INFORMATION_CLASS,PVOID,ULONG,PULONG); NTSYSAPI NTSTATUS WINAPI NtQuerySymbolicLinkObject(HANDLE,PUNICODE_STRING,PULONG); NTSYSAPI NTSTATUS WINAPI NtQuerySystemEnvironmentValue(PUNICODE_STRING,PWCHAR,ULONG,PULONG); +NTSYSAPI NTSTATUS WINAPI NtQuerySystemEnvironmentValueEx(PUNICODE_STRING,GUID*,void*,ULONG*,ULONG*); NTSYSAPI NTSTATUS WINAPI NtQuerySystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG,PULONG); NTSYSAPI NTSTATUS WINAPI NtQuerySystemInformationEx(SYSTEM_INFORMATION_CLASS,void*,ULONG,void*,ULONG,ULONG*); NTSYSAPI NTSTATUS WINAPI NtQuerySystemTime(PLARGE_INTEGER); @@ -2543,7 +4748,7 @@ NTSYSAPI NTSTATUS WINAPI NtQueryLicenseValue(const UNICODE_STRING *,ULONG *,PVO NTSYSAPI NTSTATUS WINAPI NtQueryVirtualMemory(HANDLE,LPCVOID,MEMORY_INFORMATION_CLASS,PVOID,SIZE_T,SIZE_T*); NTSYSAPI NTSTATUS WINAPI NtQueryVolumeInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FS_INFORMATION_CLASS); NTSYSAPI NTSTATUS WINAPI NtRaiseException(PEXCEPTION_RECORD,PCONTEXT,BOOL); -NTSYSAPI NTSTATUS WINAPI NtRaiseHardError(NTSTATUS,ULONG,PUNICODE_STRING,PVOID*,HARDERROR_RESPONSE_OPTION,PHARDERROR_RESPONSE); +NTSYSAPI NTSTATUS WINAPI NtRaiseHardError(NTSTATUS,ULONG,ULONG,PVOID*,HARDERROR_RESPONSE_OPTION,PHARDERROR_RESPONSE); NTSYSAPI NTSTATUS WINAPI NtReadFile(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,PVOID,ULONG,PLARGE_INTEGER,PULONG); NTSYSAPI NTSTATUS WINAPI NtReadFileScatter(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID,PIO_STATUS_BLOCK,FILE_SEGMENT_ELEMENT*,ULONG,PLARGE_INTEGER,PULONG); NTSYSAPI NTSTATUS WINAPI NtReadRequestData(HANDLE,PLPC_MESSAGE,ULONG,PVOID,ULONG,PULONG); @@ -2553,6 +4758,8 @@ NTSYSAPI NTSTATUS WINAPI NtReleaseKeyedEvent(HANDLE,const void*,BOOLEAN,const L NTSYSAPI NTSTATUS WINAPI NtReleaseMutant(HANDLE,PLONG); NTSYSAPI NTSTATUS WINAPI NtReleaseSemaphore(HANDLE,ULONG,PULONG); NTSYSAPI NTSTATUS WINAPI NtRemoveIoCompletion(HANDLE,PULONG_PTR,PULONG_PTR,PIO_STATUS_BLOCK,PLARGE_INTEGER); +NTSYSAPI NTSTATUS WINAPI NtRemoveIoCompletionEx(HANDLE,FILE_IO_COMPLETION_INFORMATION*,ULONG,ULONG*,LARGE_INTEGER*,BOOLEAN); +NTSYSAPI NTSTATUS WINAPI NtRemoveProcessDebug(HANDLE,HANDLE); NTSYSAPI NTSTATUS WINAPI NtRenameKey(HANDLE,UNICODE_STRING*); NTSYSAPI NTSTATUS WINAPI NtReplaceKey(POBJECT_ATTRIBUTES,HANDLE,POBJECT_ATTRIBUTES); NTSYSAPI NTSTATUS WINAPI NtReplyPort(HANDLE,PLPC_MESSAGE); @@ -2561,31 +4768,39 @@ NTSYSAPI NTSTATUS WINAPI NtReplyWaitReceivePortEx(HANDLE,PVOID*,PPORT_MESSAGE,P NTSYSAPI NTSTATUS WINAPI NtReplyWaitReplyPort(HANDLE,PLPC_MESSAGE); NTSYSAPI NTSTATUS WINAPI NtRequestPort(HANDLE,PLPC_MESSAGE); NTSYSAPI NTSTATUS WINAPI NtRequestWaitReplyPort(HANDLE,PLPC_MESSAGE,PLPC_MESSAGE); -NTSYSAPI NTSTATUS WINAPI NtResetEvent(HANDLE,PULONG); +NTSYSAPI NTSTATUS WINAPI NtResetEvent(HANDLE,LONG*); NTSYSAPI NTSTATUS WINAPI NtResetWriteWatch(HANDLE,PVOID,SIZE_T); NTSYSAPI NTSTATUS WINAPI NtRestoreKey(HANDLE,HANDLE,ULONG); +#ifndef __REACTOS__ +NTSYSAPI NTSTATUS WINAPI NtResumeProcess(HANDLE); +#endif NTSYSAPI NTSTATUS WINAPI NtResumeThread(HANDLE,PULONG); +NTSYSAPI NTSTATUS WINAPI NtRollbackTransaction(HANDLE,BOOLEAN); NTSYSAPI NTSTATUS WINAPI NtSaveKey(HANDLE,HANDLE); NTSYSAPI NTSTATUS WINAPI NtSecureConnectPort(PHANDLE,PUNICODE_STRING,PSECURITY_QUALITY_OF_SERVICE,PLPC_SECTION_WRITE,PSID,PLPC_SECTION_READ,PULONG,PVOID,PULONG); NTSYSAPI NTSTATUS WINAPI NtSetContextThread(HANDLE,const CONTEXT*); +NTSYSAPI NTSTATUS WINAPI NtSetDebugFilterState(ULONG,ULONG,BOOLEAN); NTSYSAPI NTSTATUS WINAPI NtSetDefaultHardErrorPort(HANDLE); NTSYSAPI NTSTATUS WINAPI NtSetDefaultLocale(BOOLEAN,LCID); NTSYSAPI NTSTATUS WINAPI NtSetDefaultUILanguage(LANGID); NTSYSAPI NTSTATUS WINAPI NtSetEaFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG); -NTSYSAPI NTSTATUS WINAPI NtSetEvent(HANDLE,PULONG); +NTSYSAPI NTSTATUS WINAPI NtSetEvent(HANDLE,LONG*); NTSYSAPI NTSTATUS WINAPI NtSetHighEventPair(HANDLE); NTSYSAPI NTSTATUS WINAPI NtSetHighWaitLowEventPair(HANDLE); NTSYSAPI NTSTATUS WINAPI NtSetHighWaitLowThread(VOID); +NTSYSAPI NTSTATUS WINAPI NtSetInformationDebugObject(HANDLE,DEBUGOBJECTINFOCLASS,PVOID,ULONG,ULONG*); NTSYSAPI NTSTATUS WINAPI NtSetInformationFile(HANDLE,PIO_STATUS_BLOCK,PVOID,ULONG,FILE_INFORMATION_CLASS); NTSYSAPI NTSTATUS WINAPI NtSetInformationJobObject(HANDLE,JOBOBJECTINFOCLASS,PVOID,ULONG); NTSYSAPI NTSTATUS WINAPI NtSetInformationKey(HANDLE,const int,PVOID,ULONG); NTSYSAPI NTSTATUS WINAPI NtSetInformationObject(HANDLE, OBJECT_INFORMATION_CLASS, PVOID, ULONG); -NTSYSAPI NTSTATUS WINAPI NtSetInformationProcess(HANDLE,PROCESS_INFORMATION_CLASS,PVOID,ULONG); +NTSYSAPI NTSTATUS WINAPI NtSetInformationProcess(HANDLE,PROCESSINFOCLASS,PVOID,ULONG); NTSYSAPI NTSTATUS WINAPI NtSetInformationThread(HANDLE,THREADINFOCLASS,LPCVOID,ULONG); NTSYSAPI NTSTATUS WINAPI NtSetInformationToken(HANDLE,TOKEN_INFORMATION_CLASS,PVOID,ULONG); +NTSYSAPI NTSTATUS WINAPI NtSetInformationVirtualMemory(HANDLE,VIRTUAL_MEMORY_INFORMATION_CLASS,ULONG_PTR,PMEMORY_RANGE_ENTRY,PVOID,ULONG); NTSYSAPI NTSTATUS WINAPI NtSetIntervalProfile(ULONG,KPROFILE_SOURCE); NTSYSAPI NTSTATUS WINAPI NtSetIoCompletion(HANDLE,ULONG_PTR,ULONG_PTR,NTSTATUS,SIZE_T); -NTSYSAPI NTSTATUS WINAPI NtSetLdtEntries(ULONG,ULONG,ULONG,ULONG,ULONG,ULONG); +NTSYSAPI NTSTATUS WINAPI NtSetIoCompletionEx(HANDLE,HANDLE,ULONG_PTR,ULONG_PTR,NTSTATUS,SIZE_T); +NTSYSAPI NTSTATUS WINAPI NtSetLdtEntries(ULONG,LDT_ENTRY,ULONG,LDT_ENTRY); NTSYSAPI NTSTATUS WINAPI NtSetLowEventPair(HANDLE); NTSYSAPI NTSTATUS WINAPI NtSetLowWaitHighEventPair(HANDLE); NTSYSAPI NTSTATUS WINAPI NtSetLowWaitHighThread(VOID); @@ -2594,6 +4809,7 @@ NTSYSAPI NTSTATUS WINAPI NtSetSystemEnvironmentValue(PUNICODE_STRING,PUNICODE_S NTSYSAPI NTSTATUS WINAPI NtSetSystemInformation(SYSTEM_INFORMATION_CLASS,PVOID,ULONG); NTSYSAPI NTSTATUS WINAPI NtSetSystemPowerState(POWER_ACTION,SYSTEM_POWER_STATE,ULONG); NTSYSAPI NTSTATUS WINAPI NtSetSystemTime(const LARGE_INTEGER*,LARGE_INTEGER*); +NTSYSAPI NTSTATUS WINAPI NtSetThreadExecutionState(EXECUTION_STATE,EXECUTION_STATE*); NTSYSAPI NTSTATUS WINAPI NtSetTimer(HANDLE, const LARGE_INTEGER*, PTIMER_APC_ROUTINE, PVOID, BOOLEAN, ULONG, BOOLEAN*); NTSYSAPI NTSTATUS WINAPI NtSetTimerResolution(ULONG,BOOLEAN,PULONG); NTSYSAPI NTSTATUS WINAPI NtSetValueKey(HANDLE,const UNICODE_STRING *,ULONG,ULONG,const void *,ULONG); @@ -2602,19 +4818,26 @@ NTSYSAPI NTSTATUS WINAPI NtSignalAndWaitForSingleObject(HANDLE,HANDLE,BOOLEAN,c NTSYSAPI NTSTATUS WINAPI NtShutdownSystem(SHUTDOWN_ACTION); NTSYSAPI NTSTATUS WINAPI NtStartProfile(HANDLE); NTSYSAPI NTSTATUS WINAPI NtStopProfile(HANDLE); +#ifndef __REACTOS__ +NTSYSAPI NTSTATUS WINAPI NtSuspendProcess(HANDLE); +#endif NTSYSAPI NTSTATUS WINAPI NtSuspendThread(HANDLE,PULONG); NTSYSAPI NTSTATUS WINAPI NtSystemDebugControl(SYSDBG_COMMAND,PVOID,ULONG,PVOID,ULONG,PULONG); NTSYSAPI NTSTATUS WINAPI NtTerminateJobObject(HANDLE,NTSTATUS); NTSYSAPI NTSTATUS WINAPI NtTerminateProcess(HANDLE,LONG); NTSYSAPI NTSTATUS WINAPI NtTerminateThread(HANDLE,LONG); NTSYSAPI NTSTATUS WINAPI NtTestAlert(VOID); +NTSYSAPI NTSTATUS WINAPI NtTraceControl(ULONG,void*,ULONG,void*,ULONG,ULONG*); NTSYSAPI NTSTATUS WINAPI NtUnloadDriver(const UNICODE_STRING *); NTSYSAPI NTSTATUS WINAPI NtUnloadKey(POBJECT_ATTRIBUTES); NTSYSAPI NTSTATUS WINAPI NtUnloadKeyEx(POBJECT_ATTRIBUTES,HANDLE); NTSYSAPI NTSTATUS WINAPI NtUnlockFile(HANDLE,PIO_STATUS_BLOCK,PLARGE_INTEGER,PLARGE_INTEGER,PULONG); NTSYSAPI NTSTATUS WINAPI NtUnlockVirtualMemory(HANDLE,PVOID*,SIZE_T*,ULONG); NTSYSAPI NTSTATUS WINAPI NtUnmapViewOfSection(HANDLE,PVOID); +NTSYSAPI NTSTATUS WINAPI NtUnmapViewOfSectionEx(HANDLE,PVOID,ULONG); NTSYSAPI NTSTATUS WINAPI NtVdmControl(ULONG,PVOID); +NTSYSAPI NTSTATUS WINAPI NtWaitForAlertByThreadId(const void*,const LARGE_INTEGER*); +NTSYSAPI NTSTATUS WINAPI NtWaitForDebugEvent(HANDLE,BOOLEAN,LARGE_INTEGER*,DBGUI_WAIT_STATE_CHANGE*); NTSYSAPI NTSTATUS WINAPI NtWaitForKeyedEvent(HANDLE,const void*,BOOLEAN,const LARGE_INTEGER*); NTSYSAPI NTSTATUS WINAPI NtWaitForSingleObject(HANDLE,BOOLEAN,const LARGE_INTEGER*); NTSYSAPI NTSTATUS WINAPI NtWaitForMultipleObjects(ULONG,const HANDLE*,BOOLEAN,BOOLEAN,const LARGE_INTEGER*); @@ -2625,31 +4848,36 @@ NTSYSAPI NTSTATUS WINAPI NtWriteFileGather(HANDLE,HANDLE,PIO_APC_ROUTINE,PVOID, NTSYSAPI NTSTATUS WINAPI NtWriteRequestData(HANDLE,PLPC_MESSAGE,ULONG,PVOID,ULONG,PULONG); NTSYSAPI NTSTATUS WINAPI NtWriteVirtualMemory(HANDLE,void*,const void*,SIZE_T,SIZE_T*); NTSYSAPI NTSTATUS WINAPI NtYieldExecution(void); - +NTSYSAPI NTSTATUS WINAPI RtlAbsoluteToSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PULONG); NTSYSAPI void WINAPI RtlAcquirePebLock(void); NTSYSAPI BYTE WINAPI RtlAcquireResourceExclusive(LPRTL_RWLOCK,BYTE); NTSYSAPI BYTE WINAPI RtlAcquireResourceShared(LPRTL_RWLOCK,BYTE); NTSYSAPI void WINAPI RtlAcquireSRWLockExclusive(RTL_SRWLOCK*); NTSYSAPI void WINAPI RtlAcquireSRWLockShared(RTL_SRWLOCK*); NTSYSAPI NTSTATUS WINAPI RtlActivateActivationContext(DWORD,HANDLE,ULONG_PTR*); -NTSYSAPI NTSTATUS WINAPI RtlAddAce(PACL,DWORD,DWORD,PACE_HEADER,DWORD); +NTSYSAPI NTSTATUS WINAPI RtlActivateActivationContextEx(ULONG,TEB*,HANDLE,ULONG_PTR*); NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAce(PACL,DWORD,DWORD,PSID); NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedAceEx(PACL,DWORD,DWORD,DWORD,PSID); NTSYSAPI NTSTATUS WINAPI RtlAddAccessAllowedObjectAce(PACL,DWORD,DWORD,DWORD,GUID*,GUID*,PSID); NTSYSAPI NTSTATUS WINAPI RtlAddAccessDeniedAce(PACL,DWORD,DWORD,PSID); NTSYSAPI NTSTATUS WINAPI RtlAddAccessDeniedAceEx(PACL,DWORD,DWORD,DWORD,PSID); NTSYSAPI NTSTATUS WINAPI RtlAddAccessDeniedObjectAce(PACL,DWORD,DWORD,DWORD,GUID*,GUID*,PSID); +NTSYSAPI NTSTATUS WINAPI RtlAddAce(PACL,DWORD,DWORD,PACE_HEADER,DWORD); NTSYSAPI NTSTATUS WINAPI RtlAddAtomToAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*); NTSYSAPI NTSTATUS WINAPI RtlAddAuditAccessAce(PACL,DWORD,DWORD,PSID,BOOL,BOOL); NTSYSAPI NTSTATUS WINAPI RtlAddAuditAccessAceEx(PACL,DWORD,DWORD,DWORD,PSID,BOOL,BOOL); NTSYSAPI NTSTATUS WINAPI RtlAddAuditAccessObjectAce(PACL,DWORD,DWORD,DWORD,GUID*,GUID*,PSID,BOOL,BOOL); NTSYSAPI NTSTATUS WINAPI RtlAddMandatoryAce(PACL,DWORD,DWORD,DWORD,DWORD,PSID); +NTSYSAPI NTSTATUS WINAPI RtlAddProcessTrustLabelAce(PACL,DWORD,DWORD,PSID,DWORD,DWORD); NTSYSAPI void WINAPI RtlAddRefActivationContext(HANDLE); +NTSYSAPI PVOID WINAPI RtlAddVectoredContinueHandler(ULONG,PVECTORED_EXCEPTION_HANDLER); NTSYSAPI PVOID WINAPI RtlAddVectoredExceptionHandler(ULONG,PVECTORED_EXCEPTION_HANDLER); +NTSYSAPI PVOID WINAPI RtlAddressInSectionTable(const IMAGE_NT_HEADERS*,HMODULE,DWORD); NTSYSAPI NTSTATUS WINAPI RtlAdjustPrivilege(ULONG,BOOLEAN,BOOLEAN,PBOOLEAN); NTSYSAPI NTSTATUS WINAPI RtlAllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY,BYTE,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,DWORD,PSID *); NTSYSAPI RTL_HANDLE * WINAPI RtlAllocateHandle(RTL_HANDLE_TABLE *,ULONG *); -NTSYSAPI PVOID WINAPI RtlAllocateHeap(HANDLE,ULONG,SIZE_T) __WINE_ALLOC_SIZE(3); +NTSYSAPI BOOLEAN WINAPI RtlFreeHeap(HANDLE,ULONG,PVOID); +NTSYSAPI PVOID WINAPI RtlAllocateHeap(HANDLE,ULONG,SIZE_T) __WINE_ALLOC_SIZE(3) __WINE_DEALLOC(RtlFreeHeap,3) __WINE_MALLOC; NTSYSAPI WCHAR WINAPI RtlAnsiCharToUnicodeChar(LPSTR *); NTSYSAPI DWORD WINAPI RtlAnsiStringToUnicodeSize(const STRING *); NTSYSAPI NTSTATUS WINAPI RtlAnsiStringToUnicodeString(PUNICODE_STRING,PCANSI_STRING,BOOLEAN); @@ -2665,36 +4893,44 @@ NTSYSAPI NTSTATUS WINAPI RtlCharToInteger(PCSZ,ULONG,PULONG); NTSYSAPI NTSTATUS WINAPI RtlCheckRegistryKey(ULONG, PWSTR); NTSYSAPI void WINAPI RtlClearAllBits(PRTL_BITMAP); NTSYSAPI void WINAPI RtlClearBits(PRTL_BITMAP,ULONG,ULONG); -NTSYSAPI NTSTATUS WINAPI RtlCreateActivationContext(HANDLE*,const void*); -NTSYSAPI PDEBUG_BUFFER WINAPI RtlCreateQueryDebugBuffer(ULONG,BOOLEAN); NTSYSAPI ULONG WINAPI RtlCompactHeap(HANDLE,ULONG); -NTSYSAPI LONG WINAPI RtlCompareString(const STRING*,const STRING*,BOOLEAN); NTSYSAPI LONG WINAPI RtlCompareUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN); NTSYSAPI LONG WINAPI RtlCompareUnicodeStrings(const WCHAR*,SIZE_T,const WCHAR*,SIZE_T,BOOLEAN); NTSYSAPI NTSTATUS WINAPI RtlCompressBuffer(USHORT,PUCHAR,ULONG,PUCHAR,ULONG,ULONG,PULONG,PVOID); NTSYSAPI DWORD WINAPI RtlComputeCrc32(DWORD,const BYTE*,INT); NTSYSAPI NTSTATUS WINAPI RtlConvertSidToUnicodeString(PUNICODE_STRING,PSID,BOOLEAN); +NTSYSAPI NTSTATUS WINAPI RtlConvertToAutoInheritSecurityObject(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,GUID*,BOOL,PGENERIC_MAPPING); +NTSYSAPI NTSTATUS WINAPI RtlCopyContext(CONTEXT*,DWORD,CONTEXT*); +NTSYSAPI NTSTATUS WINAPI RtlCopyExtendedContext(CONTEXT_EX*,ULONG,CONTEXT_EX*); NTSYSAPI void WINAPI RtlCopyLuid(PLUID,const LUID*); NTSYSAPI void WINAPI RtlCopyLuidAndAttributesArray(ULONG,const LUID_AND_ATTRIBUTES*,PLUID_AND_ATTRIBUTES); -NTSYSAPI BOOLEAN WINAPI RtlCopySid(DWORD,PSID,PSID); NTSYSAPI NTSTATUS WINAPI RtlCopySecurityDescriptor(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR); -NTSYSAPI void WINAPI RtlCopyString(STRING*,const STRING*); +NTSYSAPI BOOLEAN WINAPI RtlCopySid(DWORD,PSID,PSID); NTSYSAPI void WINAPI RtlCopyUnicodeString(UNICODE_STRING*,const UNICODE_STRING*); NTSYSAPI NTSTATUS WINAPI RtlCreateAcl(PACL,DWORD,DWORD); +NTSYSAPI NTSTATUS WINAPI RtlCreateActivationContext(HANDLE*,const void*); NTSYSAPI NTSTATUS WINAPI RtlCreateAtomTable(ULONG,RTL_ATOM_TABLE*); NTSYSAPI NTSTATUS WINAPI RtlCreateEnvironment(BOOLEAN, PWSTR*); -NTSYSAPI HANDLE WINAPI RtlCreateHeap(ULONG,PVOID,SIZE_T,SIZE_T,PVOID,PRTL_HEAP_DEFINITION); +NTSYSAPI HANDLE WINAPI RtlCreateHeap(ULONG,PVOID,SIZE_T,SIZE_T,PVOID,PRTL_HEAP_PARAMETERS); NTSYSAPI NTSTATUS WINAPI RtlCreateProcessParameters(RTL_USER_PROCESS_PARAMETERS**,const UNICODE_STRING*,const UNICODE_STRING*,const UNICODE_STRING*,const UNICODE_STRING*,PWSTR,const UNICODE_STRING*,const UNICODE_STRING*,const UNICODE_STRING*,const UNICODE_STRING*); +NTSYSAPI NTSTATUS WINAPI RtlCreateProcessParametersEx(RTL_USER_PROCESS_PARAMETERS**,const UNICODE_STRING*,const UNICODE_STRING*,const UNICODE_STRING*,const UNICODE_STRING*,PWSTR,const UNICODE_STRING*,const UNICODE_STRING*,const UNICODE_STRING*,const UNICODE_STRING*,ULONG); +NTSYSAPI PDEBUG_BUFFER WINAPI RtlCreateQueryDebugBuffer(ULONG,BOOLEAN); +NTSYSAPI NTSTATUS WINAPI RtlCreateRegistryKey(ULONG,PWSTR); NTSYSAPI NTSTATUS WINAPI RtlCreateSecurityDescriptor(PSECURITY_DESCRIPTOR,DWORD); +NTSYSAPI NTSTATUS WINAPI RtlCreateTimer(HANDLE,HANDLE*,RTL_WAITORTIMERCALLBACKFUNC, PVOID, DWORD, DWORD, ULONG); NTSYSAPI NTSTATUS WINAPI RtlCreateTimerQueue(PHANDLE); -NTSYSAPI NTSTATUS WINAPI RtlCreateTimer(PHANDLE, HANDLE, RTL_WAITORTIMERCALLBACKFUNC, PVOID, DWORD, DWORD, ULONG); NTSYSAPI BOOLEAN WINAPI RtlCreateUnicodeString(PUNICODE_STRING,LPCWSTR); NTSYSAPI BOOLEAN WINAPI RtlCreateUnicodeStringFromAsciiz(PUNICODE_STRING,LPCSTR); NTSYSAPI NTSTATUS WINAPI RtlCreateUserProcess(UNICODE_STRING*,ULONG,RTL_USER_PROCESS_PARAMETERS*,SECURITY_DESCRIPTOR*,SECURITY_DESCRIPTOR*,HANDLE,BOOLEAN,HANDLE,HANDLE,RTL_USER_PROCESS_INFORMATION*); -NTSYSAPI NTSTATUS WINAPI RtlCreateUserThread(HANDLE,const SECURITY_DESCRIPTOR*,BOOLEAN,PVOID,SIZE_T,SIZE_T,PRTL_THREAD_START_ROUTINE,void*,HANDLE*,CLIENT_ID*); +NTSYSAPI NTSTATUS WINAPI RtlCreateUserStack(SIZE_T,SIZE_T,ULONG,SIZE_T,SIZE_T,INITIAL_TEB*); +NTSYSAPI NTSTATUS WINAPI RtlCreateUserThread(HANDLE,SECURITY_DESCRIPTOR*,BOOLEAN,ULONG,SIZE_T,SIZE_T,PRTL_THREAD_START_ROUTINE,void*,HANDLE*,CLIENT_ID*); +NTSYSAPI NTSTATUS WINAPI RtlCustomCPToUnicodeN(CPTABLEINFO*,WCHAR*,DWORD,DWORD*,const char*,DWORD); +NTSYSAPI PRTL_USER_PROCESS_PARAMETERS WINAPI RtlDeNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*); NTSYSAPI void WINAPI RtlDeactivateActivationContext(DWORD,ULONG_PTR); NTSYSAPI PVOID WINAPI RtlDecodePointer(PVOID); NTSYSAPI NTSTATUS WINAPI RtlDecompressBuffer(USHORT,PUCHAR,ULONG,PUCHAR,ULONG,PULONG); +NTSYSAPI NTSTATUS WINAPI RtlDecompressFragment(USHORT,PUCHAR,ULONG,PUCHAR,ULONG,ULONG,PULONG,PVOID); +NTSYSAPI NTSTATUS WINAPI RtlDefaultNpAcl(PACL*); NTSYSAPI NTSTATUS WINAPI RtlDeleteAce(PACL,DWORD); NTSYSAPI NTSTATUS WINAPI RtlDeleteAtomFromAtomTable(RTL_ATOM_TABLE,RTL_ATOM); NTSYSAPI NTSTATUS WINAPI RtlDeleteCriticalSection(RTL_CRITICAL_SECTION *); @@ -2717,6 +4953,8 @@ NTSYSAPI BOOLEAN WINAPI RtlDllShutdownInProgress(void); NTSYSAPI BOOLEAN WINAPI RtlDoesFileExists_U(LPCWSTR); NTSYSAPI BOOLEAN WINAPI RtlDosPathNameToNtPathName_U(PCWSTR,PUNICODE_STRING,PWSTR*,CURDIR*); NTSYSAPI NTSTATUS WINAPI RtlDosPathNameToNtPathName_U_WithStatus(PCWSTR,PUNICODE_STRING,PWSTR*,CURDIR*); +NTSYSAPI BOOLEAN WINAPI RtlDosPathNameToRelativeNtPathName_U(PCWSTR,PUNICODE_STRING,PWSTR*,RTL_RELATIVE_NAME*); +NTSYSAPI NTSTATUS WINAPI RtlDosPathNameToRelativeNtPathName_U_WithStatus(PCWSTR,PUNICODE_STRING,PWSTR*,RTL_RELATIVE_NAME*); NTSYSAPI ULONG WINAPI RtlDosSearchPath_U(LPCWSTR, LPCWSTR, LPCWSTR, ULONG, LPWSTR, LPWSTR*); NTSYSAPI WCHAR WINAPI RtlDowncaseUnicodeChar(WCHAR); NTSYSAPI NTSTATUS WINAPI RtlDowncaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN); @@ -2731,10 +4969,11 @@ NTSYSAPI NTSTATUS WINAPI RtlEqualDomainName(const UNICODE_STRING*,const UNICODE NTSYSAPI BOOLEAN WINAPI RtlEqualLuid(const LUID*,const LUID*); NTSYSAPI BOOL WINAPI RtlEqualPrefixSid(PSID,PSID); NTSYSAPI BOOL WINAPI RtlEqualSid(PSID,PSID); -NTSYSAPI BOOLEAN WINAPI RtlEqualString(const STRING*,const STRING*,BOOLEAN); NTSYSAPI BOOLEAN WINAPI RtlEqualUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN); +NTSYSAPI void WINAPI RtlEraseUnicodeString(UNICODE_STRING*); NTSYSAPI void DECLSPEC_NORETURN WINAPI RtlExitUserProcess(ULONG); NTSYSAPI void DECLSPEC_NORETURN WINAPI RtlExitUserThread(ULONG); +NTSYSAPI NTSTATUS WINAPI RtlExpandEnvironmentStrings(const WCHAR*,WCHAR*,SIZE_T,WCHAR*,SIZE_T,SIZE_T*); NTSYSAPI NTSTATUS WINAPI RtlExpandEnvironmentStrings_U(PCWSTR, const UNICODE_STRING*, UNICODE_STRING*, ULONG*); NTSYSAPI NTSTATUS WINAPI RtlFindActivationContextSectionString(ULONG,const GUID*,ULONG,const UNICODE_STRING*,PVOID); NTSYSAPI NTSTATUS WINAPI RtlFindActivationContextSectionGuid(ULONG,const GUID*,ULONG,const GUID*,PVOID); @@ -2742,6 +4981,7 @@ NTSYSAPI NTSTATUS WINAPI RtlFindCharInUnicodeString(int,const UNICODE_STRING*,c NTSYSAPI ULONG WINAPI RtlFindClearBits(PCRTL_BITMAP,ULONG,ULONG); NTSYSAPI ULONG WINAPI RtlFindClearBitsAndSet(PRTL_BITMAP,ULONG,ULONG); NTSYSAPI ULONG WINAPI RtlFindClearRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN); +NTSYSAPI void * WINAPI RtlFindExportedRoutineByName(HMODULE,const char*); NTSYSAPI ULONG WINAPI RtlFindLastBackwardRunSet(PCRTL_BITMAP,ULONG,PULONG); NTSYSAPI ULONG WINAPI RtlFindLastBackwardRunClear(PCRTL_BITMAP,ULONG,PULONG); NTSYSAPI CCHAR WINAPI RtlFindLeastSignificantBit(ULONGLONG); @@ -2755,22 +4995,38 @@ NTSYSAPI ULONG WINAPI RtlFindSetBits(PCRTL_BITMAP,ULONG,ULONG); NTSYSAPI ULONG WINAPI RtlFindSetBitsAndClear(PRTL_BITMAP,ULONG,ULONG); NTSYSAPI ULONG WINAPI RtlFindSetRuns(PCRTL_BITMAP,PRTL_BITMAP_RUN,ULONG,BOOLEAN); NTSYSAPI BOOLEAN WINAPI RtlFirstFreeAce(PACL,PACE_HEADER *); +NTSYSAPI NTSTATUS WINAPI RtlFlsAlloc(PFLS_CALLBACK_FUNCTION,ULONG *); +NTSYSAPI NTSTATUS WINAPI RtlFlsFree(ULONG); +NTSYSAPI NTSTATUS WINAPI RtlFlsGetValue(ULONG,void **); +NTSYSAPI NTSTATUS WINAPI RtlFlsSetValue(ULONG,void *); NTSYSAPI NTSTATUS WINAPI RtlFormatCurrentUserKeyPath(PUNICODE_STRING); -NTSYSAPI NTSTATUS WINAPI RtlFormatMessage(LPWSTR,UCHAR,BOOLEAN,BOOLEAN,BOOLEAN,__ms_va_list *,LPWSTR,ULONG); +#ifdef __ms_va_list +NTSYSAPI NTSTATUS WINAPI RtlFormatMessage(LPCWSTR,ULONG,BOOLEAN,BOOLEAN,BOOLEAN,__ms_va_list *,LPWSTR,ULONG,ULONG*); +NTSYSAPI NTSTATUS WINAPI RtlFormatMessageEx(LPCWSTR,ULONG,BOOLEAN,BOOLEAN,BOOLEAN,__ms_va_list *,LPWSTR,ULONG,ULONG*,ULONG); +#endif +NTSYSAPI void WINAPI RtlFreeActivationContextStack(ACTIVATION_CONTEXT_STACK *); NTSYSAPI void WINAPI RtlFreeAnsiString(PANSI_STRING); NTSYSAPI BOOLEAN WINAPI RtlFreeHandle(RTL_HANDLE_TABLE *,RTL_HANDLE *); -NTSYSAPI BOOLEAN WINAPI RtlFreeHeap(HANDLE,ULONG,PVOID); NTSYSAPI void WINAPI RtlFreeOemString(POEM_STRING); NTSYSAPI DWORD WINAPI RtlFreeSid(PSID); NTSYSAPI void WINAPI RtlFreeThreadActivationContextStack(void); NTSYSAPI void WINAPI RtlFreeUnicodeString(PUNICODE_STRING); +NTSYSAPI void WINAPI RtlFreeUserStack(void*); +NTSYSAPI NTSTATUS WINAPI RtlGUIDFromString(PUNICODE_STRING,GUID*); NTSYSAPI NTSTATUS WINAPI RtlGetAce(PACL,DWORD,LPVOID *); NTSYSAPI NTSTATUS WINAPI RtlGetActiveActivationContext(HANDLE*); NTSYSAPI NTSTATUS WINAPI RtlGetCompressionWorkSpaceSize(USHORT,PULONG,PULONG); NTSYSAPI NTSTATUS WINAPI RtlGetControlSecurityDescriptor(PSECURITY_DESCRIPTOR, PSECURITY_DESCRIPTOR_CONTROL,LPDWORD); NTSYSAPI ULONG WINAPI RtlGetCurrentDirectory_U(ULONG, LPWSTR); NTSYSAPI PEB * WINAPI RtlGetCurrentPeb(void); +NTSYSAPI void WINAPI RtlGetCurrentProcessorNumberEx(PROCESSOR_NUMBER*); +NTSYSAPI HANDLE WINAPI RtlGetCurrentTransaction(void); NTSYSAPI NTSTATUS WINAPI RtlGetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN); +NTSYSAPI ULONG64 WINAPI RtlGetEnabledExtendedFeatures(ULONG64); +NTSYSAPI NTSTATUS WINAPI RtlGetExePath(PCWSTR,PWSTR*); +NTSYSAPI NTSTATUS WINAPI RtlGetExtendedContextLength(ULONG,ULONG*); +NTSYSAPI NTSTATUS WINAPI RtlGetExtendedContextLength2(ULONG,ULONG*,ULONG64); +NTSYSAPI ULONG64 WINAPI RtlGetExtendedFeaturesMask(CONTEXT_EX*); NTSYSAPI TEB_ACTIVE_FRAME * WINAPI RtlGetFrame(void); NTSYSAPI ULONG WINAPI RtlGetFullPathName_U(PCWSTR,ULONG,PWSTR,PWSTR*); NTSYSAPI NTSTATUS WINAPI RtlGetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN); @@ -2778,23 +5034,38 @@ NTSYSAPI NTSTATUS WINAPI RtlGetLastNtStatus(void); NTSYSAPI DWORD WINAPI RtlGetLastWin32Error(void); NTSYSAPI NTSTATUS WINAPI RtlGetLocaleFileMappingAddress(void**,LCID*,LARGE_INTEGER*); NTSYSAPI DWORD WINAPI RtlGetLongestNtPathLength(void); +NTSYSAPI NTSTATUS WINAPI RtlGetNativeSystemInformation(SYSTEM_INFORMATION_CLASS,void*,ULONG,ULONG*); NTSYSAPI ULONG WINAPI RtlGetNtGlobalFlags(void); NTSYSAPI BOOLEAN WINAPI RtlGetNtProductType(LPDWORD); +NTSYSAPI void WINAPI RtlGetNtVersionNumbers(LPDWORD,LPDWORD,LPDWORD); NTSYSAPI NTSTATUS WINAPI RtlGetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID *,PBOOLEAN); NTSYSAPI ULONG WINAPI RtlGetProcessHeaps(ULONG,HANDLE*); -NTSYSAPI DWORD WINAPI RtlGetThreadErrorMode(void); +NTSYSAPI NTSTATUS WINAPI RtlGetProcessPreferredUILanguages(DWORD,ULONG*,WCHAR*,ULONG*); +NTSYSAPI BOOLEAN WINAPI RtlGetProductInfo(DWORD,DWORD,DWORD,DWORD,PDWORD); NTSYSAPI NTSTATUS WINAPI RtlGetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,PBOOLEAN,PACL *,PBOOLEAN); +NTSYSAPI NTSTATUS WINAPI RtlGetSearchPath(PWSTR*); +NTSYSAPI NTSTATUS WINAPI RtlGetSystemPreferredUILanguages(DWORD,ULONG,ULONG*,WCHAR*,ULONG*); +NTSYSAPI LONGLONG WINAPI RtlGetSystemTimePrecise(void); +NTSYSAPI DWORD WINAPI RtlGetThreadErrorMode(void); +NTSYSAPI NTSTATUS WINAPI RtlGetThreadPreferredUILanguages(DWORD,ULONG*,WCHAR*,ULONG*); +NTSYSAPI BOOLEAN WINAPI RtlGetUserInfoHeap(HANDLE,ULONG,void*,void**,ULONG*); +NTSYSAPI NTSTATUS WINAPI RtlGetUserPreferredUILanguages(DWORD,ULONG,ULONG*,WCHAR*,ULONG*); NTSYSAPI NTSTATUS WINAPI RtlGetVersion(RTL_OSVERSIONINFOEXW*); -NTSYSAPI NTSTATUS WINAPI RtlGUIDFromString(PUNICODE_STRING,GUID*); +NTSYSAPI NTSTATUS WINAPI RtlHashUnicodeString(const UNICODE_STRING*,BOOLEAN,ULONG,ULONG*); NTSYSAPI PSID_IDENTIFIER_AUTHORITY WINAPI RtlIdentifierAuthoritySid(PSID); +NTSYSAPI NTSTATUS WINAPI RtlIdnToAscii(DWORD,const WCHAR*,INT,WCHAR*,INT*); +NTSYSAPI NTSTATUS WINAPI RtlIdnToNameprepUnicode(DWORD,const WCHAR*,INT,WCHAR*,INT*); +NTSYSAPI NTSTATUS WINAPI RtlIdnToUnicode(DWORD,const WCHAR*,INT,WCHAR*,INT*); NTSYSAPI PVOID WINAPI RtlImageDirectoryEntryToData(HMODULE,BOOL,WORD,ULONG *); NTSYSAPI PIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE); NTSYSAPI PIMAGE_SECTION_HEADER WINAPI RtlImageRvaToSection(const IMAGE_NT_HEADERS *,HMODULE,DWORD); NTSYSAPI PVOID WINAPI RtlImageRvaToVa(const IMAGE_NT_HEADERS *,HMODULE,DWORD,IMAGE_SECTION_HEADER **); NTSYSAPI NTSTATUS WINAPI RtlImpersonateSelf(SECURITY_IMPERSONATION_LEVEL); -NTSYSAPI void WINAPI RtlInitString(PSTRING,PCSZ); NTSYSAPI void WINAPI RtlInitAnsiString(PANSI_STRING,PCSZ); NTSYSAPI NTSTATUS WINAPI RtlInitAnsiStringEx(PANSI_STRING,PCSZ); +NTSYSAPI void WINAPI RtlInitCodePageTable(USHORT*,CPTABLEINFO*); +NTSYSAPI void WINAPI RtlInitNlsTables(USHORT*,USHORT*,USHORT*,NLSTABLEINFO*); +NTSYSAPI void WINAPI RtlInitString(PSTRING,PCSZ); NTSYSAPI void WINAPI RtlInitUnicodeString(PUNICODE_STRING,PCWSTR); NTSYSAPI NTSTATUS WINAPI RtlInitUnicodeStringEx(PUNICODE_STRING,PCWSTR); NTSYSAPI void WINAPI RtlInitializeBitMap(PRTL_BITMAP,PULONG,ULONG); @@ -2802,91 +5073,127 @@ NTSYSAPI void WINAPI RtlInitializeConditionVariable(RTL_CONDITION_VARIABLE NTSYSAPI NTSTATUS WINAPI RtlInitializeCriticalSection(RTL_CRITICAL_SECTION *); NTSYSAPI NTSTATUS WINAPI RtlInitializeCriticalSectionAndSpinCount(RTL_CRITICAL_SECTION *,ULONG); NTSYSAPI NTSTATUS WINAPI RtlInitializeCriticalSectionEx(RTL_CRITICAL_SECTION *,ULONG,ULONG); +NTSYSAPI NTSTATUS WINAPI RtlInitializeExtendedContext(void*,ULONG,CONTEXT_EX**); +NTSYSAPI NTSTATUS WINAPI RtlInitializeExtendedContext2(void*,ULONG,CONTEXT_EX**,ULONG64); NTSYSAPI void WINAPI RtlInitializeHandleTable(ULONG,ULONG,RTL_HANDLE_TABLE *); +NTSYSAPI NTSTATUS WINAPI RtlInitializeNtUserPfn(const void*,ULONG,const void*,ULONG,const void*,ULONG); NTSYSAPI void WINAPI RtlInitializeResource(LPRTL_RWLOCK); NTSYSAPI void WINAPI RtlInitializeSRWLock(RTL_SRWLOCK*); -NTSYSAPI BOOL WINAPI RtlInitializeSid(PSID,PSID_IDENTIFIER_AUTHORITY,BYTE); +NTSYSAPI NTSTATUS WINAPI RtlInitializeSid(PSID,PSID_IDENTIFIER_AUTHORITY,BYTE); NTSYSAPI NTSTATUS WINAPI RtlInt64ToUnicodeString(ULONGLONG,ULONG,UNICODE_STRING *); NTSYSAPI NTSTATUS WINAPI RtlIntegerToChar(ULONG,ULONG,ULONG,PCHAR); NTSYSAPI NTSTATUS WINAPI RtlIntegerToUnicodeString(ULONG,ULONG,UNICODE_STRING *); NTSYSAPI BOOLEAN WINAPI RtlIsActivationContextActive(HANDLE); NTSYSAPI BOOL WINAPI RtlIsCriticalSectionLocked(RTL_CRITICAL_SECTION *); NTSYSAPI BOOL WINAPI RtlIsCriticalSectionLockedByThread(RTL_CRITICAL_SECTION *); +NTSYSAPI BOOLEAN WINAPI RtlIsCurrentProcess(HANDLE); +NTSYSAPI BOOLEAN WINAPI RtlIsCurrentThread(HANDLE); NTSYSAPI ULONG WINAPI RtlIsDosDeviceName_U(PCWSTR); NTSYSAPI BOOLEAN WINAPI RtlIsNameLegalDOS8Dot3(const UNICODE_STRING*,POEM_STRING,PBOOLEAN); +NTSYSAPI NTSTATUS WINAPI RtlIsNormalizedString(ULONG,const WCHAR*,INT,BOOLEAN*); +NTSYSAPI BOOLEAN WINAPI RtlIsProcessorFeaturePresent(UINT); NTSYSAPI BOOLEAN WINAPI RtlIsTextUnicode(LPCVOID,INT,INT *); NTSYSAPI BOOLEAN WINAPI RtlIsValidHandle(const RTL_HANDLE_TABLE *, const RTL_HANDLE *); NTSYSAPI BOOLEAN WINAPI RtlIsValidIndexHandle(const RTL_HANDLE_TABLE *, ULONG Index, RTL_HANDLE **); +NTSYSAPI BOOLEAN WINAPI RtlIsValidLocaleName(const WCHAR*,ULONG); +NTSYSAPI NTSTATUS WINAPI RtlLcidToLocaleName(LCID,UNICODE_STRING*,ULONG,BOOLEAN); NTSYSAPI NTSTATUS WINAPI RtlLeaveCriticalSection(RTL_CRITICAL_SECTION *); NTSYSAPI DWORD WINAPI RtlLengthRequiredSid(DWORD); NTSYSAPI ULONG WINAPI RtlLengthSecurityDescriptor(PSECURITY_DESCRIPTOR); NTSYSAPI DWORD WINAPI RtlLengthSid(PSID); NTSYSAPI NTSTATUS WINAPI RtlLocalTimeToSystemTime(const LARGE_INTEGER*,PLARGE_INTEGER); +NTSYSAPI NTSTATUS WINAPI RtlLocaleNameToLcid(const WCHAR*,LCID*,ULONG); +NTSYSAPI void * WINAPI RtlLocateExtendedFeature(CONTEXT_EX*,ULONG,ULONG*); +NTSYSAPI void * WINAPI RtlLocateExtendedFeature2(CONTEXT_EX*,ULONG,XSTATE_CONFIGURATION*,ULONG*); +NTSYSAPI void * WINAPI RtlLocateLegacyContext(CONTEXT_EX*,ULONG*); NTSYSAPI BOOLEAN WINAPI RtlLockHeap(HANDLE); NTSYSAPI NTSTATUS WINAPI RtlLookupAtomInAtomTable(RTL_ATOM_TABLE,const WCHAR*,RTL_ATOM*); NTSYSAPI NTSTATUS WINAPI RtlMakeSelfRelativeSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,LPDWORD); -NTSYSAPI void WINAPI RtlMapGenericMask(PACCESS_MASK,const GENERIC_MAPPING*); NTSYSAPI NTSTATUS WINAPI RtlMultiByteToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD); -NTSYSAPI NTSTATUS WINAPI RtlMultiByteToUnicodeSize(DWORD*,LPCSTR,UINT); +NTSYSAPI NTSTATUS WINAPI RtlMultiByteToUnicodeSize(DWORD*,LPCSTR,ULONG); NTSYSAPI NTSTATUS WINAPI RtlNewSecurityObject(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,BOOLEAN,HANDLE,PGENERIC_MAPPING); +NTSYSAPI NTSTATUS WINAPI RtlNewSecurityObjectEx(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*,GUID*,BOOLEAN,ULONG,HANDLE,PGENERIC_MAPPING); +NTSYSAPI NTSTATUS WINAPI RtlNewSecurityObjectWithMultipleInheritance(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR*, + GUID **,ULONG,BOOLEAN,ULONG,HANDLE,PGENERIC_MAPPING); NTSYSAPI PRTL_USER_PROCESS_PARAMETERS WINAPI RtlNormalizeProcessParams(RTL_USER_PROCESS_PARAMETERS*); +NTSYSAPI NTSTATUS WINAPI RtlNormalizeString(ULONG,const WCHAR*,INT,WCHAR*,INT*); NTSYSAPI ULONG WINAPI RtlNtStatusToDosError(NTSTATUS); NTSYSAPI ULONG WINAPI RtlNtStatusToDosErrorNoTeb(NTSTATUS); NTSYSAPI ULONG WINAPI RtlNumberOfSetBits(PCRTL_BITMAP); NTSYSAPI ULONG WINAPI RtlNumberOfClearBits(PCRTL_BITMAP); -NTSYSAPI UINT WINAPI RtlOemStringToUnicodeSize(const STRING*); +NTSYSAPI ULONG WINAPI RtlOemStringToUnicodeSize(const STRING*); NTSYSAPI NTSTATUS WINAPI RtlOemStringToUnicodeString(UNICODE_STRING*,const STRING*,BOOLEAN); NTSYSAPI NTSTATUS WINAPI RtlOemToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD); NTSYSAPI NTSTATUS WINAPI RtlOpenCurrentUser(ACCESS_MASK,PHANDLE); -NTSYSAPI PVOID WINAPI RtlPcToFileHeader(PVOID,PVOID*); NTSYSAPI NTSTATUS WINAPI RtlPinAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM); NTSYSAPI void WINAPI RtlPopFrame(TEB_ACTIVE_FRAME*); NTSYSAPI BOOLEAN WINAPI RtlPrefixString(const STRING*,const STRING*,BOOLEAN); -NTSYSAPI BOOLEAN WINAPI RtlPrefixUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN); +NTSYSAPI void WINAPI RtlProcessFlsData(void*,ULONG); NTSYSAPI void WINAPI RtlPushFrame(TEB_ACTIVE_FRAME*); +NTSYSAPI NTSTATUS WINAPI RtlQueryActivationContextApplicationSettings(DWORD,HANDLE,const WCHAR*,const WCHAR*,WCHAR*,SIZE_T,SIZE_T*); NTSYSAPI NTSTATUS WINAPI RtlQueryAtomInAtomTable(RTL_ATOM_TABLE,RTL_ATOM,ULONG*,ULONG*,WCHAR*,ULONG*); NTSYSAPI NTSTATUS WINAPI RtlQueryDynamicTimeZoneInformation(RTL_DYNAMIC_TIME_ZONE_INFORMATION*); +NTSYSAPI NTSTATUS WINAPI RtlQueryEnvironmentVariable(WCHAR*,const WCHAR*,SIZE_T,WCHAR*,SIZE_T,SIZE_T*); NTSYSAPI NTSTATUS WINAPI RtlQueryEnvironmentVariable_U(PWSTR,PUNICODE_STRING,PUNICODE_STRING); NTSYSAPI NTSTATUS WINAPI RtlQueryHeapInformation(HANDLE,HEAP_INFORMATION_CLASS,PVOID,SIZE_T,PSIZE_T); NTSYSAPI NTSTATUS WINAPI RtlQueryInformationAcl(PACL,LPVOID,DWORD,ACL_INFORMATION_CLASS); NTSYSAPI NTSTATUS WINAPI RtlQueryInformationActivationContext(ULONG,HANDLE,PVOID,ULONG,PVOID,SIZE_T,SIZE_T*); +NTSYSAPI NTSTATUS WINAPI RtlQueryPackageIdentity(HANDLE,WCHAR*,SIZE_T*,WCHAR*,SIZE_T*,BOOLEAN*); +NTSYSAPI BOOL WINAPI RtlQueryPerformanceCounter(LARGE_INTEGER*); +NTSYSAPI BOOL WINAPI RtlQueryPerformanceFrequency(LARGE_INTEGER*); NTSYSAPI NTSTATUS WINAPI RtlQueryProcessDebugInformation(ULONG,ULONG,PDEBUG_BUFFER); NTSYSAPI NTSTATUS WINAPI RtlQueryRegistryValues(ULONG, PCWSTR, PRTL_QUERY_REGISTRY_TABLE, PVOID, PVOID); NTSYSAPI NTSTATUS WINAPI RtlQueryTimeZoneInformation(RTL_TIME_ZONE_INFORMATION*); -NTSYSAPI NTSTATUS WINAPI RtlQueryUnbiasedInterruptTime(ULONGLONG*); +NTSYSAPI BOOL WINAPI RtlQueryUnbiasedInterruptTime(ULONGLONG*); NTSYSAPI NTSTATUS WINAPI RtlQueueWorkItem(PRTL_WORK_ITEM_ROUTINE,PVOID,ULONG); -NTSYSAPI void WINAPI RtlRaiseException(PEXCEPTION_RECORD); -NTSYSAPI void WINAPI RtlRaiseStatus(NTSTATUS); +NTSYSAPI void DECLSPEC_NORETURN WINAPI RtlRaiseStatus(NTSTATUS); NTSYSAPI ULONG WINAPI RtlRandom(PULONG); -NTSYSAPI PVOID WINAPI RtlReAllocateHeap(HANDLE,ULONG,PVOID,SIZE_T); +NTSYSAPI ULONG WINAPI RtlRandomEx(PULONG); +NTSYSAPI void WINAPI RtlRbInsertNodeEx(RTL_RB_TREE*,RTL_BALANCED_NODE*,BOOLEAN,RTL_BALANCED_NODE*); +NTSYSAPI void WINAPI RtlRbRemoveNode(RTL_RB_TREE*,RTL_BALANCED_NODE*); +NTSYSAPI PVOID WINAPI RtlReAllocateHeap(HANDLE,ULONG,PVOID,SIZE_T) __WINE_ALLOC_SIZE(4) __WINE_DEALLOC(RtlFreeHeap,3); NTSYSAPI NTSTATUS WINAPI RtlRegisterWait(PHANDLE,HANDLE,RTL_WAITORTIMERCALLBACKFUNC,PVOID,ULONG,ULONG); NTSYSAPI void WINAPI RtlReleaseActivationContext(HANDLE); +NTSYSAPI void WINAPI RtlReleasePath(PWSTR); NTSYSAPI void WINAPI RtlReleasePebLock(void); +NTSYSAPI void WINAPI RtlReleaseRelativeName(RTL_RELATIVE_NAME*); NTSYSAPI void WINAPI RtlReleaseResource(LPRTL_RWLOCK); NTSYSAPI void WINAPI RtlReleaseSRWLockExclusive(RTL_SRWLOCK*); NTSYSAPI void WINAPI RtlReleaseSRWLockShared(RTL_SRWLOCK*); +NTSYSAPI ULONG WINAPI RtlRemoveVectoredContinueHandler(PVOID); NTSYSAPI ULONG WINAPI RtlRemoveVectoredExceptionHandler(PVOID); +NTSYSAPI NTSTATUS WINAPI RtlRetrieveNtUserPfn(const void**,const void**,const void**); +NTSYSAPI NTSTATUS WINAPI RtlResetNtUserPfn(void); +NTSYSAPI void WINAPI RtlResetRtlTranslations(const NLSTABLEINFO*); NTSYSAPI void WINAPI RtlRestoreLastWin32Error(DWORD); NTSYSAPI void WINAPI RtlSecondsSince1970ToTime(DWORD,LARGE_INTEGER *); NTSYSAPI void WINAPI RtlSecondsSince1980ToTime(DWORD,LARGE_INTEGER *); NTSYSAPI NTSTATUS WINAPI RtlSelfRelativeToAbsoluteSD(PSECURITY_DESCRIPTOR,PSECURITY_DESCRIPTOR,PDWORD,PACL,PDWORD,PACL,PDWORD,PSID,PDWORD,PSID,PDWORD); NTSYSAPI void WINAPI RtlSetAllBits(PRTL_BITMAP); NTSYSAPI void WINAPI RtlSetBits(PRTL_BITMAP,ULONG,ULONG); -NTSYSAPI ULONG WINAPI RtlSetCriticalSectionSpinCount(RTL_CRITICAL_SECTION*,ULONG); NTSYSAPI NTSTATUS WINAPI RtlSetControlSecurityDescriptor(PSECURITY_DESCRIPTOR,SECURITY_DESCRIPTOR_CONTROL,SECURITY_DESCRIPTOR_CONTROL); +NTSYSAPI ULONG WINAPI RtlSetCriticalSectionSpinCount(RTL_CRITICAL_SECTION*,ULONG); NTSYSAPI NTSTATUS WINAPI RtlSetCurrentDirectory_U(const UNICODE_STRING*); NTSYSAPI void WINAPI RtlSetCurrentEnvironment(PWSTR, PWSTR*); +NTSYSAPI BOOL WINAPI RtlSetCurrentTransaction(HANDLE); NTSYSAPI NTSTATUS WINAPI RtlSetDaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN); NTSYSAPI NTSTATUS WINAPI RtlSetEnvironmentVariable(PWSTR*,PUNICODE_STRING,PUNICODE_STRING); -NTSYSAPI NTSTATUS WINAPI RtlSetHeapInformation(HANDLE,HEAP_INFORMATION_CLASS,PVOID,SIZE_T); -NTSYSAPI NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN); +NTSYSAPI void WINAPI RtlSetExtendedFeaturesMask(CONTEXT_EX*,ULONG64); NTSYSAPI NTSTATUS WINAPI RtlSetGroupSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN); +NTSYSAPI NTSTATUS WINAPI RtlSetHeapInformation(HANDLE,HEAP_INFORMATION_CLASS,PVOID,SIZE_T); NTSYSAPI NTSTATUS WINAPI RtlSetIoCompletionCallback(HANDLE,PRTL_OVERLAPPED_COMPLETION_ROUTINE,ULONG); NTSYSAPI void WINAPI RtlSetLastWin32Error(DWORD); NTSYSAPI void WINAPI RtlSetLastWin32ErrorAndNtStatusFromNtStatus(NTSTATUS); +NTSYSAPI NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor(PSECURITY_DESCRIPTOR,PSID,BOOLEAN); +NTSYSAPI NTSTATUS WINAPI RtlSetProcessPreferredUILanguages(DWORD,PCZZWSTR,ULONG*); NTSYSAPI NTSTATUS WINAPI RtlSetSaclSecurityDescriptor(PSECURITY_DESCRIPTOR,BOOLEAN,PACL,BOOLEAN); +NTSYSAPI NTSTATUS WINAPI RtlSetSearchPathMode(ULONG); NTSYSAPI NTSTATUS WINAPI RtlSetThreadErrorMode(DWORD,LPDWORD); +NTSYSAPI NTSTATUS WINAPI RtlSetThreadPreferredUILanguages(DWORD,PCZZWSTR,ULONG*); NTSYSAPI NTSTATUS WINAPI RtlSetTimeZoneInformation(const RTL_TIME_ZONE_INFORMATION*); +NTSYSAPI void WINAPI RtlSetUnhandledExceptionFilter(PRTL_EXCEPTION_FILTER); +NTSYSAPI BOOLEAN WINAPI RtlSetUserFlagsHeap(HANDLE,ULONG,void*,ULONG,ULONG); +NTSYSAPI BOOLEAN WINAPI RtlSetUserValueHeap(HANDLE,ULONG,void*,void*); NTSYSAPI SIZE_T WINAPI RtlSizeHeap(HANDLE,ULONG,const void*); NTSYSAPI NTSTATUS WINAPI RtlSleepConditionVariableCS(RTL_CONDITION_VARIABLE*,RTL_CRITICAL_SECTION*,const LARGE_INTEGER*); NTSYSAPI NTSTATUS WINAPI RtlSleepConditionVariableSRW(RTL_CONDITION_VARIABLE*,RTL_SRWLOCK*,const LARGE_INTEGER*,ULONG); @@ -2894,70 +5201,124 @@ NTSYSAPI NTSTATUS WINAPI RtlStringFromGUID(REFGUID,PUNICODE_STRING); NTSYSAPI LPDWORD WINAPI RtlSubAuthoritySid(PSID,DWORD); NTSYSAPI LPBYTE WINAPI RtlSubAuthorityCountSid(PSID); NTSYSAPI NTSTATUS WINAPI RtlSystemTimeToLocalTime(const LARGE_INTEGER*,PLARGE_INTEGER); -NTSYSAPI void WINAPI RtlTimeToTimeFields(const LARGE_INTEGER*,PTIME_FIELDS); NTSYSAPI BOOLEAN WINAPI RtlTimeFieldsToTime(PTIME_FIELDS,PLARGE_INTEGER); NTSYSAPI void WINAPI RtlTimeToElapsedTimeFields(const LARGE_INTEGER *,PTIME_FIELDS); NTSYSAPI BOOLEAN WINAPI RtlTimeToSecondsSince1970(const LARGE_INTEGER *,LPDWORD); NTSYSAPI BOOLEAN WINAPI RtlTimeToSecondsSince1980(const LARGE_INTEGER *,LPDWORD); +NTSYSAPI void WINAPI RtlTimeToTimeFields(const LARGE_INTEGER*,PTIME_FIELDS); NTSYSAPI BOOLEAN WINAPI RtlTryAcquireSRWLockExclusive(RTL_SRWLOCK *); NTSYSAPI BOOLEAN WINAPI RtlTryAcquireSRWLockShared(RTL_SRWLOCK *); NTSYSAPI BOOL WINAPI RtlTryEnterCriticalSection(RTL_CRITICAL_SECTION *); -#ifdef __REACTOS__ -ULONGLONG __fastcall RtlUlonglongByteSwap(ULONGLONG); -#define RtlUlonglongByteSwap(_x) _byteswap_uint64((_x)) -#else -NTSYSAPI ULONGLONG __cdecl RtlUlonglongByteSwap(ULONGLONG); -#endif /* __REACTOS__ */ +NTSYSAPI NTSTATUS WINAPI RtlUTF8ToUnicodeN(WCHAR*,DWORD,DWORD*,const char*,DWORD); NTSYSAPI DWORD WINAPI RtlUnicodeStringToAnsiSize(const UNICODE_STRING*); NTSYSAPI NTSTATUS WINAPI RtlUnicodeStringToAnsiString(PANSI_STRING,PCUNICODE_STRING,BOOLEAN); NTSYSAPI NTSTATUS WINAPI RtlUnicodeStringToInteger(const UNICODE_STRING *,ULONG,ULONG *); NTSYSAPI DWORD WINAPI RtlUnicodeStringToOemSize(const UNICODE_STRING*); NTSYSAPI NTSTATUS WINAPI RtlUnicodeStringToOemString(POEM_STRING,PCUNICODE_STRING,BOOLEAN); +NTSYSAPI NTSTATUS WINAPI RtlUnicodeToCustomCPN(CPTABLEINFO*,char*,DWORD,DWORD*,const WCHAR*,DWORD); NTSYSAPI NTSTATUS WINAPI RtlUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD); NTSYSAPI NTSTATUS WINAPI RtlUnicodeToMultiByteSize(PULONG,PCWSTR,ULONG); NTSYSAPI NTSTATUS WINAPI RtlUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD); +NTSYSAPI NTSTATUS WINAPI RtlUnicodeToUTF8N(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD); NTSYSAPI ULONG WINAPI RtlUniform(PULONG); NTSYSAPI BOOLEAN WINAPI RtlUnlockHeap(HANDLE); -NTSYSAPI void WINAPI RtlUnwind(PVOID,PVOID,PEXCEPTION_RECORD,PVOID); -#ifdef __x86_64__ -NTSYSAPI void WINAPI RtlUnwindEx(PVOID,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT,PUNWIND_HISTORY_TABLE); -#elif defined(__ia64__) -NTSYSAPI void WINAPI RtlUnwind2(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT); -NTSYSAPI void WINAPI RtlUnwindEx(FRAME_POINTERS,PVOID,PEXCEPTION_RECORD,PVOID,PCONTEXT,PUNWIND_HISTORY_TABLE); -#endif NTSYSAPI WCHAR WINAPI RtlUpcaseUnicodeChar(WCHAR); -NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING *,BOOLEAN); NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToAnsiString(STRING*,const UNICODE_STRING*,BOOLEAN); NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToCountedOemString(STRING*,const UNICODE_STRING*,BOOLEAN); NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeStringToOemString(STRING*,const UNICODE_STRING*,BOOLEAN); +NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeToCustomCPN(CPTABLEINFO*,char*,DWORD,DWORD*,const WCHAR*,DWORD); NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD); NTSYSAPI NTSTATUS WINAPI RtlUpcaseUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD); NTSYSAPI NTSTATUS WINAPI RtlUpdateTimer(HANDLE, HANDLE, DWORD, DWORD); -NTSYSAPI CHAR WINAPI RtlUpperChar(CHAR); -NTSYSAPI void WINAPI RtlUpperString(STRING *,const STRING *); -NTSYSAPI NTSTATUS WINAPI RtlValidSecurityDescriptor(PSECURITY_DESCRIPTOR); -NTSYSAPI BOOLEAN WINAPI RtlValidRelativeSecurityDescriptor(PSECURITY_DESCRIPTOR,ULONG,SECURITY_INFORMATION); +NTSYSAPI void WINAPI RtlUserThreadStart(PRTL_THREAD_START_ROUTINE,void*); NTSYSAPI BOOLEAN WINAPI RtlValidAcl(PACL); +NTSYSAPI BOOLEAN WINAPI RtlValidRelativeSecurityDescriptor(PSECURITY_DESCRIPTOR,ULONG,SECURITY_INFORMATION); +NTSYSAPI BOOLEAN WINAPI RtlValidSecurityDescriptor(PSECURITY_DESCRIPTOR); NTSYSAPI BOOLEAN WINAPI RtlValidSid(PSID); NTSYSAPI BOOLEAN WINAPI RtlValidateHeap(HANDLE,ULONG,LPCVOID); NTSYSAPI NTSTATUS WINAPI RtlVerifyVersionInfo(const RTL_OSVERSIONINFOEXW*,DWORD,DWORDLONG); +NTSYSAPI NTSTATUS WINAPI RtlWaitOnAddress(const void *,const void *,SIZE_T,const LARGE_INTEGER *); +NTSYSAPI void WINAPI RtlWakeAddressAll(const void *); +NTSYSAPI void WINAPI RtlWakeAddressSingle(const void *); NTSYSAPI void WINAPI RtlWakeAllConditionVariable(RTL_CONDITION_VARIABLE *); NTSYSAPI void WINAPI RtlWakeConditionVariable(RTL_CONDITION_VARIABLE *); NTSYSAPI NTSTATUS WINAPI RtlWalkHeap(HANDLE,PVOID); NTSYSAPI NTSTATUS WINAPI RtlWow64EnableFsRedirection(BOOLEAN); NTSYSAPI NTSTATUS WINAPI RtlWow64EnableFsRedirectionEx(ULONG,ULONG*); +NTSYSAPI USHORT WINAPI RtlWow64GetCurrentMachine(void); +NTSYSAPI NTSTATUS WINAPI RtlWow64GetProcessMachines(HANDLE,USHORT*,USHORT*); +NTSYSAPI NTSTATUS WINAPI RtlWow64GetSharedInfoProcess(HANDLE,BOOLEAN*,WOW64INFO*); +NTSYSAPI NTSTATUS WINAPI RtlWow64IsWowGuestMachineSupported(USHORT,BOOLEAN*); NTSYSAPI NTSTATUS WINAPI RtlWriteRegistryValue(ULONG,PCWSTR,PCWSTR,ULONG,PVOID,ULONG); NTSYSAPI NTSTATUS WINAPI RtlZombifyActivationContext(HANDLE); NTSYSAPI NTSTATUS WINAPI RtlpNtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,const UNICODE_STRING*,ULONG,PULONG); NTSYSAPI NTSTATUS WINAPI RtlpNtEnumerateSubKey(HANDLE,UNICODE_STRING *, ULONG); +NTSYSAPI NTSTATUS WINAPI RtlpNtMakeTemporaryKey(HANDLE); +NTSYSAPI NTSTATUS WINAPI RtlpNtOpenKey(PHANDLE,ACCESS_MASK,OBJECT_ATTRIBUTES*); +NTSYSAPI NTSTATUS WINAPI RtlpNtSetValueKey(HANDLE,ULONG,const void*,ULONG); NTSYSAPI NTSTATUS WINAPI RtlpWaitForCriticalSection(RTL_CRITICAL_SECTION *); NTSYSAPI NTSTATUS WINAPI RtlpUnWaitCriticalSection(RTL_CRITICAL_SECTION *); +NTSYSAPI NTSTATUS WINAPI TpAllocCleanupGroup(TP_CLEANUP_GROUP **); +NTSYSAPI NTSTATUS WINAPI TpAllocIoCompletion(TP_IO **,HANDLE,PTP_IO_CALLBACK,void *,TP_CALLBACK_ENVIRON *); +NTSYSAPI NTSTATUS WINAPI TpAllocPool(TP_POOL **,PVOID); +NTSYSAPI NTSTATUS WINAPI TpAllocTimer(TP_TIMER **,PTP_TIMER_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *); +NTSYSAPI NTSTATUS WINAPI TpAllocWait(TP_WAIT **,PTP_WAIT_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *); +NTSYSAPI NTSTATUS WINAPI TpAllocWork(TP_WORK **,PTP_WORK_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *); +NTSYSAPI void WINAPI TpCallbackLeaveCriticalSectionOnCompletion(TP_CALLBACK_INSTANCE *,RTL_CRITICAL_SECTION *); +NTSYSAPI NTSTATUS WINAPI TpCallbackMayRunLong(TP_CALLBACK_INSTANCE *); +NTSYSAPI void WINAPI TpCallbackReleaseMutexOnCompletion(TP_CALLBACK_INSTANCE *,HANDLE); +NTSYSAPI void WINAPI TpCallbackReleaseSemaphoreOnCompletion(TP_CALLBACK_INSTANCE *,HANDLE,DWORD); +NTSYSAPI void WINAPI TpCallbackSetEventOnCompletion(TP_CALLBACK_INSTANCE *,HANDLE); +NTSYSAPI void WINAPI TpCallbackUnloadDllOnCompletion(TP_CALLBACK_INSTANCE *,HMODULE); +NTSYSAPI void WINAPI TpCancelAsyncIoOperation(TP_IO *); +NTSYSAPI void WINAPI TpDisassociateCallback(TP_CALLBACK_INSTANCE *); +NTSYSAPI BOOL WINAPI TpIsTimerSet(TP_TIMER *); +NTSYSAPI void WINAPI TpPostWork(TP_WORK *); +NTSYSAPI NTSTATUS WINAPI TpQueryPoolStackInformation(TP_POOL *, TP_POOL_STACK_INFORMATION *stack_info); +NTSYSAPI void WINAPI TpReleaseCleanupGroup(TP_CLEANUP_GROUP *); +NTSYSAPI void WINAPI TpReleaseCleanupGroupMembers(TP_CLEANUP_GROUP *,BOOL,PVOID); +NTSYSAPI void WINAPI TpReleaseIoCompletion(TP_IO *); +NTSYSAPI void WINAPI TpReleasePool(TP_POOL *); +NTSYSAPI void WINAPI TpReleaseTimer(TP_TIMER *); +NTSYSAPI void WINAPI TpReleaseWait(TP_WAIT *); +NTSYSAPI void WINAPI TpReleaseWork(TP_WORK *); +NTSYSAPI void WINAPI TpSetPoolMaxThreads(TP_POOL *,DWORD); +NTSYSAPI BOOL WINAPI TpSetPoolMinThreads(TP_POOL *,DWORD); +NTSYSAPI NTSTATUS WINAPI TpSetPoolStackInformation(TP_POOL *, TP_POOL_STACK_INFORMATION *stack_info); +NTSYSAPI void WINAPI TpSetTimer(TP_TIMER *, LARGE_INTEGER *,LONG,LONG); +NTSYSAPI void WINAPI TpSetWait(TP_WAIT *,HANDLE,LARGE_INTEGER *); +NTSYSAPI NTSTATUS WINAPI TpSimpleTryPost(PTP_SIMPLE_CALLBACK,PVOID,TP_CALLBACK_ENVIRON *); +NTSYSAPI void WINAPI TpStartAsyncIoOperation(TP_IO *); +NTSYSAPI void WINAPI TpWaitForIoCompletion(TP_IO *,BOOL); +NTSYSAPI void WINAPI TpWaitForTimer(TP_TIMER *,BOOL); +NTSYSAPI void WINAPI TpWaitForWait(TP_WAIT *,BOOL); +NTSYSAPI void WINAPI TpWaitForWork(TP_WORK *,BOOL); +#ifdef __ms_va_list NTSYSAPI NTSTATUS WINAPI vDbgPrintEx(ULONG,ULONG,LPCSTR,__ms_va_list); NTSYSAPI NTSTATUS WINAPI vDbgPrintExWithPrefix(LPCSTR,ULONG,ULONG,LPCSTR,__ms_va_list); +#endif -/* 32-bit only functions */ +/* 32-bit or 64-bit only functions */ -#ifndef _WIN64 +#ifdef _WIN64 +NTSYSAPI void WINAPI RtlOpenCrossProcessEmulatorWorkConnection(HANDLE,HANDLE*,void**); +NTSYSAPI NTSTATUS WINAPI RtlWow64GetCpuAreaInfo(WOW64_CPURESERVED*,ULONG,WOW64_CPU_AREA_INFO*); +NTSYSAPI NTSTATUS WINAPI RtlWow64GetCurrentCpuArea(USHORT*,void**,void**); +NTSYSAPI NTSTATUS WINAPI RtlWow64GetThreadContext(HANDLE,WOW64_CONTEXT*); +NTSYSAPI NTSTATUS WINAPI RtlWow64GetThreadSelectorEntry(HANDLE,THREAD_DESCRIPTOR_INFORMATION*,ULONG,ULONG*); +NTSYSAPI CROSS_PROCESS_WORK_ENTRY * WINAPI RtlWow64PopAllCrossProcessWorkFromWorkList(CROSS_PROCESS_WORK_HDR*,BOOLEAN*); +NTSYSAPI CROSS_PROCESS_WORK_ENTRY * WINAPI RtlWow64PopCrossProcessWorkFromFreeList(CROSS_PROCESS_WORK_HDR*); +NTSYSAPI BOOLEAN WINAPI RtlWow64PushCrossProcessWorkOntoFreeList(CROSS_PROCESS_WORK_HDR*,CROSS_PROCESS_WORK_ENTRY*); +NTSYSAPI BOOLEAN WINAPI RtlWow64PushCrossProcessWorkOntoWorkList(CROSS_PROCESS_WORK_HDR*,CROSS_PROCESS_WORK_ENTRY*,void**); +NTSYSAPI BOOLEAN WINAPI RtlWow64RequestCrossProcessHeavyFlush(CROSS_PROCESS_WORK_HDR*); +NTSYSAPI NTSTATUS WINAPI RtlWow64SetThreadContext(HANDLE,const WOW64_CONTEXT*); +#else +NTSYSAPI NTSTATUS WINAPI NtWow64AllocateVirtualMemory64(HANDLE,ULONG64*,ULONG64,ULONG64*,ULONG,ULONG); +NTSYSAPI NTSTATUS WINAPI NtWow64GetNativeSystemInformation(SYSTEM_INFORMATION_CLASS,void*,ULONG,ULONG*); +NTSYSAPI NTSTATUS WINAPI NtWow64IsProcessorFeaturePresent(UINT); +NTSYSAPI NTSTATUS WINAPI NtWow64QueryInformationProcess64(HANDLE,PROCESSINFOCLASS,void*,ULONG,ULONG*); +NTSYSAPI NTSTATUS WINAPI NtWow64ReadVirtualMemory64(HANDLE,ULONG64,void*,ULONG64,ULONG64*); +NTSYSAPI NTSTATUS WINAPI NtWow64WriteVirtualMemory64(HANDLE,ULONG64,const void*,ULONG64,ULONG64*); NTSYSAPI LONGLONG WINAPI RtlConvertLongToLargeInteger(LONG); NTSYSAPI ULONGLONG WINAPI RtlConvertUlongToLargeInteger(ULONG); NTSYSAPI LONGLONG WINAPI RtlEnlargedIntegerMultiply(INT,INT); @@ -2966,9 +5327,9 @@ NTSYSAPI UINT WINAPI RtlEnlargedUnsignedDivide(ULONGLONG,UINT,UINT *); NTSYSAPI LONGLONG WINAPI RtlExtendedMagicDivide(LONGLONG,LONGLONG,INT); NTSYSAPI LONGLONG WINAPI RtlExtendedIntegerMultiply(LONGLONG,INT); NTSYSAPI LONGLONG WINAPI RtlExtendedLargeIntegerDivide(LONGLONG,INT,INT *); +NTSYSAPI LONGLONG WINAPI RtlInterlockedCompareExchange64(LONGLONG*,LONGLONG,LONGLONG); NTSYSAPI LONGLONG WINAPI RtlLargeIntegerAdd(LONGLONG,LONGLONG); NTSYSAPI LONGLONG WINAPI RtlLargeIntegerArithmeticShift(LONGLONG,INT); -NTSYSAPI ULONGLONG WINAPI RtlLargeIntegerDivide( ULONGLONG,ULONGLONG,ULONGLONG *); NTSYSAPI LONGLONG WINAPI RtlLargeIntegerNegate(LONGLONG); NTSYSAPI LONGLONG WINAPI RtlLargeIntegerShiftLeft(LONGLONG,INT); NTSYSAPI LONGLONG WINAPI RtlLargeIntegerShiftRight(LONGLONG,INT); @@ -2978,12 +5339,9 @@ NTSYSAPI NTSTATUS WINAPI RtlLargeIntegerToChar(const ULONGLONG *,ULONG,ULONG,PC /* Wine internal functions */ -NTSYSAPI NTSTATUS CDECL wine_nt_to_unix_file_name( const UNICODE_STRING *nameW, ANSI_STRING *unix_name_ret, - UINT disposition, BOOLEAN check_case ); -NTSYSAPI NTSTATUS CDECL wine_unix_to_nt_file_name( const ANSI_STRING *name, UNICODE_STRING *nt ); - -NTSYSAPI SIZE_T CDECL wine_uninterrupted_read_memory( const void *addr, void *buffer, SIZE_T size ); -NTSYSAPI SIZE_T CDECL wine_uninterrupted_write_memory( void *addr, const void *buffer, SIZE_T size ); +NTSYSAPI NTSTATUS WINAPI wine_nt_to_unix_file_name( const OBJECT_ATTRIBUTES *attr, char *nameA, ULONG *size, + UINT disposition ); +NTSYSAPI NTSTATUS WINAPI wine_unix_to_nt_file_name( const char *name, WCHAR *buffer, ULONG *size ); /*********************************************************************** @@ -3000,21 +5358,22 @@ NTSYSAPI SIZE_T CDECL wine_uninterrupted_write_memory( void *addr, const void *b (p)->SecurityQualityOfService = NULL; \ } while (0) -#define NtCurrentProcess() ((HANDLE)-1) +#define NtCurrentProcess() ((HANDLE)~(ULONG_PTR)0) +#define NtCurrentThread() ((HANDLE)~(ULONG_PTR)1) -#ifndef RtlFillMemory // REACTOS +#if !defined(__REACTOS__) || !defined(RtlFillMemory) #define RtlFillMemory(Destination,Length,Fill) memset((Destination),(Fill),(Length)) -#endif // REACTOS -#ifndef RtlMoveMemory // REACTOS +#endif // !defined(__REACTOS__) || !defined(RtlFillMemory) +#if !defined(__REACTOS__) || !defined(RtlMoveMemory) #define RtlMoveMemory(Destination,Source,Length) memmove((Destination),(Source),(Length)) -#endif // REACTOS +#endif // !defined(__REACTOS__) || !defined(RtlMoveMemory) #define RtlStoreUlong(p,v) do { ULONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0) #define RtlStoreUlonglong(p,v) do { ULONGLONG _v = (v); memcpy((p), &_v, sizeof(_v)); } while (0) #define RtlRetrieveUlong(p,s) memcpy((p), (s), sizeof(ULONG)) #define RtlRetrieveUlonglong(p,s) memcpy((p), (s), sizeof(ULONGLONG)) -#ifndef RtlZeroMemory // REACTOS +#if !defined(__REACTOS__) || !defined(RtlZeroMemory) #define RtlZeroMemory(Destination,Length) memset((Destination),0,(Length)) -#endif // REACTOS +#endif // !defined(__REACTOS__) || !defined(RtlZeroMemory) static inline BOOLEAN RtlCheckBit(PCRTL_BITMAP lpBits, ULONG ulBit) { @@ -3024,20 +5383,20 @@ static inline BOOLEAN RtlCheckBit(PCRTL_BITMAP lpBits, ULONG ulBit) return FALSE; } -/* These are implemented as __fastcall, so we can't let Winelib apps link with them */ +/* These are implemented as __fastcall, so we can't let Winelib apps link with them. + * Moreover, they're always inlined and not exported on 64bit systems. + */ static inline USHORT RtlUshortByteSwap(USHORT s) { return (s >> 8) | (s << 8); } static inline ULONG RtlUlongByteSwap(ULONG i) { -#if defined(__i386__) && defined(__GNUC__) - ULONG ret; - __asm__("bswap %0" : "=r" (ret) : "0" (i) ); - return ret; -#else return ((ULONG)RtlUshortByteSwap((USHORT)i) << 16) | RtlUshortByteSwap((USHORT)(i >> 16)); -#endif +} +static inline ULONGLONG RtlUlonglongByteSwap(ULONGLONG i) +{ + return ((ULONGLONG)RtlUlongByteSwap((ULONG)i) << 32) | RtlUlongByteSwap((ULONG)(i >> 32)); } /* list manipulation macros */ @@ -3076,17 +5435,9 @@ static inline PLIST_ENTRY RemoveTailList(PLIST_ENTRY le) #ifdef __WINESRC__ -/* FIXME: private structure for vm86 mode, stored in teb->GdiTebBatch */ -typedef struct -{ - DWORD dpmi_vif; - DWORD vm86_pending; -} WINE_VM86_TEB_INFO; +/* Wine internal functions */ -static inline WINE_VM86_TEB_INFO *get_vm86_teb_info(void) -{ - return (WINE_VM86_TEB_INFO *)&NtCurrentTeb()->GdiTebBatch; -} +NTSYSAPI NTSTATUS WINAPI __wine_unix_spawnvp( char * const argv[], int wait ); /* The thread information for 16-bit threads */ /* NtCurrentTeb()->SubSystemTib points to this */ diff --git a/sdk/include/xdk/ketypes.h b/sdk/include/xdk/ketypes.h index b3a1ddbc325..b468ce9e0b6 100644 --- a/sdk/include/xdk/ketypes.h +++ b/sdk/include/xdk/ketypes.h @@ -964,6 +964,7 @@ typedef struct DECLSPEC_ALIGN(16) _XSAVE_FORMAT { ULONG Cr0NpxState; #endif } XSAVE_FORMAT, *PXSAVE_FORMAT; +typedef XSAVE_FORMAT XMM_SAVE_AREA32, *PXMM_SAVE_AREA32; typedef struct DECLSPEC_ALIGN(8) _XSAVE_AREA_HEADER { ULONG64 Mask; diff --git a/sdk/include/xdk/winnt_old.h b/sdk/include/xdk/winnt_old.h index 8848c10f75c..e676b02f908 100644 --- a/sdk/include/xdk/winnt_old.h +++ b/sdk/include/xdk/winnt_old.h @@ -83,6 +83,8 @@ #else # define __WINE_ALLOC_SIZE(...) #endif +#define __WINE_DEALLOC(...) +#define __WINE_MALLOC /*#endif*/ #ifdef __GNUC__ @@ -349,7 +351,7 @@ /* also in ddk/winddk.h */ #define DUPLICATE_CLOSE_SOURCE 0x00000001 -#define DUPLICATE_SAME_ACCESS 0x00000002 +#define DUPLICATE_SAME_ACCESS 0x00000002 /* end winddk.k */ #define MAILSLOT_NO_MESSAGE ((DWORD)-1) @@ -484,6 +486,11 @@ #define PROCESSOR_ARCHITECTURE_ALPHA64 7 #define PROCESSOR_ARCHITECTURE_MSIL 8 #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 /* also in ddk/ntifs.h */ @@ -565,6 +572,14 @@ #define MEM_PHYSICAL 0x400000 #define MEM_4MB_PAGES 0x80000000 #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_FILE 0x00800000 #define SEC_IMAGE 0x01000000 @@ -1074,6 +1089,7 @@ #define WT_TRANSFER_IMPERSONATION 0x00000100 #define WT_SET_MAX_THREADPOOL_THREADS(flags,limit) ((flags)|=(limit)<<16) typedef VOID (NTAPI *WORKERCALLBACKFUNC)(PVOID); +typedef VOID (NTAPI *PFLS_CALLBACK_FUNCTION)(PVOID); #if (_WIN32_WINNT >= 0x0501) #define ACTIVATION_CONTEXT_SECTION_ASSEMBLY_INFORMATION 1 #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_TYPE_LIBRARY_REDIRECTION 6 #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_APPLICATION_SETTINGS 10 #define ACTIVATION_CONTEXT_SECTION_COMPATIBILITY_INFO 11 +#define ACTIVATION_CONTEXT_SECTION_WINRT_ACTIVATABLE_CLASSES 12 #endif /* (_WIN32_WINNT >= 0x0501) */ #define BTYPE(x) ((x)&N_BTMASK) #define ISPTR(x) (((x)&N_TMASK)==(IMAGE_SYM_DTYPE_POINTER<= NTDDI_WIN10_19H1) + ULONGLONG MaxVersionTested; +#endif } COMPATIBILITY_CONTEXT_ELEMENT, *PCOMPATIBILITY_CONTEXT_ELEMENT; typedef struct _ACTIVATION_CONTEXT_COMPATIBILITY_INFORMATION { @@ -4485,6 +4638,11 @@ DbgRaiseAssertionFailure(VOID) #error Unknown architecture #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_WORK TP_WORK, *PTP_WORK; typedef struct _TP_CALLBACK_INSTANCE TP_CALLBACK_INSTANCE, *PTP_CALLBACK_INSTANCE;