mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 16:36:07 +00:00
Implemented:
- dbg functions - RtlFreeUserThreadStack() - rtl nls functions - rtl process heaps functions Improved .def and .edf files svn path=/trunk/; revision=1159
This commit is contained in:
parent
3e519811c4
commit
dd76e08c86
16 changed files with 499 additions and 47 deletions
|
@ -1,6 +1,6 @@
|
|||
#ifndef __INCLUDE_DDK_DBGFUNCS_H
|
||||
#define __INCLUDE_DDK_DBGFUNCS_H
|
||||
/* $Id: dbgfuncs.h,v 1.4 2000/03/04 21:58:49 ekohl Exp $ */
|
||||
/* $Id: dbgfuncs.h,v 1.5 2000/05/25 15:49:50 ekohl Exp $ */
|
||||
|
||||
#define DBG_STATUS_CONTROL_C 1
|
||||
#define DBG_STATUS_SYSRQ 2
|
||||
|
@ -10,6 +10,8 @@
|
|||
VOID STDCALL DbgBreakPointWithStatus (ULONG Status);
|
||||
VOID STDCALL DbgBreakPoint(VOID);
|
||||
ULONG DbgPrint(PCH Format,...);
|
||||
VOID STDCALL DbgPrompt (PCH OutputString, PCH InputString, USHORT InputSize);
|
||||
|
||||
|
||||
#define DBG_GET_SHOW_FACILITY 0x0001
|
||||
#define DBG_GET_SHOW_SEVERITY 0x0002
|
||||
|
|
|
@ -87,7 +87,7 @@ typedef struct _PEB
|
|||
PRTL_USER_PROCESS_PARAMETERS ProcessParameters; // 10h
|
||||
PVOID SubSystemData; // 14h
|
||||
PVOID ProcessHeap; // 18h
|
||||
PVOID LastPebLock; // 1Ch
|
||||
PVOID FastPebLock; // 1Ch
|
||||
PVOID FastPebLockRoutine; // 20h
|
||||
PVOID FastPebUnlockRoutine; // 24h
|
||||
ULONG EnvironmentUpdateCount; // 28h
|
||||
|
|
|
@ -1,10 +1,24 @@
|
|||
/* $Id: dbg.h,v 1.1 2000/04/14 01:41:38 ekohl Exp $
|
||||
/* $Id: dbg.h,v 1.2 2000/05/25 15:50:21 ekohl Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __INCLUDE_NTDLL_DBG_H
|
||||
#define __INCLUDE_NTDLL_DBG_H
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
DbgSsInitialize (
|
||||
HANDLE ReplyPort,
|
||||
ULONG Unknown1,
|
||||
ULONG Unknown2,
|
||||
ULONG Unknown3
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
DbgUiConnectToDbg (
|
||||
VOID
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
|
@ -13,6 +27,12 @@ DbgUiContinue (
|
|||
ULONG ContinueStatus
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
DbgUiWaitStateChange (
|
||||
ULONG Unknown1,
|
||||
ULONG Unknown2
|
||||
);
|
||||
|
||||
#endif /* __INCLUDE_NTDLL_DBG_H */
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: rtl.h,v 1.15 2000/04/15 23:11:42 ekohl Exp $
|
||||
/* $Id: rtl.h,v 1.16 2000/05/25 15:50:22 ekohl Exp $
|
||||
*
|
||||
*/
|
||||
|
||||
|
@ -94,6 +94,7 @@ RtlLargeIntegerToChar (
|
|||
IN OUT PCHAR String
|
||||
);
|
||||
|
||||
|
||||
/* Path functions */
|
||||
|
||||
ULONG
|
||||
|
@ -235,6 +236,13 @@ RtlCreateUserThread (
|
|||
IN OUT PCLIENT_ID ClientId
|
||||
);
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
RtlFreeUserThreadStack (
|
||||
IN HANDLE ProcessHandle,
|
||||
IN HANDLE ThreadHandle
|
||||
);
|
||||
|
||||
/*
|
||||
* Preliminary prototype!!
|
||||
*
|
||||
|
|
|
@ -28,14 +28,18 @@ typedef ULONG TOKEN_TYPE, *PTOKEN_TYPE;
|
|||
#define TokenPrimary ((TOKEN_TYPE)1)
|
||||
#define TokenImpersonation ((TOKEN_TYPE)2)
|
||||
|
||||
//typedef BOOLEAN SECURITY_CONTEXT_TRACKING_MODE, *PSECURITY_CONTEXT_TRACKING_MODE;
|
||||
|
||||
//#define SECURITY_DYNAMIC_TRACKING (TRUE)
|
||||
//#define SECURITY_STATIC_TRACKING (FALSE)
|
||||
|
||||
typedef ULONG ACCESS_MASK, *PACCESS_MASK;
|
||||
typedef ULONG ACCESS_MODE, *PACCESS_MODE;
|
||||
|
||||
typedef struct _SECURITY_QUALITY_OF_SERVICE {
|
||||
DWORD Length;
|
||||
SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
|
||||
/* SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; */
|
||||
WINBOOL ContextTrackingMode;
|
||||
SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
|
||||
BOOLEAN EffectiveOnly;
|
||||
} SECURITY_QUALITY_OF_SERVICE;
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: debug.c,v 1.1 2000/04/14 01:43:05 ekohl Exp $
|
||||
/* $Id: debug.c,v 1.2 2000/05/25 15:50:44 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -12,11 +12,167 @@
|
|||
/* INCLUDES *****************************************************************/
|
||||
|
||||
#include <ddk/ntddk.h>
|
||||
#include <ntdll/rtl.h>
|
||||
#include <ntdll/dbg.h>
|
||||
#include <napi/lpc.h>
|
||||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
static HANDLE DbgSsApiPort = NULL;
|
||||
static HANDLE DbgSsReplyPort = NULL;
|
||||
|
||||
|
||||
typedef struct _LPC_DBGSS_MESSAGE
|
||||
{
|
||||
LPC_MESSAGE_HEADER Header;
|
||||
ULONG Unknown1;
|
||||
ULONG Unknown2;
|
||||
ULONG Unknown3;
|
||||
ULONG Unknown4;
|
||||
} LPC_DBGSS_MESSAGE, *PLPC_DBGSS_MESSAGE;
|
||||
|
||||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
DbgSsServerThread (
|
||||
PVOID Unused
|
||||
)
|
||||
{
|
||||
LPC_DBGSS_MESSAGE Message;
|
||||
NTSTATUS Status;
|
||||
|
||||
for (;;)
|
||||
{
|
||||
Status = NtReplyWaitReceivePort (DbgSsApiPort,
|
||||
NULL,
|
||||
NULL,
|
||||
(PLPC_MESSAGE)&Message);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DbgPrint ("DbgSs: NtReplyWaitReceivePort failed - Status == %lx\n",
|
||||
Status);
|
||||
|
||||
DbgBreakPoint ();
|
||||
}
|
||||
else
|
||||
{
|
||||
/* FIXME: missing code!! */
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
DbgSsHandleKmApiMsg (
|
||||
ULONG Unknown1,
|
||||
HANDLE EventHandle
|
||||
)
|
||||
{
|
||||
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
DbgSsInitialize (
|
||||
HANDLE ReplyPort,
|
||||
ULONG Unknown1,
|
||||
ULONG Unknown2,
|
||||
ULONG Unknown3
|
||||
)
|
||||
{
|
||||
SECURITY_QUALITY_OF_SERVICE Qos;
|
||||
UNICODE_STRING PortName;
|
||||
NTSTATUS Status;
|
||||
|
||||
RtlInitUnicodeString (&PortName,
|
||||
L"\\DbgSsApiPort");
|
||||
|
||||
Qos.Length = sizeof(SECURITY_QUALITY_OF_SERVICE);
|
||||
Qos.ImpersonationLevel = SecurityIdentification;
|
||||
Qos.ContextTrackingMode = SECURITY_DYNAMIC_TRACKING;
|
||||
Qos.EffectiveOnly = TRUE;
|
||||
|
||||
Status = NtConnectPort (&DbgSsApiPort,
|
||||
&PortName,
|
||||
&Qos,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
if (!NT_SUCCESS(Status))
|
||||
return Status;
|
||||
|
||||
DbgSsReplyPort = ReplyPort;
|
||||
// UnknownData1 = Unknown1;
|
||||
// UnknownData2 = Unknown2;
|
||||
// UnknownData3 = Unknown3;
|
||||
|
||||
Status = RtlCreateUserThread (NtCurrentProcess (),
|
||||
NULL,
|
||||
FALSE,
|
||||
0,
|
||||
NULL,
|
||||
NULL,
|
||||
(PTHREAD_START_ROUTINE)DbgSsServerThread,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
DbgUiConnectToDbg (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
SECURITY_QUALITY_OF_SERVICE Qos;
|
||||
UNICODE_STRING PortName;
|
||||
NTSTATUS Status;
|
||||
PNT_TEB Teb;
|
||||
ULONG InfoSize;
|
||||
|
||||
Teb = NtCurrentTeb ();
|
||||
|
||||
RtlInitUnicodeString (&PortName,
|
||||
L"\\DbgUiApiPort");
|
||||
|
||||
Qos.Length = sizeof(SECURITY_QUALITY_OF_SERVICE);
|
||||
Qos.ImpersonationLevel = SecurityIdentification;
|
||||
Qos.ContextTrackingMode = SECURITY_DYNAMIC_TRACKING;
|
||||
Qos.EffectiveOnly = TRUE;
|
||||
|
||||
InfoSize = sizeof(ULONG);
|
||||
|
||||
Status = NtConnectPort (&Teb->DbgSsReserved[1],
|
||||
&PortName,
|
||||
&Qos,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
&Teb->DbgSsReserved[0],
|
||||
&InfoSize);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
Teb->DbgSsReserved[1] = NULL;
|
||||
return Status;
|
||||
}
|
||||
|
||||
NtRegisterThreadTerminatePort(Teb->DbgSsReserved[1]);
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
DbgUiContinue (
|
||||
|
@ -27,4 +183,14 @@ DbgUiContinue (
|
|||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
DbgUiWaitStateChange (
|
||||
ULONG Unknown1,
|
||||
ULONG Unknown2
|
||||
)
|
||||
{
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: print.c,v 1.2 2000/01/18 12:04:16 ekohl Exp $
|
||||
/* $Id: print.c,v 1.3 2000/05/25 15:50:44 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -46,4 +46,29 @@ DbgPrint(PCH Format, ...)
|
|||
return (ULONG)DebugString.Length;
|
||||
}
|
||||
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
DbgPrompt (
|
||||
PCH OutputString,
|
||||
PCH InputString,
|
||||
USHORT InputSize
|
||||
)
|
||||
{
|
||||
ANSI_STRING Output;
|
||||
ANSI_STRING Input;
|
||||
|
||||
Input.Length = 0;
|
||||
Input.MaximumLength = InputSize;
|
||||
Input.Buffer = InputString;
|
||||
|
||||
Output.Length = strlen (OutputString);
|
||||
Output.MaximumLength = Output.Length + 1;
|
||||
Output.Buffer = OutputString;
|
||||
|
||||
DbgService (2,
|
||||
&Output,
|
||||
&Input);
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -1,22 +1,53 @@
|
|||
; $Id: ntdll.def,v 1.54 2000/05/13 01:48:01 ekohl Exp $
|
||||
; $Id: ntdll.def,v 1.55 2000/05/25 15:51:05 ekohl Exp $
|
||||
;
|
||||
; ReactOS Operating System
|
||||
;
|
||||
LIBRARY ntdll.dll
|
||||
|
||||
EXPORTS
|
||||
;CsrAllocateCaptureBuffer
|
||||
;CsrAllocateCapturePointer
|
||||
;CsrAllocateMessagePointer
|
||||
;CsrCaptureMessageBuffer
|
||||
;CsrCaptureMessageString
|
||||
;CsrCaptureTimeout
|
||||
CsrClientCallServer@16
|
||||
;CsrClientConnectToServer@24
|
||||
;CsrFreeCaptureBuffer
|
||||
;CsrIdentifyAlertableThread
|
||||
;CrsNewThread
|
||||
;CsrProbeForRead
|
||||
;CsrProbeForWrite
|
||||
CsrSetPriorityClass@8
|
||||
DbgBreakPoint@0
|
||||
DbgPrint
|
||||
;DbgPrompt
|
||||
;DbgSsHandleKmApiMsg
|
||||
;DbgSsInitialize
|
||||
;DbgUiConnectToDbg
|
||||
DbgPrompt@12
|
||||
DbgSsHandleKmApiMsg@8
|
||||
DbgSsInitialize@16
|
||||
DbgUiConnectToDbg@0
|
||||
DbgUiContinue@8
|
||||
;DbgUiWaitStateChange
|
||||
DbgUiWaitStateChange@8
|
||||
DbgUserBreakPoint@0
|
||||
;KiRaiseUserExceptionDispatcher
|
||||
;KiUserApcDispatcher
|
||||
;KiUserCallbackDispatcher
|
||||
;KiUserExceptionDispatcher
|
||||
LdrAccessResource
|
||||
;LdrDisableThreadCalloutsForDll
|
||||
;LdrEnumResources
|
||||
;LdrFindResourceDirectory_U
|
||||
LdrFindResource_U
|
||||
;LdrGetDllHandle
|
||||
;LdrGetProcedureAddress
|
||||
;LdrInitializeThunk
|
||||
LdrLoadDll
|
||||
;LdrProcessRelocationBlock
|
||||
;LdrQueryImageFileExecutionOptions
|
||||
;LdrQueryProcessModuleInformation
|
||||
;LdrShutdownProcess
|
||||
;LdrShutdownThread
|
||||
LdrUnloadDll
|
||||
;LdrVerifyImageMatchesChecksum
|
||||
NlsAnsiCodePage DATA
|
||||
NlsMbCodePageTag DATA
|
||||
NlsMbOemCodePageTag DATA
|
||||
|
@ -338,7 +369,7 @@ RtlEnlargedIntegerMultiply@8
|
|||
RtlEnlargedUnsignedDivide@16
|
||||
RtlEnlargedUnsignedMultiply@8
|
||||
RtlEnterCriticalSection@4
|
||||
;RtlEnumProcessHeaps
|
||||
RtlEnumProcessHeaps@8
|
||||
;RtlEnumerateGenericTable
|
||||
;RtlEnumerateGenericTableWithoutSplaying
|
||||
;RtlEnumerateProperties
|
||||
|
@ -374,7 +405,7 @@ RtlFreeHeap@12
|
|||
RtlFreeOemString@4
|
||||
RtlFreeSid@4
|
||||
RtlFreeUnicodeString@4
|
||||
;RtlFreeUserThreadStack
|
||||
RtlFreeUserThreadStack@8
|
||||
;RtlGenerate8dot3Name
|
||||
RtlGetAce@12
|
||||
;RtlGetCallersAddress
|
||||
|
@ -389,7 +420,7 @@ RtlGetLongestNtPathLength@0
|
|||
;RtlGetNtGlobalFlags
|
||||
;RtlGetNtProductType
|
||||
RtlGetOwnerSecurityDescriptor@12
|
||||
;RtlGetProcessHeaps
|
||||
RtlGetProcessHeaps@8
|
||||
RtlGetProcessHeap@0
|
||||
RtlGetSaclSecurityDescriptor@16
|
||||
;RtlGetUserInfoHeap
|
||||
|
@ -553,7 +584,7 @@ RtlValidAcl@4
|
|||
RtlValidSecurityDescriptor@4
|
||||
RtlValidSid@4
|
||||
RtlValidateHeap@12
|
||||
;RtlValidateProcessHeaps
|
||||
RtlValidateProcessHeaps@0
|
||||
;RtlWalkHeap
|
||||
;RtlWriteRegistryValue
|
||||
;RtlZeroHeap
|
||||
|
@ -900,7 +931,3 @@ wcstombs
|
|||
wcstoul
|
||||
LdrGetExportByName
|
||||
LdrGetExportByOrdinal
|
||||
LdrLoadDll
|
||||
LdrUnloadDll
|
||||
LdrFindResource_U
|
||||
LdrAccessResource
|
||||
|
|
|
@ -1,22 +1,52 @@
|
|||
; $Id: ntdll.edf,v 1.43 2000/05/13 01:48:01 ekohl Exp $
|
||||
; $Id: ntdll.edf,v 1.44 2000/05/25 15:51:05 ekohl Exp $
|
||||
;
|
||||
; ReactOS Operating System
|
||||
;
|
||||
LIBRARY ntdll.dll
|
||||
|
||||
EXPORTS
|
||||
;CsrAllocateCaptureBuffer
|
||||
;CsrAllocateCapturePointer
|
||||
;CsrAllocateMessagePointer
|
||||
;CsrCaptureMessageBuffer
|
||||
;CsrCaptureMessageString
|
||||
;CsrCaptureTimeout
|
||||
CsrClientCallServer=CsrClientCallServer@16
|
||||
;CsrClientConnectToServer=CsrClientConnectToServer@24
|
||||
;CsrFreeCaptureBuffer
|
||||
;CsrIdentifyAlertableThread
|
||||
;CrsNewThread
|
||||
;CsrProbeForRead
|
||||
;CsrProbeForWrite
|
||||
CsrSetPriorityClass=CsrSetPriorityClass@8
|
||||
DbgBreakPoint=DbgBreakPoint@0
|
||||
DbgPrint
|
||||
;DbgPrompt
|
||||
;DbgSsHandleKmApiMsg
|
||||
;DbgSsInitialize
|
||||
;DbgUiConnectToDbg
|
||||
DbgPrompt=DbgPrompt@12
|
||||
DbgSsHandleKmApiMsg=DbgSsHandleKmApiMsg@8
|
||||
DbgSsInitialize=DbgSsInitialize@16
|
||||
DbgUiConnectToDbg=DbgUiConnectToDbg@0
|
||||
DbgUiContinue=DbgUiContinue@8
|
||||
;DbgUiWaitStateChange
|
||||
DbgUiWaitStateChange=DbgUiWaitStateChange@8
|
||||
DbgUserBreakPoint=DbgUserBreakPoint@0
|
||||
;KiRaiseUserExceptionDispatcher
|
||||
;KiUserApcDispatcher
|
||||
;KiUserCallbackDispatcher
|
||||
;KiUserExceptionDispatcher
|
||||
LdrAccessResource
|
||||
;LdrDisableThreadCalloutsForDll
|
||||
;LdrEnumResources
|
||||
;LdrFindResourceDirectory_U
|
||||
LdrFindResource_U
|
||||
;LdrGetDllHandle
|
||||
;LdrGetProcedureAddress
|
||||
;LdrInitializeThunk
|
||||
LdrLoadDll
|
||||
;LdrProcessRelocationBlock
|
||||
;LdrQueryImageFileExecutionOptions
|
||||
;LdrQueryProcessModuleInformation
|
||||
;LdrShutdownProcess
|
||||
;LdrShutdownThread
|
||||
LdrUnloadDll
|
||||
NlsAnsiCodePage DATA
|
||||
NlsMbCodePageTag DATA
|
||||
NlsMbOemCodePageTag DATA
|
||||
|
@ -288,6 +318,7 @@ RtlEnlargedIntegerMultiply=RtlEnlargedIntegerMultiply@8
|
|||
RtlEnlargedUnsignedDivide=RtlEnlargedUnsignedDivide@16
|
||||
RtlEnlargedUnsignedMultiply=RtlEnlargedUnsignedMultiply@8
|
||||
RtlEnterCriticalSection=RtlEnterCriticalSection@4
|
||||
RtlEnumProcessHeaps=RtlEnumProcessHeaps@8
|
||||
RtlEqualComputerName=RtlEqualComputerName@8
|
||||
RtlEqualDomainName=RtlEqualDomainName@8
|
||||
RtlEqualLuid=RtlEqualLuid@8
|
||||
|
@ -313,6 +344,7 @@ RtlFreeAnsiString=RtlFreeAnsiString@4
|
|||
RtlFreeHeap=RtlFreeHeap@12
|
||||
RtlFreeSid=RtlFreeSid@4
|
||||
RtlFreeUnicodeString=RtlFreeUnicodeString@4
|
||||
RtlFreeUserThreadStack=RtlFreeUserThreadStack@8
|
||||
RtlGetAce=RtlGetAce@12
|
||||
RtlGetControlSecurityDescriptor=RtlGetControlSecurityDescriptor@12
|
||||
RtlGetCurrentDirectory_U=RtlGetCurrentDirectory_U@8
|
||||
|
@ -321,6 +353,7 @@ RtlGetFullPathName_U=RtlGetFullPathName_U@16
|
|||
RtlGetGroupSecurityDescriptor=RtlGetGroupSecurityDescriptor@12
|
||||
RtlGetLongestNtPathLength=RtlGetLongestNtPathLength@0
|
||||
RtlGetOwnerSecurityDescriptor=RtlGetOwnerSecurityDescriptor@12
|
||||
RtlGetProcessHeaps=RtlGetProcessHeaps@8
|
||||
RtlGetProcessHeap=RtlGetProcessHeap@0
|
||||
RtlGetSaclSecurityDescriptor=RtlGetSaclSecurityDescriptor@16
|
||||
RtlIdentifierAuthoritySid=RtlIdentifierAuthoritySid@4
|
||||
|
@ -420,6 +453,7 @@ RtlValidAcl=RtlValidAcl@4
|
|||
RtlValidSecurityDescriptor=RtlValidSecurityDescriptor@4
|
||||
RtlValidSid=RtlValidSid@4
|
||||
RtlValidateHeap=RtlValidateHeap@12
|
||||
RtlValidateProcessHeaps=RtlValidateProcessHeaps@0
|
||||
RtlZeroMemory=RtlZeroMemory@8
|
||||
RtlxAnsiStringToUnicodeSize=RtlxAnsiStringToUnicodeSize@4
|
||||
RtlxOemStringToUnicodeSize=RtlxOemStringToUnicodeSize@4
|
||||
|
@ -743,7 +777,3 @@ wcstombs
|
|||
wcstoul
|
||||
LdrGetExportByName
|
||||
LdrGetExportByOrdinal
|
||||
LdrLoadDll
|
||||
LdrUnloadDll
|
||||
LdrAccessResource
|
||||
LdrFindResource_U
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: startup.c,v 1.23 2000/05/24 22:29:35 dwelch Exp $
|
||||
/* $Id: startup.c,v 1.24 2000/05/25 15:51:16 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -21,11 +21,16 @@
|
|||
//#define NDEBUG
|
||||
#include <ntdll/ntdll.h>
|
||||
|
||||
|
||||
VOID RtlpInitProcessHeaps (PPEB Peb);
|
||||
|
||||
/* GLOBALS *******************************************************************/
|
||||
|
||||
DLL LdrDllListHead;
|
||||
extern unsigned int _image_base__;
|
||||
|
||||
CRITICAL_SECTION PebLock;
|
||||
|
||||
ULONG NtGlobalFlag = 0;
|
||||
|
||||
|
||||
|
@ -76,6 +81,15 @@ VOID LdrStartup(VOID)
|
|||
/* normalize process parameters */
|
||||
RtlNormalizeProcessParams (Peb->ProcessParameters);
|
||||
|
||||
#if 0
|
||||
/* initialize NLS data */
|
||||
RtlInitNlsTables (Peb->AnsiCodePageData,
|
||||
Peb->OemCodePageData,
|
||||
Peb->UnicodeCaseTableData,
|
||||
&TranslationTable);
|
||||
RtlResetRtlTranslations (&TranslationTable);
|
||||
#endif
|
||||
|
||||
NTHeaders = (PIMAGE_NT_HEADERS)(ImageBase + PEDosHeader->e_lfanew);
|
||||
|
||||
/* create process heap */
|
||||
|
@ -91,6 +105,15 @@ VOID LdrStartup(VOID)
|
|||
ZwTerminateProcess(NtCurrentProcess(),STATUS_UNSUCCESSFUL);
|
||||
}
|
||||
|
||||
/* initialize process heaps support */
|
||||
RtlpInitProcessHeaps (Peb);
|
||||
|
||||
/* initalize peb lock support */
|
||||
RtlInitializeCriticalSection (&PebLock);
|
||||
Peb->FastPebLock = &PebLock;
|
||||
Peb->FastPebLockRoutine = RtlEnterCriticalSection;
|
||||
Peb->FastPebUnlockRoutine = RtlLeaveCriticalSection;
|
||||
|
||||
EntryPoint = LdrPEStartup((PVOID)ImageBase, NULL);
|
||||
if (EntryPoint == NULL)
|
||||
{
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
#define NDEBUG
|
||||
#include <ntdll/ntdll.h>
|
||||
|
||||
CRITICAL_SECTION ProcessHeapsLock;
|
||||
|
||||
/* Note: the heap data structures are based on what Pietrek describes in his
|
||||
* book 'Windows 95 System Programming Secrets'. The layout is not exactly
|
||||
* the same, but could be easily adapted if it turns out some programs
|
||||
|
@ -1270,3 +1272,86 @@ HANDLE WINAPI RtlGetProcessHeap(VOID)
|
|||
return (HANDLE)NtCurrentPeb()->ProcessHeap;
|
||||
}
|
||||
|
||||
VOID
|
||||
RtlpInitProcessHeaps (PPEB Peb)
|
||||
{
|
||||
Peb->NumberOfHeaps = 0;
|
||||
Peb->MaximumNumberOfHeaps = (PAGESIZE - sizeof(PPEB)) / sizeof(HANDLE);
|
||||
Peb->ProcessHeaps = (PVOID)Peb + sizeof(PEB);
|
||||
|
||||
RtlInitializeCriticalSection (&ProcessHeapsLock);
|
||||
}
|
||||
|
||||
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
RtlEnumProcessHeaps (
|
||||
DWORD WINAPI(*func)(void*,LONG),
|
||||
LONG lParam
|
||||
)
|
||||
{
|
||||
NTSTATUS Status = STATUS_SUCCESS;
|
||||
ULONG i;
|
||||
|
||||
RtlEnterCriticalSection (&ProcessHeapsLock);
|
||||
|
||||
for (i = 0; i < NtCurrentPeb ()->NumberOfHeaps; i++)
|
||||
{
|
||||
Status = func (NtCurrentPeb ()->ProcessHeaps[i],lParam);
|
||||
if(!NT_SUCCESS(Status))
|
||||
break;
|
||||
}
|
||||
|
||||
RtlLeaveCriticalSection (&ProcessHeapsLock);
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
|
||||
ULONG
|
||||
STDCALL
|
||||
RtlGetProcessHeaps (
|
||||
ULONG HeapCount,
|
||||
HANDLE *HeapArray
|
||||
)
|
||||
{
|
||||
ULONG Result = 0;
|
||||
|
||||
RtlEnterCriticalSection (&ProcessHeapsLock);
|
||||
|
||||
if (NtCurrentPeb ()->NumberOfHeaps <= HeapCount)
|
||||
{
|
||||
Result = NtCurrentPeb ()->NumberOfHeaps;
|
||||
memmove (HeapArray,
|
||||
NtCurrentPeb ()->ProcessHeaps,
|
||||
Result * sizeof(HANDLE));
|
||||
}
|
||||
|
||||
RtlLeaveCriticalSection (&ProcessHeapsLock);
|
||||
|
||||
return Result;
|
||||
}
|
||||
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
RtlValidateProcessHeaps (
|
||||
VOID
|
||||
)
|
||||
{
|
||||
HANDLE Heaps[128];
|
||||
BOOLEAN Result = TRUE;
|
||||
ULONG HeapCount;
|
||||
ULONG i;
|
||||
|
||||
HeapCount = RtlGetProcessHeaps (128, Heaps);
|
||||
for (i = 0; i < HeapCount; i++)
|
||||
{
|
||||
if (!RtlValidateHeap (Heaps[i], 0, NULL))
|
||||
Result = FALSE;
|
||||
}
|
||||
|
||||
return Result;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: nls.c,v 1.3 2000/05/13 01:47:33 ekohl Exp $
|
||||
/* $Id: nls.c,v 1.4 2000/05/25 15:52:53 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -94,7 +94,7 @@ RtlCustomCPToUnicodeN (
|
|||
|
||||
for (i = 0; i < Size; i++)
|
||||
{
|
||||
*UnicodeString = NlsData->MultiByteToUnicode[*CustomString];
|
||||
*UnicodeString = NlsData->MultiByteToUnicode[(int)*CustomString];
|
||||
UnicodeString++;
|
||||
CustomString++;
|
||||
}
|
||||
|
|
|
@ -13,7 +13,8 @@
|
|||
|
||||
#include <ddk/ntddk.h>
|
||||
#include <internal/i386/segment.h>
|
||||
#include <string.h>
|
||||
#include <internal/teb.h>
|
||||
//#include <string.h>
|
||||
#include <ntdll/rtl.h>
|
||||
|
||||
#define NDEBUG
|
||||
|
@ -239,9 +240,50 @@ RtlInitializeContext(HANDLE ProcessHandle,
|
|||
}
|
||||
|
||||
|
||||
NTSTATUS STDCALL RtlDestroyUserThreadStack(param1, param2)
|
||||
NTSTATUS
|
||||
STDCALL
|
||||
RtlFreeUserThreadStack (
|
||||
HANDLE ProcessHandle,
|
||||
HANDLE ThreadHandle
|
||||
)
|
||||
{
|
||||
THREAD_BASIC_INFORMATION ThreadInfo;
|
||||
NTSTATUS Status;
|
||||
ULONG BytesRead;
|
||||
ULONG RegionSize;
|
||||
PVOID StackBase;
|
||||
PNT_TEB Teb;
|
||||
|
||||
Status = NtQueryInformationThread (ThreadHandle,
|
||||
ThreadBasicInformation,
|
||||
&ThreadInfo,
|
||||
sizeof(THREAD_BASIC_INFORMATION),
|
||||
NULL);
|
||||
if (!NT_SUCCESS(Status))
|
||||
return Status;
|
||||
|
||||
if (ThreadInfo.TebBaseAddress == NULL)
|
||||
return Status;
|
||||
|
||||
Teb = (PNT_TEB)ThreadInfo.TebBaseAddress;
|
||||
Status = NtReadVirtualMemory (ProcessHandle,
|
||||
&Teb->DeallocationStack,
|
||||
&StackBase,
|
||||
sizeof(PVOID),
|
||||
&BytesRead);
|
||||
if (!NT_SUCCESS(Status))
|
||||
return Status;
|
||||
|
||||
if (StackBase == NULL)
|
||||
return Status;
|
||||
|
||||
RegionSize = 0;
|
||||
Status = NtFreeVirtualMemory (ProcessHandle,
|
||||
StackBase,
|
||||
&RegionSize,
|
||||
MEM_RELEASE);
|
||||
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -24,11 +24,7 @@ STUB(CsrNewThread)
|
|||
STUB(CsrProbeForRead)
|
||||
STUB(CsrProbeForWrite)
|
||||
STUB(CsrSetPriorityClass)
|
||||
STUB(DbgPrompt)
|
||||
STUB(DbgSsHandleKmApiMsg)
|
||||
STUB(DbgSsInitialize)
|
||||
STUB(DbgUiConnectToDbg)
|
||||
STUB(DbgUiWaitStateChange)
|
||||
|
||||
STUB(KiRaiseUserExceptionDispatcher)
|
||||
STUB(KiUserExceptionDispatcher)
|
||||
|
||||
|
@ -52,7 +48,6 @@ STUB(PfxInitialize)
|
|||
STUB(PfxInsertPrefix)
|
||||
STUB(PfxRemovePrefix)
|
||||
STUB(RestoreEm87Context)
|
||||
STUB(RtlValidateProcessHeaps)
|
||||
STUB(RtlWalkHeap)
|
||||
STUB(RtlZeroHeap)
|
||||
STUB(RtlpNtCreateKey)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: print.c,v 1.8 2000/02/27 02:08:33 ekohl Exp $
|
||||
/* $Id: print.c,v 1.9 2000/05/25 15:55:08 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -54,4 +54,29 @@ ULONG DbgPrint(PCH Format, ...)
|
|||
return (ULONG)DebugString.Length;
|
||||
}
|
||||
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
DbgPrompt (
|
||||
PCH OutputString,
|
||||
PCH InputString,
|
||||
USHORT InputSize
|
||||
)
|
||||
{
|
||||
ANSI_STRING Output;
|
||||
ANSI_STRING Input;
|
||||
|
||||
Input.Length = 0;
|
||||
Input.MaximumLength = InputSize;
|
||||
Input.Buffer = InputString;
|
||||
|
||||
Output.Length = strlen (OutputString);
|
||||
Output.MaximumLength = Output.Length + 1;
|
||||
Output.Buffer = OutputString;
|
||||
|
||||
/* FIXME: Not implemented yet! */
|
||||
// KdpPromptString (&Output,
|
||||
// &Input);
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: token.c,v 1.5 2000/05/09 21:30:39 ekohl Exp $
|
||||
/* $Id: token.c,v 1.6 2000/05/25 15:55:35 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -17,7 +17,7 @@
|
|||
|
||||
/* GLOBALS *******************************************************************/
|
||||
|
||||
POBJECT_TYPE SeTokenType = NULL;
|
||||
POBJECT_TYPE EXPORTED SeTokenType = NULL;
|
||||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
|
@ -451,7 +451,7 @@ VOID SepAdjustGroups(PACCESS_TOKEN Token,
|
|||
{
|
||||
UNIMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
NTSTATUS STDCALL NtAdjustGroupsToken(IN HANDLE TokenHandle,
|
||||
IN BOOLEAN ResetToDefault,
|
||||
IN PTOKEN_GROUPS NewState,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue