mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 16:36:33 +00:00
[NTDLL]: Add, export, and stubplement RtlComputeImportTableHash and document in NDK.
[NTDLL]: Use HANDLE instead of Win32 HKEY. [NDK]: Add missing NtCreateProcessEx flags and some missing Ldr functions + missing RtlGetFullPathName_UstrEx. [CSRSS]: Define two new CSRSS messages (not implemented): UpdateVdmEntry and GetVdmExitCode. svn path=/trunk/; revision=54968
This commit is contained in:
parent
4902210307
commit
4a76b4fbe8
8 changed files with 99 additions and 13 deletions
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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
|
||||
//
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in a new issue