Renamed pseudo target 'floppy' to 'install'
[reactos.git] / reactos / include / ntdll / rtl.h
1 /* $Id: rtl.h,v 1.18 2000/08/11 12:30:18 ekohl Exp $
2 *
3 */
4
5 #ifndef __INCLUDE_NTDLL_RTL_H
6 #define __INCLUDE_NTDLL_RTL_H
7
8 #include <napi/teb.h>
9
10 typedef struct _CRITICAL_SECTION_DEBUG {
11 WORD Type;
12 WORD CreatorBackTraceIndex;
13 struct _CRITICAL_SECTION *CriticalSection;
14 LIST_ENTRY ProcessLocksList;
15 DWORD EntryCount;
16 DWORD ContentionCount;
17 DWORD Depth;
18 PVOID OwnerBackTrace[ 5 ];
19 } CRITICAL_SECTION_DEBUG, *PCRITICAL_SECTION_DEBUG;
20
21 typedef struct _CRITICAL_SECTION {
22 PCRITICAL_SECTION_DEBUG DebugInfo;
23 LONG LockCount;
24 LONG RecursionCount;
25 HANDLE OwningThread;
26 HANDLE LockSemaphore;
27 DWORD Reserved;
28 } CRITICAL_SECTION, *PCRITICAL_SECTION, *LPCRITICAL_SECTION;
29
30
31 /*
32 * Preliminary data type!!
33 *
34 * This definition is not finished yet. It will change in the future.
35 */
36 typedef struct _RTL_USER_PROCESS_INFO
37 {
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
47 // more data ... ???
48 } RTL_USER_PROCESS_INFO, *PRTL_USER_PROCESS_INFO;
49
50
51
52 #define HEAP_BASE (0xa0000000)
53
54 VOID
55 STDCALL
56 RtlDeleteCriticalSection (
57 LPCRITICAL_SECTION lpCriticalSection
58 );
59
60 VOID
61 STDCALL
62 RtlEnterCriticalSection (
63 LPCRITICAL_SECTION lpCriticalSection
64 );
65
66 VOID
67 STDCALL
68 RtlInitializeCriticalSection (
69 LPCRITICAL_SECTION pcritical
70 );
71
72 VOID
73 STDCALL
74 RtlLeaveCriticalSection (
75 LPCRITICAL_SECTION lpCriticalSection
76 );
77
78 BOOLEAN
79 STDCALL
80 RtlTryEntryCriticalSection (
81 LPCRITICAL_SECTION lpCriticalSection
82 );
83
84 UINT
85 STDCALL
86 RtlCompactHeap (
87 HANDLE heap,
88 DWORD flags
89 );
90
91 BOOLEAN
92 STDCALL
93 RtlEqualComputerName (
94 IN PUNICODE_STRING ComputerName1,
95 IN PUNICODE_STRING ComputerName2
96 );
97
98 BOOLEAN
99 STDCALL
100 RtlEqualDomainName (
101 IN PUNICODE_STRING DomainName1,
102 IN PUNICODE_STRING DomainName2
103 );
104
105 VOID
106 STDCALL
107 RtlEraseUnicodeString (
108 IN PUNICODE_STRING String
109 );
110
111 NTSTATUS
112 STDCALL
113 RtlLargeIntegerToChar (
114 IN PLARGE_INTEGER Value,
115 IN ULONG Base,
116 IN ULONG Length,
117 IN OUT PCHAR String
118 );
119
120
121 /* Path functions */
122
123 ULONG
124 STDCALL
125 RtlDetermineDosPathNameType_U (
126 PWSTR Path
127 );
128
129 BOOLEAN
130 STDCALL
131 RtlDoesFileExists_U (
132 PWSTR FileName
133 );
134
135 BOOLEAN
136 STDCALL
137 RtlDosPathNameToNtPathName_U (
138 PWSTR dosname,
139 PUNICODE_STRING ntname,
140 PWSTR *shortname,
141 PCURDIR nah
142 );
143
144 ULONG
145 STDCALL
146 RtlDosSearchPath_U (
147 WCHAR *sp,
148 WCHAR *name,
149 WCHAR *ext,
150 ULONG buf_sz,
151 WCHAR *buffer,
152 WCHAR **shortname
153 );
154
155 ULONG
156 STDCALL
157 RtlGetCurrentDirectory_U (
158 ULONG MaximumLength,
159 PWSTR Buffer
160 );
161
162 ULONG
163 STDCALL
164 RtlGetFullPathName_U (
165 WCHAR *dosname,
166 ULONG size,
167 WCHAR *buf,
168 WCHAR **shortname
169 );
170
171 ULONG
172 STDCALL
173 RtlGetLongestNtPathLength (
174 VOID
175 );
176
177 ULONG STDCALL RtlGetNtGlobalFlags(VOID);
178
179 BOOLEAN STDCALL RtlGetNtProductType(PULONG ProductType);
180
181 ULONG
182 STDCALL
183 RtlIsDosDeviceName_U (
184 PWSTR DeviceName
185 );
186
187 NTSTATUS
188 STDCALL
189 RtlSetCurrentDirectory_U (
190 PUNICODE_STRING name
191 );
192
193 /* Environment functions */
194 VOID
195 STDCALL
196 RtlAcquirePebLock (
197 VOID
198 );
199
200 VOID
201 STDCALL
202 RtlReleasePebLock (
203 VOID
204 );
205
206 NTSTATUS
207 STDCALL
208 RtlCreateEnvironment (
209 BOOLEAN Inherit,
210 PVOID *Environment
211 );
212
213 VOID
214 STDCALL
215 RtlDestroyEnvironment (
216 PVOID Environment
217 );
218
219 NTSTATUS
220 STDCALL
221 RtlExpandEnvironmentStrings_U (
222 PVOID Environment,
223 PUNICODE_STRING Source,
224 PUNICODE_STRING Destination,
225 PULONG Length
226 );
227
228 NTSTATUS
229 STDCALL
230 RtlQueryEnvironmentVariable_U (
231 PVOID Environment,
232 PUNICODE_STRING Name,
233 PUNICODE_STRING Value
234 );
235
236 VOID
237 STDCALL
238 RtlSetCurrentEnvironment (
239 PVOID NewEnvironment,
240 PVOID *OldEnvironment
241 );
242
243 NTSTATUS
244 STDCALL
245 RtlSetEnvironmentVariable (
246 PVOID *Environment,
247 PUNICODE_STRING Name,
248 PUNICODE_STRING Value
249 );
250
251 NTSTATUS
252 STDCALL
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,
261 IN PVOID Parameter,
262 IN OUT PHANDLE ThreadHandle,
263 IN OUT PCLIENT_ID ClientId
264 );
265
266 NTSTATUS
267 STDCALL
268 RtlFreeUserThreadStack (
269 IN HANDLE ProcessHandle,
270 IN HANDLE ThreadHandle
271 );
272
273 /*
274 * Preliminary prototype!!
275 *
276 * This prototype is not finished yet. It will change in the future.
277 */
278 NTSTATUS
279 STDCALL
280 RtlCreateUserProcess (
281 PUNICODE_STRING CommandLine,
282 ULONG Unknown2,
283 PRTL_USER_PROCESS_PARAMETERS ProcessParameters, // verified
284 PSECURITY_DESCRIPTOR ProcessSd,
285 PSECURITY_DESCRIPTOR ThreadSd,
286 BOOL bInheritHandles,
287 DWORD dwCreationFlags,
288 ULONG Unknown8,
289 ULONG Unknown9,
290 PRTL_USER_PROCESS_INFO ProcessInfo // verified
291 );
292
293 NTSTATUS
294 STDCALL
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
306 );
307
308 PRTL_USER_PROCESS_PARAMETERS
309 STDCALL
310 RtlDeNormalizeProcessParams (
311 IN OUT PRTL_USER_PROCESS_PARAMETERS ProcessParameters
312 );
313
314 VOID
315 STDCALL
316 RtlDestroyProcessParameters (
317 IN OUT PRTL_USER_PROCESS_PARAMETERS ProcessParameters
318 );
319
320 PRTL_USER_PROCESS_PARAMETERS
321 STDCALL
322 RtlNormalizeProcessParams (
323 IN OUT PRTL_USER_PROCESS_PARAMETERS ProcessParameters
324 );
325
326 NTSTATUS
327 STDCALL
328 RtlLocalTimeToSystemTime (
329 PLARGE_INTEGER LocalTime,
330 PLARGE_INTEGER SystemTime
331 );
332
333 NTSTATUS
334 STDCALL
335 RtlSystemTimeToLocalTime (
336 PLARGE_INTEGER SystemTime,
337 PLARGE_INTEGER LocalTime
338 );
339
340 #endif /* __INCLUDE_NTDLL_RTL_H */
341
342 /* EOF */