1 /* $Id: rtl.h,v 1.18 2000/08/11 12:30:18 ekohl Exp $
5 #ifndef __INCLUDE_NTDLL_RTL_H
6 #define __INCLUDE_NTDLL_RTL_H
10 typedef struct _CRITICAL_SECTION_DEBUG
{
12 WORD CreatorBackTraceIndex
;
13 struct _CRITICAL_SECTION
*CriticalSection
;
14 LIST_ENTRY ProcessLocksList
;
16 DWORD ContentionCount
;
18 PVOID OwnerBackTrace
[ 5 ];
19 } CRITICAL_SECTION_DEBUG
, *PCRITICAL_SECTION_DEBUG
;
21 typedef struct _CRITICAL_SECTION
{
22 PCRITICAL_SECTION_DEBUG DebugInfo
;
28 } CRITICAL_SECTION
, *PCRITICAL_SECTION
, *LPCRITICAL_SECTION
;
32 * Preliminary data type!!
34 * This definition is not finished yet. It will change in the future.
36 typedef struct _RTL_USER_PROCESS_INFO
38 ULONG Unknown1
; // 0x00
39 HANDLE ProcessHandle
; // 0x04
40 HANDLE ThreadHandle
; // 0x08
41 CLIENT_ID ClientId
; // 0x0C
42 ULONG Unknown5
; // 0x14
43 LONG StackZeroBits
; // 0x18
44 LONG StackReserved
; // 0x1C
45 LONG StackCommit
; // 0x20
46 ULONG Unknown9
; // 0x24
48 } RTL_USER_PROCESS_INFO
, *PRTL_USER_PROCESS_INFO
;
52 #define HEAP_BASE (0xa0000000)
56 RtlDeleteCriticalSection (
57 LPCRITICAL_SECTION lpCriticalSection
62 RtlEnterCriticalSection (
63 LPCRITICAL_SECTION lpCriticalSection
68 RtlInitializeCriticalSection (
69 LPCRITICAL_SECTION pcritical
74 RtlLeaveCriticalSection (
75 LPCRITICAL_SECTION lpCriticalSection
80 RtlTryEntryCriticalSection (
81 LPCRITICAL_SECTION lpCriticalSection
93 RtlEqualComputerName (
94 IN PUNICODE_STRING ComputerName1
,
95 IN PUNICODE_STRING ComputerName2
101 IN PUNICODE_STRING DomainName1
,
102 IN PUNICODE_STRING DomainName2
107 RtlEraseUnicodeString (
108 IN PUNICODE_STRING String
113 RtlLargeIntegerToChar (
114 IN PLARGE_INTEGER Value
,
125 RtlDetermineDosPathNameType_U (
131 RtlDoesFileExists_U (
137 RtlDosPathNameToNtPathName_U (
139 PUNICODE_STRING ntname
,
157 RtlGetCurrentDirectory_U (
164 RtlGetFullPathName_U (
173 RtlGetLongestNtPathLength (
177 ULONG STDCALL
RtlGetNtGlobalFlags(VOID
);
179 BOOLEAN STDCALL
RtlGetNtProductType(PULONG ProductType
);
183 RtlIsDosDeviceName_U (
189 RtlSetCurrentDirectory_U (
193 /* Environment functions */
208 RtlCreateEnvironment (
215 RtlDestroyEnvironment (
221 RtlExpandEnvironmentStrings_U (
223 PUNICODE_STRING Source
,
224 PUNICODE_STRING Destination
,
230 RtlQueryEnvironmentVariable_U (
232 PUNICODE_STRING Name
,
233 PUNICODE_STRING Value
238 RtlSetCurrentEnvironment (
239 PVOID NewEnvironment
,
240 PVOID
*OldEnvironment
245 RtlSetEnvironmentVariable (
247 PUNICODE_STRING Name
,
248 PUNICODE_STRING Value
253 RtlCreateUserThread (
254 IN HANDLE ProcessHandle
,
255 IN PSECURITY_DESCRIPTOR SecurityDescriptor
,
256 IN BOOLEAN CreateSuspended
,
257 IN LONG StackZeroBits
,
258 IN OUT PULONG StackReserved
,
259 IN OUT PULONG StackCommit
,
260 IN PTHREAD_START_ROUTINE StartAddress
,
262 IN OUT PHANDLE ThreadHandle
,
263 IN OUT PCLIENT_ID ClientId
268 RtlFreeUserThreadStack (
269 IN HANDLE ProcessHandle
,
270 IN HANDLE ThreadHandle
274 * Preliminary prototype!!
276 * This prototype is not finished yet. It will change in the future.
280 RtlCreateUserProcess (
281 PUNICODE_STRING CommandLine
,
283 PRTL_USER_PROCESS_PARAMETERS ProcessParameters
, // verified
284 PSECURITY_DESCRIPTOR ProcessSd
,
285 PSECURITY_DESCRIPTOR ThreadSd
,
286 BOOL bInheritHandles
,
287 DWORD dwCreationFlags
,
290 PRTL_USER_PROCESS_INFO ProcessInfo
// verified
295 RtlCreateProcessParameters (
296 IN OUT PRTL_USER_PROCESS_PARAMETERS
*ProcessParameters
,
297 IN PUNICODE_STRING CommandLine
,
298 IN PUNICODE_STRING DllPath
,
299 IN PUNICODE_STRING CurrentDirectory
,
300 IN PUNICODE_STRING ImagePathName
,
301 IN PVOID Environment
,
302 IN PUNICODE_STRING WindowTitle
,
303 IN PUNICODE_STRING DesktopInfo
,
304 IN PUNICODE_STRING ShellInfo
,
305 IN PUNICODE_STRING RuntimeData
308 PRTL_USER_PROCESS_PARAMETERS
310 RtlDeNormalizeProcessParams (
311 IN OUT PRTL_USER_PROCESS_PARAMETERS ProcessParameters
316 RtlDestroyProcessParameters (
317 IN OUT PRTL_USER_PROCESS_PARAMETERS ProcessParameters
320 PRTL_USER_PROCESS_PARAMETERS
322 RtlNormalizeProcessParams (
323 IN OUT PRTL_USER_PROCESS_PARAMETERS ProcessParameters
328 RtlLocalTimeToSystemTime (
329 PLARGE_INTEGER LocalTime
,
330 PLARGE_INTEGER SystemTime
335 RtlSystemTimeToLocalTime (
336 PLARGE_INTEGER SystemTime
,
337 PLARGE_INTEGER LocalTime
340 #endif /* __INCLUDE_NTDLL_RTL_H */