2 this file defines interfaces mainly exposed to device drivers and
12 #include "winbase.h" /* fixme: should be taken out sometimes */
21 #undef Status /* conflict with X11-includes*/
23 typedef struct _IO_STATUS_BLOCK
29 ULONG_PTR Information;
30 } IO_STATUS_BLOCK, *PIO_STATUS_BLOCK;
32 typedef VOID NTAPI (*PIO_APC_ROUTINE) ( PVOID ApcContext, PIO_STATUS_BLOCK IoStatusBlock, ULONG Reserved );
39 typedef struct _KEY_BASIC_INFORMATION {
40 LARGE_INTEGER LastWriteTime;
44 } KEY_BASIC_INFORMATION, *PKEY_BASIC_INFORMATION;
46 typedef struct _KEY_NODE_INFORMATION
48 LARGE_INTEGER LastWriteTime;
55 } KEY_NODE_INFORMATION, *PKEY_NODE_INFORMATION;
57 typedef struct _KEY_FULL_INFORMATION
59 LARGE_INTEGER LastWriteTime;
67 ULONG MaxValueNameLen;
68 ULONG MaxValueDataLen;
70 } KEY_FULL_INFORMATION, *PKEY_FULL_INFORMATION;
72 typedef enum _KEY_INFORMATION_CLASS
77 } KEY_INFORMATION_CLASS;
79 typedef struct _KEY_VALUE_ENTRY
81 PUNICODE_STRING ValueName;
85 } KEY_VALUE_ENTRY, *PKEY_VALUE_ENTRY;
87 /* value information */
88 typedef struct _KEY_VALUE_BASIC_INFORMATION
94 } KEY_VALUE_BASIC_INFORMATION, *PKEY_VALUE_BASIC_INFORMATION;
96 typedef struct _KEY_VALUE_FULL_INFORMATION
105 } KEY_VALUE_FULL_INFORMATION, *PKEY_VALUE_FULL_INFORMATION;
107 typedef struct _KEY_VALUE_PARTIAL_INFORMATION
113 } KEY_VALUE_PARTIAL_INFORMATION, *PKEY_VALUE_PARTIAL_INFORMATION;
115 typedef enum _KEY_VALUE_INFORMATION_CLASS
117 KeyValueBasicInformation,
118 KeyValueFullInformation,
119 KeyValuePartialInformation,
120 KeyValueFullInformationAlign64,
121 KeyValuePartialInformationAlign64
122 } KEY_VALUE_INFORMATION_CLASS;
124 NTSTATUS WINAPI RtlFormatCurrentUserKeyPath(
125 PUNICODE_STRING KeyPath);
127 /* thread information */
129 typedef enum _THREADINFOCLASS
130 { ThreadBasicInformation,
135 ThreadImpersonationToken,
136 ThreadDescriptorTableEntry,
137 ThreadEnableAlignmentFaultFixup,
138 ThreadEventPair_Reusable,
139 ThreadQuerySetWin32StartAddress,
141 ThreadPerformanceCount,
143 ThreadIdealProcessor,
145 ThreadSetTlsArrayAddress,
150 /* file information */
152 typedef enum _FILE_INFORMATION_CLASS {
153 FileDirectoryInformation = 1,
154 FileFullDirectoryInformation,
155 FileBothDirectoryInformation,
156 FileBasicInformation,
157 FileStandardInformation,
158 FileInternalInformation,
160 FileAccessInformation,
162 FileRenameInformation,
164 FileNamesInformation,
165 FileDispositionInformation,
166 FilePositionInformation,
167 FileFullEaInformation,
169 FileAlignmentInformation,
171 FileAllocationInformation,
172 FileEndOfFileInformation,
173 FileAlternateNameInformation,
174 FileStreamInformation,
176 FilePipeLocalInformation,
177 FilePipeRemoteInformation,
178 FileMailslotQueryInformation,
179 FileMailslotSetInformation,
180 FileCompressionInformation,
181 FileObjectIdInformation,
182 FileCompletionInformation,
183 FileMoveClusterInformation,
184 FileQuotaInformation,
185 FileReparsePointInformation,
186 FileNetworkOpenInformation,
187 FileAttributeTagInformation,
188 FileTrackingInformation,
189 FileMaximumInformation
190 } FILE_INFORMATION_CLASS, *PFILE_INFORMATION_CLASS;
192 typedef enum _FSINFOCLASS {
193 FileFsVolumeInformation = 1,
194 FileFsLabelInformation,
195 FileFsSizeInformation,
196 FileFsDeviceInformation,
197 FileFsAttributeInformation,
198 FileFsControlInformation,
199 FileFsFullSizeInformation,
200 FileFsObjectIdInformation,
201 FileFsMaximumInformation
202 } FS_INFORMATION_CLASS, *PFS_INFORMATION_CLASS;
204 typedef enum _SECTION_INHERIT
211 /* object information */
213 typedef enum _OBJECT_INFORMATION_CLASS
217 } OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS;
220 /* system information */
222 typedef enum SYSTEM_INFORMATION_CLASS
227 SystemPerformanceInformation
228 } SYSTEM_INFORMATION_CLASS, *PSYSTEM_INFORMATION_CLASS;
230 /* reading coffee grounds... */
231 typedef struct _THREAD_INFO
238 } THREAD_INFO, PTHREAD_INFO;
240 typedef struct _VM_COUNTERS_
241 { ULONG PeakVirtualSize;
243 ULONG PageFaultCount;
244 ULONG PeakWorkingSetSize;
245 ULONG WorkingSetSize;
246 ULONG QuotaPeakPagedPoolUsage;
247 ULONG QuotaPagedPoolUsage;
248 ULONG QuotaPeakNonPagedPoolUsage;
249 ULONG QuotaNonPagedPoolUsage;
251 ULONG PeakPagefileUsage;
252 } VM_COUNTERS, *PVM_COUNTERS;
254 /* process information */
256 typedef struct _PROCESS_INFO
257 { DWORD Offset; /* 00 offset to next PROCESS_INFO ok*/
258 DWORD ThreadCount; /* 04 number of ThreadInfo member ok */
260 FILETIME CreationTime; /* 20 */
262 PWCHAR ProcessName; /* 3c ok */
264 DWORD ProcessID; /* 44 ok*/
265 DWORD ParentProcessID;
267 DWORD Unknown3[2]; /* 50 */
268 ULONG PeakVirtualSize;
270 ULONG PageFaultCount;
271 ULONG PeakWorkingSetSize;
272 ULONG WorkingSetSize;
273 ULONG QuotaPeakPagedPoolUsage;
274 ULONG QuotaPagedPoolUsage;
275 ULONG QuotaPeakNonPagedPoolUsage;
276 ULONG QuotaNonPagedPoolUsage;
278 ULONG PeakPagefileUsage;
281 THREAD_INFO ati[ANYSIZE_ARRAY]; /* 94 size=0x40*/
282 } PROCESS_INFO, PPROCESS_INFO;
284 NTSTATUS WINAPI NtQuerySystemInformation(
285 IN SYSTEM_INFORMATION_CLASS SystemInformationClass,
286 OUT PVOID SystemInformation,
288 OUT PULONG ResultLength);
291 * system configuration
295 typedef struct _SYSTEM_TIME_ADJUSTMENT
297 ULONG TimeAdjustment;
298 BOOLEAN TimeAdjustmentDisabled;
300 } SYSTEM_TIME_ADJUSTMENT, *PSYSTEM_TIME_ADJUSTMENT;
302 typedef struct _SYSTEM_CONFIGURATION_INFO
307 { WORD ProcessorArchitecture;
312 PVOID MinimumApplicationAddress;
313 PVOID MaximumApplicationAddress;
314 ULONG ActiveProcessorMask;
315 ULONG NumberOfProcessors;
317 ULONG AllocationGranularity;
319 WORD ProcessorRevision;
321 } SYSTEM_CONFIGURATION_INFO, *PSYSTEM_CONFIGURATION_INFO;
324 typedef struct _SYSTEM_CACHE_INFORMATION
328 ULONG PageFaultCount;
329 ULONG MinimumWorkingSet;
330 ULONG MaximumWorkingSet;
333 } SYSTEM_CACHE_INFORMATION;
336 * NtQueryProcessInformation
339 /* parameter ProcessInformationClass */
341 typedef enum _PROCESSINFOCLASS
342 { ProcessBasicInformation,
348 ProcessRaisePriority,
350 ProcessExceptionPort,
352 ProcessLdtInformation,
354 ProcessDefaultHardErrorMode,
355 ProcessIoPortHandlers,
356 ProcessPooledUsageAndLimits,
357 ProcessWorkingSetWatch,
359 ProcessEnableAlignmentFaultFixup,
360 ProcessPriorityClass,
361 ProcessWx86Information,
364 ProcessPriorityBoost,
366 ProcessSessionInformation,
367 ProcessForegroundInformation,
368 ProcessWow64Information,
372 /* parameter ProcessInformation (depending on ProcessInformationClass) */
374 typedef struct _PROCESS_BASIC_INFORMATION
376 DWORD PebBaseAddress;
379 ULONG UniqueProcessId;
380 ULONG InheritedFromUniqueProcessId;
381 } PROCESS_BASIC_INFORMATION;
383 NTSTATUS WINAPI NtQueryInformationProcess(
384 IN HANDLE ProcessHandle,
385 IN PROCESSINFOCLASS ProcessInformationClass,
386 OUT PVOID ProcessInformation,
387 IN ULONG ProcessInformationLength,
388 OUT PULONG ReturnLength);
390 #define NtCurrentProcess() ( (HANDLE) -1 )
396 typedef enum _TIMER_TYPE
403 /* token functions */
405 NTSTATUS WINAPI NtOpenProcessToken(
406 HANDLE ProcessHandle,
408 HANDLE *TokenHandle);
410 NTSTATUS WINAPI NtOpenThreadToken(
414 HANDLE *TokenHandle);
416 NTSTATUS WINAPI NtAdjustPrivilegesToken(
417 IN HANDLE TokenHandle,
418 IN BOOLEAN DisableAllPrivileges,
419 IN PTOKEN_PRIVILEGES NewState,
420 IN DWORD BufferLength,
421 OUT PTOKEN_PRIVILEGES PreviousState,
422 OUT PDWORD ReturnLength);
424 NTSTATUS WINAPI NtQueryInformationToken(
426 DWORD tokeninfoclass,
428 DWORD tokeninfolength,
433 BOOLEAN WINAPI RtlAllocateAndInitializeSid (
434 PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,
435 BYTE nSubAuthorityCount,
436 DWORD nSubAuthority0, DWORD nSubAuthority1,
437 DWORD nSubAuthority2, DWORD nSubAuthority3,
438 DWORD nSubAuthority4, DWORD nSubAuthority5,
439 DWORD nSubAuthority6, DWORD nSubAuthority7,
442 BOOL WINAPI RtlInitializeSid(
444 PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,
445 BYTE nSubAuthorityCount);
447 DWORD WINAPI RtlFreeSid(
450 BOOL WINAPI RtlEqualSid(
454 DWORD WINAPI RtlLengthRequiredSid(
457 DWORD WINAPI RtlLengthSid(
460 LPDWORD WINAPI RtlSubAuthoritySid(
464 LPBYTE WINAPI RtlSubAuthorityCountSid(
467 DWORD WINAPI RtlCopySid(
472 BOOL WINAPI RtlValidSid(
475 BOOL WINAPI RtlEqualPrefixSid(
479 PSID_IDENTIFIER_AUTHORITY WINAPI RtlIdentifierAuthoritySid(
482 /* security descriptor functions */
484 NTSTATUS WINAPI RtlCreateSecurityDescriptor(
485 PSECURITY_DESCRIPTOR lpsd,
488 NTSTATUS WINAPI RtlValidSecurityDescriptor(
489 PSECURITY_DESCRIPTOR SecurityDescriptor);
491 ULONG WINAPI RtlLengthSecurityDescriptor(
492 PSECURITY_DESCRIPTOR SecurityDescriptor);
494 NTSTATUS WINAPI RtlGetDaclSecurityDescriptor(
495 IN PSECURITY_DESCRIPTOR pSecurityDescriptor,
496 OUT PBOOLEAN lpbDaclPresent,
498 OUT PBOOLEAN lpbDaclDefaulted);
500 NTSTATUS WINAPI RtlSetDaclSecurityDescriptor (
501 PSECURITY_DESCRIPTOR lpsd,
504 BOOLEAN dacldefaulted );
506 NTSTATUS WINAPI RtlGetSaclSecurityDescriptor(
507 IN PSECURITY_DESCRIPTOR pSecurityDescriptor,
508 OUT PBOOLEAN lpbSaclPresent,
510 OUT PBOOLEAN lpbSaclDefaulted);
512 NTSTATUS WINAPI RtlSetSaclSecurityDescriptor (
513 PSECURITY_DESCRIPTOR lpsd,
516 BOOLEAN sacldefaulted);
518 NTSTATUS WINAPI RtlGetOwnerSecurityDescriptor(
519 PSECURITY_DESCRIPTOR SecurityDescriptor,
521 PBOOLEAN OwnerDefaulted);
523 NTSTATUS WINAPI RtlSetOwnerSecurityDescriptor(
524 PSECURITY_DESCRIPTOR lpsd,
526 BOOLEAN ownerdefaulted);
528 NTSTATUS WINAPI RtlSetGroupSecurityDescriptor (
529 PSECURITY_DESCRIPTOR lpsd,
531 BOOLEAN groupdefaulted);
533 NTSTATUS WINAPI RtlGetGroupSecurityDescriptor(
534 PSECURITY_DESCRIPTOR SecurityDescriptor,
536 PBOOLEAN GroupDefaulted);
538 NTSTATUS WINAPI RtlMakeSelfRelativeSD(
539 IN PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor,
540 IN PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor,
541 IN OUT LPDWORD lpdwBufferLength);
543 NTSTATUS WINAPI RtlGetControlSecurityDescriptor(
544 PSECURITY_DESCRIPTOR pSecurityDescriptor,
545 PSECURITY_DESCRIPTOR_CONTROL pControl,
546 LPDWORD lpdwRevision);
550 NTSTATUS WINAPI RtlCreateAcl(
555 BOOLEAN WINAPI RtlFirstFreeAce(
559 NTSTATUS WINAPI RtlAddAce(
563 PACE_HEADER acestart,
566 BOOL WINAPI RtlAddAccessAllowedAce(
568 IN DWORD dwAceRevision,
572 BOOL WINAPI AddAccessAllowedAceEx(
574 IN DWORD dwAceRevision,
579 DWORD WINAPI RtlGetAce(
584 /* string functions */
586 DWORD WINAPI RtlAnsiStringToUnicodeSize(const STRING*);
587 NTSTATUS WINAPI RtlAnsiStringToUnicodeString(UNICODE_STRING*,const STRING *,BOOLEAN);
588 NTSTATUS WINAPI RtlAppendAsciizToString(STRING*,LPCSTR);
589 NTSTATUS WINAPI RtlAppendStringToString(STRING*,const STRING*);
590 NTSTATUS WINAPI RtlAppendUnicodeStringToString(UNICODE_STRING*,const UNICODE_STRING*);
591 NTSTATUS WINAPI RtlAppendUnicodeToString(UNICODE_STRING*,LPCWSTR);
592 LONG WINAPI RtlCompareString(const STRING*,const STRING*,BOOLEAN);
593 LONG WINAPI RtlCompareUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
594 void WINAPI RtlCopyString(STRING*,const STRING*);
595 void WINAPI RtlCopyUnicodeString(UNICODE_STRING*,const UNICODE_STRING*);
596 BOOLEAN WINAPI RtlCreateUnicodeString(PUNICODE_STRING,LPCWSTR);
597 BOOLEAN WINAPI RtlCreateUnicodeStringFromAsciiz(PUNICODE_STRING,LPCSTR);
598 void WINAPI RtlEraseUnicodeString(UNICODE_STRING*);
599 BOOLEAN WINAPI RtlEqualString(const STRING*,const STRING*,BOOLEAN);
600 BOOLEAN WINAPI RtlEqualUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
601 void WINAPI RtlFreeAnsiString(PSTRING);
602 void WINAPI RtlFreeOemString(PSTRING);
603 void WINAPI RtlFreeUnicodeString(PUNICODE_STRING);
604 void WINAPI RtlInitAnsiString(PSTRING,LPCSTR);
605 void WINAPI RtlInitString(PSTRING,LPCSTR);
606 void WINAPI RtlInitUnicodeString(PUNICODE_STRING,LPCWSTR);
607 NTSTATUS WINAPI RtlMultiByteToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
608 NTSTATUS WINAPI RtlMultiByteToUnicodeSize(DWORD*,LPCSTR,UINT);
609 UINT WINAPI RtlOemStringToUnicodeSize(const STRING*);
610 NTSTATUS WINAPI RtlOemStringToUnicodeString(UNICODE_STRING*,const STRING*,BOOLEAN);
611 NTSTATUS WINAPI RtlOemToUnicodeN(LPWSTR,DWORD,LPDWORD,LPCSTR,DWORD);
612 BOOLEAN WINAPI RtlPrefixString(const STRING*,const STRING*,BOOLEAN);
613 BOOLEAN WINAPI RtlPrefixUnicodeString(const UNICODE_STRING*,const UNICODE_STRING*,BOOLEAN);
614 DWORD WINAPI RtlUnicodeStringToAnsiSize(const UNICODE_STRING*);
615 NTSTATUS WINAPI RtlUnicodeStringToAnsiString(STRING*,const UNICODE_STRING*,BOOLEAN);
616 DWORD WINAPI RtlUnicodeStringToOemSize(const UNICODE_STRING*);
617 NTSTATUS WINAPI RtlUnicodeStringToOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
618 NTSTATUS WINAPI RtlUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
619 NTSTATUS WINAPI RtlUnicodeToMultiByteSize(DWORD*,LPCWSTR,UINT);
620 NTSTATUS WINAPI RtlUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
621 NTSTATUS WINAPI RtlUpcaseUnicodeString(UNICODE_STRING*,const UNICODE_STRING *,BOOLEAN);
622 NTSTATUS WINAPI RtlUpcaseUnicodeStringToAnsiString(STRING*,const UNICODE_STRING*,BOOLEAN);
623 NTSTATUS WINAPI RtlUpcaseUnicodeStringToOemString(STRING*,const UNICODE_STRING*,BOOLEAN);
624 NTSTATUS WINAPI RtlUpcaseUnicodeToMultiByteN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
625 NTSTATUS WINAPI RtlUpcaseUnicodeToOemN(LPSTR,DWORD,LPDWORD,LPCWSTR,DWORD);
627 DWORD WINAPI RtlIsTextUnicode(
632 INT __cdecl wcstol(LPCWSTR,LPWSTR*,INT);
634 /* resource functions */
636 typedef struct _RTL_RWLOCK {
637 CRITICAL_SECTION rtlCS;
638 HANDLE hSharedReleaseSemaphore;
640 HANDLE hExclusiveReleaseSemaphore;
641 UINT uExclusiveWaiters;
643 HANDLE hOwningThreadId;
644 DWORD dwTimeoutBoost;
646 } RTL_RWLOCK, *LPRTL_RWLOCK;
648 VOID WINAPI RtlInitializeResource(
651 VOID WINAPI RtlDeleteResource(
654 BYTE WINAPI RtlAcquireResourceExclusive(
655 LPRTL_RWLOCK, BYTE fWait);
657 BYTE WINAPI RtlAcquireResourceShared(
658 LPRTL_RWLOCK, BYTE fWait);
660 VOID WINAPI RtlReleaseResource(
663 VOID WINAPI RtlDumpResource(
668 typedef struct _TIME_FIELDS
679 typedef TIME_FIELDS *PTIME_FIELDS;
681 VOID WINAPI RtlSystemTimeToLocalTime(
682 IN PLARGE_INTEGER SystemTime,
683 OUT PLARGE_INTEGER LocalTime);
685 VOID WINAPI RtlTimeToTimeFields(
686 PLARGE_INTEGER liTime,
687 PTIME_FIELDS TimeFields);
689 BOOLEAN WINAPI RtlTimeFieldsToTime(
690 PTIME_FIELDS tfTimeFields,
691 PLARGE_INTEGER Time);
693 VOID WINAPI RtlTimeToElapsedTimeFields(
694 PLARGE_INTEGER liTime,
695 PTIME_FIELDS TimeFields);
697 void WINAPI NtQuerySystemTime( LARGE_INTEGER *time );
699 BOOLEAN WINAPI RtlTimeToSecondsSince1980( const FILETIME *time, LPDWORD res );
700 BOOLEAN WINAPI RtlTimeToSecondsSince1970( const FILETIME *time, LPDWORD res );
701 void WINAPI RtlSecondsSince1970ToTime( DWORD time, FILETIME *res );
702 void WINAPI RtlSecondsSince1980ToTime( DWORD time, FILETIME *res );
706 /* Data structure for heap definition. This includes various
707 sizing parameters and callback routines, which, if left NULL,
708 result in default behavior */
711 { ULONG Length; /* = sizeof(RTL_HEAP_DEFINITION) */
713 } RTL_HEAP_DEFINITION, *PRTL_HEAP_DEFINITION;
715 HANDLE WINAPI RtlCreateHeap(ULONG,PVOID,ULONG,ULONG,PVOID,PRTL_HEAP_DEFINITION);
716 HANDLE WINAPI RtlDestroyHeap(HANDLE);
717 PVOID WINAPI RtlAllocateHeap(HANDLE,ULONG,ULONG);
718 BOOLEAN WINAPI RtlFreeHeap(HANDLE,ULONG,PVOID);
719 PVOID WINAPI RtlReAllocateHeap(HANDLE,ULONG,PVOID,ULONG);
720 ULONG WINAPI RtlCompactHeap(HANDLE,ULONG);
721 BOOLEAN WINAPI RtlLockHeap(HANDLE);
722 BOOLEAN WINAPI RtlUnlockHeap(HANDLE);
723 ULONG WINAPI RtlSizeHeap(HANDLE,ULONG,PVOID);
724 BOOLEAN WINAPI RtlValidateHeap(HANDLE,ULONG,PCVOID);
725 ULONG WINAPI RtlGetProcessHeaps(ULONG,HANDLE*);
726 NTSTATUS WINAPI RtlWalkHeap(HANDLE,PVOID);
730 void WINAPI NtRaiseException(
731 PEXCEPTION_RECORD,PCONTEXT,BOOL);
733 void WINAPI RtlRaiseException(
736 void WINAPI RtlRaiseStatus(
739 void WINAPI RtlUnwind(
742 PEXCEPTION_RECORD,DWORD);
744 /* process environment block */
745 VOID WINAPI RtlAcquirePebLock(void);
746 VOID WINAPI RtlReleasePebLock(void);
749 LONGLONG WINAPI RtlConvertLongToLargeInteger( LONG a );
750 LONGLONG WINAPI RtlEnlargedIntegerMultiply( INT a, INT b );
751 LONGLONG WINAPI RtlExtendedMagicDivide( LONGLONG a, LONGLONG b, INT shift );
752 LONGLONG WINAPI RtlExtendedIntegerMultiply( LONGLONG a, INT b );
753 LONGLONG WINAPI RtlExtendedLargeIntegerDivide( LONGLONG a, INT b, INT *rem );
754 LONGLONG WINAPI RtlLargeIntegerAdd( LONGLONG a, LONGLONG b );
755 LONGLONG WINAPI RtlLargeIntegerArithmeticShift( LONGLONG a, INT count );
756 LONGLONG WINAPI RtlLargeIntegerNegate( LONGLONG a );
757 LONGLONG WINAPI RtlLargeIntegerShiftLeft( LONGLONG a, INT count );
758 LONGLONG WINAPI RtlLargeIntegerShiftRight( LONGLONG a, INT count );
759 LONGLONG WINAPI RtlLargeIntegerSubtract( LONGLONG a, LONGLONG b );
760 ULONGLONG WINAPI RtlEnlargedUnsignedMultiply( UINT a, UINT b );
761 UINT WINAPI RtlEnlargedUnsignedDivide( ULONGLONG a, UINT b, UINT *remptr );
762 ULONGLONG WINAPI RtlConvertUlongToLargeInteger( ULONG a );
763 ULONGLONG WINAPI RtlLargeIntegerDivide( ULONGLONG a, ULONGLONG b, ULONGLONG *rem );
766 DWORD WINAPI RtlCreateEnvironment(
770 DWORD WINAPI RtlDestroyEnvironment(
773 DWORD WINAPI RtlQueryEnvironmentVariable_U(
776 PUNICODE_STRING val) ;
778 DWORD WINAPI RtlSetEnvironmentVariable(
781 PUNICODE_STRING val);
783 /* object security */
785 DWORD WINAPI RtlNewSecurityObject(
793 DWORD WINAPI RtlDeleteSecurityObject(
797 NtQuerySecurityObject(
799 IN SECURITY_INFORMATION RequestedInformation,
800 OUT PSECURITY_DESCRIPTOR pSecurityDesriptor,
802 OUT PULONG ResultLength);
807 IN SECURITY_INFORMATION SecurityInformation,
808 IN PSECURITY_DESCRIPTOR SecurityDescriptor);
810 /* registry functions */
812 NTSTATUS WINAPI NtCreateKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,
813 const UNICODE_STRING*,ULONG,PULONG);
814 NTSTATUS WINAPI NtDeleteKey(HANDLE);
815 NTSTATUS WINAPI NtDeleteValueKey(HANDLE,const UNICODE_STRING*);
816 NTSTATUS WINAPI NtOpenKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
817 NTSTATUS WINAPI NtQueryKey(HANDLE,KEY_INFORMATION_CLASS,void*,DWORD,DWORD*);
818 NTSTATUS WINAPI NtSetValueKey(HANDLE,const UNICODE_STRING*,ULONG,ULONG,const void*,ULONG);
819 NTSTATUS WINAPI NtEnumerateKey(HANDLE,ULONG,KEY_INFORMATION_CLASS,void*,DWORD,DWORD*);
820 NTSTATUS WINAPI NtQueryValueKey(HANDLE,const UNICODE_STRING*,KEY_VALUE_INFORMATION_CLASS,
822 NTSTATUS WINAPI NtLoadKey(const OBJECT_ATTRIBUTES*,const OBJECT_ATTRIBUTES*);
825 NTSTATUS WINAPI NtEnumerateValueKey(
828 KEY_VALUE_INFORMATION_CLASS KeyInformationClass,
829 PVOID KeyInformation,
831 PULONG ResultLength);
833 NTSTATUS WINAPI NtFlushKey(HANDLE KeyHandle);
835 NTSTATUS WINAPI NtNotifyChangeKey(
838 IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
839 IN PVOID ApcContext OPTIONAL,
840 OUT PIO_STATUS_BLOCK IoStatusBlock,
841 IN ULONG CompletionFilter,
842 IN BOOLEAN Asynchroneous,
843 OUT PVOID ChangeBuffer,
845 IN BOOLEAN WatchSubtree);
847 NTSTATUS WINAPI NtQueryMultipleValueKey(
849 PVALENTW ListOfValuesToQuery,
851 PVOID MultipleValueInformation,
853 PULONG ReturnLength);
855 NTSTATUS WINAPI NtReplaceKey(
856 IN POBJECT_ATTRIBUTES ObjectAttributes,
858 IN POBJECT_ATTRIBUTES ReplacedObjectAttributes);
860 NTSTATUS WINAPI NtRestoreKey(
865 NTSTATUS WINAPI NtSaveKey(
867 IN HANDLE FileHandle);
869 NTSTATUS WINAPI NtSetInformationKey(
871 IN const int KeyInformationClass,
872 IN PVOID KeyInformation,
873 IN ULONG KeyInformationLength);
875 NTSTATUS WINAPI NtUnloadKey(
876 IN HANDLE KeyHandle);
878 NTSTATUS WINAPI NtClose(
881 NTSTATUS WINAPI NtTerminateProcess( HANDLE handle, LONG exit_code );
882 NTSTATUS WINAPI NtTerminateThread( HANDLE handle, LONG exit_code );
884 NTSTATUS WINAPI NtClearEvent(HANDLE);
885 NTSTATUS WINAPI NtCreateEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *,BOOLEAN,BOOLEAN);
886 NTSTATUS WINAPI NtCreateSemaphore(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*,ULONG,ULONG);
887 NTSTATUS WINAPI NtOpenEvent(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES *attr);
888 NTSTATUS WINAPI NtPulseEvent(HANDLE,PULONG);
889 NTSTATUS WINAPI NtReleaseSemaphore(HANDLE,ULONG,PULONG);
890 NTSTATUS WINAPI NtResetEvent(HANDLE,PULONG);
891 NTSTATUS WINAPI NtSetEvent(HANDLE,PULONG);
893 NTSTATUS WINAPI RtlInitializeCriticalSection( RTL_CRITICAL_SECTION *crit );
894 NTSTATUS WINAPI RtlInitializeCriticalSectionAndSpinCount( RTL_CRITICAL_SECTION *crit, DWORD spincount );
895 NTSTATUS WINAPI RtlDeleteCriticalSection( RTL_CRITICAL_SECTION *crit );
896 NTSTATUS WINAPI RtlpWaitForCriticalSection( RTL_CRITICAL_SECTION *crit );
897 NTSTATUS WINAPI RtlpUnWaitCriticalSection( RTL_CRITICAL_SECTION *crit );
898 NTSTATUS WINAPI RtlEnterCriticalSection( RTL_CRITICAL_SECTION *crit );
899 BOOL WINAPI RtlTryEnterCriticalSection( RTL_CRITICAL_SECTION *crit );
900 NTSTATUS WINAPI RtlLeaveCriticalSection( RTL_CRITICAL_SECTION *crit );
902 /* string functions */
903 extern LPSTR _strlwr( LPSTR str );
904 extern LPSTR _strupr( LPSTR str );
908 #if defined(__i386__) && defined(__GNUC__)
909 static inline void WINAPI DbgBreakPoint(void) { __asm__ __volatile__("int3"); }
910 static inline void WINAPI DbgUserBreakPoint(void) { __asm__ __volatile__("int3"); }
911 #else /* __i386__ && __GNUC__ */
912 void WINAPI DbgBreakPoint(void);
913 void WINAPI DbgUserBreakPoint(void);
914 #endif /* __i386__ && __GNUC__ */
915 void WINAPIV DbgPrint(LPCSTR fmt, ...);
917 DWORD WINAPI RtlAdjustPrivilege(DWORD x1,DWORD x2,DWORD x3,DWORD x4);
918 DWORD WINAPI RtlIntegerToChar(DWORD x1,DWORD x2,DWORD x3,DWORD x4);
919 LPVOID WINAPI RtlNormalizeProcessParams(LPVOID x);
920 DWORD WINAPI RtlNtStatusToDosError(DWORD error);
921 BOOLEAN WINAPI RtlGetNtProductType(LPDWORD type);
922 PIMAGE_NT_HEADERS WINAPI RtlImageNtHeader(HMODULE hModule);
924 DWORD WINAPI RtlOpenCurrentUser(
925 IN ACCESS_MASK DesiredAccess,
926 OUT PHANDLE KeyHandle);
928 BOOLEAN WINAPI RtlDosPathNameToNtPathName_U( LPWSTR from,PUNICODE_STRING us,DWORD x2,DWORD x3);
929 BOOL WINAPI RtlImpersonateSelf(SECURITY_IMPERSONATION_LEVEL ImpersonationLevel);
933 IN PSECURITY_DESCRIPTOR SecurityDescriptor,
934 IN HANDLE ClientToken,
935 IN ACCESS_MASK DesiredAccess,
936 IN PGENERIC_MAPPING GenericMapping,
937 OUT PPRIVILEGE_SET PrivilegeSet,
938 OUT PULONG ReturnLength,
939 OUT PULONG GrantedAccess,
940 OUT PBOOLEAN AccessStatus);