mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 21:23:05 +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
|
#ifndef __INCLUDE_DDK_DBGFUNCS_H
|
||||||
#define __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_CONTROL_C 1
|
||||||
#define DBG_STATUS_SYSRQ 2
|
#define DBG_STATUS_SYSRQ 2
|
||||||
|
@ -10,6 +10,8 @@
|
||||||
VOID STDCALL DbgBreakPointWithStatus (ULONG Status);
|
VOID STDCALL DbgBreakPointWithStatus (ULONG Status);
|
||||||
VOID STDCALL DbgBreakPoint(VOID);
|
VOID STDCALL DbgBreakPoint(VOID);
|
||||||
ULONG DbgPrint(PCH Format,...);
|
ULONG DbgPrint(PCH Format,...);
|
||||||
|
VOID STDCALL DbgPrompt (PCH OutputString, PCH InputString, USHORT InputSize);
|
||||||
|
|
||||||
|
|
||||||
#define DBG_GET_SHOW_FACILITY 0x0001
|
#define DBG_GET_SHOW_FACILITY 0x0001
|
||||||
#define DBG_GET_SHOW_SEVERITY 0x0002
|
#define DBG_GET_SHOW_SEVERITY 0x0002
|
||||||
|
|
|
@ -87,7 +87,7 @@ typedef struct _PEB
|
||||||
PRTL_USER_PROCESS_PARAMETERS ProcessParameters; // 10h
|
PRTL_USER_PROCESS_PARAMETERS ProcessParameters; // 10h
|
||||||
PVOID SubSystemData; // 14h
|
PVOID SubSystemData; // 14h
|
||||||
PVOID ProcessHeap; // 18h
|
PVOID ProcessHeap; // 18h
|
||||||
PVOID LastPebLock; // 1Ch
|
PVOID FastPebLock; // 1Ch
|
||||||
PVOID FastPebLockRoutine; // 20h
|
PVOID FastPebLockRoutine; // 20h
|
||||||
PVOID FastPebUnlockRoutine; // 24h
|
PVOID FastPebUnlockRoutine; // 24h
|
||||||
ULONG EnvironmentUpdateCount; // 28h
|
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
|
#ifndef __INCLUDE_NTDLL_DBG_H
|
||||||
#define __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
|
NTSTATUS
|
||||||
STDCALL
|
STDCALL
|
||||||
|
@ -13,6 +27,12 @@ DbgUiContinue (
|
||||||
ULONG ContinueStatus
|
ULONG ContinueStatus
|
||||||
);
|
);
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
STDCALL
|
||||||
|
DbgUiWaitStateChange (
|
||||||
|
ULONG Unknown1,
|
||||||
|
ULONG Unknown2
|
||||||
|
);
|
||||||
|
|
||||||
#endif /* __INCLUDE_NTDLL_DBG_H */
|
#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
|
IN OUT PCHAR String
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
/* Path functions */
|
/* Path functions */
|
||||||
|
|
||||||
ULONG
|
ULONG
|
||||||
|
@ -235,6 +236,13 @@ RtlCreateUserThread (
|
||||||
IN OUT PCLIENT_ID ClientId
|
IN OUT PCLIENT_ID ClientId
|
||||||
);
|
);
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
STDCALL
|
||||||
|
RtlFreeUserThreadStack (
|
||||||
|
IN HANDLE ProcessHandle,
|
||||||
|
IN HANDLE ThreadHandle
|
||||||
|
);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Preliminary prototype!!
|
* Preliminary prototype!!
|
||||||
*
|
*
|
||||||
|
|
|
@ -28,14 +28,18 @@ typedef ULONG TOKEN_TYPE, *PTOKEN_TYPE;
|
||||||
#define TokenPrimary ((TOKEN_TYPE)1)
|
#define TokenPrimary ((TOKEN_TYPE)1)
|
||||||
#define TokenImpersonation ((TOKEN_TYPE)2)
|
#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_MASK, *PACCESS_MASK;
|
||||||
typedef ULONG ACCESS_MODE, *PACCESS_MODE;
|
typedef ULONG ACCESS_MODE, *PACCESS_MODE;
|
||||||
|
|
||||||
typedef struct _SECURITY_QUALITY_OF_SERVICE {
|
typedef struct _SECURITY_QUALITY_OF_SERVICE {
|
||||||
DWORD Length;
|
DWORD Length;
|
||||||
SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
|
SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
|
||||||
/* SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; */
|
SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
|
||||||
WINBOOL ContextTrackingMode;
|
|
||||||
BOOLEAN EffectiveOnly;
|
BOOLEAN EffectiveOnly;
|
||||||
} SECURITY_QUALITY_OF_SERVICE;
|
} 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
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -12,11 +12,167 @@
|
||||||
/* INCLUDES *****************************************************************/
|
/* INCLUDES *****************************************************************/
|
||||||
|
|
||||||
#include <ddk/ntddk.h>
|
#include <ddk/ntddk.h>
|
||||||
|
#include <ntdll/rtl.h>
|
||||||
#include <ntdll/dbg.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 *****************************************************************/
|
/* 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
|
NTSTATUS
|
||||||
STDCALL
|
STDCALL
|
||||||
DbgUiContinue (
|
DbgUiContinue (
|
||||||
|
@ -27,4 +183,14 @@ DbgUiContinue (
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NTSTATUS
|
||||||
|
STDCALL
|
||||||
|
DbgUiWaitStateChange (
|
||||||
|
ULONG Unknown1,
|
||||||
|
ULONG Unknown2
|
||||||
|
)
|
||||||
|
{
|
||||||
|
return STATUS_NOT_IMPLEMENTED;
|
||||||
|
}
|
||||||
|
|
||||||
/* EOF */
|
/* 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
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -46,4 +46,29 @@ DbgPrint(PCH Format, ...)
|
||||||
return (ULONG)DebugString.Length;
|
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 */
|
/* 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
|
; ReactOS Operating System
|
||||||
;
|
;
|
||||||
LIBRARY ntdll.dll
|
LIBRARY ntdll.dll
|
||||||
|
|
||||||
EXPORTS
|
EXPORTS
|
||||||
|
;CsrAllocateCaptureBuffer
|
||||||
|
;CsrAllocateCapturePointer
|
||||||
|
;CsrAllocateMessagePointer
|
||||||
|
;CsrCaptureMessageBuffer
|
||||||
|
;CsrCaptureMessageString
|
||||||
|
;CsrCaptureTimeout
|
||||||
CsrClientCallServer@16
|
CsrClientCallServer@16
|
||||||
;CsrClientConnectToServer@24
|
;CsrClientConnectToServer@24
|
||||||
|
;CsrFreeCaptureBuffer
|
||||||
|
;CsrIdentifyAlertableThread
|
||||||
|
;CrsNewThread
|
||||||
|
;CsrProbeForRead
|
||||||
|
;CsrProbeForWrite
|
||||||
CsrSetPriorityClass@8
|
CsrSetPriorityClass@8
|
||||||
DbgBreakPoint@0
|
DbgBreakPoint@0
|
||||||
DbgPrint
|
DbgPrint
|
||||||
;DbgPrompt
|
DbgPrompt@12
|
||||||
;DbgSsHandleKmApiMsg
|
DbgSsHandleKmApiMsg@8
|
||||||
;DbgSsInitialize
|
DbgSsInitialize@16
|
||||||
;DbgUiConnectToDbg
|
DbgUiConnectToDbg@0
|
||||||
DbgUiContinue@8
|
DbgUiContinue@8
|
||||||
;DbgUiWaitStateChange
|
DbgUiWaitStateChange@8
|
||||||
DbgUserBreakPoint@0
|
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
|
NlsAnsiCodePage DATA
|
||||||
NlsMbCodePageTag DATA
|
NlsMbCodePageTag DATA
|
||||||
NlsMbOemCodePageTag DATA
|
NlsMbOemCodePageTag DATA
|
||||||
|
@ -338,7 +369,7 @@ RtlEnlargedIntegerMultiply@8
|
||||||
RtlEnlargedUnsignedDivide@16
|
RtlEnlargedUnsignedDivide@16
|
||||||
RtlEnlargedUnsignedMultiply@8
|
RtlEnlargedUnsignedMultiply@8
|
||||||
RtlEnterCriticalSection@4
|
RtlEnterCriticalSection@4
|
||||||
;RtlEnumProcessHeaps
|
RtlEnumProcessHeaps@8
|
||||||
;RtlEnumerateGenericTable
|
;RtlEnumerateGenericTable
|
||||||
;RtlEnumerateGenericTableWithoutSplaying
|
;RtlEnumerateGenericTableWithoutSplaying
|
||||||
;RtlEnumerateProperties
|
;RtlEnumerateProperties
|
||||||
|
@ -374,7 +405,7 @@ RtlFreeHeap@12
|
||||||
RtlFreeOemString@4
|
RtlFreeOemString@4
|
||||||
RtlFreeSid@4
|
RtlFreeSid@4
|
||||||
RtlFreeUnicodeString@4
|
RtlFreeUnicodeString@4
|
||||||
;RtlFreeUserThreadStack
|
RtlFreeUserThreadStack@8
|
||||||
;RtlGenerate8dot3Name
|
;RtlGenerate8dot3Name
|
||||||
RtlGetAce@12
|
RtlGetAce@12
|
||||||
;RtlGetCallersAddress
|
;RtlGetCallersAddress
|
||||||
|
@ -389,7 +420,7 @@ RtlGetLongestNtPathLength@0
|
||||||
;RtlGetNtGlobalFlags
|
;RtlGetNtGlobalFlags
|
||||||
;RtlGetNtProductType
|
;RtlGetNtProductType
|
||||||
RtlGetOwnerSecurityDescriptor@12
|
RtlGetOwnerSecurityDescriptor@12
|
||||||
;RtlGetProcessHeaps
|
RtlGetProcessHeaps@8
|
||||||
RtlGetProcessHeap@0
|
RtlGetProcessHeap@0
|
||||||
RtlGetSaclSecurityDescriptor@16
|
RtlGetSaclSecurityDescriptor@16
|
||||||
;RtlGetUserInfoHeap
|
;RtlGetUserInfoHeap
|
||||||
|
@ -553,7 +584,7 @@ RtlValidAcl@4
|
||||||
RtlValidSecurityDescriptor@4
|
RtlValidSecurityDescriptor@4
|
||||||
RtlValidSid@4
|
RtlValidSid@4
|
||||||
RtlValidateHeap@12
|
RtlValidateHeap@12
|
||||||
;RtlValidateProcessHeaps
|
RtlValidateProcessHeaps@0
|
||||||
;RtlWalkHeap
|
;RtlWalkHeap
|
||||||
;RtlWriteRegistryValue
|
;RtlWriteRegistryValue
|
||||||
;RtlZeroHeap
|
;RtlZeroHeap
|
||||||
|
@ -900,7 +931,3 @@ wcstombs
|
||||||
wcstoul
|
wcstoul
|
||||||
LdrGetExportByName
|
LdrGetExportByName
|
||||||
LdrGetExportByOrdinal
|
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
|
; ReactOS Operating System
|
||||||
;
|
;
|
||||||
LIBRARY ntdll.dll
|
LIBRARY ntdll.dll
|
||||||
|
|
||||||
EXPORTS
|
EXPORTS
|
||||||
|
;CsrAllocateCaptureBuffer
|
||||||
|
;CsrAllocateCapturePointer
|
||||||
|
;CsrAllocateMessagePointer
|
||||||
|
;CsrCaptureMessageBuffer
|
||||||
|
;CsrCaptureMessageString
|
||||||
|
;CsrCaptureTimeout
|
||||||
CsrClientCallServer=CsrClientCallServer@16
|
CsrClientCallServer=CsrClientCallServer@16
|
||||||
;CsrClientConnectToServer=CsrClientConnectToServer@24
|
;CsrClientConnectToServer=CsrClientConnectToServer@24
|
||||||
|
;CsrFreeCaptureBuffer
|
||||||
|
;CsrIdentifyAlertableThread
|
||||||
|
;CrsNewThread
|
||||||
|
;CsrProbeForRead
|
||||||
|
;CsrProbeForWrite
|
||||||
CsrSetPriorityClass=CsrSetPriorityClass@8
|
CsrSetPriorityClass=CsrSetPriorityClass@8
|
||||||
DbgBreakPoint=DbgBreakPoint@0
|
DbgBreakPoint=DbgBreakPoint@0
|
||||||
DbgPrint
|
DbgPrint
|
||||||
;DbgPrompt
|
DbgPrompt=DbgPrompt@12
|
||||||
;DbgSsHandleKmApiMsg
|
DbgSsHandleKmApiMsg=DbgSsHandleKmApiMsg@8
|
||||||
;DbgSsInitialize
|
DbgSsInitialize=DbgSsInitialize@16
|
||||||
;DbgUiConnectToDbg
|
DbgUiConnectToDbg=DbgUiConnectToDbg@0
|
||||||
DbgUiContinue=DbgUiContinue@8
|
DbgUiContinue=DbgUiContinue@8
|
||||||
;DbgUiWaitStateChange
|
DbgUiWaitStateChange=DbgUiWaitStateChange@8
|
||||||
DbgUserBreakPoint=DbgUserBreakPoint@0
|
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
|
NlsAnsiCodePage DATA
|
||||||
NlsMbCodePageTag DATA
|
NlsMbCodePageTag DATA
|
||||||
NlsMbOemCodePageTag DATA
|
NlsMbOemCodePageTag DATA
|
||||||
|
@ -288,6 +318,7 @@ RtlEnlargedIntegerMultiply=RtlEnlargedIntegerMultiply@8
|
||||||
RtlEnlargedUnsignedDivide=RtlEnlargedUnsignedDivide@16
|
RtlEnlargedUnsignedDivide=RtlEnlargedUnsignedDivide@16
|
||||||
RtlEnlargedUnsignedMultiply=RtlEnlargedUnsignedMultiply@8
|
RtlEnlargedUnsignedMultiply=RtlEnlargedUnsignedMultiply@8
|
||||||
RtlEnterCriticalSection=RtlEnterCriticalSection@4
|
RtlEnterCriticalSection=RtlEnterCriticalSection@4
|
||||||
|
RtlEnumProcessHeaps=RtlEnumProcessHeaps@8
|
||||||
RtlEqualComputerName=RtlEqualComputerName@8
|
RtlEqualComputerName=RtlEqualComputerName@8
|
||||||
RtlEqualDomainName=RtlEqualDomainName@8
|
RtlEqualDomainName=RtlEqualDomainName@8
|
||||||
RtlEqualLuid=RtlEqualLuid@8
|
RtlEqualLuid=RtlEqualLuid@8
|
||||||
|
@ -313,6 +344,7 @@ RtlFreeAnsiString=RtlFreeAnsiString@4
|
||||||
RtlFreeHeap=RtlFreeHeap@12
|
RtlFreeHeap=RtlFreeHeap@12
|
||||||
RtlFreeSid=RtlFreeSid@4
|
RtlFreeSid=RtlFreeSid@4
|
||||||
RtlFreeUnicodeString=RtlFreeUnicodeString@4
|
RtlFreeUnicodeString=RtlFreeUnicodeString@4
|
||||||
|
RtlFreeUserThreadStack=RtlFreeUserThreadStack@8
|
||||||
RtlGetAce=RtlGetAce@12
|
RtlGetAce=RtlGetAce@12
|
||||||
RtlGetControlSecurityDescriptor=RtlGetControlSecurityDescriptor@12
|
RtlGetControlSecurityDescriptor=RtlGetControlSecurityDescriptor@12
|
||||||
RtlGetCurrentDirectory_U=RtlGetCurrentDirectory_U@8
|
RtlGetCurrentDirectory_U=RtlGetCurrentDirectory_U@8
|
||||||
|
@ -321,6 +353,7 @@ RtlGetFullPathName_U=RtlGetFullPathName_U@16
|
||||||
RtlGetGroupSecurityDescriptor=RtlGetGroupSecurityDescriptor@12
|
RtlGetGroupSecurityDescriptor=RtlGetGroupSecurityDescriptor@12
|
||||||
RtlGetLongestNtPathLength=RtlGetLongestNtPathLength@0
|
RtlGetLongestNtPathLength=RtlGetLongestNtPathLength@0
|
||||||
RtlGetOwnerSecurityDescriptor=RtlGetOwnerSecurityDescriptor@12
|
RtlGetOwnerSecurityDescriptor=RtlGetOwnerSecurityDescriptor@12
|
||||||
|
RtlGetProcessHeaps=RtlGetProcessHeaps@8
|
||||||
RtlGetProcessHeap=RtlGetProcessHeap@0
|
RtlGetProcessHeap=RtlGetProcessHeap@0
|
||||||
RtlGetSaclSecurityDescriptor=RtlGetSaclSecurityDescriptor@16
|
RtlGetSaclSecurityDescriptor=RtlGetSaclSecurityDescriptor@16
|
||||||
RtlIdentifierAuthoritySid=RtlIdentifierAuthoritySid@4
|
RtlIdentifierAuthoritySid=RtlIdentifierAuthoritySid@4
|
||||||
|
@ -420,6 +453,7 @@ RtlValidAcl=RtlValidAcl@4
|
||||||
RtlValidSecurityDescriptor=RtlValidSecurityDescriptor@4
|
RtlValidSecurityDescriptor=RtlValidSecurityDescriptor@4
|
||||||
RtlValidSid=RtlValidSid@4
|
RtlValidSid=RtlValidSid@4
|
||||||
RtlValidateHeap=RtlValidateHeap@12
|
RtlValidateHeap=RtlValidateHeap@12
|
||||||
|
RtlValidateProcessHeaps=RtlValidateProcessHeaps@0
|
||||||
RtlZeroMemory=RtlZeroMemory@8
|
RtlZeroMemory=RtlZeroMemory@8
|
||||||
RtlxAnsiStringToUnicodeSize=RtlxAnsiStringToUnicodeSize@4
|
RtlxAnsiStringToUnicodeSize=RtlxAnsiStringToUnicodeSize@4
|
||||||
RtlxOemStringToUnicodeSize=RtlxOemStringToUnicodeSize@4
|
RtlxOemStringToUnicodeSize=RtlxOemStringToUnicodeSize@4
|
||||||
|
@ -743,7 +777,3 @@ wcstombs
|
||||||
wcstoul
|
wcstoul
|
||||||
LdrGetExportByName
|
LdrGetExportByName
|
||||||
LdrGetExportByOrdinal
|
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
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -21,11 +21,16 @@
|
||||||
//#define NDEBUG
|
//#define NDEBUG
|
||||||
#include <ntdll/ntdll.h>
|
#include <ntdll/ntdll.h>
|
||||||
|
|
||||||
|
|
||||||
|
VOID RtlpInitProcessHeaps (PPEB Peb);
|
||||||
|
|
||||||
/* GLOBALS *******************************************************************/
|
/* GLOBALS *******************************************************************/
|
||||||
|
|
||||||
DLL LdrDllListHead;
|
DLL LdrDllListHead;
|
||||||
extern unsigned int _image_base__;
|
extern unsigned int _image_base__;
|
||||||
|
|
||||||
|
CRITICAL_SECTION PebLock;
|
||||||
|
|
||||||
ULONG NtGlobalFlag = 0;
|
ULONG NtGlobalFlag = 0;
|
||||||
|
|
||||||
|
|
||||||
|
@ -76,6 +81,15 @@ VOID LdrStartup(VOID)
|
||||||
/* normalize process parameters */
|
/* normalize process parameters */
|
||||||
RtlNormalizeProcessParams (Peb->ProcessParameters);
|
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);
|
NTHeaders = (PIMAGE_NT_HEADERS)(ImageBase + PEDosHeader->e_lfanew);
|
||||||
|
|
||||||
/* create process heap */
|
/* create process heap */
|
||||||
|
@ -91,6 +105,15 @@ VOID LdrStartup(VOID)
|
||||||
ZwTerminateProcess(NtCurrentProcess(),STATUS_UNSUCCESSFUL);
|
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);
|
EntryPoint = LdrPEStartup((PVOID)ImageBase, NULL);
|
||||||
if (EntryPoint == NULL)
|
if (EntryPoint == NULL)
|
||||||
{
|
{
|
||||||
|
|
|
@ -12,6 +12,8 @@
|
||||||
#define NDEBUG
|
#define NDEBUG
|
||||||
#include <ntdll/ntdll.h>
|
#include <ntdll/ntdll.h>
|
||||||
|
|
||||||
|
CRITICAL_SECTION ProcessHeapsLock;
|
||||||
|
|
||||||
/* Note: the heap data structures are based on what Pietrek describes in his
|
/* Note: the heap data structures are based on what Pietrek describes in his
|
||||||
* book 'Windows 95 System Programming Secrets'. The layout is not exactly
|
* book 'Windows 95 System Programming Secrets'. The layout is not exactly
|
||||||
* the same, but could be easily adapted if it turns out some programs
|
* 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;
|
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
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -94,7 +94,7 @@ RtlCustomCPToUnicodeN (
|
||||||
|
|
||||||
for (i = 0; i < Size; i++)
|
for (i = 0; i < Size; i++)
|
||||||
{
|
{
|
||||||
*UnicodeString = NlsData->MultiByteToUnicode[*CustomString];
|
*UnicodeString = NlsData->MultiByteToUnicode[(int)*CustomString];
|
||||||
UnicodeString++;
|
UnicodeString++;
|
||||||
CustomString++;
|
CustomString++;
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,7 +13,8 @@
|
||||||
|
|
||||||
#include <ddk/ntddk.h>
|
#include <ddk/ntddk.h>
|
||||||
#include <internal/i386/segment.h>
|
#include <internal/i386/segment.h>
|
||||||
#include <string.h>
|
#include <internal/teb.h>
|
||||||
|
//#include <string.h>
|
||||||
#include <ntdll/rtl.h>
|
#include <ntdll/rtl.h>
|
||||||
|
|
||||||
#define NDEBUG
|
#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 */
|
/* EOF */
|
||||||
|
|
|
@ -24,11 +24,7 @@ STUB(CsrNewThread)
|
||||||
STUB(CsrProbeForRead)
|
STUB(CsrProbeForRead)
|
||||||
STUB(CsrProbeForWrite)
|
STUB(CsrProbeForWrite)
|
||||||
STUB(CsrSetPriorityClass)
|
STUB(CsrSetPriorityClass)
|
||||||
STUB(DbgPrompt)
|
|
||||||
STUB(DbgSsHandleKmApiMsg)
|
|
||||||
STUB(DbgSsInitialize)
|
|
||||||
STUB(DbgUiConnectToDbg)
|
|
||||||
STUB(DbgUiWaitStateChange)
|
|
||||||
STUB(KiRaiseUserExceptionDispatcher)
|
STUB(KiRaiseUserExceptionDispatcher)
|
||||||
STUB(KiUserExceptionDispatcher)
|
STUB(KiUserExceptionDispatcher)
|
||||||
|
|
||||||
|
@ -52,7 +48,6 @@ STUB(PfxInitialize)
|
||||||
STUB(PfxInsertPrefix)
|
STUB(PfxInsertPrefix)
|
||||||
STUB(PfxRemovePrefix)
|
STUB(PfxRemovePrefix)
|
||||||
STUB(RestoreEm87Context)
|
STUB(RestoreEm87Context)
|
||||||
STUB(RtlValidateProcessHeaps)
|
|
||||||
STUB(RtlWalkHeap)
|
STUB(RtlWalkHeap)
|
||||||
STUB(RtlZeroHeap)
|
STUB(RtlZeroHeap)
|
||||||
STUB(RtlpNtCreateKey)
|
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
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -54,4 +54,29 @@ ULONG DbgPrint(PCH Format, ...)
|
||||||
return (ULONG)DebugString.Length;
|
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 */
|
/* 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
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -17,7 +17,7 @@
|
||||||
|
|
||||||
/* GLOBALS *******************************************************************/
|
/* GLOBALS *******************************************************************/
|
||||||
|
|
||||||
POBJECT_TYPE SeTokenType = NULL;
|
POBJECT_TYPE EXPORTED SeTokenType = NULL;
|
||||||
|
|
||||||
/* FUNCTIONS *****************************************************************/
|
/* FUNCTIONS *****************************************************************/
|
||||||
|
|
||||||
|
@ -451,7 +451,7 @@ VOID SepAdjustGroups(PACCESS_TOKEN Token,
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
NTSTATUS STDCALL NtAdjustGroupsToken(IN HANDLE TokenHandle,
|
NTSTATUS STDCALL NtAdjustGroupsToken(IN HANDLE TokenHandle,
|
||||||
IN BOOLEAN ResetToDefault,
|
IN BOOLEAN ResetToDefault,
|
||||||
IN PTOKEN_GROUPS NewState,
|
IN PTOKEN_GROUPS NewState,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue