blob: 69b3d19877750318f2612f7e25c04b2c3127dfca [file] [log] [blame]
Juergen Schmiedcdbdab71999-02-12 13:44:38 +00001/*
2 this file defines interfaces mainly exposed to device drivers and
3 native nt dll's
4
5*/
6#ifndef __WINE_NTDDK_H
7#define __WINE_NTDDK_H
8
Alexandre Julliard89fae7e1999-05-12 12:47:01 +00009#include "ntdef.h"
10#include "winnt.h"
Dmitry Timoshkov1da43e32000-02-25 21:36:57 +000011#include "winreg.h"
Juergen Schmied7f0c5f31999-03-09 17:46:10 +000012#include "winbase.h" /* fixme: should be taken out sometimes */
Juergen Schmiedcdbdab71999-02-12 13:44:38 +000013
Juergen Schmied02d45e52000-01-23 22:35:33 +000014#include "pshpack1.h"
15
Juergen Schmied7f0c5f31999-03-09 17:46:10 +000016#ifdef __cplusplus
17extern "C" {
18#endif
Juergen Schmiedcdbdab71999-02-12 13:44:38 +000019
20/******************
21 * asynchronous I/O
22 */
Juergen Schmied3426d851999-02-19 16:29:05 +000023#undef Status /* conflict with X11-includes*/
Juergen Schmiedcdbdab71999-02-12 13:44:38 +000024
Juergen Schmiedcdbdab71999-02-12 13:44:38 +000025typedef struct _IO_STATUS_BLOCK
Patrik Stridvall32b43251999-09-14 07:52:16 +000026{
27 union {
28 NTSTATUS Status;
Juergen Schmiedcdbdab71999-02-12 13:44:38 +000029 PVOID Pointer;
Patrik Stridvall32b43251999-09-14 07:52:16 +000030 } DUMMYUNIONNAME;
Juergen Schmiedcdbdab71999-02-12 13:44:38 +000031 ULONG_PTR Information;
32} IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
33
Francois Gougetae41e8c2000-06-11 20:07:58 +000034typedef VOID NTAPI (*PIO_APC_ROUTINE) ( PVOID ApcContext, PIO_STATUS_BLOCK IoStatusBlock, ULONG Reserved );
Juergen Schmiedcdbdab71999-02-12 13:44:38 +000035
Juergen Schmied02d45e52000-01-23 22:35:33 +000036/*
37 registry
38 */
39
40 /* key information */
41typedef struct _KEY_BASIC_INFORMATION {
42 FILETIME LastWriteTime;
43 ULONG TitleIndex;
44 ULONG NameLength;
45 WCHAR Name[1];
46} KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
47
48typedef struct _KEY_NODE_INFORMATION
49{
50 FILETIME LastWriteTime;
51 ULONG TitleIndex;
52 ULONG ClassOffset;
53 ULONG ClassLength;
54 ULONG NameLength;
55 WCHAR Name[1];
56/* Class[1]; */
57} KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
58
59typedef struct _KEY_FULL_INFORMATION
60{
61 FILETIME LastWriteTime;
62 ULONG TitleIndex;
63 ULONG ClassOffset;
64 ULONG ClassLength;
65 ULONG SubKeys;
66 ULONG MaxNameLen;
67 ULONG MaxClassLen;
68 ULONG Values;
69 ULONG MaxValueNameLen;
70 ULONG MaxValueDataLen;
71 WCHAR Class[1];
72} KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
73
74typedef enum _KEY_INFORMATION_CLASS
75{
Juergen Schmiedcdbdab71999-02-12 13:44:38 +000076 KeyBasicInformation,
77 KeyNodeInformation,
78 KeyFullInformation
79} KEY_INFORMATION_CLASS;
80
Juergen Schmied02d45e52000-01-23 22:35:33 +000081typedef struct _KEY_VALUE_ENTRY
82{
83 PUNICODE_STRING ValueName;
84 ULONG DataLength;
85 ULONG DataOffset;
86 ULONG Type;
87} KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
88
89/* value information */
90typedef struct _KEY_VALUE_BASIC_INFORMATION
91{
92 ULONG TitleIndex;
93 ULONG Type;
94 ULONG NameLength;
95 WCHAR Name[1];
96} KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
97
98typedef struct _KEY_VALUE_FULL_INFORMATION
99{
100 ULONG TitleIndex;
101 ULONG Type;
102 ULONG DataOffset;
103 ULONG DataLength;
104 ULONG NameLength;
105 WCHAR Name[1];
106/* UCHAR Data[1];*/
107} KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
108
109typedef struct _KEY_VALUE_PARTIAL_INFORMATION
110{
111 ULONG TitleIndex;
112 ULONG Type;
113 ULONG DataLength;
114 UCHAR Data[1];
115} KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
116
117typedef enum _KEY_VALUE_INFORMATION_CLASS
118{
Juergen Schmiedcdbdab71999-02-12 13:44:38 +0000119 KeyValueBasicInformation,
120 KeyValueFullInformation,
121 KeyValuePartialInformation,
122 KeyValueFullInformationAlign64,
123 KeyValuePartialInformationAlign64
124} KEY_VALUE_INFORMATION_CLASS;
125
Juergen Schmied02d45e52000-01-23 22:35:33 +0000126NTSTATUS WINAPI RtlFormatCurrentUserKeyPath(
127 PUNICODE_STRING KeyPath);
128
129/* thread information */
130
Juergen Schmiedcdbdab71999-02-12 13:44:38 +0000131typedef enum _THREADINFOCLASS
132{ ThreadBasicInformation,
133 ThreadTimes,
134 ThreadPriority,
135 ThreadBasePriority,
136 ThreadAffinityMask,
137 ThreadImpersonationToken,
138 ThreadDescriptorTableEntry,
139 ThreadEnableAlignmentFaultFixup,
140 ThreadEventPair_Reusable,
141 ThreadQuerySetWin32StartAddress,
142 ThreadZeroTlsCell,
143 ThreadPerformanceCount,
144 ThreadAmILastThread,
145 ThreadIdealProcessor,
146 ThreadPriorityBoost,
147 ThreadSetTlsArrayAddress,
148 ThreadIsIoPending,
149 MaxThreadInfoClass
150} THREADINFOCLASS;
151
Juergen Schmied02d45e52000-01-23 22:35:33 +0000152/* file information */
153
Juergen Schmiedcdbdab71999-02-12 13:44:38 +0000154typedef enum _FILE_INFORMATION_CLASS {
155 FileDirectoryInformation = 1,
156 FileFullDirectoryInformation,
157 FileBothDirectoryInformation,
158 FileBasicInformation,
159 FileStandardInformation,
160 FileInternalInformation,
161 FileEaInformation,
162 FileAccessInformation,
163 FileNameInformation,
164 FileRenameInformation,
165 FileLinkInformation,
166 FileNamesInformation,
167 FileDispositionInformation,
168 FilePositionInformation,
169 FileFullEaInformation,
170 FileModeInformation,
171 FileAlignmentInformation,
172 FileAllInformation,
173 FileAllocationInformation,
174 FileEndOfFileInformation,
175 FileAlternateNameInformation,
176 FileStreamInformation,
177 FilePipeInformation,
178 FilePipeLocalInformation,
179 FilePipeRemoteInformation,
180 FileMailslotQueryInformation,
181 FileMailslotSetInformation,
182 FileCompressionInformation,
183 FileObjectIdInformation,
184 FileCompletionInformation,
185 FileMoveClusterInformation,
186 FileQuotaInformation,
187 FileReparsePointInformation,
188 FileNetworkOpenInformation,
189 FileAttributeTagInformation,
190 FileTrackingInformation,
191 FileMaximumInformation
192} FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
193
Patrik Stridvallb8684a21999-07-31 17:32:05 +0000194typedef enum _FSINFOCLASS {
195 FileFsVolumeInformation = 1,
196 FileFsLabelInformation,
197 FileFsSizeInformation,
198 FileFsDeviceInformation,
199 FileFsAttributeInformation,
200 FileFsControlInformation,
201 FileFsFullSizeInformation,
202 FileFsObjectIdInformation,
203 FileFsMaximumInformation
204} FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
205
Juergen Schmiedcdbdab71999-02-12 13:44:38 +0000206typedef enum _SECTION_INHERIT
Juergen Schmied7f0c5f31999-03-09 17:46:10 +0000207{
208 ViewShare = 1,
Juergen Schmiedcdbdab71999-02-12 13:44:38 +0000209 ViewUnmap = 2
Juergen Schmied7f0c5f31999-03-09 17:46:10 +0000210
Juergen Schmiedcdbdab71999-02-12 13:44:38 +0000211} SECTION_INHERIT;
212
Juergen Schmied02d45e52000-01-23 22:35:33 +0000213/* object information */
214
Juergen Schmiedcdbdab71999-02-12 13:44:38 +0000215typedef enum _OBJECT_INFORMATION_CLASS
Juergen Schmied7f0c5f31999-03-09 17:46:10 +0000216{
217 DunnoTheConstants1
218
Juergen Schmiedcdbdab71999-02-12 13:44:38 +0000219} OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS;
220
Juergen Schmiedcdbdab71999-02-12 13:44:38 +0000221
Juergen Schmied02d45e52000-01-23 22:35:33 +0000222/* system information */
Juergen Schmied7f0c5f31999-03-09 17:46:10 +0000223
224typedef enum SYSTEM_INFORMATION_CLASS
225{ Unknown1 = 1,
226 Unknown2,
227 Unknown3,
228 Unknown4,
229 SystemPerformanceInformation
230} SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS;
231
232/* reading coffee grounds... */
233typedef struct _THREAD_INFO
234{ DWORD Unknown1[6];
235 DWORD ThreadID;
236 DWORD Unknown2[3];
237 DWORD Status;
238 DWORD WaitReason;
239 DWORD Unknown3[4];
240} THREAD_INFO, PTHREAD_INFO;
241
242typedef struct _VM_COUNTERS_
243{ ULONG PeakVirtualSize;
244 ULONG VirtualSize;
245 ULONG PageFaultCount;
246 ULONG PeakWorkingSetSize;
247 ULONG WorkingSetSize;
248 ULONG QuotaPeakPagedPoolUsage;
249 ULONG QuotaPagedPoolUsage;
250 ULONG QuotaPeakNonPagedPoolUsage;
251 ULONG QuotaNonPagedPoolUsage;
252 ULONG PagefileUsage;
253 ULONG PeakPagefileUsage;
254} VM_COUNTERS, *PVM_COUNTERS;
255
Juergen Schmied02d45e52000-01-23 22:35:33 +0000256/* process information */
257
Juergen Schmied7f0c5f31999-03-09 17:46:10 +0000258typedef struct _PROCESS_INFO
259{ DWORD Offset; /* 00 offset to next PROCESS_INFO ok*/
260 DWORD ThreadCount; /* 04 number of ThreadInfo member ok */
261 DWORD Unknown1[6];
262 FILETIME CreationTime; /* 20 */
263 DWORD Unknown2[5];
264 PWCHAR ProcessName; /* 3c ok */
265 DWORD BasePriority;
266 DWORD ProcessID; /* 44 ok*/
267 DWORD ParentProcessID;
268 DWORD HandleCount;
269 DWORD Unknown3[2]; /* 50 */
270 ULONG PeakVirtualSize;
271 ULONG VirtualSize;
272 ULONG PageFaultCount;
273 ULONG PeakWorkingSetSize;
274 ULONG WorkingSetSize;
275 ULONG QuotaPeakPagedPoolUsage;
276 ULONG QuotaPagedPoolUsage;
277 ULONG QuotaPeakNonPagedPoolUsage;
278 ULONG QuotaNonPagedPoolUsage;
279 ULONG PagefileUsage;
280 ULONG PeakPagefileUsage;
281 DWORD PrivateBytes;
282 DWORD Unknown6[4];
283 THREAD_INFO ati[ANYSIZE_ARRAY]; /* 94 size=0x40*/
284} PROCESS_INFO, PPROCESS_INFO;
285
286NTSTATUS WINAPI NtQuerySystemInformation(
287 IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
288 OUT PVOID SystemInformation,
289 IN ULONG Length,
290 OUT PULONG ResultLength);
291
292/*
293 * system configuration
294 */
295
296
Juergen Schmiedcdbdab71999-02-12 13:44:38 +0000297typedef struct _SYSTEM_TIME_ADJUSTMENT
298{
299 ULONG TimeAdjustment;
Juergen Schmied3426d851999-02-19 16:29:05 +0000300 BOOLEAN TimeAdjustmentDisabled;
Juergen Schmiedcdbdab71999-02-12 13:44:38 +0000301
302} SYSTEM_TIME_ADJUSTMENT, *PSYSTEM_TIME_ADJUSTMENT;
303
304typedef struct _SYSTEM_CONFIGURATION_INFO
305{
306 union
307 { ULONG OemId;
308 struct
309 { WORD ProcessorArchitecture;
310 WORD Reserved;
311 } tag1;
312 } tag2;
313 ULONG PageSize;
314 PVOID MinimumApplicationAddress;
315 PVOID MaximumApplicationAddress;
316 ULONG ActiveProcessorMask;
317 ULONG NumberOfProcessors;
318 ULONG ProcessorType;
319 ULONG AllocationGranularity;
320 WORD ProcessorLevel;
321 WORD ProcessorRevision;
322
323} SYSTEM_CONFIGURATION_INFO, *PSYSTEM_CONFIGURATION_INFO;
324
325
326typedef struct _SYSTEM_CACHE_INFORMATION
327{
328 ULONG CurrentSize;
329 ULONG PeakSize;
330 ULONG PageFaultCount;
331 ULONG MinimumWorkingSet;
332 ULONG MaximumWorkingSet;
333 ULONG Unused[4];
334
335} SYSTEM_CACHE_INFORMATION;
336
337/*
Juergen Schmied7f0c5f31999-03-09 17:46:10 +0000338 * NtQueryProcessInformation
339 */
340
341/* parameter ProcessInformationClass */
342
343typedef enum _PROCESSINFOCLASS
344{ ProcessBasicInformation,
345 ProcessQuotaLimits,
346 ProcessIoCounters,
347 ProcessVmCounters,
348 ProcessTimes,
349 ProcessBasePriority,
350 ProcessRaisePriority,
351 ProcessDebugPort,
352 ProcessExceptionPort,
353 ProcessAccessToken,
354 ProcessLdtInformation,
355 ProcessLdtSize,
356 ProcessDefaultHardErrorMode,
357 ProcessIoPortHandlers,
358 ProcessPooledUsageAndLimits,
359 ProcessWorkingSetWatch,
360 ProcessUserModeIOPL,
361 ProcessEnableAlignmentFaultFixup,
362 ProcessPriorityClass,
363 ProcessWx86Information,
364 ProcessHandleCount,
365 ProcessAffinityMask,
366 ProcessPriorityBoost,
367 ProcessDeviceMap,
368 ProcessSessionInformation,
369 ProcessForegroundInformation,
370 ProcessWow64Information,
371 MaxProcessInfoClass
372} PROCESSINFOCLASS;
373
374/* parameter ProcessInformation (depending on ProcessInformationClass) */
375
376typedef struct _PROCESS_BASIC_INFORMATION
377{ DWORD ExitStatus;
378 DWORD PebBaseAddress;
379 DWORD AffinityMask;
380 DWORD BasePriority;
381 ULONG UniqueProcessId;
382 ULONG InheritedFromUniqueProcessId;
383} PROCESS_BASIC_INFORMATION;
384
385NTSTATUS WINAPI NtQueryInformationProcess(
386 IN HANDLE ProcessHandle,
387 IN PROCESSINFOCLASS ProcessInformationClass,
388 OUT PVOID ProcessInformation,
389 IN ULONG ProcessInformationLength,
390 OUT PULONG ReturnLength);
391
Juergen Schmiedd1f10c51999-04-11 14:53:24 +0000392#define NtCurrentProcess() ( (HANDLE) -1 )
Juergen Schmied7f0c5f31999-03-09 17:46:10 +0000393
394/*
395 * timer
396 */
397
Juergen Schmiedcdbdab71999-02-12 13:44:38 +0000398typedef enum _TIMER_TYPE
Juergen Schmied7f0c5f31999-03-09 17:46:10 +0000399{
400 NotificationTimer,
Juergen Schmiedcdbdab71999-02-12 13:44:38 +0000401 SynchronizationTimer
Juergen Schmied7f0c5f31999-03-09 17:46:10 +0000402
Juergen Schmiedcdbdab71999-02-12 13:44:38 +0000403} TIMER_TYPE;
404
Juergen Schmied02d45e52000-01-23 22:35:33 +0000405/* token functions */
Juergen Schmied7f0c5f31999-03-09 17:46:10 +0000406
407NTSTATUS WINAPI NtOpenProcessToken(
408 HANDLE ProcessHandle,
409 DWORD DesiredAccess,
410 HANDLE *TokenHandle);
411
412NTSTATUS WINAPI NtOpenThreadToken(
413 HANDLE ThreadHandle,
414 DWORD DesiredAccess,
415 BOOLEAN OpenAsSelf,
416 HANDLE *TokenHandle);
417
418NTSTATUS WINAPI NtAdjustPrivilegesToken(
419 IN HANDLE TokenHandle,
420 IN BOOLEAN DisableAllPrivileges,
421 IN PTOKEN_PRIVILEGES NewState,
422 IN DWORD BufferLength,
423 OUT PTOKEN_PRIVILEGES PreviousState,
424 OUT PDWORD ReturnLength);
425
426NTSTATUS WINAPI NtQueryInformationToken(
427 HANDLE token,
428 DWORD tokeninfoclass,
429 LPVOID tokeninfo,
430 DWORD tokeninfolength,
431 LPDWORD retlen );
432
Juergen Schmied02d45e52000-01-23 22:35:33 +0000433/* sid functions */
Juergen Schmied3426d851999-02-19 16:29:05 +0000434
435BOOLEAN WINAPI RtlAllocateAndInitializeSid (
436 PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,
Juergen Schmied02d45e52000-01-23 22:35:33 +0000437 BYTE nSubAuthorityCount,
438 DWORD nSubAuthority0, DWORD nSubAuthority1,
439 DWORD nSubAuthority2, DWORD nSubAuthority3,
440 DWORD nSubAuthority4, DWORD nSubAuthority5,
441 DWORD nSubAuthority6, DWORD nSubAuthority7,
442 PSID *pSid );
Juergen Schmied3426d851999-02-19 16:29:05 +0000443
Juergen Schmied02d45e52000-01-23 22:35:33 +0000444BOOL WINAPI RtlInitializeSid(
445 PSID pSid,
446 PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,
447 BYTE nSubAuthorityCount);
448
449DWORD WINAPI RtlFreeSid(
450 PSID pSid);
Juergen Schmied3426d851999-02-19 16:29:05 +0000451
Juergen Schmied02d45e52000-01-23 22:35:33 +0000452BOOL WINAPI RtlEqualSid(
453 PSID pSid1,
454 PSID pSid2 );
455
456DWORD WINAPI RtlLengthRequiredSid(
457 DWORD nrofsubauths);
458
459DWORD WINAPI RtlLengthSid(
460 PSID sid);
461
462LPDWORD WINAPI RtlSubAuthoritySid(
463 PSID PSID,
464 DWORD nr);
465
466LPBYTE WINAPI RtlSubAuthorityCountSid(
467 PSID pSid);
468
469DWORD WINAPI RtlCopySid(
470 DWORD len,
471 PSID to,
472 PSID from);
473
474BOOL WINAPI RtlValidSid(
475 PSID pSid);
476
477BOOL WINAPI RtlEqualPrefixSid(
478 PSID pSid1,
479 PSID pSid2);
480
481PSID_IDENTIFIER_AUTHORITY WINAPI RtlIdentifierAuthoritySid(
482 PSID pSid );
483
484/* security descriptor functions */
Juergen Schmied3426d851999-02-19 16:29:05 +0000485
486NTSTATUS WINAPI RtlCreateSecurityDescriptor(
487 PSECURITY_DESCRIPTOR lpsd,
488 DWORD rev);
489
Juergen Schmied7f0c5f31999-03-09 17:46:10 +0000490NTSTATUS WINAPI RtlValidSecurityDescriptor(
Juergen Schmied3426d851999-02-19 16:29:05 +0000491 PSECURITY_DESCRIPTOR SecurityDescriptor);
492
Juergen Schmied7f0c5f31999-03-09 17:46:10 +0000493ULONG WINAPI RtlLengthSecurityDescriptor(
494 PSECURITY_DESCRIPTOR SecurityDescriptor);
495
496NTSTATUS WINAPI RtlGetDaclSecurityDescriptor(
Juergen Schmied3426d851999-02-19 16:29:05 +0000497 IN PSECURITY_DESCRIPTOR pSecurityDescriptor,
498 OUT PBOOLEAN lpbDaclPresent,
499 OUT PACL *pDacl,
500 OUT PBOOLEAN lpbDaclDefaulted);
501
502NTSTATUS WINAPI RtlSetDaclSecurityDescriptor (
503 PSECURITY_DESCRIPTOR lpsd,
504 BOOLEAN daclpresent,
505 PACL dacl,
506 BOOLEAN dacldefaulted );
507
Juergen Schmied7f0c5f31999-03-09 17:46:10 +0000508NTSTATUS WINAPI RtlGetSaclSecurityDescriptor(
509 IN PSECURITY_DESCRIPTOR pSecurityDescriptor,
510 OUT PBOOLEAN lpbSaclPresent,
511 OUT PACL *pSacl,
512 OUT PBOOLEAN lpbSaclDefaulted);
Juergen Schmied3426d851999-02-19 16:29:05 +0000513
Juergen Schmied7f0c5f31999-03-09 17:46:10 +0000514NTSTATUS WINAPI RtlSetSaclSecurityDescriptor (
Juergen Schmied3426d851999-02-19 16:29:05 +0000515 PSECURITY_DESCRIPTOR lpsd,
516 BOOLEAN saclpresent,
517 PACL sacl,
518 BOOLEAN sacldefaulted);
519
520NTSTATUS WINAPI RtlGetOwnerSecurityDescriptor(
521 PSECURITY_DESCRIPTOR SecurityDescriptor,
522 PSID *Owner,
523 PBOOLEAN OwnerDefaulted);
524
525NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor(
526 PSECURITY_DESCRIPTOR lpsd,
527 PSID owner,
528 BOOLEAN ownerdefaulted);
529
530NTSTATUS WINAPI RtlSetGroupSecurityDescriptor (
531 PSECURITY_DESCRIPTOR lpsd,
532 PSID group,
533 BOOLEAN groupdefaulted);
534
535NTSTATUS WINAPI RtlGetGroupSecurityDescriptor(
536 PSECURITY_DESCRIPTOR SecurityDescriptor,
537 PSID *Group,
538 PBOOLEAN GroupDefaulted);
539
Juergen Schmied02d45e52000-01-23 22:35:33 +0000540NTSTATUS WINAPI RtlMakeSelfRelativeSD(
541 IN PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor,
542 IN PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor,
543 IN OUT LPDWORD lpdwBufferLength);
Juergen Schmied3426d851999-02-19 16:29:05 +0000544
Juergen Schmied02d45e52000-01-23 22:35:33 +0000545NTSTATUS WINAPI RtlGetControlSecurityDescriptor(
546 PSECURITY_DESCRIPTOR pSecurityDescriptor,
547 PSECURITY_DESCRIPTOR_CONTROL pControl,
548 LPDWORD lpdwRevision);
549
550/* acl functions */
551
552NTSTATUS WINAPI RtlCreateAcl(
553 PACL acl,
554 DWORD size,
555 DWORD rev);
Juergen Schmied3426d851999-02-19 16:29:05 +0000556
557BOOLEAN WINAPI RtlFirstFreeAce(
558 PACL acl,
Juergen Schmied7f0c5f31999-03-09 17:46:10 +0000559 PACE_HEADER *x);
560
Juergen Schmied3426d851999-02-19 16:29:05 +0000561NTSTATUS WINAPI RtlAddAce(
562 PACL acl,
563 DWORD rev,
564 DWORD xnrofaces,
Juergen Schmied7f0c5f31999-03-09 17:46:10 +0000565 PACE_HEADER acestart,
Juergen Schmied3426d851999-02-19 16:29:05 +0000566 DWORD acelen);
567
Juergen Schmied02d45e52000-01-23 22:35:33 +0000568BOOL WINAPI RtlAddAccessAllowedAce(
569 IN OUT PACL pAcl,
570 IN DWORD dwAceRevision,
571 IN DWORD AccessMask,
572 IN PSID pSid);
Juergen Schmied3426d851999-02-19 16:29:05 +0000573
Juergen Schmied02d45e52000-01-23 22:35:33 +0000574BOOL WINAPI AddAccessAllowedAceEx(
575 IN OUT PACL pAcl,
576 IN DWORD dwAceRevision,
577 IN DWORD AceFlags,
578 IN DWORD AccessMask,
579 IN PSID pSid);
Juergen Schmied3426d851999-02-19 16:29:05 +0000580
Juergen Schmied02d45e52000-01-23 22:35:33 +0000581DWORD WINAPI RtlGetAce(
582 PACL pAcl,
583 DWORD dwAceIndex,
584 LPVOID *pAce );
Juergen Schmied3426d851999-02-19 16:29:05 +0000585
Juergen Schmied02d45e52000-01-23 22:35:33 +0000586/* string functions */
587
Alexandre Julliardd2f8bf62000-08-25 22:12:42 +0000588DWORD WINAPI RtlAnsiStringToUnicodeSize(PSTRING);
589NTSTATUS WINAPI RtlAnsiStringToUnicodeString(UNICODE_STRING*,const STRING *,BOOLEAN);
590NTSTATUS WINAPI RtlAppendAsciizToString(STRING*,LPCSTR);
591NTSTATUS WINAPI RtlAppendStringToString(STRING*,const STRING*);
592NTSTATUS WINAPI RtlAppendUnicodeStringToString(UNICODE_STRING*,const UNICODE_STRING*);
593NTSTATUS WINAPI RtlAppendUnicodeToString(UNICODE_STRING*,LPCWSTR);
594LONG WINAPI RtlCompareString(const STRING*,const STRING*,BOOLEAN);
595LONG WINAPI RtlCompareUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
596void WINAPI RtlCopyString(STRING*,const STRING*);
597void WINAPI RtlCopyUnicodeString(UNICODE_STRING*,const UNICODE_STRING*);
598BOOLEAN WINAPI RtlCreateUnicodeString(PUNICODE_STRING,LPCWSTR);
599BOOLEAN WINAPI RtlCreateUnicodeStringFromAsciiz(PUNICODE_STRING,LPCSTR);
600void WINAPI RtlEraseUnicodeString(UNICODE_STRING*);
601BOOLEAN WINAPI RtlEqualString(const STRING*,const STRING*,BOOLEAN);
602BOOLEAN WINAPI RtlEqualUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
603void WINAPI RtlFreeAnsiString(PSTRING);
604void WINAPI RtlFreeOemString(PSTRING);
605void WINAPI RtlFreeUnicodeString(PUNICODE_STRING);
606void WINAPI RtlInitAnsiString(PSTRING,LPCSTR);
607void WINAPI RtlInitString(PSTRING,LPCSTR);
608void WINAPI RtlInitUnicodeString(PUNICODE_STRING,LPCWSTR);
609NTSTATUS WINAPI RtlMultiByteToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
610NTSTATUS WINAPI RtlMultiByteToUnicodeSize(DWORD*,LPCSTR,UINT);
611UINT WINAPI RtlOemStringToUnicodeSize(PSTRING);
612NTSTATUS WINAPI RtlOemStringToUnicodeString(UNICODE_STRING*,const STRING*,BOOLEAN);
613NTSTATUS WINAPI RtlOemToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
614BOOLEAN WINAPI RtlPrefixString(const STRING*,const STRING*,BOOLEAN);
615BOOLEAN WINAPI RtlPrefixUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
616DWORD WINAPI RtlUnicodeStringToAnsiSize(const UNICODE_STRING*);
617NTSTATUS WINAPI RtlUnicodeStringToAnsiString(STRING*,const UNICODE_STRING*,BOOLEAN);
618DWORD WINAPI RtlUnicodeStringToOemSize(const UNICODE_STRING*);
619NTSTATUS WINAPI RtlUnicodeStringToOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
620NTSTATUS WINAPI RtlUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
621NTSTATUS WINAPI RtlUnicodeToMultiByteSize(DWORD*,LPCWSTR,UINT);
622NTSTATUS WINAPI RtlUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
623NTSTATUS WINAPI RtlUpcaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING *,BOOLEAN);
624NTSTATUS WINAPI RtlUpcaseUnicodeStringToAnsiString(STRING*,const UNICODE_STRING*,BOOLEAN);
625NTSTATUS WINAPI RtlUpcaseUnicodeStringToOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
626NTSTATUS WINAPI RtlUpcaseUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
627NTSTATUS WINAPI RtlUpcaseUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
Juergen Schmied02d45e52000-01-23 22:35:33 +0000628
629DWORD WINAPI RtlIsTextUnicode(
630 LPVOID buf,
631 DWORD len,
632 DWORD *pf);
633
Huw D M Davies899861d2001-09-26 23:05:35 +0000634INT __cdecl wcstol(LPCWSTR,LPWSTR*,INT);
635
Juergen Schmied02d45e52000-01-23 22:35:33 +0000636/* resource functions */
Juergen Schmied3426d851999-02-19 16:29:05 +0000637
Juergen Schmied7f0c5f31999-03-09 17:46:10 +0000638typedef struct _RTL_RWLOCK {
639 CRITICAL_SECTION rtlCS;
640 HANDLE hSharedReleaseSemaphore;
641 UINT uSharedWaiters;
642 HANDLE hExclusiveReleaseSemaphore;
643 UINT uExclusiveWaiters;
644 INT iNumberActive;
645 HANDLE hOwningThreadId;
646 DWORD dwTimeoutBoost;
647 PVOID pDebugInfo;
648} RTL_RWLOCK, *LPRTL_RWLOCK;
649
650VOID WINAPI RtlInitializeResource(
651 LPRTL_RWLOCK);
652
653VOID WINAPI RtlDeleteResource(
654 LPRTL_RWLOCK);
655
656BYTE WINAPI RtlAcquireResourceExclusive(
657 LPRTL_RWLOCK, BYTE fWait);
658
659BYTE WINAPI RtlAcquireResourceShared(
660 LPRTL_RWLOCK, BYTE fWait);
661
662VOID WINAPI RtlReleaseResource(
663 LPRTL_RWLOCK);
664
665VOID WINAPI RtlDumpResource(
666 LPRTL_RWLOCK);
667
Juergen Schmied02d45e52000-01-23 22:35:33 +0000668/* time functions */
Juergen Schmied7f0c5f31999-03-09 17:46:10 +0000669
670typedef struct _TIME_FIELDS
671{ CSHORT Year;
672 CSHORT Month;
673 CSHORT Day;
674 CSHORT Hour;
675 CSHORT Minute;
676 CSHORT Second;
677 CSHORT Milliseconds;
678 CSHORT Weekday;
679} TIME_FIELDS;
680
681typedef TIME_FIELDS *PTIME_FIELDS;
682
683VOID WINAPI RtlSystemTimeToLocalTime(
684 IN PLARGE_INTEGER SystemTime,
685 OUT PLARGE_INTEGER LocalTime);
686
687VOID WINAPI RtlTimeToTimeFields(
688 PLARGE_INTEGER liTime,
689 PTIME_FIELDS TimeFields);
690
691BOOLEAN WINAPI RtlTimeFieldsToTime(
692 PTIME_FIELDS tfTimeFields,
693 PLARGE_INTEGER Time);
694
695VOID WINAPI RtlTimeToElapsedTimeFields(
696 PLARGE_INTEGER liTime,
697 PTIME_FIELDS TimeFields);
698
Alexandre Julliardd76f9f92000-10-01 01:40:42 +0000699void WINAPI NtQuerySystemTime( LARGE_INTEGER *time );
Juergen Schmied7f0c5f31999-03-09 17:46:10 +0000700
Alexandre Julliardd76f9f92000-10-01 01:40:42 +0000701BOOLEAN WINAPI RtlTimeToSecondsSince1980( const FILETIME *time, LPDWORD res );
702BOOLEAN WINAPI RtlTimeToSecondsSince1970( const FILETIME *time, LPDWORD res );
703void WINAPI RtlSecondsSince1970ToTime( DWORD time, FILETIME *res );
704void WINAPI RtlSecondsSince1980ToTime( DWORD time, FILETIME *res );
Alexandre Julliard0aa6cc22000-07-29 21:56:59 +0000705
Juergen Schmied02d45e52000-01-23 22:35:33 +0000706/* heap functions */
Juergen Schmied7f0c5f31999-03-09 17:46:10 +0000707
708/* Data structure for heap definition. This includes various
709 sizing parameters and callback routines, which, if left NULL,
710 result in default behavior */
711
712typedef struct
713{ ULONG Length; /* = sizeof(RTL_HEAP_DEFINITION) */
714 ULONG Unknown[11];
715} RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION;
716
717HANDLE WINAPI RtlCreateHeap(
718 ULONG Flags,
719 PVOID BaseAddress,
720 ULONG SizeToReserve,
721 ULONG SizeToCommit,
722 PVOID Unknown,
723 PRTL_HEAP_DEFINITION Definition);
724
725PVOID WINAPI RtlAllocateHeap(
726 HANDLE Heap,
727 ULONG Flags,
728 ULONG Size);
729
730
731BOOLEAN WINAPI RtlFreeHeap(
732 HANDLE Heap,
733 ULONG Flags,
734 PVOID Address);
735
Juergen Schmied02d45e52000-01-23 22:35:33 +0000736/* exception */
737
738void WINAPI NtRaiseException(
739 PEXCEPTION_RECORD,PCONTEXT,BOOL);
740
741void WINAPI RtlRaiseException(
742 PEXCEPTION_RECORD);
743
744void WINAPI RtlRaiseStatus(
745 NTSTATUS);
746
747void WINAPI RtlUnwind(
748 PEXCEPTION_FRAME,
749 LPVOID,
750 PEXCEPTION_RECORD,DWORD);
751
752/* process environment block */
Juergen Schmied3426d851999-02-19 16:29:05 +0000753VOID WINAPI RtlAcquirePebLock(void);
754VOID WINAPI RtlReleasePebLock(void);
Juergen Schmied02d45e52000-01-23 22:35:33 +0000755
756/* mathematics */
Alexandre Julliardd76f9f92000-10-01 01:40:42 +0000757LONGLONG WINAPI RtlConvertLongToLargeInteger( LONG a );
758LONGLONG WINAPI RtlEnlargedIntegerMultiply( INT a, INT b );
Alexandre Julliardd76f9f92000-10-01 01:40:42 +0000759LONGLONG WINAPI RtlExtendedMagicDivide( LONGLONG a, LONGLONG b, INT shift );
760LONGLONG WINAPI RtlExtendedIntegerMultiply( LONGLONG a, INT b );
761LONGLONG WINAPI RtlExtendedLargeIntegerDivide( LONGLONG a, INT b, INT *rem );
762LONGLONG WINAPI RtlLargeIntegerAdd( LONGLONG a, LONGLONG b );
763LONGLONG WINAPI RtlLargeIntegerArithmeticShift( LONGLONG a, INT count );
764LONGLONG WINAPI RtlLargeIntegerNegate( LONGLONG a );
765LONGLONG WINAPI RtlLargeIntegerShiftLeft( LONGLONG a, INT count );
766LONGLONG WINAPI RtlLargeIntegerShiftRight( LONGLONG a, INT count );
767LONGLONG WINAPI RtlLargeIntegerSubtract( LONGLONG a, LONGLONG b );
Alexandre Julliard27952ef2000-10-13 20:26:03 +0000768ULONGLONG WINAPI RtlEnlargedUnsignedMultiply( UINT a, UINT b );
Alexandre Julliardd76f9f92000-10-01 01:40:42 +0000769UINT WINAPI RtlEnlargedUnsignedDivide( ULONGLONG a, UINT b, UINT *remptr );
770ULONGLONG WINAPI RtlConvertUlongToLargeInteger( ULONG a );
771ULONGLONG WINAPI RtlLargeIntegerDivide( ULONGLONG a, ULONGLONG b, ULONGLONG *rem );
Juergen Schmied02d45e52000-01-23 22:35:33 +0000772
773/* environment */
774DWORD WINAPI RtlCreateEnvironment(
775 DWORD x1,
776 DWORD x2);
777
778DWORD WINAPI RtlDestroyEnvironment(
779 DWORD x);
780
781DWORD WINAPI RtlQueryEnvironmentVariable_U(
782 DWORD x1,
783 PUNICODE_STRING key,
784 PUNICODE_STRING val) ;
785
786DWORD WINAPI RtlSetEnvironmentVariable(
787 DWORD x1,
788 PUNICODE_STRING key,
789 PUNICODE_STRING val);
790
791/* object security */
792
793DWORD WINAPI RtlNewSecurityObject(
794 DWORD x1,
795 DWORD x2,
796 DWORD x3,
797 DWORD x4,
798 DWORD x5,
799 DWORD x6);
800
801DWORD WINAPI RtlDeleteSecurityObject(
802 DWORD x1);
803
804NTSTATUS WINAPI
805NtQuerySecurityObject(
806 IN HANDLE Object,
807 IN SECURITY_INFORMATION RequestedInformation,
808 OUT PSECURITY_DESCRIPTOR pSecurityDesriptor,
809 IN ULONG Length,
810 OUT PULONG ResultLength);
811
812NTSTATUS WINAPI
813NtSetSecurityObject(
814 IN HANDLE Handle,
815 IN SECURITY_INFORMATION SecurityInformation,
816 IN PSECURITY_DESCRIPTOR SecurityDescriptor);
817
Dmitry Timoshkov1da43e32000-02-25 21:36:57 +0000818/* registry functions */
819
Alexandre Julliardf9087e22000-08-26 21:17:42 +0000820NTSTATUS WINAPI NtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,
821 const UNICODE_STRING*,ULONG,PULONG);
822NTSTATUS WINAPI NtDeleteKey(HANDLE);
823NTSTATUS WINAPI NtDeleteValueKey(HANDLE,const UNICODE_STRING*);
824NTSTATUS WINAPI NtOpenKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
Alexandre Julliardbcb40b32000-10-15 00:39:11 +0000825NTSTATUS WINAPI NtQueryKey(HANDLE,KEY_INFORMATION_CLASS,void*,DWORD,DWORD*);
Alexandre Julliardd76f9f92000-10-01 01:40:42 +0000826NTSTATUS WINAPI NtSetValueKey(HANDLE,const UNICODE_STRING*,ULONG,ULONG,const void*,ULONG);
Alexandre Julliard454355e2000-10-02 03:46:58 +0000827NTSTATUS WINAPI NtEnumerateKey(HANDLE,ULONG,KEY_INFORMATION_CLASS,void*,DWORD,DWORD*);
Alexandre Julliardd76f9f92000-10-01 01:40:42 +0000828NTSTATUS WINAPI NtQueryValueKey(HANDLE,const UNICODE_STRING*,KEY_VALUE_INFORMATION_CLASS,
829 void*,DWORD,DWORD*);
Alexandre Julliardbcb40b32000-10-15 00:39:11 +0000830NTSTATUS WINAPI NtLoadKey(const OBJECT_ATTRIBUTES*,const OBJECT_ATTRIBUTES*);
Alexandre Julliardd76f9f92000-10-01 01:40:42 +0000831
Dmitry Timoshkov1da43e32000-02-25 21:36:57 +0000832
Dmitry Timoshkov1da43e32000-02-25 21:36:57 +0000833NTSTATUS WINAPI NtEnumerateValueKey(
834 HANDLE KeyHandle,
835 ULONG Index,
836 KEY_VALUE_INFORMATION_CLASS KeyInformationClass,
837 PVOID KeyInformation,
838 ULONG Length,
839 PULONG ResultLength);
840
841NTSTATUS WINAPI NtFlushKey(HANDLE KeyHandle);
842
Dmitry Timoshkov1da43e32000-02-25 21:36:57 +0000843NTSTATUS WINAPI NtNotifyChangeKey(
844 IN HANDLE KeyHandle,
845 IN HANDLE Event,
846 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
847 IN PVOID ApcContext OPTIONAL,
848 OUT PIO_STATUS_BLOCK IoStatusBlock,
849 IN ULONG CompletionFilter,
850 IN BOOLEAN Asynchroneous,
851 OUT PVOID ChangeBuffer,
852 IN ULONG Length,
853 IN BOOLEAN WatchSubtree);
854
855NTSTATUS WINAPI NtQueryMultipleValueKey(
856 HANDLE KeyHandle,
857 PVALENTW ListOfValuesToQuery,
858 ULONG NumberOfItems,
859 PVOID MultipleValueInformation,
860 ULONG Length,
861 PULONG ReturnLength);
862
Dmitry Timoshkov1da43e32000-02-25 21:36:57 +0000863NTSTATUS WINAPI NtReplaceKey(
864 IN POBJECT_ATTRIBUTES ObjectAttributes,
865 IN HANDLE Key,
866 IN POBJECT_ATTRIBUTES ReplacedObjectAttributes);
867
868NTSTATUS WINAPI NtRestoreKey(
869 HANDLE KeyHandle,
870 HANDLE FileHandle,
871 ULONG RestoreFlags);
872
873NTSTATUS WINAPI NtSaveKey(
874 IN HANDLE KeyHandle,
875 IN HANDLE FileHandle);
876
877NTSTATUS WINAPI NtSetInformationKey(
878 IN HANDLE KeyHandle,
879 IN const int KeyInformationClass,
880 IN PVOID KeyInformation,
881 IN ULONG KeyInformationLength);
882
Dmitry Timoshkov1da43e32000-02-25 21:36:57 +0000883NTSTATUS WINAPI NtUnloadKey(
884 IN HANDLE KeyHandle);
885
886NTSTATUS WINAPI NtClose(
887 HANDLE Handle);
Juergen Schmied02d45e52000-01-23 22:35:33 +0000888
Alexandre Julliard0aa6cc22000-07-29 21:56:59 +0000889NTSTATUS WINAPI NtTerminateProcess( HANDLE handle, LONG exit_code );
Alexandre Julliard9c2370b2000-08-30 00:00:48 +0000890NTSTATUS WINAPI NtTerminateThread( HANDLE handle, LONG exit_code );
Alexandre Julliard0aa6cc22000-07-29 21:56:59 +0000891
Alexandre Julliardafb49ea2000-09-29 20:48:04 +0000892NTSTATUS WINAPI NtClearEvent(HANDLE);
Alexandre Julliard9c2370b2000-08-30 00:00:48 +0000893NTSTATUS WINAPI NtCreateEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *,BOOLEAN,BOOLEAN);
894NTSTATUS WINAPI NtCreateSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,ULONG);
Alexandre Julliardafb49ea2000-09-29 20:48:04 +0000895NTSTATUS WINAPI NtOpenEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *attr);
896NTSTATUS WINAPI NtPulseEvent(HANDLE,PULONG);
897NTSTATUS WINAPI NtReleaseSemaphore(HANDLE,ULONG,PULONG);
898NTSTATUS WINAPI NtResetEvent(HANDLE,PULONG);
899NTSTATUS WINAPI NtSetEvent(HANDLE,PULONG);
Alexandre Julliard0aa6cc22000-07-29 21:56:59 +0000900
Alexandre Julliardbaa15562000-09-29 00:31:23 +0000901NTSTATUS WINAPI RtlInitializeCriticalSection( RTL_CRITICAL_SECTION *crit );
David Elliott44f84b52000-10-29 01:24:54 +0000902NTSTATUS WINAPI RtlInitializeCriticalSectionAndSpinCount( RTL_CRITICAL_SECTION *crit, DWORD spincount );
Alexandre Julliardbaa15562000-09-29 00:31:23 +0000903NTSTATUS WINAPI RtlDeleteCriticalSection( RTL_CRITICAL_SECTION *crit );
904NTSTATUS WINAPI RtlpWaitForCriticalSection( RTL_CRITICAL_SECTION *crit );
905NTSTATUS WINAPI RtlpUnWaitCriticalSection( RTL_CRITICAL_SECTION *crit );
906NTSTATUS WINAPI RtlEnterCriticalSection( RTL_CRITICAL_SECTION *crit );
907BOOL WINAPI RtlTryEnterCriticalSection( RTL_CRITICAL_SECTION *crit );
908NTSTATUS WINAPI RtlLeaveCriticalSection( RTL_CRITICAL_SECTION *crit );
Alexandre Julliard0aa6cc22000-07-29 21:56:59 +0000909
Alexandre Julliarddcd247e2000-08-14 17:39:15 +0000910/* string functions */
911extern LPSTR _strlwr( LPSTR str );
912extern LPSTR _strupr( LPSTR str );
913
Juergen Schmied02d45e52000-01-23 22:35:33 +0000914/* misc */
915
Alexandre Julliard00641d52000-03-08 16:41:37 +0000916#if defined(__i386__) && defined(__GNUC__)
917static inline void WINAPI DbgBreakPoint(void) { __asm__ __volatile__("int3"); }
918static inline void WINAPI DbgUserBreakPoint(void) { __asm__ __volatile__("int3"); }
919#else /* __i386__ && __GNUC__ */
Alexandre Julliard7d0dd5f2000-03-07 13:10:21 +0000920void WINAPI DbgBreakPoint(void);
Alexandre Julliard00641d52000-03-08 16:41:37 +0000921void WINAPI DbgUserBreakPoint(void);
922#endif /* __i386__ && __GNUC__ */
Juergen Schmied02d45e52000-01-23 22:35:33 +0000923void WINAPIV DbgPrint(LPCSTR fmt, ...);
924
Juergen Schmied3426d851999-02-19 16:29:05 +0000925DWORD WINAPI RtlAdjustPrivilege(DWORD x1,DWORD x2,DWORD x3,DWORD x4);
926DWORD WINAPI RtlIntegerToChar(DWORD x1,DWORD x2,DWORD x3,DWORD x4);
Juergen Schmied3426d851999-02-19 16:29:05 +0000927LPVOID WINAPI RtlNormalizeProcessParams(LPVOID x);
928DWORD WINAPI RtlNtStatusToDosError(DWORD error);
929BOOLEAN WINAPI RtlGetNtProductType(LPDWORD type);
Alexandre Julliard5ab9d862000-08-09 22:35:05 +0000930PIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE hModule);
Juergen Schmied3426d851999-02-19 16:29:05 +0000931
Juergen Schmied02d45e52000-01-23 22:35:33 +0000932DWORD WINAPI RtlOpenCurrentUser(
933 IN ACCESS_MASK DesiredAccess,
934 OUT PHANDLE KeyHandle);
935
936BOOLEAN WINAPI RtlDosPathNameToNtPathName_U( LPWSTR from,PUNICODE_STRING us,DWORD x2,DWORD x3);
937BOOL WINAPI RtlImpersonateSelf(SECURITY_IMPERSONATION_LEVEL ImpersonationLevel);
938
939NTSTATUS WINAPI
940NtAccessCheck(
941 IN PSECURITY_DESCRIPTOR SecurityDescriptor,
942 IN HANDLE ClientToken,
943 IN ACCESS_MASK DesiredAccess,
944 IN PGENERIC_MAPPING GenericMapping,
945 OUT PPRIVILEGE_SET PrivilegeSet,
946 OUT PULONG ReturnLength,
947 OUT PULONG GrantedAccess,
948 OUT PBOOLEAN AccessStatus);
Juergen Schmied3426d851999-02-19 16:29:05 +0000949
Juergen Schmied7f0c5f31999-03-09 17:46:10 +0000950#ifdef __cplusplus
951}
952#endif
Juergen Schmied3426d851999-02-19 16:29:05 +0000953
Juergen Schmied02d45e52000-01-23 22:35:33 +0000954#include "poppack.h"
955
Juergen Schmiedcdbdab71999-02-12 13:44:38 +0000956#endif