[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
@ 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)
@ 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)
/* 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");
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;
*/
NTSTATUS
NTAPI
-LdrQueryImageFileKeyOption(IN HKEY KeyHandle,
+LdrQueryImageFileKeyOption(IN HANDLE KeyHandle,
IN PCWSTR ValueName,
IN ULONG Type,
OUT PVOID Buffer,
IN BOOLEAN Wow64)
{
NTSTATUS Status;
- HKEY KeyHandle;
+ HANDLE KeyHandle;
/* Open a handle to the key */
Status = LdrOpenImageFileOptionsKey(SubKey, Wow64, &KeyHandle);
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 */
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;
return STATUS_NOT_IMPLEMENTED;
}
+/*
+ * @unimplemented
+ */
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlComputeImportTableHash(IN HANDLE FileHandle,
+ OUT PCHAR Hash,
+ IN ULONG ImporTTableHashSize)
+{
+ UNIMPLEMENTED;
+ return STATUS_NOT_IMPLEMENTED;
+}
+
/* EOF */
#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
//
RtlDosPathNameToRelativeNtPathName_U(
IN PCWSTR DosName,
OUT PUNICODE_STRING NtName,
- OUT PCWSTR * PartName,
+ OUT PCWSTR *PartName,
OUT PRTL_RELATIVE_NAME_U RelativeName
);
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
RtlGUIDFromString(
IN PUNICODE_STRING GuidString,
OUT GUID *Guid);
+
+NTSYSAPI
+NTSTATUS
+NTAPI
+RtlComputeImportTableHash(
+ IN HANDLE hFile,
+ OUT PCHAR Hash,
+ IN ULONG ImportTableHashRevision
+);
#endif
#ifdef __cplusplus
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
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))
#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))
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;