diff --git a/reactos/dll/ntdll/def/ntdll.pspec b/reactos/dll/ntdll/def/ntdll.pspec index bbddbb23b51..d1ae0cbd155 100644 --- a/reactos/dll/ntdll/def/ntdll.pspec +++ b/reactos/dll/ntdll/def/ntdll.pspec @@ -485,7 +485,7 @@ @ stdcall RtlCompareUnicodeString (ptr ptr long) @ stdcall RtlCompressBuffer(long ptr long ptr long long ptr ptr) @ stdcall RtlComputeCrc32(long ptr long) -//@ stdcall RtlComputeImportTableHash +@ stdcall RtlComputeImportTableHash(ptr ptr long) //@ stdcall RtlComputePrivatizedDllName_U //@ stdcall RtlConsoleMultiByteToUnicodeN @ stdcall RtlConvertExclusiveToShared(ptr) diff --git a/reactos/dll/ntdll/def/ntdll.spec b/reactos/dll/ntdll/def/ntdll.spec index f5aab51b132..d1026472f2d 100644 --- a/reactos/dll/ntdll/def/ntdll.spec +++ b/reactos/dll/ntdll/def/ntdll.spec @@ -483,7 +483,7 @@ @ stdcall RtlCompareUnicodeString (ptr ptr long) @ stdcall RtlCompressBuffer(long ptr long ptr long long ptr ptr) @ stdcall RtlComputeCrc32(long ptr long) -;@ stdcall RtlComputeImportTableHash +@ stdcall RtlComputeImportTableHash(ptr ptr long) ;@ stdcall RtlComputePrivatizedDllName_U ;@ stdcall RtlConsoleMultiByteToUnicodeN @ stdcall RtlConvertExclusiveToShared(ptr) diff --git a/reactos/dll/ntdll/ldr/ldrinit.c b/reactos/dll/ntdll/ldr/ldrinit.c index bd7084d8a65..fdf28f7fc46 100644 --- a/reactos/dll/ntdll/ldr/ldrinit.c +++ b/reactos/dll/ntdll/ldr/ldrinit.c @@ -18,8 +18,8 @@ /* GLOBALS *******************************************************************/ -HKEY ImageExecOptionsKey; -HKEY Wow64ExecOptionsKey; +HANDLE ImageExecOptionsKey; +HANDLE Wow64ExecOptionsKey; UNICODE_STRING ImageExecOptionsString = RTL_CONSTANT_STRING(L"\\Registry\\Machine\\Software\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options"); UNICODE_STRING Wow64OptionsString = RTL_CONSTANT_STRING(L""); UNICODE_STRING NtDllString = RTL_CONSTANT_STRING(L"ntdll.dll"); @@ -104,9 +104,9 @@ NTSTATUS NTAPI LdrOpenImageFileOptionsKey(IN PUNICODE_STRING SubKey, IN BOOLEAN Wow64, - OUT PHKEY NewKeyHandle) + OUT PHANDLE NewKeyHandle) { - PHKEY RootKeyLocation; + PHANDLE RootKeyLocation; HANDLE RootKey; UNICODE_STRING SubKeyString; OBJECT_ATTRIBUTES ObjectAttributes; @@ -174,7 +174,7 @@ LdrOpenImageFileOptionsKey(IN PUNICODE_STRING SubKey, */ NTSTATUS NTAPI -LdrQueryImageFileKeyOption(IN HKEY KeyHandle, +LdrQueryImageFileKeyOption(IN HANDLE KeyHandle, IN PCWSTR ValueName, IN ULONG Type, OUT PVOID Buffer, @@ -345,7 +345,7 @@ LdrQueryImageFileExecutionOptionsEx(IN PUNICODE_STRING SubKey, IN BOOLEAN Wow64) { NTSTATUS Status; - HKEY KeyHandle; + HANDLE KeyHandle; /* Open a handle to the key */ Status = LdrOpenImageFileOptionsKey(SubKey, Wow64, &KeyHandle); @@ -1326,10 +1326,10 @@ LdrpInitializeApplicationVerifierPackage(PUNICODE_STRING ImagePathName, PPEB Peb NTSTATUS NTAPI -LdrpInitializeExecutionOptions(PUNICODE_STRING ImagePathName, PPEB Peb, PHKEY OptionsKey) +LdrpInitializeExecutionOptions(PUNICODE_STRING ImagePathName, PPEB Peb, PHANDLE OptionsKey) { NTSTATUS Status; - HKEY KeyHandle; + HANDLE KeyHandle; ULONG ExecuteOptions, MinimumStackCommit = 0, GlobalFlag; /* Return error if we were not provided a pointer where to save the options key handle */ @@ -1467,12 +1467,12 @@ LdrpInitializeProcess(IN PCONTEXT Context, PPEB Peb = NtCurrentPeb(); BOOLEAN IsDotNetImage = FALSE; BOOLEAN FreeCurDir = FALSE; - //HKEY CompatKey; + //HANDLE CompatKey; PRTL_USER_PROCESS_PARAMETERS ProcessParameters; //LPWSTR ImagePathBuffer; ULONG ConfigSize; UNICODE_STRING CurrentDirectory; - HKEY OptionsKey; + HANDLE OptionsKey; ULONG HeapFlags; PIMAGE_NT_HEADERS NtHeader; LPWSTR NtDllName = NULL; diff --git a/reactos/dll/ntdll/rtl/libsupp.c b/reactos/dll/ntdll/rtl/libsupp.c index 6a8ed29f35d..0fbe0c9d7b9 100644 --- a/reactos/dll/ntdll/rtl/libsupp.c +++ b/reactos/dll/ntdll/rtl/libsupp.c @@ -562,4 +562,18 @@ RtlWow64EnableFsRedirectionEx(IN PVOID Wow64FsEnableRedirection, return STATUS_NOT_IMPLEMENTED; } +/* + * @unimplemented + */ +NTSYSAPI +NTSTATUS +NTAPI +RtlComputeImportTableHash(IN HANDLE FileHandle, + OUT PCHAR Hash, + IN ULONG ImporTTableHashSize) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + /* EOF */ diff --git a/reactos/include/ndk/pstypes.h b/reactos/include/ndk/pstypes.h index d7a90a349cf..f13d19bdac7 100644 --- a/reactos/include/ndk/pstypes.h +++ b/reactos/include/ndk/pstypes.h @@ -73,6 +73,15 @@ Author: #define FLG_DEBUG_INITIAL_COMMAND_EX 0x04000000 #define FLG_VALID_BITS 0x07FFFFFF +// +// Flags for NtCreateProcessEx +// +#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 + // // Process priority classes // diff --git a/reactos/include/ndk/rtlfuncs.h b/reactos/include/ndk/rtlfuncs.h index 71d23b066a0..15566983183 100644 --- a/reactos/include/ndk/rtlfuncs.h +++ b/reactos/include/ndk/rtlfuncs.h @@ -2513,7 +2513,7 @@ NTAPI RtlDosPathNameToRelativeNtPathName_U( IN PCWSTR DosName, OUT PUNICODE_STRING NtName, - OUT PCWSTR * PartName, + OUT PCWSTR *PartName, OUT PRTL_RELATIVE_NAME_U RelativeName ); @@ -2545,6 +2545,19 @@ RtlGetFullPathName_U( OUT PWSTR *ShortName ); +ULONG +NTAPI +RtlGetFullPathName_UstrEx( + IN PUNICODE_STRING FileName, + IN PUNICODE_STRING StaticString, + IN PUNICODE_STRING DynamicString, + IN PUNICODE_STRING *StringUsed, + IN PSIZE_T FilePartSize, + OUT PBOOLEAN NameInvalid, + OUT RTL_PATH_TYPE* PathType, + OUT PULONG LengthNeeded +); + NTSYSAPI ULONG NTAPI @@ -3824,6 +3837,15 @@ NTAPI RtlGUIDFromString( IN PUNICODE_STRING GuidString, OUT GUID *Guid); + +NTSYSAPI +NTSTATUS +NTAPI +RtlComputeImportTableHash( + IN HANDLE hFile, + OUT PCHAR Hash, + IN ULONG ImportTableHashRevision +); #endif #ifdef __cplusplus diff --git a/reactos/include/ndk/umfuncs.h b/reactos/include/ndk/umfuncs.h index 45eb3936538..3af7928823b 100644 --- a/reactos/include/ndk/umfuncs.h +++ b/reactos/include/ndk/umfuncs.h @@ -314,4 +314,23 @@ LdrVerifyImageMatchesChecksum( OUT PUSHORT ImageCharacterstics ); +NTSTATUS +NTAPI +LdrOpenImageFileOptionsKey( + IN PUNICODE_STRING SubKey, + IN BOOLEAN Wow64, + OUT PHANDLE NewKeyHandle +); + +NTSTATUS +NTAPI +LdrQueryImageFileKeyOption( + IN HANDLE KeyHandle, + IN PCWSTR ValueName, + IN ULONG Type, + OUT PVOID Buffer, + IN ULONG BufferSize, + OUT PULONG ReturnedLength OPTIONAL +); + #endif diff --git a/reactos/include/reactos/subsys/csrss/csrss.h b/reactos/include/reactos/subsys/csrss/csrss.h index 9a31dee4bf1..cdebdb623f2 100644 --- a/reactos/include/reactos/subsys/csrss/csrss.h +++ b/reactos/include/reactos/subsys/csrss/csrss.h @@ -530,6 +530,24 @@ typedef struct ULONG VideoMode; } CSRSS_SOUND_SENTRY, *PCSRSS_SOUND_SENTRY; +typedef struct +{ + ULONG iTask; + ULONG BinaryType; + HANDLE ConsoleHandle; + HANDLE VDMProcessHandle; + HANDLE WaitObjectForParent; + USHORT EntryIndex; + USHORT VDMCreationState; +} CSRSS_UPDATE_VDM_ENTRY, *PCSRSS_UPDATE_VDM_ENTRY; + +typedef struct +{ + HANDLE ConsoleHandle; + HANDLE hParent; + ULONG ExitCode; +} CSRSS_GET_VDM_EXIT_CODE, *PCSRSS_GET_VDM_EXIT_CODE; + #define CSR_API_MESSAGE_HEADER_SIZE(Type) (FIELD_OFFSET(CSR_API_MESSAGE, Data) + sizeof(Type)) #define CSRSS_MAX_WRITE_CONSOLE (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE)) #define CSRSS_MAX_WRITE_CONSOLE_OUTPUT_CHAR (LPC_MAX_DATA_LENGTH - CSR_API_MESSAGE_HEADER_SIZE(CSRSS_WRITE_CONSOLE_OUTPUT_CHAR)) @@ -612,6 +630,8 @@ typedef struct #define GET_TEMP_FILE (0x48) #define DEFINE_DOS_DEVICE (0X49) #define SOUND_SENTRY (0x50) +#define UPDATE_VDM_ENTRY (0x51) +#define GET_VDM_EXIT_CODE (0x52) /* Keep in sync with definition below. */ #define CSRSS_HEADER_SIZE (sizeof(PORT_MESSAGE) + sizeof(ULONG) + sizeof(NTSTATUS)) @@ -696,6 +716,8 @@ typedef struct _CSR_API_MESSAGE CSRSS_GET_TEMP_FILE GetTempFile; CSRSS_DEFINE_DOS_DEVICE DefineDosDeviceRequest; CSRSS_SOUND_SENTRY SoundSentryRequest; + CSRSS_UPDATE_VDM_ENTRY UpdateVdmEntry; + CSRSS_GET_VDM_EXIT_CODE GetVdmExitCode; } Data; } CSR_API_MESSAGE, *PCSR_API_MESSAGE;