Removed some unnecessary #includes and dll dependencies.
[wine/multimedia.git] / include / ntddk.h
blobdb69c7eb31aead4453754d67707ddf34568b31cf
1 /*
2 this file defines interfaces mainly exposed to device drivers and
3 native nt dll's
5 */
6 #ifndef __WINE_NTDDK_H
7 #define __WINE_NTDDK_H
9 #include "ntdef.h"
10 #include "winnt.h"
11 #include "winreg.h"
12 #include "winbase.h" /* fixme: should be taken out sometimes */
14 #include "pshpack1.h"
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
20 /******************
21 * asynchronous I/O
23 #undef Status /* conflict with X11-includes*/
25 typedef struct _IO_STATUS_BLOCK
27 union {
28 NTSTATUS Status;
29 PVOID Pointer;
30 } DUMMYUNIONNAME;
31 ULONG_PTR Information;
32 } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
34 typedef VOID NTAPI (*PIO_APC_ROUTINE) ( PVOID ApcContext, PIO_STATUS_BLOCK IoStatusBlock, ULONG Reserved );
37 registry
40 /* key information */
41 typedef struct _KEY_BASIC_INFORMATION {
42 FILETIME LastWriteTime;
43 ULONG TitleIndex;
44 ULONG NameLength;
45 WCHAR Name[1];
46 } KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
48 typedef struct _KEY_NODE_INFORMATION
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;
59 typedef struct _KEY_FULL_INFORMATION
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;
74 typedef enum _KEY_INFORMATION_CLASS
76 KeyBasicInformation,
77 KeyNodeInformation,
78 KeyFullInformation
79 } KEY_INFORMATION_CLASS;
81 typedef struct _KEY_VALUE_ENTRY
83 PUNICODE_STRING ValueName;
84 ULONG DataLength;
85 ULONG DataOffset;
86 ULONG Type;
87 } KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
89 /* value information */
90 typedef struct _KEY_VALUE_BASIC_INFORMATION
92 ULONG TitleIndex;
93 ULONG Type;
94 ULONG NameLength;
95 WCHAR Name[1];
96 } KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
98 typedef struct _KEY_VALUE_FULL_INFORMATION
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;
109 typedef struct _KEY_VALUE_PARTIAL_INFORMATION
111 ULONG TitleIndex;
112 ULONG Type;
113 ULONG DataLength;
114 UCHAR Data[1];
115 } KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
117 typedef enum _KEY_VALUE_INFORMATION_CLASS
119 KeyValueBasicInformation,
120 KeyValueFullInformation,
121 KeyValuePartialInformation,
122 KeyValueFullInformationAlign64,
123 KeyValuePartialInformationAlign64
124 } KEY_VALUE_INFORMATION_CLASS;
126 NTSTATUS WINAPI RtlFormatCurrentUserKeyPath(
127 PUNICODE_STRING KeyPath);
129 /* thread information */
131 typedef 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;
152 /* file information */
154 typedef 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;
194 typedef 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;
206 typedef enum _SECTION_INHERIT
208 ViewShare = 1,
209 ViewUnmap = 2
211 } SECTION_INHERIT;
213 /* object information */
215 typedef enum _OBJECT_INFORMATION_CLASS
217 DunnoTheConstants1
219 } OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS;
222 /* system information */
224 typedef enum SYSTEM_INFORMATION_CLASS
225 { Unknown1 = 1,
226 Unknown2,
227 Unknown3,
228 Unknown4,
229 SystemPerformanceInformation
230 } SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS;
232 /* reading coffee grounds... */
233 typedef 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;
242 typedef 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;
256 /* process information */
258 typedef 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;
286 NTSTATUS WINAPI NtQuerySystemInformation(
287 IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
288 OUT PVOID SystemInformation,
289 IN ULONG Length,
290 OUT PULONG ResultLength);
293 * system configuration
297 typedef struct _SYSTEM_TIME_ADJUSTMENT
299 ULONG TimeAdjustment;
300 BOOLEAN TimeAdjustmentDisabled;
302 } SYSTEM_TIME_ADJUSTMENT, *PSYSTEM_TIME_ADJUSTMENT;
304 typedef struct _SYSTEM_CONFIGURATION_INFO
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;
323 } SYSTEM_CONFIGURATION_INFO, *PSYSTEM_CONFIGURATION_INFO;
326 typedef struct _SYSTEM_CACHE_INFORMATION
328 ULONG CurrentSize;
329 ULONG PeakSize;
330 ULONG PageFaultCount;
331 ULONG MinimumWorkingSet;
332 ULONG MaximumWorkingSet;
333 ULONG Unused[4];
335 } SYSTEM_CACHE_INFORMATION;
338 * NtQueryProcessInformation
341 /* parameter ProcessInformationClass */
343 typedef 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;
374 /* parameter ProcessInformation (depending on ProcessInformationClass) */
376 typedef 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;
385 NTSTATUS WINAPI NtQueryInformationProcess(
386 IN HANDLE ProcessHandle,
387 IN PROCESSINFOCLASS ProcessInformationClass,
388 OUT PVOID ProcessInformation,
389 IN ULONG ProcessInformationLength,
390 OUT PULONG ReturnLength);
392 #define NtCurrentProcess() ( (HANDLE) -1 )
395 * timer
398 typedef enum _TIMER_TYPE
400 NotificationTimer,
401 SynchronizationTimer
403 } TIMER_TYPE;
405 /* token functions */
407 NTSTATUS WINAPI NtOpenProcessToken(
408 HANDLE ProcessHandle,
409 DWORD DesiredAccess,
410 HANDLE *TokenHandle);
412 NTSTATUS WINAPI NtOpenThreadToken(
413 HANDLE ThreadHandle,
414 DWORD DesiredAccess,
415 BOOLEAN OpenAsSelf,
416 HANDLE *TokenHandle);
418 NTSTATUS 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);
426 NTSTATUS WINAPI NtQueryInformationToken(
427 HANDLE token,
428 DWORD tokeninfoclass,
429 LPVOID tokeninfo,
430 DWORD tokeninfolength,
431 LPDWORD retlen );
433 /* sid functions */
435 BOOLEAN WINAPI RtlAllocateAndInitializeSid (
436 PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,
437 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 );
444 BOOL WINAPI RtlInitializeSid(
445 PSID pSid,
446 PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,
447 BYTE nSubAuthorityCount);
449 DWORD WINAPI RtlFreeSid(
450 PSID pSid);
452 BOOL WINAPI RtlEqualSid(
453 PSID pSid1,
454 PSID pSid2 );
456 DWORD WINAPI RtlLengthRequiredSid(
457 DWORD nrofsubauths);
459 DWORD WINAPI RtlLengthSid(
460 PSID sid);
462 LPDWORD WINAPI RtlSubAuthoritySid(
463 PSID PSID,
464 DWORD nr);
466 LPBYTE WINAPI RtlSubAuthorityCountSid(
467 PSID pSid);
469 DWORD WINAPI RtlCopySid(
470 DWORD len,
471 PSID to,
472 PSID from);
474 BOOL WINAPI RtlValidSid(
475 PSID pSid);
477 BOOL WINAPI RtlEqualPrefixSid(
478 PSID pSid1,
479 PSID pSid2);
481 PSID_IDENTIFIER_AUTHORITY WINAPI RtlIdentifierAuthoritySid(
482 PSID pSid );
484 /* security descriptor functions */
486 NTSTATUS WINAPI RtlCreateSecurityDescriptor(
487 PSECURITY_DESCRIPTOR lpsd,
488 DWORD rev);
490 NTSTATUS WINAPI RtlValidSecurityDescriptor(
491 PSECURITY_DESCRIPTOR SecurityDescriptor);
493 ULONG WINAPI RtlLengthSecurityDescriptor(
494 PSECURITY_DESCRIPTOR SecurityDescriptor);
496 NTSTATUS WINAPI RtlGetDaclSecurityDescriptor(
497 IN PSECURITY_DESCRIPTOR pSecurityDescriptor,
498 OUT PBOOLEAN lpbDaclPresent,
499 OUT PACL *pDacl,
500 OUT PBOOLEAN lpbDaclDefaulted);
502 NTSTATUS WINAPI RtlSetDaclSecurityDescriptor (
503 PSECURITY_DESCRIPTOR lpsd,
504 BOOLEAN daclpresent,
505 PACL dacl,
506 BOOLEAN dacldefaulted );
508 NTSTATUS WINAPI RtlGetSaclSecurityDescriptor(
509 IN PSECURITY_DESCRIPTOR pSecurityDescriptor,
510 OUT PBOOLEAN lpbSaclPresent,
511 OUT PACL *pSacl,
512 OUT PBOOLEAN lpbSaclDefaulted);
514 NTSTATUS WINAPI RtlSetSaclSecurityDescriptor (
515 PSECURITY_DESCRIPTOR lpsd,
516 BOOLEAN saclpresent,
517 PACL sacl,
518 BOOLEAN sacldefaulted);
520 NTSTATUS WINAPI RtlGetOwnerSecurityDescriptor(
521 PSECURITY_DESCRIPTOR SecurityDescriptor,
522 PSID *Owner,
523 PBOOLEAN OwnerDefaulted);
525 NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor(
526 PSECURITY_DESCRIPTOR lpsd,
527 PSID owner,
528 BOOLEAN ownerdefaulted);
530 NTSTATUS WINAPI RtlSetGroupSecurityDescriptor (
531 PSECURITY_DESCRIPTOR lpsd,
532 PSID group,
533 BOOLEAN groupdefaulted);
535 NTSTATUS WINAPI RtlGetGroupSecurityDescriptor(
536 PSECURITY_DESCRIPTOR SecurityDescriptor,
537 PSID *Group,
538 PBOOLEAN GroupDefaulted);
540 NTSTATUS WINAPI RtlMakeSelfRelativeSD(
541 IN PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor,
542 IN PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor,
543 IN OUT LPDWORD lpdwBufferLength);
545 NTSTATUS WINAPI RtlGetControlSecurityDescriptor(
546 PSECURITY_DESCRIPTOR pSecurityDescriptor,
547 PSECURITY_DESCRIPTOR_CONTROL pControl,
548 LPDWORD lpdwRevision);
550 /* acl functions */
552 NTSTATUS WINAPI RtlCreateAcl(
553 PACL acl,
554 DWORD size,
555 DWORD rev);
557 BOOLEAN WINAPI RtlFirstFreeAce(
558 PACL acl,
559 PACE_HEADER *x);
561 NTSTATUS WINAPI RtlAddAce(
562 PACL acl,
563 DWORD rev,
564 DWORD xnrofaces,
565 PACE_HEADER acestart,
566 DWORD acelen);
568 BOOL WINAPI RtlAddAccessAllowedAce(
569 IN OUT PACL pAcl,
570 IN DWORD dwAceRevision,
571 IN DWORD AccessMask,
572 IN PSID pSid);
574 BOOL WINAPI AddAccessAllowedAceEx(
575 IN OUT PACL pAcl,
576 IN DWORD dwAceRevision,
577 IN DWORD AceFlags,
578 IN DWORD AccessMask,
579 IN PSID pSid);
581 DWORD WINAPI RtlGetAce(
582 PACL pAcl,
583 DWORD dwAceIndex,
584 LPVOID *pAce );
586 /* string functions */
588 VOID WINAPI RtlInitAnsiString(
589 PANSI_STRING target,
590 LPCSTR source);
592 VOID WINAPI RtlInitString(
593 PSTRING target,
594 LPCSTR source);
596 VOID WINAPI RtlInitUnicodeString(
597 PUNICODE_STRING target,
598 LPCWSTR source);
600 VOID WINAPI RtlFreeUnicodeString(
601 PUNICODE_STRING str);
603 VOID WINAPI RtlFreeAnsiString(
604 PANSI_STRING AnsiString);
606 NTSTATUS WINAPI RtlAnsiStringToUnicodeString(
607 PUNICODE_STRING uni,
608 PANSI_STRING ansi,
609 BOOLEAN doalloc);
611 NTSTATUS WINAPI RtlOemStringToUnicodeString(
612 PUNICODE_STRING uni,
613 PSTRING ansi,
614 BOOLEAN doalloc);
616 NTSTATUS WINAPI RtlMultiByteToUnicodeN(
617 LPWSTR unistr,
618 DWORD unilen,
619 LPDWORD reslen,
620 LPSTR oemstr,
621 DWORD oemlen);
623 NTSTATUS WINAPI RtlOemToUnicodeN(
624 LPWSTR unistr,
625 DWORD unilen,
626 LPDWORD reslen,
627 LPSTR oemstr,
628 DWORD oemlen);
630 NTSTATUS WINAPI RtlUnicodeToOemN(
631 LPSTR oemstr,
632 DWORD oemlen,
633 LPDWORD reslen,
634 LPWSTR unistr,
635 DWORD unilen);
637 NTSTATUS WINAPI RtlUnicodeStringToOemString(
638 PANSI_STRING oem,
639 PUNICODE_STRING uni,
640 BOOLEAN alloc);
642 NTSTATUS WINAPI RtlUnicodeStringToAnsiString(
643 PANSI_STRING oem,
644 PUNICODE_STRING uni,
645 BOOLEAN alloc);
647 BOOLEAN WINAPI RtlEqualUnicodeString(
648 PUNICODE_STRING s1,
649 PUNICODE_STRING s2,
650 BOOLEAN x);
652 DWORD WINAPI RtlUpcaseUnicodeString(
653 PUNICODE_STRING dest,
654 PUNICODE_STRING src,
655 BOOLEAN doalloc);
657 UINT WINAPI RtlxOemStringToUnicodeSize(
658 PSTRING str);
660 UINT WINAPI RtlxAnsiStringToUnicodeSize(
661 PANSI_STRING str);
663 DWORD WINAPI RtlIsTextUnicode(
664 LPVOID buf,
665 DWORD len,
666 DWORD *pf);
668 NTSTATUS WINAPI RtlCompareUnicodeString(
669 PUNICODE_STRING String1,
670 PUNICODE_STRING String2,
671 BOOLEAN CaseInSensitive);
673 /* resource functions */
675 typedef struct _RTL_RWLOCK {
676 CRITICAL_SECTION rtlCS;
677 HANDLE hSharedReleaseSemaphore;
678 UINT uSharedWaiters;
679 HANDLE hExclusiveReleaseSemaphore;
680 UINT uExclusiveWaiters;
681 INT iNumberActive;
682 HANDLE hOwningThreadId;
683 DWORD dwTimeoutBoost;
684 PVOID pDebugInfo;
685 } RTL_RWLOCK, *LPRTL_RWLOCK;
687 VOID WINAPI RtlInitializeResource(
688 LPRTL_RWLOCK);
690 VOID WINAPI RtlDeleteResource(
691 LPRTL_RWLOCK);
693 BYTE WINAPI RtlAcquireResourceExclusive(
694 LPRTL_RWLOCK, BYTE fWait);
696 BYTE WINAPI RtlAcquireResourceShared(
697 LPRTL_RWLOCK, BYTE fWait);
699 VOID WINAPI RtlReleaseResource(
700 LPRTL_RWLOCK);
702 VOID WINAPI RtlDumpResource(
703 LPRTL_RWLOCK);
705 /* time functions */
707 typedef struct _TIME_FIELDS
708 { CSHORT Year;
709 CSHORT Month;
710 CSHORT Day;
711 CSHORT Hour;
712 CSHORT Minute;
713 CSHORT Second;
714 CSHORT Milliseconds;
715 CSHORT Weekday;
716 } TIME_FIELDS;
718 typedef TIME_FIELDS *PTIME_FIELDS;
720 VOID WINAPI RtlSystemTimeToLocalTime(
721 IN PLARGE_INTEGER SystemTime,
722 OUT PLARGE_INTEGER LocalTime);
724 VOID WINAPI RtlTimeToTimeFields(
725 PLARGE_INTEGER liTime,
726 PTIME_FIELDS TimeFields);
728 BOOLEAN WINAPI RtlTimeFieldsToTime(
729 PTIME_FIELDS tfTimeFields,
730 PLARGE_INTEGER Time);
732 VOID WINAPI RtlTimeToElapsedTimeFields(
733 PLARGE_INTEGER liTime,
734 PTIME_FIELDS TimeFields);
736 BOOLEAN WINAPI RtlTimeToSecondsSince1980(
737 LPFILETIME ft,
738 LPDWORD timeret);
740 BOOLEAN WINAPI RtlTimeToSecondsSince1970(
741 LPFILETIME ft,
742 LPDWORD timeret);
744 void WINAPI RtlSecondsSince1970ToTime( DWORD time, LPFILETIME ft );
745 void WINAPI RtlSecondsSince1980ToTime( DWORD time, LPFILETIME ft );
747 /* heap functions */
749 /* Data structure for heap definition. This includes various
750 sizing parameters and callback routines, which, if left NULL,
751 result in default behavior */
753 typedef struct
754 { ULONG Length; /* = sizeof(RTL_HEAP_DEFINITION) */
755 ULONG Unknown[11];
756 } RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION;
758 HANDLE WINAPI RtlCreateHeap(
759 ULONG Flags,
760 PVOID BaseAddress,
761 ULONG SizeToReserve,
762 ULONG SizeToCommit,
763 PVOID Unknown,
764 PRTL_HEAP_DEFINITION Definition);
766 PVOID WINAPI RtlAllocateHeap(
767 HANDLE Heap,
768 ULONG Flags,
769 ULONG Size);
772 BOOLEAN WINAPI RtlFreeHeap(
773 HANDLE Heap,
774 ULONG Flags,
775 PVOID Address);
777 /* exception */
779 void WINAPI NtRaiseException(
780 PEXCEPTION_RECORD,PCONTEXT,BOOL);
782 void WINAPI RtlRaiseException(
783 PEXCEPTION_RECORD);
785 void WINAPI RtlRaiseStatus(
786 NTSTATUS);
788 void WINAPI RtlUnwind(
789 PEXCEPTION_FRAME,
790 LPVOID,
791 PEXCEPTION_RECORD,DWORD);
793 /* process environment block */
794 VOID WINAPI RtlAcquirePebLock(void);
795 VOID WINAPI RtlReleasePebLock(void);
797 /* mathematics */
798 INT WINAPI RtlExtendedLargeIntegerDivide(
799 LARGE_INTEGER dividend,
800 DWORD divisor,
801 LPDWORD rest);
803 LARGE_INTEGER WINAPI RtlExtendedIntegerMultiply(
804 LARGE_INTEGER factor1,
805 INT factor2);
807 /* environment */
808 DWORD WINAPI RtlCreateEnvironment(
809 DWORD x1,
810 DWORD x2);
812 DWORD WINAPI RtlDestroyEnvironment(
813 DWORD x);
815 DWORD WINAPI RtlQueryEnvironmentVariable_U(
816 DWORD x1,
817 PUNICODE_STRING key,
818 PUNICODE_STRING val) ;
820 DWORD WINAPI RtlSetEnvironmentVariable(
821 DWORD x1,
822 PUNICODE_STRING key,
823 PUNICODE_STRING val);
825 /* object security */
827 DWORD WINAPI RtlNewSecurityObject(
828 DWORD x1,
829 DWORD x2,
830 DWORD x3,
831 DWORD x4,
832 DWORD x5,
833 DWORD x6);
835 DWORD WINAPI RtlDeleteSecurityObject(
836 DWORD x1);
838 NTSTATUS WINAPI
839 NtQuerySecurityObject(
840 IN HANDLE Object,
841 IN SECURITY_INFORMATION RequestedInformation,
842 OUT PSECURITY_DESCRIPTOR pSecurityDesriptor,
843 IN ULONG Length,
844 OUT PULONG ResultLength);
846 NTSTATUS WINAPI
847 NtSetSecurityObject(
848 IN HANDLE Handle,
849 IN SECURITY_INFORMATION SecurityInformation,
850 IN PSECURITY_DESCRIPTOR SecurityDescriptor);
852 /* registry functions */
854 NTSTATUS WINAPI NtCreateKey(
855 PHANDLE KeyHandle,
856 ACCESS_MASK DesiredAccess,
857 POBJECT_ATTRIBUTES ObjectAttributes,
858 ULONG TitleIndex,
859 PUNICODE_STRING Class,
860 ULONG CreateOptions,
861 PULONG Disposition);
863 NTSTATUS WINAPI NtOpenKey(
864 PHANDLE KeyHandle,
865 ACCESS_MASK DesiredAccess,
866 POBJECT_ATTRIBUTES ObjectAttributes);
868 NTSTATUS WINAPI NtDeleteKey(HANDLE KeyHandle);
870 NTSTATUS WINAPI NtDeleteValueKey(
871 IN HANDLE KeyHandle,
872 IN PUNICODE_STRING ValueName);
874 NTSTATUS WINAPI NtEnumerateKey(
875 HANDLE KeyHandle,
876 ULONG Index,
877 KEY_INFORMATION_CLASS KeyInformationClass,
878 PVOID KeyInformation,
879 ULONG Length,
880 PULONG ResultLength);
882 NTSTATUS WINAPI NtQueryKey(
883 HANDLE KeyHandle,
884 KEY_INFORMATION_CLASS KeyInformationClass,
885 PVOID KeyInformation,
886 ULONG Length,
887 PULONG ResultLength);
889 NTSTATUS WINAPI NtEnumerateValueKey(
890 HANDLE KeyHandle,
891 ULONG Index,
892 KEY_VALUE_INFORMATION_CLASS KeyInformationClass,
893 PVOID KeyInformation,
894 ULONG Length,
895 PULONG ResultLength);
897 NTSTATUS WINAPI NtFlushKey(HANDLE KeyHandle);
899 NTSTATUS WINAPI NtLoadKey(
900 PHANDLE KeyHandle,
901 POBJECT_ATTRIBUTES ObjectAttributes);
903 NTSTATUS WINAPI NtNotifyChangeKey(
904 IN HANDLE KeyHandle,
905 IN HANDLE Event,
906 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
907 IN PVOID ApcContext OPTIONAL,
908 OUT PIO_STATUS_BLOCK IoStatusBlock,
909 IN ULONG CompletionFilter,
910 IN BOOLEAN Asynchroneous,
911 OUT PVOID ChangeBuffer,
912 IN ULONG Length,
913 IN BOOLEAN WatchSubtree);
915 NTSTATUS WINAPI NtQueryMultipleValueKey(
916 HANDLE KeyHandle,
917 PVALENTW ListOfValuesToQuery,
918 ULONG NumberOfItems,
919 PVOID MultipleValueInformation,
920 ULONG Length,
921 PULONG ReturnLength);
923 NTSTATUS WINAPI NtQueryValueKey(
924 IN HANDLE KeyHandle,
925 IN PUNICODE_STRING ValueName,
926 IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
927 OUT PVOID KeyValueInformation,
928 IN ULONG Length,
929 OUT PULONG ResultLength);
931 NTSTATUS WINAPI NtReplaceKey(
932 IN POBJECT_ATTRIBUTES ObjectAttributes,
933 IN HANDLE Key,
934 IN POBJECT_ATTRIBUTES ReplacedObjectAttributes);
936 NTSTATUS WINAPI NtRestoreKey(
937 HANDLE KeyHandle,
938 HANDLE FileHandle,
939 ULONG RestoreFlags);
941 NTSTATUS WINAPI NtSaveKey(
942 IN HANDLE KeyHandle,
943 IN HANDLE FileHandle);
945 NTSTATUS WINAPI NtSetInformationKey(
946 IN HANDLE KeyHandle,
947 IN const int KeyInformationClass,
948 IN PVOID KeyInformation,
949 IN ULONG KeyInformationLength);
951 NTSTATUS WINAPI NtSetValueKey(
952 HANDLE KeyHandle,
953 PUNICODE_STRING ValueName,
954 ULONG TitleIndex,
955 ULONG Type,
956 PVOID Data,
957 ULONG DataSize);
959 NTSTATUS WINAPI NtUnloadKey(
960 IN HANDLE KeyHandle);
962 NTSTATUS WINAPI NtClose(
963 HANDLE Handle);
965 NTSTATUS WINAPI NtTerminateProcess( HANDLE handle, LONG exit_code );
967 NTSTATUS WINAPI NtCreateSemaphore( OUT PHANDLE SemaphoreHandle,
968 IN ACCESS_MASK DesiredAccess,
969 IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
970 IN ULONG InitialCount,
971 IN ULONG MaximumCount);
972 NTSTATUS WINAPI NtReleaseSemaphore( IN HANDLE SemaphoreHandle,
973 IN ULONG ReleaseCount,
974 IN PULONG PreviousCount);
977 /* misc */
979 #if defined(__i386__) && defined(__GNUC__)
980 static inline void WINAPI DbgBreakPoint(void) { __asm__ __volatile__("int3"); }
981 static inline void WINAPI DbgUserBreakPoint(void) { __asm__ __volatile__("int3"); }
982 #else /* __i386__ && __GNUC__ */
983 void WINAPI DbgBreakPoint(void);
984 void WINAPI DbgUserBreakPoint(void);
985 #endif /* __i386__ && __GNUC__ */
986 void WINAPIV DbgPrint(LPCSTR fmt, ...);
988 DWORD WINAPI RtlAdjustPrivilege(DWORD x1,DWORD x2,DWORD x3,DWORD x4);
989 DWORD WINAPI RtlIntegerToChar(DWORD x1,DWORD x2,DWORD x3,DWORD x4);
990 LPVOID WINAPI RtlNormalizeProcessParams(LPVOID x);
991 DWORD WINAPI RtlNtStatusToDosError(DWORD error);
992 BOOLEAN WINAPI RtlGetNtProductType(LPDWORD type);
993 PIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE hModule);
995 DWORD WINAPI RtlOpenCurrentUser(
996 IN ACCESS_MASK DesiredAccess,
997 OUT PHANDLE KeyHandle);
999 BOOLEAN WINAPI RtlDosPathNameToNtPathName_U( LPWSTR from,PUNICODE_STRING us,DWORD x2,DWORD x3);
1000 BOOL WINAPI RtlImpersonateSelf(SECURITY_IMPERSONATION_LEVEL ImpersonationLevel);
1002 NTSTATUS WINAPI
1003 NtAccessCheck(
1004 IN PSECURITY_DESCRIPTOR SecurityDescriptor,
1005 IN HANDLE ClientToken,
1006 IN ACCESS_MASK DesiredAccess,
1007 IN PGENERIC_MAPPING GenericMapping,
1008 OUT PPRIVILEGE_SET PrivilegeSet,
1009 OUT PULONG ReturnLength,
1010 OUT PULONG GrantedAccess,
1011 OUT PBOOLEAN AccessStatus);
1013 #ifdef __cplusplus
1015 #endif
1017 #include "poppack.h"
1019 #endif