ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

rtlfuncs.h
Go to the documentation of this file.
00001 /*++ NDK Version: 0098
00002 
00003 Copyright (c) Alex Ionescu.  All rights reserved.
00004 
00005 Header Name:
00006 
00007     rtlfuncs.h
00008 
00009 Abstract:
00010 
00011     Function definitions for the Run-Time Library
00012 
00013 Author:
00014 
00015     Alex Ionescu (alexi@tinykrnl.org) - Updated - 27-Feb-2006
00016 
00017 --*/
00018 
00019 #ifndef _RTLFUNCS_H
00020 #define _RTLFUNCS_H
00021 
00022 //
00023 // Dependencies
00024 //
00025 #include <umtypes.h>
00026 #include <ntnls.h>
00027 #include <rtltypes.h>
00028 #include <pstypes.h>
00029 #include <extypes.h>
00030 #include "in6addr.h"
00031 #include "inaddr.h"
00032 
00033 #ifdef __cplusplus
00034 extern "C" {
00035 #endif
00036 
00037 #ifdef NTOS_MODE_USER
00038 
00039 //
00040 // List Functions
00041 //
00042 FORCEINLINE
00043 VOID
00044 InitializeListHead(
00045     IN PLIST_ENTRY ListHead
00046 )
00047 {
00048     ListHead->Flink = ListHead->Blink = ListHead;
00049 }
00050 
00051 FORCEINLINE
00052 VOID
00053 InsertHeadList(
00054     IN PLIST_ENTRY ListHead,
00055     IN PLIST_ENTRY Entry
00056 )
00057 {
00058     PLIST_ENTRY OldFlink;
00059     OldFlink = ListHead->Flink;
00060     Entry->Flink = OldFlink;
00061     Entry->Blink = ListHead;
00062     OldFlink->Blink = Entry;
00063     ListHead->Flink = Entry;
00064 }
00065 
00066 FORCEINLINE
00067 VOID
00068 InsertTailList(
00069     IN PLIST_ENTRY ListHead,
00070     IN PLIST_ENTRY Entry
00071 )
00072 {
00073     PLIST_ENTRY OldBlink;
00074     OldBlink = ListHead->Blink;
00075     Entry->Flink = ListHead;
00076     Entry->Blink = OldBlink;
00077     OldBlink->Flink = Entry;
00078     ListHead->Blink = Entry;
00079 }
00080 
00081 FORCEINLINE
00082 BOOLEAN
00083 IsListEmpty(
00084     IN const LIST_ENTRY * ListHead
00085 )
00086 {
00087     return (BOOLEAN)(ListHead->Flink == ListHead);
00088 }
00089 
00090 FORCEINLINE
00091 PSINGLE_LIST_ENTRY
00092 PopEntryList(
00093     PSINGLE_LIST_ENTRY ListHead
00094 )
00095 {
00096     PSINGLE_LIST_ENTRY FirstEntry;
00097     FirstEntry = ListHead->Next;
00098     if (FirstEntry != NULL) {
00099         ListHead->Next = FirstEntry->Next;
00100     }
00101 
00102     return FirstEntry;
00103 }
00104 
00105 FORCEINLINE
00106 VOID
00107 PushEntryList(
00108     PSINGLE_LIST_ENTRY ListHead,
00109     PSINGLE_LIST_ENTRY Entry
00110 )
00111 {
00112     Entry->Next = ListHead->Next;
00113     ListHead->Next = Entry;
00114 }
00115 
00116 FORCEINLINE
00117 BOOLEAN
00118 RemoveEntryList(
00119     IN PLIST_ENTRY Entry)
00120 {
00121     PLIST_ENTRY OldFlink;
00122     PLIST_ENTRY OldBlink;
00123 
00124     OldFlink = Entry->Flink;
00125     OldBlink = Entry->Blink;
00126     OldFlink->Blink = OldBlink;
00127     OldBlink->Flink = OldFlink;
00128     return (BOOLEAN)(OldFlink == OldBlink);
00129 }
00130 
00131 FORCEINLINE
00132 PLIST_ENTRY
00133 RemoveHeadList(
00134     IN PLIST_ENTRY ListHead)
00135 {
00136     PLIST_ENTRY Flink;
00137     PLIST_ENTRY Entry;
00138 
00139     Entry = ListHead->Flink;
00140     Flink = Entry->Flink;
00141     ListHead->Flink = Flink;
00142     Flink->Blink = ListHead;
00143     return Entry;
00144 }
00145 
00146 FORCEINLINE
00147 PLIST_ENTRY
00148 RemoveTailList(
00149     IN PLIST_ENTRY ListHead)
00150 {
00151     PLIST_ENTRY Blink;
00152     PLIST_ENTRY Entry;
00153 
00154     Entry = ListHead->Blink;
00155     Blink = Entry->Blink;
00156     ListHead->Blink = Blink;
00157     Blink->Flink = ListHead;
00158     return Entry;
00159 }
00160 
00161 //
00162 // Unicode string macros
00163 //
00164 FORCEINLINE
00165 VOID
00166 RtlInitEmptyUnicodeString(OUT PUNICODE_STRING UnicodeString,
00167                           IN PWSTR Buffer,
00168                           IN USHORT BufferSize)
00169 {
00170     UnicodeString->Length = 0;
00171     UnicodeString->MaximumLength = BufferSize;
00172     UnicodeString->Buffer = Buffer;
00173 }
00174 
00175 FORCEINLINE
00176 VOID
00177 RtlInitEmptyAnsiString(OUT PANSI_STRING AnsiString,
00178                        IN PSTR Buffer,
00179                        IN USHORT BufferSize)
00180 {
00181     AnsiString->Length = 0;
00182     AnsiString->MaximumLength = BufferSize;
00183     AnsiString->Buffer = Buffer;
00184 }
00185 
00186 //
00187 // LUID Macros
00188 //
00189 #define RtlEqualLuid(L1, L2) (((L1)->HighPart == (L2)->HighPart) && \
00190                               ((L1)->LowPart  == (L2)->LowPart))
00191 FORCEINLINE
00192 LUID
00193 NTAPI_INLINE
00194 RtlConvertUlongToLuid(ULONG Ulong)
00195 {
00196     LUID TempLuid;
00197 
00198     TempLuid.LowPart = Ulong;
00199     TempLuid.HighPart = 0;
00200     return TempLuid;
00201 }
00202 
00203 //
00204 // ASSERT Macros
00205 //
00206 #ifndef ASSERT
00207 #if DBG
00208 
00209 #define ASSERT( exp ) \
00210     ((void)((!(exp)) ? \
00211         (RtlAssert( (PVOID)#exp, (PVOID)__FILE__, __LINE__, NULL ),FALSE) : \
00212         TRUE))
00213 
00214 #define ASSERTMSG( msg, exp ) \
00215     ((void)((!(exp)) ? \
00216         (RtlAssert( (PVOID)#exp, (PVOID)__FILE__, __LINE__, (PCHAR)msg ),FALSE) : \
00217         TRUE))
00218 
00219 #else
00220 
00221 #define ASSERT( exp )         ((void) 0)
00222 #define ASSERTMSG( msg, exp ) ((void) 0)
00223 
00224 #endif
00225 #endif
00226 
00227 #ifdef NTOS_KERNEL_RUNTIME
00228 
00229 //
00230 // Executing RTL functions at DISPATCH_LEVEL or higher will result in a
00231 // bugcheck.
00232 //
00233 #define RTL_PAGED_CODE PAGED_CODE
00234 
00235 #else
00236 
00237 //
00238 // This macro does nothing in user mode
00239 //
00240 #define RTL_PAGED_CODE NOP_FUNCTION
00241 
00242 #endif
00243 
00244 //
00245 // RTL Splay Tree Functions
00246 //
00247 #ifndef RTL_USE_AVL_TABLES
00248 
00249 NTSYSAPI
00250 VOID
00251 NTAPI
00252 RtlInitializeGenericTable(
00253     OUT PRTL_GENERIC_TABLE Table,
00254     IN PRTL_GENERIC_COMPARE_ROUTINE CompareRoutine,
00255     IN PRTL_GENERIC_ALLOCATE_ROUTINE AllocateRoutine,
00256     IN PRTL_GENERIC_FREE_ROUTINE FreeRoutine,
00257     IN PVOID TableContext OPTIONAL
00258 );
00259 
00260 NTSYSAPI
00261 PVOID
00262 NTAPI
00263 RtlInsertElementGenericTable(
00264     IN PRTL_GENERIC_TABLE Table,
00265     IN PVOID Buffer,
00266     IN CLONG BufferSize,
00267     OUT PBOOLEAN NewElement OPTIONAL
00268 );
00269 
00270 NTSYSAPI
00271 PVOID
00272 NTAPI
00273 RtlInsertElementGenericTableFull(
00274     IN PRTL_GENERIC_TABLE Table,
00275     IN PVOID Buffer,
00276     IN CLONG BufferSize,
00277     OUT PBOOLEAN NewElement OPTIONAL,
00278     IN PVOID NodeOrParent,
00279     IN TABLE_SEARCH_RESULT SearchResult
00280 );
00281 
00282 NTSYSAPI
00283 BOOLEAN
00284 NTAPI
00285 RtlDeleteElementGenericTable(
00286     IN PRTL_GENERIC_TABLE Table,
00287     IN PVOID Buffer
00288 );
00289 
00290 NTSYSAPI
00291 PVOID
00292 NTAPI
00293 RtlLookupElementGenericTable(
00294     IN PRTL_GENERIC_TABLE Table,
00295     IN PVOID Buffer
00296 );
00297 
00298 NTSYSAPI
00299 PVOID
00300 NTAPI
00301 RtlLookupElementGenericTableFull(
00302     IN PRTL_GENERIC_TABLE Table,
00303     IN PVOID Buffer,
00304     OUT PVOID *NodeOrParent,
00305     OUT TABLE_SEARCH_RESULT *SearchResult
00306 );
00307 
00308 NTSYSAPI
00309 PVOID
00310 NTAPI
00311 RtlEnumerateGenericTable(
00312     IN PRTL_GENERIC_TABLE Table,
00313     IN BOOLEAN Restart
00314 );
00315 
00316 NTSYSAPI
00317 PVOID
00318 NTAPI
00319 RtlEnumerateGenericTableWithoutSplaying(
00320     IN PRTL_GENERIC_TABLE Table,
00321     IN OUT PVOID *RestartKey
00322 );
00323 
00324 NTSYSAPI
00325 PVOID
00326 NTAPI
00327 RtlGetElementGenericTable(
00328     IN PRTL_GENERIC_TABLE Table,
00329     IN ULONG I
00330 );
00331 
00332 NTSYSAPI
00333 ULONG
00334 NTAPI
00335 RtlNumberGenericTableElements(
00336     IN PRTL_GENERIC_TABLE Table
00337 );
00338 
00339 NTSYSAPI
00340 BOOLEAN
00341 NTAPI
00342 RtlIsGenericTableEmpty(
00343     IN PRTL_GENERIC_TABLE Table
00344 );
00345 
00346 #endif /* !RTL_USE_AVL_TABLES */
00347 
00348 NTSYSAPI
00349 PRTL_SPLAY_LINKS
00350 NTAPI
00351 RtlSplay(
00352     IN PRTL_SPLAY_LINKS Links
00353 );
00354 
00355 NTSYSAPI
00356 PRTL_SPLAY_LINKS
00357 NTAPI
00358 RtlDelete(
00359     IN PRTL_SPLAY_LINKS Links
00360 );
00361 
00362 NTSYSAPI
00363 VOID
00364 NTAPI
00365 RtlDeleteNoSplay(
00366     IN PRTL_SPLAY_LINKS Links,
00367     OUT PRTL_SPLAY_LINKS *Root
00368 );
00369 
00370 NTSYSAPI
00371 PRTL_SPLAY_LINKS
00372 NTAPI
00373 RtlSubtreeSuccessor(
00374     IN PRTL_SPLAY_LINKS Links
00375 );
00376 
00377 NTSYSAPI
00378 PRTL_SPLAY_LINKS
00379 NTAPI
00380 RtlSubtreePredecessor(
00381     IN PRTL_SPLAY_LINKS Links
00382 );
00383 
00384 NTSYSAPI
00385 PRTL_SPLAY_LINKS
00386 NTAPI
00387 RtlRealSuccessor(
00388     IN PRTL_SPLAY_LINKS Links
00389 );
00390 
00391 NTSYSAPI
00392 PRTL_SPLAY_LINKS
00393 NTAPI
00394 RtlRealPredecessor(
00395     IN PRTL_SPLAY_LINKS Links
00396 );
00397 
00398 #define RtlIsLeftChild(Links) \
00399     (RtlLeftChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links))
00400 
00401 #define RtlIsRightChild(Links) \
00402     (RtlRightChild(RtlParent(Links)) == (PRTL_SPLAY_LINKS)(Links))
00403 
00404 #define RtlRightChild(Links) \
00405     ((PRTL_SPLAY_LINKS)(Links))->RightChild
00406 
00407 #define RtlIsRoot(Links) \
00408     (RtlParent(Links) == (PRTL_SPLAY_LINKS)(Links))
00409 
00410 #define RtlLeftChild(Links) \
00411     ((PRTL_SPLAY_LINKS)(Links))->LeftChild
00412 
00413 #define RtlParent(Links) \
00414     ((PRTL_SPLAY_LINKS)(Links))->Parent
00415 
00416 #define RtlInitializeSplayLinks(Links)                  \
00417     {                                                   \
00418         PRTL_SPLAY_LINKS _SplayLinks;                   \
00419         _SplayLinks = (PRTL_SPLAY_LINKS)(Links);        \
00420         _SplayLinks->Parent = _SplayLinks;              \
00421         _SplayLinks->LeftChild = NULL;                  \
00422         _SplayLinks->RightChild = NULL;                 \
00423     }
00424 
00425 #define RtlInsertAsLeftChild(ParentLinks,ChildLinks)    \
00426     {                                                   \
00427         PRTL_SPLAY_LINKS _SplayParent;                  \
00428         PRTL_SPLAY_LINKS _SplayChild;                   \
00429         _SplayParent = (PRTL_SPLAY_LINKS)(ParentLinks); \
00430         _SplayChild = (PRTL_SPLAY_LINKS)(ChildLinks);   \
00431         _SplayParent->LeftChild = _SplayChild;          \
00432         _SplayChild->Parent = _SplayParent;             \
00433     }
00434 
00435 #define RtlInsertAsRightChild(ParentLinks,ChildLinks)   \
00436     {                                                   \
00437         PRTL_SPLAY_LINKS _SplayParent;                  \
00438         PRTL_SPLAY_LINKS _SplayChild;                   \
00439         _SplayParent = (PRTL_SPLAY_LINKS)(ParentLinks); \
00440         _SplayChild = (PRTL_SPLAY_LINKS)(ChildLinks);   \
00441         _SplayParent->RightChild = _SplayChild;         \
00442         _SplayChild->Parent = _SplayParent;             \
00443     }
00444 
00445 //
00446 // RTL AVL Tree Functions
00447 //
00448 NTSYSAPI
00449 VOID
00450 NTAPI
00451 RtlInitializeGenericTableAvl(
00452     OUT PRTL_AVL_TABLE Table,
00453     IN PRTL_AVL_COMPARE_ROUTINE CompareRoutine,
00454     IN PRTL_AVL_ALLOCATE_ROUTINE AllocateRoutine,
00455     IN PRTL_AVL_FREE_ROUTINE FreeRoutine,
00456     IN PVOID TableContext OPTIONAL
00457 );
00458 
00459 NTSYSAPI
00460 PVOID
00461 NTAPI
00462 RtlInsertElementGenericTableAvl(
00463     IN PRTL_AVL_TABLE Table,
00464     IN PVOID Buffer,
00465     IN CLONG BufferSize,
00466     OUT PBOOLEAN NewElement OPTIONAL
00467 );
00468 
00469 NTSYSAPI
00470 PVOID
00471 NTAPI
00472 RtlInsertElementGenericTableFullAvl(
00473     IN PRTL_AVL_TABLE Table,
00474     IN PVOID Buffer,
00475     IN CLONG BufferSize,
00476     OUT PBOOLEAN NewElement OPTIONAL,
00477     IN PVOID NodeOrParent,
00478     IN TABLE_SEARCH_RESULT SearchResult
00479 );
00480 
00481 NTSYSAPI
00482 BOOLEAN
00483 NTAPI
00484 RtlDeleteElementGenericTableAvl(
00485     IN PRTL_AVL_TABLE Table,
00486     IN PVOID Buffer
00487 );
00488 
00489 NTSYSAPI
00490 PVOID
00491 NTAPI
00492 RtlLookupElementGenericTableAvl(
00493     IN PRTL_AVL_TABLE Table,
00494     IN PVOID Buffer
00495 );
00496 
00497 NTSYSAPI
00498 PVOID
00499 NTAPI
00500 RtlLookupElementGenericTableFullAvl(
00501     IN PRTL_AVL_TABLE Table,
00502     IN PVOID Buffer,
00503     OUT PVOID *NodeOrParent,
00504     OUT TABLE_SEARCH_RESULT *SearchResult
00505 );
00506 
00507 NTSYSAPI
00508 PVOID
00509 NTAPI
00510 RtlEnumerateGenericTableAvl(
00511     IN PRTL_AVL_TABLE Table,
00512     IN BOOLEAN Restart
00513 );
00514 
00515 NTSYSAPI
00516 PVOID
00517 NTAPI
00518 RtlEnumerateGenericTableWithoutSplayingAvl(
00519     IN PRTL_AVL_TABLE Table,
00520     IN OUT PVOID *RestartKey
00521 );
00522 
00523 NTSYSAPI
00524 PVOID
00525 NTAPI
00526 RtlLookupFirstMatchingElementGenericTableAvl(
00527     IN PRTL_AVL_TABLE Table,
00528     IN PVOID Buffer,
00529     OUT PVOID *RestartKey
00530 );
00531 
00532 NTSYSAPI
00533 PVOID
00534 NTAPI
00535 RtlEnumerateGenericTableLikeADirectory(
00536     IN PRTL_AVL_TABLE Table,
00537     IN PRTL_AVL_MATCH_FUNCTION MatchFunction OPTIONAL,
00538     IN PVOID MatchData OPTIONAL,
00539     IN ULONG NextFlag,
00540     IN OUT PVOID *RestartKey,
00541     IN OUT PULONG DeleteCount,
00542     IN PVOID Buffer
00543 );
00544 
00545 NTSYSAPI
00546 PVOID
00547 NTAPI
00548 RtlGetElementGenericTableAvl(
00549     IN PRTL_AVL_TABLE Table,
00550     IN ULONG I
00551 );
00552 
00553 NTSYSAPI
00554 ULONG
00555 NTAPI
00556 RtlNumberGenericTableElementsAvl(
00557     IN PRTL_AVL_TABLE Table
00558 );
00559 
00560 NTSYSAPI
00561 BOOLEAN
00562 NTAPI
00563 RtlIsGenericTableEmptyAvl(
00564     IN PRTL_AVL_TABLE Table
00565 );
00566 
00567 #ifdef RTL_USE_AVL_TABLES
00568 
00569 #define RtlInitializeGenericTable               RtlInitializeGenericTableAvl
00570 #define RtlInsertElementGenericTable            RtlInsertElementGenericTableAvl
00571 #define RtlInsertElementGenericTableFull        RtlInsertElementGenericTableFullAvl
00572 #define RtlDeleteElementGenericTable            RtlDeleteElementGenericTableAvl
00573 #define RtlLookupElementGenericTable            RtlLookupElementGenericTableAvl
00574 #define RtlLookupElementGenericTableFull        RtlLookupElementGenericTableFullAvl
00575 #define RtlEnumerateGenericTable                RtlEnumerateGenericTableAvl
00576 #define RtlEnumerateGenericTableWithoutSplaying RtlEnumerateGenericTableWithoutSplayingAvl
00577 #define RtlGetElementGenericTable               RtlGetElementGenericTableAvl
00578 #define RtlNumberGenericTableElements           RtlNumberGenericTableElementsAvl
00579 #define RtlIsGenericTableEmpty                  RtlIsGenericTableEmptyAvl
00580 
00581 #endif /* RTL_USE_AVL_TABLES */
00582 
00583 #endif /* NTOS_MODE_USER */
00584 
00585 //
00586 // Error and Exception Functions
00587 //
00588 NTSYSAPI
00589 PVOID
00590 NTAPI
00591 RtlAddVectoredExceptionHandler(
00592     IN ULONG FirstHandler,
00593     IN PVECTORED_EXCEPTION_HANDLER VectoredHandler
00594 );
00595 
00596 NTSYSAPI
00597 VOID
00598 NTAPI
00599 RtlAssert(
00600     IN PVOID FailedAssertion,
00601     IN PVOID FileName,
00602     IN ULONG LineNumber,
00603     IN PCHAR Message
00604 );
00605 
00606 NTSYSAPI
00607 VOID
00608 NTAPI
00609 RtlSetUnhandledExceptionFilter(
00610     IN PRTLP_UNHANDLED_EXCEPTION_FILTER TopLevelExceptionFilter
00611 );
00612 
00613 NTSYSAPI
00614 VOID
00615 NTAPI
00616 RtlCaptureContext(
00617     OUT PCONTEXT ContextRecord
00618 );
00619 
00620 NTSYSAPI
00621 PVOID
00622 NTAPI
00623 RtlEncodePointer(
00624     IN PVOID Pointer
00625 );
00626 
00627 NTSYSAPI
00628 PVOID
00629 NTAPI
00630 RtlDecodePointer(
00631     IN PVOID Pointer
00632 );
00633 
00634 NTSYSAPI
00635 PVOID
00636 NTAPI
00637 RtlEncodeSystemPointer(
00638     IN PVOID Pointer
00639 );
00640 
00641 NTSYSAPI
00642 PVOID
00643 NTAPI
00644 RtlDecodeSystemPointer(
00645     IN PVOID Pointer
00646 );
00647 
00648 NTSYSAPI
00649 BOOLEAN
00650 NTAPI
00651 RtlDispatchException(
00652     IN PEXCEPTION_RECORD ExceptionRecord,
00653     IN PCONTEXT Context
00654 );
00655 
00656 NTSYSAPI
00657 ULONG
00658 NTAPI
00659 RtlNtStatusToDosError(
00660     IN NTSTATUS Status
00661 );
00662 
00663 NTSYSAPI
00664 ULONG
00665 NTAPI
00666 RtlNtStatusToDosErrorNoTeb(
00667     IN NTSTATUS Status
00668 );
00669 
00670 NTSYSAPI
00671 VOID
00672 NTAPI
00673 RtlSetLastWin32ErrorAndNtStatusFromNtStatus(
00674     IN NTSTATUS Status
00675 );
00676 
00677 NTSYSAPI
00678 VOID
00679 NTAPI
00680 RtlRaiseException(
00681     IN PEXCEPTION_RECORD ExceptionRecord
00682 );
00683 
00684 DECLSPEC_NORETURN
00685 NTSYSAPI
00686 VOID
00687 NTAPI
00688 RtlRaiseStatus(
00689     IN NTSTATUS Status
00690 );
00691 
00692 NTSYSAPI
00693 LONG
00694 NTAPI
00695 RtlUnhandledExceptionFilter(
00696     IN struct _EXCEPTION_POINTERS* ExceptionInfo
00697 );
00698 
00699 NTSYSAPI
00700 VOID
00701 NTAPI
00702 RtlUnwind(
00703     IN PVOID TargetFrame OPTIONAL,
00704     IN PVOID TargetIp OPTIONAL,
00705     IN PEXCEPTION_RECORD ExceptionRecord OPTIONAL,
00706     IN PVOID ReturnValue
00707 );
00708 
00709 //
00710 // Tracing Functions
00711 //
00712 NTSYSAPI
00713 ULONG
00714 NTAPI
00715 RtlWalkFrameChain(
00716     OUT PVOID *Callers,
00717     IN ULONG Count,
00718     IN ULONG Flags
00719 );
00720 
00721 NTSYSAPI
00722 USHORT
00723 NTAPI
00724 RtlLogStackBackTrace(
00725     VOID
00726 );
00727 
00728 //
00729 // Heap Functions
00730 //
00731 NTSYSAPI
00732 PVOID
00733 NTAPI
00734 RtlAllocateHeap(
00735     IN HANDLE HeapHandle,
00736     IN ULONG Flags,
00737     IN SIZE_T Size
00738 );
00739 
00740 NTSYSAPI
00741 PVOID
00742 NTAPI
00743 RtlCreateHeap(
00744     IN ULONG Flags,
00745     IN PVOID BaseAddress OPTIONAL,
00746     IN SIZE_T SizeToReserve OPTIONAL,
00747     IN SIZE_T SizeToCommit OPTIONAL,
00748     IN PVOID Lock OPTIONAL,
00749     IN PRTL_HEAP_PARAMETERS Parameters OPTIONAL
00750 );
00751 
00752 NTSYSAPI
00753 ULONG
00754 NTAPI
00755 RtlCreateTagHeap(
00756     IN HANDLE HeapHandle,
00757     IN ULONG Flags,
00758     IN PWSTR TagName,
00759     IN PWSTR TagSubName
00760 );
00761 
00762 ULONG
00763 NTAPI
00764 RtlCompactHeap(
00765     HANDLE Heap,
00766     ULONG Flags
00767 );
00768 
00769 NTSYSAPI
00770 PVOID
00771 NTAPI
00772 RtlDebugCreateHeap(
00773     IN ULONG Flags,
00774     IN PVOID BaseAddress OPTIONAL,
00775     IN SIZE_T SizeToReserve OPTIONAL,
00776     IN SIZE_T SizeToCommit OPTIONAL,
00777     IN PVOID Lock OPTIONAL,
00778     IN PRTL_HEAP_PARAMETERS Parameters OPTIONAL
00779 );
00780 
00781 NTSYSAPI
00782 HANDLE
00783 NTAPI
00784 RtlDestroyHeap(
00785     IN HANDLE Heap
00786 );
00787 
00788 NTSYSAPI
00789 ULONG
00790 NTAPI
00791 RtlExtendHeap(
00792     IN HANDLE Heap,
00793     IN ULONG Flags,
00794     IN PVOID P,
00795     IN SIZE_T Size
00796 );
00797 
00798 NTSYSAPI
00799 BOOLEAN
00800 NTAPI
00801 RtlFreeHeap(
00802     IN HANDLE HeapHandle,
00803     IN ULONG Flags,
00804     IN PVOID P
00805 );
00806 
00807 NTSYSAPI
00808 ULONG
00809 NTAPI
00810 RtlGetNtGlobalFlags(
00811     VOID
00812 );
00813 
00814 ULONG
00815 NTAPI
00816 RtlGetProcessHeaps(
00817     ULONG HeapCount,
00818     HANDLE *HeapArray
00819 );
00820 
00821 BOOLEAN
00822 NTAPI
00823 RtlGetUserInfoHeap(
00824     IN PVOID HeapHandle,
00825     IN ULONG Flags,
00826     IN PVOID BaseAddress,
00827     OUT PVOID *UserValue,
00828     OUT PULONG UserFlags
00829 );
00830 
00831 NTSYSAPI
00832 PVOID
00833 NTAPI
00834 RtlProtectHeap(
00835     IN PVOID HeapHandle,
00836     IN BOOLEAN Protect
00837 );
00838 
00839 NTSYSAPI
00840 NTSTATUS
00841 NTAPI
00842 RtlQueryHeapInformation (
00843     IN PVOID HeapHandle,
00844     IN HEAP_INFORMATION_CLASS HeapInformationClass,
00845     OUT PVOID HeapInformation OPTIONAL,
00846     IN SIZE_T HeapInformationLength OPTIONAL,
00847     OUT PSIZE_T ReturnLength OPTIONAL
00848     );
00849 
00850 NTSYSAPI
00851 PWSTR
00852 NTAPI
00853 RtlQueryTagHeap(
00854     IN PVOID HeapHandle,
00855     IN ULONG Flags,
00856     IN USHORT TagIndex,
00857     IN BOOLEAN ResetCounters,
00858     OUT PRTL_HEAP_TAG_INFO HeapTagInfo
00859 );
00860 
00861 NTSYSAPI
00862 PVOID
00863 NTAPI
00864 RtlReAllocateHeap(
00865     HANDLE Heap,
00866     ULONG Flags,
00867     PVOID Ptr,
00868     SIZE_T Size
00869 );
00870 
00871 NTSYSAPI
00872 NTSTATUS
00873 NTAPI
00874 RtlSetHeapInformation (
00875     IN PVOID HeapHandle,
00876     IN HEAP_INFORMATION_CLASS HeapInformationClass,
00877     IN PVOID HeapInformation OPTIONAL,
00878     IN SIZE_T HeapInformationLength OPTIONAL
00879     );
00880 
00881 NTSYSAPI
00882 BOOLEAN
00883 NTAPI
00884 RtlLockHeap(
00885     IN HANDLE Heap
00886 );
00887 
00888 NTSYSAPI
00889 NTSTATUS
00890 NTAPI
00891 RtlMultipleAllocateHeap (
00892     IN PVOID HeapHandle,
00893     IN ULONG Flags,
00894     IN SIZE_T Size,
00895     IN ULONG Count,
00896     OUT PVOID * Array
00897     );
00898 
00899 NTSYSAPI
00900 NTSTATUS
00901 NTAPI
00902 RtlMultipleFreeHeap (
00903     IN PVOID HeapHandle,
00904     IN ULONG Flags,
00905     IN ULONG Count,
00906     OUT PVOID * Array
00907     );
00908 
00909 NTSYSAPI
00910 NTSTATUS
00911 NTAPI
00912 RtlUsageHeap(
00913     IN HANDLE Heap,
00914     IN ULONG Flags,
00915     OUT PRTL_HEAP_USAGE Usage
00916 );
00917 
00918 NTSYSAPI
00919 BOOLEAN
00920 NTAPI
00921 RtlUnlockHeap(
00922     IN HANDLE Heap
00923 );
00924 
00925 BOOLEAN
00926 NTAPI
00927 RtlSetUserValueHeap(
00928     IN PVOID HeapHandle,
00929     IN ULONG Flags,
00930     IN PVOID BaseAddress,
00931     IN PVOID UserValue
00932 );
00933 
00934 BOOLEAN
00935 NTAPI
00936 RtlSetUserFlagsHeap(
00937     IN PVOID HeapHandle,
00938     IN ULONG Flags,
00939     IN PVOID BaseAddress,
00940     IN ULONG UserFlagsReset,
00941     IN ULONG UserFlagsSet
00942 );
00943 
00944 NTSYSAPI
00945 SIZE_T
00946 NTAPI
00947 RtlSizeHeap(
00948     IN PVOID HeapHandle,
00949     IN ULONG Flags,
00950     IN PVOID MemoryPointer
00951 );
00952 
00953 NTSYSAPI
00954 BOOLEAN
00955 NTAPI
00956 RtlValidateHeap(
00957     HANDLE Heap,
00958     ULONG Flags,
00959     PVOID P
00960 );
00961 
00962 NTSYSAPI
00963 NTSTATUS
00964 NTAPI
00965 RtlWalkHeap(
00966     IN HANDLE HeapHandle,
00967     IN PVOID HeapEntry
00968 );
00969 
00970 #define RtlGetProcessHeap() (NtCurrentPeb()->ProcessHeap)
00971 
00972 //
00973 // Security Functions
00974 //
00975 NTSYSAPI
00976 NTSTATUS
00977 NTAPI
00978 RtlAbsoluteToSelfRelativeSD(
00979     IN PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor,
00980     IN OUT PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor,
00981     IN PULONG BufferLength
00982 );
00983 
00984 NTSYSAPI
00985 NTSTATUS
00986 NTAPI
00987 RtlAddAccessAllowedAce(
00988     PACL Acl,
00989     ULONG Revision,
00990     ACCESS_MASK AccessMask,
00991     PSID Sid
00992 );
00993 
00994 NTSYSAPI
00995 NTSTATUS
00996 NTAPI
00997 RtlAddAccessAllowedAceEx(
00998     IN OUT PACL pAcl,
00999     IN ULONG dwAceRevision,
01000     IN ULONG AceFlags,
01001     IN ACCESS_MASK AccessMask,
01002     IN PSID pSid
01003 );
01004 
01005 NTSYSAPI
01006 NTSTATUS
01007 NTAPI
01008 RtlAddAccessAllowedObjectAce(
01009     IN OUT PACL pAcl,
01010     IN ULONG dwAceRevision,
01011     IN ULONG AceFlags,
01012     IN ACCESS_MASK AccessMask,
01013     IN GUID *ObjectTypeGuid  OPTIONAL,
01014     IN GUID *InheritedObjectTypeGuid  OPTIONAL,
01015     IN PSID pSid
01016 );
01017 
01018 NTSYSAPI
01019 NTSTATUS
01020 NTAPI
01021 RtlAddAccessDeniedAce(
01022     PACL Acl,
01023     ULONG Revision,
01024     ACCESS_MASK AccessMask,
01025     PSID Sid
01026 );
01027 
01028 NTSYSAPI
01029 NTSTATUS
01030 NTAPI
01031 RtlAddAccessDeniedAceEx(
01032     IN OUT PACL Acl,
01033     IN ULONG Revision,
01034     IN ULONG Flags,
01035     IN ACCESS_MASK AccessMask,
01036     IN PSID Sid
01037 );
01038 
01039 NTSYSAPI
01040 NTSTATUS
01041 NTAPI
01042 RtlAddAccessDeniedObjectAce(
01043     IN OUT PACL pAcl,
01044     IN ULONG dwAceRevision,
01045     IN ULONG AceFlags,
01046     IN ACCESS_MASK AccessMask,
01047     IN GUID *ObjectTypeGuid  OPTIONAL,
01048     IN GUID *InheritedObjectTypeGuid  OPTIONAL,
01049     IN PSID pSid
01050 );
01051 
01052 NTSYSAPI
01053 NTSTATUS
01054 NTAPI
01055 RtlAddAce(
01056     PACL Acl,
01057     ULONG AceRevision,
01058     ULONG StartingAceIndex,
01059     PVOID AceList,
01060     ULONG AceListLength
01061 );
01062 
01063 NTSYSAPI
01064 NTSTATUS
01065 NTAPI
01066 RtlAddAuditAccessAce(
01067     PACL Acl,
01068     ULONG Revision,
01069     ACCESS_MASK AccessMask,
01070     PSID Sid,
01071     BOOLEAN Success,
01072     BOOLEAN Failure
01073 );
01074 
01075 NTSYSAPI
01076 NTSTATUS
01077 NTAPI
01078 RtlAcquirePrivilege(
01079     IN PULONG Privilege,
01080     IN ULONG NumPriv,
01081     IN ULONG Flags,
01082     OUT PVOID *ReturnedState
01083 );
01084 
01085 NTSYSAPI
01086 NTSTATUS
01087 NTAPI
01088 RtlAddAuditAccessAceEx(
01089     IN OUT PACL Acl,
01090     IN ULONG Revision,
01091     IN ULONG Flags,
01092     IN ACCESS_MASK AccessMask,
01093     IN PSID Sid,
01094     IN BOOLEAN Success,
01095     IN BOOLEAN Failure
01096 );
01097 
01098 NTSYSAPI
01099 NTSTATUS
01100 NTAPI
01101 RtlAddAuditAccessObjectAce(
01102     IN OUT PACL Acl,
01103     IN ULONG Revision,
01104     IN ULONG Flags,
01105     IN ACCESS_MASK AccessMask,
01106     IN GUID *ObjectTypeGuid  OPTIONAL,
01107     IN GUID *InheritedObjectTypeGuid  OPTIONAL,
01108     IN PSID Sid,
01109     IN BOOLEAN Success,
01110     IN BOOLEAN Failure
01111 );
01112 
01113 NTSYSAPI
01114 NTSTATUS
01115 NTAPI
01116 RtlAddMandatoryAce(
01117     IN OUT PACL Acl,
01118     IN ULONG Revision,
01119     IN ULONG Flags,
01120     IN ULONG MandatoryFlags,
01121     IN UCHAR AceType,
01122     IN PSID LabelSid);
01123 
01124 NTSYSAPI
01125 NTSTATUS
01126 NTAPI
01127 RtlAdjustPrivilege(
01128     IN ULONG Privilege,
01129     IN BOOLEAN NewValue,
01130     IN BOOLEAN ForThread,
01131     OUT PBOOLEAN OldValue
01132 );
01133 
01134 NTSYSAPI
01135 NTSTATUS
01136 NTAPI
01137 RtlAllocateAndInitializeSid(
01138     IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority,
01139     IN UCHAR SubAuthorityCount,
01140     IN ULONG SubAuthority0,
01141     IN ULONG SubAuthority1,
01142     IN ULONG SubAuthority2,
01143     IN ULONG SubAuthority3,
01144     IN ULONG SubAuthority4,
01145     IN ULONG SubAuthority5,
01146     IN ULONG SubAuthority6,
01147     IN ULONG SubAuthority7,
01148     OUT PSID *Sid
01149 );
01150 
01151 NTSYSAPI
01152 BOOLEAN
01153 NTAPI
01154 RtlAreAllAccessesGranted(
01155     ACCESS_MASK GrantedAccess,
01156     ACCESS_MASK DesiredAccess
01157 );
01158 
01159 NTSYSAPI
01160 BOOLEAN
01161 NTAPI
01162 RtlAreAnyAccessesGranted(
01163     ACCESS_MASK GrantedAccess,
01164     ACCESS_MASK DesiredAccess
01165 );
01166 
01167 NTSYSAPI
01168 VOID
01169 NTAPI
01170 RtlCopyLuid(
01171     IN PLUID LuidDest,
01172     IN PLUID LuidSrc
01173 );
01174 
01175 NTSYSAPI
01176 VOID
01177 NTAPI
01178 RtlCopyLuidAndAttributesArray(
01179     ULONG Count,
01180     PLUID_AND_ATTRIBUTES Src,
01181     PLUID_AND_ATTRIBUTES Dest
01182 );
01183 
01184 NTSYSAPI
01185 NTSTATUS
01186 NTAPI
01187 RtlCopySidAndAttributesArray(
01188     ULONG Count,
01189     PSID_AND_ATTRIBUTES Src,
01190     ULONG SidAreaSize,
01191     PSID_AND_ATTRIBUTES Dest,
01192     PVOID SidArea,
01193     PVOID* RemainingSidArea,
01194     PULONG RemainingSidAreaSize
01195 );
01196 
01197 NTSYSAPI
01198 NTSTATUS
01199 NTAPI
01200 RtlConvertSidToUnicodeString(
01201     OUT PUNICODE_STRING DestinationString,
01202     IN PSID Sid,
01203     IN BOOLEAN AllocateDestinationString
01204 );
01205 
01206 NTSYSAPI
01207 NTSTATUS
01208 NTAPI
01209 RtlCopySid(
01210     IN ULONG Length,
01211     IN PSID Destination,
01212     IN PSID Source
01213 );
01214 
01215 NTSYSAPI
01216 NTSTATUS
01217 NTAPI
01218 RtlCreateAcl(
01219     PACL Acl,
01220     ULONG AclSize,
01221     ULONG AclRevision
01222 );
01223 
01224 NTSYSAPI
01225 NTSTATUS
01226 NTAPI
01227 RtlCreateSecurityDescriptor(
01228     OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
01229     IN ULONG Revision
01230 );
01231 
01232 NTSYSAPI
01233 NTSTATUS
01234 NTAPI
01235 RtlCreateSecurityDescriptorRelative(
01236     OUT PISECURITY_DESCRIPTOR_RELATIVE SecurityDescriptor,
01237     IN ULONG Revision
01238 );
01239 
01240 NTSYSAPI
01241 NTSTATUS
01242 NTAPI
01243 RtlCopySecurityDescriptor(
01244     IN PSECURITY_DESCRIPTOR pSourceSecurityDescriptor,
01245     OUT PSECURITY_DESCRIPTOR pDestinationSecurityDescriptor
01246 );
01247 
01248 NTSYSAPI
01249 NTSTATUS
01250 NTAPI
01251 RtlDeleteAce(
01252     PACL Acl,
01253     ULONG AceIndex
01254 );
01255 
01256 NTSYSAPI
01257 BOOLEAN
01258 NTAPI
01259 RtlEqualPrefixSid(
01260     PSID Sid1,
01261     PSID Sid2
01262 );
01263 
01264 NTSYSAPI
01265 BOOLEAN
01266 NTAPI
01267 RtlEqualSid (
01268     IN PSID Sid1,
01269     IN PSID Sid2
01270 );
01271 
01272 NTSYSAPI
01273 BOOLEAN
01274 NTAPI
01275 RtlFirstFreeAce(
01276     PACL Acl,
01277     PACE* Ace
01278 );
01279 
01280 NTSYSAPI
01281 PVOID
01282 NTAPI
01283 RtlFreeSid (
01284     IN PSID Sid
01285 );
01286 
01287 NTSYSAPI
01288 NTSTATUS
01289 NTAPI
01290 RtlGetAce(
01291     PACL Acl,
01292     ULONG AceIndex,
01293     PVOID *Ace
01294 );
01295 
01296 NTSYSAPI
01297 NTSTATUS
01298 NTAPI
01299 RtlGetControlSecurityDescriptor(
01300     IN PSECURITY_DESCRIPTOR SecurityDescriptor,
01301     OUT PSECURITY_DESCRIPTOR_CONTROL Control,
01302     OUT PULONG Revision
01303 );
01304 
01305 NTSYSAPI
01306 NTSTATUS
01307 NTAPI
01308 RtlGetDaclSecurityDescriptor(
01309     IN PSECURITY_DESCRIPTOR SecurityDescriptor,
01310     OUT PBOOLEAN DaclPresent,
01311     OUT PACL *Dacl,
01312     OUT PBOOLEAN DaclDefaulted
01313 );
01314 
01315 NTSYSAPI
01316 NTSTATUS
01317 NTAPI
01318 RtlGetSaclSecurityDescriptor(
01319     IN PSECURITY_DESCRIPTOR SecurityDescriptor,
01320     OUT PBOOLEAN SaclPresent,
01321     OUT PACL* Sacl,
01322     OUT PBOOLEAN SaclDefaulted
01323 );
01324 
01325 NTSYSAPI
01326 NTSTATUS
01327 NTAPI
01328 RtlGetGroupSecurityDescriptor(
01329     IN PSECURITY_DESCRIPTOR SecurityDescriptor,
01330     OUT PSID *Group,
01331     OUT PBOOLEAN GroupDefaulted
01332 );
01333 
01334 NTSYSAPI
01335 NTSTATUS
01336 NTAPI
01337 RtlGetOwnerSecurityDescriptor(
01338     IN PSECURITY_DESCRIPTOR SecurityDescriptor,
01339     OUT PSID *Owner,
01340     OUT PBOOLEAN OwnerDefaulted
01341 );
01342 
01343 NTSYSAPI
01344 BOOLEAN
01345 NTAPI
01346 RtlGetSecurityDescriptorRMControl(
01347     IN PSECURITY_DESCRIPTOR SecurityDescriptor,
01348     OUT PUCHAR RMControl
01349 );
01350 
01351 NTSYSAPI
01352 PSID_IDENTIFIER_AUTHORITY
01353 NTAPI
01354 RtlIdentifierAuthoritySid(PSID Sid);
01355 
01356 NTSYSAPI
01357 NTSTATUS
01358 NTAPI
01359 RtlImpersonateSelf(IN SECURITY_IMPERSONATION_LEVEL ImpersonationLevel);
01360 
01361 NTSYSAPI
01362 NTSTATUS
01363 NTAPI
01364 RtlInitializeSid(
01365     IN OUT PSID Sid,
01366     IN PSID_IDENTIFIER_AUTHORITY IdentifierAuthority,
01367     IN UCHAR SubAuthorityCount
01368 );
01369 
01370 NTSYSAPI
01371 ULONG
01372 NTAPI
01373 RtlLengthRequiredSid(IN ULONG SubAuthorityCount);
01374 
01375 NTSYSAPI
01376 ULONG
01377 NTAPI
01378 RtlLengthSid(IN PSID Sid);
01379 
01380 NTSYSAPI
01381 NTSTATUS
01382 NTAPI
01383 RtlMakeSelfRelativeSD(
01384     IN PSECURITY_DESCRIPTOR AbsoluteSD,
01385     OUT PSECURITY_DESCRIPTOR SelfRelativeSD,
01386     IN OUT PULONG BufferLength);
01387 
01388 NTSYSAPI
01389 VOID
01390 NTAPI
01391 RtlMapGenericMask(
01392     PACCESS_MASK AccessMask,
01393     PGENERIC_MAPPING GenericMapping
01394 );
01395 
01396 #ifdef NTOS_MODE_USER
01397 
01398 NTSYSAPI
01399 NTSTATUS
01400 NTAPI
01401 RtlQueryInformationAcl(
01402     PACL Acl,
01403     PVOID Information,
01404     ULONG InformationLength,
01405     ACL_INFORMATION_CLASS InformationClass
01406 );
01407 
01408 #endif
01409 
01410 NTSYSAPI
01411 VOID
01412 NTAPI
01413 RtlReleasePrivilege(
01414     IN PVOID ReturnedState
01415 );
01416 
01417 NTSYSAPI
01418 NTSTATUS
01419 NTAPI
01420 RtlSelfRelativeToAbsoluteSD(
01421     IN PSECURITY_DESCRIPTOR SelfRelativeSD,
01422     OUT PSECURITY_DESCRIPTOR AbsoluteSD,
01423     IN PULONG AbsoluteSDSize,
01424     IN PACL Dacl,
01425     IN PULONG DaclSize,
01426     IN PACL Sacl,
01427     IN PULONG SaclSize,
01428     IN PSID Owner,
01429     IN PULONG OwnerSize,
01430     IN PSID PrimaryGroup,
01431     IN PULONG PrimaryGroupSize
01432 );
01433 
01434 NTSYSAPI
01435 NTSTATUS
01436 NTAPI
01437 RtlSelfRelativeToAbsoluteSD2(
01438     IN OUT PSECURITY_DESCRIPTOR SelfRelativeSD,
01439     OUT PULONG BufferSize
01440 );
01441 
01442 NTSYSAPI
01443 NTSTATUS
01444 NTAPI
01445 RtlSetAttributesSecurityDescriptor(
01446     IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
01447     IN SECURITY_DESCRIPTOR_CONTROL Control,
01448     OUT PULONG Revision
01449 );
01450 
01451 NTSYSAPI
01452 NTSTATUS
01453 NTAPI
01454 RtlSetControlSecurityDescriptor(
01455     IN PSECURITY_DESCRIPTOR SecurityDescriptor,
01456     IN SECURITY_DESCRIPTOR_CONTROL ControlBitsOfInterest,
01457     IN SECURITY_DESCRIPTOR_CONTROL ControlBitsToSet
01458 );
01459 
01460 NTSYSAPI
01461 NTSTATUS
01462 NTAPI
01463 RtlSetDaclSecurityDescriptor (
01464     IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
01465     IN BOOLEAN DaclPresent,
01466     IN PACL Dacl,
01467     IN BOOLEAN DaclDefaulted
01468 );
01469 
01470 NTSYSAPI
01471 NTSTATUS
01472 NTAPI
01473 RtlSetGroupSecurityDescriptor(
01474     IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
01475     IN PSID Group,
01476     IN BOOLEAN GroupDefaulted
01477 );
01478 
01479 #ifdef NTOS_MODE_USER
01480 
01481 NTSYSAPI
01482 NTSTATUS
01483 NTAPI
01484 RtlSetInformationAcl(
01485     PACL Acl,
01486     PVOID Information,
01487     ULONG InformationLength,
01488     ACL_INFORMATION_CLASS InformationClass
01489 );
01490 
01491 #endif
01492 
01493 NTSYSAPI
01494 NTSTATUS
01495 NTAPI
01496 RtlSetOwnerSecurityDescriptor(
01497     IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
01498     IN PSID Owner,
01499     IN BOOLEAN OwnerDefaulted
01500 );
01501 
01502 NTSYSAPI
01503 NTSTATUS
01504 NTAPI
01505 RtlSetSaclSecurityDescriptor(
01506     IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
01507     IN BOOLEAN SaclPresent,
01508     IN PACL Sacl,
01509     IN BOOLEAN SaclDefaulted
01510 );
01511 
01512 NTSYSAPI
01513 VOID
01514 NTAPI
01515 RtlSetSecurityDescriptorRMControl(
01516     IN OUT PSECURITY_DESCRIPTOR SecurityDescriptor,
01517     IN PUCHAR RMControl
01518 );
01519 
01520 NTSYSAPI
01521 PUCHAR
01522 NTAPI
01523 RtlSubAuthorityCountSid(
01524     IN PSID Sid
01525 );
01526 
01527 NTSYSAPI
01528 PULONG
01529 NTAPI
01530 RtlSubAuthoritySid(
01531     IN PSID Sid,
01532     IN ULONG SubAuthority
01533 );
01534 
01535 NTSYSAPI
01536 BOOLEAN
01537 NTAPI
01538 RtlValidRelativeSecurityDescriptor(
01539     IN PSECURITY_DESCRIPTOR SecurityDescriptorInput,
01540     IN ULONG SecurityDescriptorLength,
01541     IN SECURITY_INFORMATION RequiredInformation
01542 );
01543 
01544 NTSYSAPI
01545 BOOLEAN
01546 NTAPI
01547 RtlValidSecurityDescriptor(IN PSECURITY_DESCRIPTOR SecurityDescriptor);
01548 
01549 NTSYSAPI
01550 BOOLEAN
01551 NTAPI
01552 RtlValidSid(IN PSID Sid);
01553 
01554 NTSYSAPI
01555 BOOLEAN
01556 NTAPI
01557 RtlValidAcl(PACL Acl);
01558 
01559 NTSYSAPI
01560 NTSTATUS
01561 NTAPI
01562 RtlDeleteSecurityObject(
01563     IN PSECURITY_DESCRIPTOR *ObjectDescriptor
01564 );
01565 
01566 NTSYSAPI
01567 NTSTATUS
01568 NTAPI
01569 RtlNewSecurityObject(
01570     IN PSECURITY_DESCRIPTOR ParentDescriptor,
01571     IN PSECURITY_DESCRIPTOR CreatorDescriptor,
01572     OUT PSECURITY_DESCRIPTOR *NewDescriptor,
01573     IN BOOLEAN IsDirectoryObject,
01574     IN HANDLE Token,
01575     IN PGENERIC_MAPPING GenericMapping
01576 );
01577 
01578 NTSYSAPI
01579 NTSTATUS
01580 NTAPI
01581 RtlQuerySecurityObject(
01582     IN PSECURITY_DESCRIPTOR ObjectDescriptor,
01583     IN SECURITY_INFORMATION SecurityInformation,
01584     OUT PSECURITY_DESCRIPTOR ResultantDescriptor,
01585     IN ULONG DescriptorLength,
01586     OUT PULONG ReturnLength
01587 );
01588 
01589 NTSYSAPI
01590 NTSTATUS
01591 NTAPI
01592 RtlSetSecurityObject(
01593     IN SECURITY_INFORMATION SecurityInformation,
01594     IN PSECURITY_DESCRIPTOR ModificationDescriptor,
01595     OUT PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
01596     IN PGENERIC_MAPPING GenericMapping,
01597     IN HANDLE Token
01598 );
01599 
01600 //
01601 // Single-Character Functions
01602 //
01603 NTSYSAPI
01604 NTSTATUS
01605 NTAPI
01606 RtlLargeIntegerToChar(
01607     IN PLARGE_INTEGER Value,
01608     IN ULONG Base,
01609     IN ULONG Length,
01610     IN OUT PCHAR String
01611 );
01612 
01613 NTSYSAPI
01614 CHAR
01615 NTAPI
01616 RtlUpperChar(CHAR Source);
01617 
01618 NTSYSAPI
01619 WCHAR
01620 NTAPI
01621 RtlUpcaseUnicodeChar(WCHAR Source);
01622 
01623 NTSYSAPI
01624 WCHAR
01625 NTAPI
01626 RtlDowncaseUnicodeChar(IN WCHAR Source);
01627 
01628 NTSYSAPI
01629 NTSTATUS
01630 NTAPI
01631 RtlIntegerToChar(
01632     IN ULONG Value,
01633     IN ULONG Base,
01634     IN ULONG Length,
01635     IN OUT PCHAR String
01636 );
01637 
01638 NTSYSAPI
01639 NTSTATUS
01640 NTAPI
01641 RtlIntegerToUnicode(
01642     IN ULONG Value,
01643     IN ULONG Base  OPTIONAL,
01644     IN ULONG Length OPTIONAL,
01645     IN OUT LPWSTR String
01646 );
01647 
01648 NTSYSAPI
01649 NTSTATUS
01650 NTAPI
01651 RtlIntegerToUnicodeString(
01652     IN ULONG Value,
01653     IN ULONG Base,
01654     IN OUT PUNICODE_STRING String
01655 );
01656 
01657 NTSYSAPI
01658 NTSTATUS
01659 NTAPI
01660 RtlCharToInteger(
01661     PCSZ String,
01662     ULONG Base,
01663     PULONG Value
01664 );
01665 
01666 //
01667 // Byte Swap Functions
01668 //
01669 #ifdef NTOS_MODE_USER
01670 
01671 #if (defined(_M_IX86) && (_MSC_FULL_VER > 13009037)) || \
01672     ((defined(_M_AMD64) || \
01673      defined(_M_IA64)) && (_MSC_FULL_VER > 13009175))
01674 
01675 unsigned short __cdecl _byteswap_ushort(unsigned short);
01676 unsigned long  __cdecl _byteswap_ulong (unsigned long);
01677 unsigned __int64 __cdecl _byteswap_uint64(unsigned __int64);
01678 #pragma intrinsic(_byteswap_ushort)
01679 #pragma intrinsic(_byteswap_ulong)
01680 #pragma intrinsic(_byteswap_uint64)
01681 #define RtlUshortByteSwap(_x) _byteswap_ushort((USHORT)(_x))
01682 #define RtlUlongByteSwap(_x) _byteswap_ulong((_x))
01683 #define RtlUlonglongByteSwap(_x) _byteswap_uint64((_x))
01684 
01685 #elif defined (__GNUC__)
01686 
01687 #define RtlUshortByteSwap(_x) _byteswap_ushort((USHORT)(_x))
01688 #define RtlUlongByteSwap(_x) _byteswap_ulong((_x))
01689 #define RtlUlonglongByteSwap(_x) _byteswap_uint64((_x))
01690 
01691 #else
01692 
01693 #if (NTDDI_VERSION >= NTDDI_WIN2K)
01694 NTSYSAPI
01695 USHORT
01696 FASTCALL
01697 RtlUshortByteSwap(IN USHORT Source);
01698 
01699 NTSYSAPI
01700 ULONG
01701 FASTCALL
01702 RtlUlongByteSwap(IN ULONG Source);
01703 
01704 NTSYSAPI
01705 ULONGLONG
01706 FASTCALL
01707 RtlUlonglongByteSwap(IN ULONGLONG Source);
01708 #endif
01709 
01710 #endif
01711 #endif // NTOS_MODE_USER
01712 
01713 //
01714 // Unicode->Ansi String Functions
01715 //
01716 NTSYSAPI
01717 ULONG
01718 NTAPI
01719 RtlxUnicodeStringToAnsiSize(IN PCUNICODE_STRING UnicodeString);
01720 
01721 #ifdef NTOS_MODE_USER
01722 
01723 #define RtlUnicodeStringToAnsiSize(STRING) (                  \
01724     NLS_MB_CODE_PAGE_TAG ?                                    \
01725     RtlxUnicodeStringToAnsiSize(STRING) :                     \
01726     ((STRING)->Length + sizeof(UNICODE_NULL)) / sizeof(WCHAR) \
01727 )
01728 
01729 #endif
01730 
01731 NTSYSAPI
01732 NTSTATUS
01733 NTAPI
01734 RtlUnicodeStringToAnsiString(
01735     PANSI_STRING DestinationString,
01736     PCUNICODE_STRING SourceString,
01737     BOOLEAN AllocateDestinationString
01738 );
01739 
01740 //
01741 // Unicode->OEM String Functions
01742 //
01743 NTSYSAPI
01744 NTSTATUS
01745 NTAPI
01746 RtlUpcaseUnicodeStringToOemString(
01747     POEM_STRING DestinationString,
01748     PCUNICODE_STRING SourceString,
01749     BOOLEAN AllocateDestinationString
01750 );
01751 
01752 NTSYSAPI
01753 NTSTATUS
01754 NTAPI
01755 RtlUpcaseUnicodeStringToCountedOemString(
01756     IN OUT POEM_STRING DestinationString,
01757     IN PCUNICODE_STRING SourceString,
01758     IN BOOLEAN AllocateDestinationString
01759 );
01760 
01761 NTSYSAPI
01762 NTSTATUS
01763 NTAPI
01764 RtlUnicodeStringToOemString(
01765     POEM_STRING DestinationString,
01766     PCUNICODE_STRING SourceString,
01767     BOOLEAN AllocateDestinationString
01768 );
01769 
01770 NTSYSAPI
01771 NTSTATUS
01772 NTAPI
01773 RtlUpcaseUnicodeToOemN(
01774     PCHAR OemString,
01775     ULONG OemSize,
01776     PULONG ResultSize,
01777     PCWCH UnicodeString,
01778     ULONG UnicodeSize
01779 );
01780 
01781 NTSYSAPI
01782 ULONG
01783 NTAPI
01784 RtlxUnicodeStringToOemSize(IN PCUNICODE_STRING UnicodeString);
01785 
01786 #ifdef NTOS_MODE_USER
01787 
01788 #define RtlUnicodeStringToOemSize(STRING) (                             \
01789     NLS_MB_OEM_CODE_PAGE_TAG ?                                          \
01790     RtlxUnicodeStringToOemSize(STRING) :                                \
01791     ((STRING)->Length + sizeof(UNICODE_NULL)) / sizeof(WCHAR)           \
01792 )
01793 
01794 #define RtlUnicodeStringToCountedOemSize(STRING) (                      \
01795     (ULONG)(RtlUnicodeStringToOemSize(STRING) - sizeof(ANSI_NULL))      \
01796 )
01797 
01798 #endif
01799 
01800 NTSYSAPI
01801 NTSTATUS
01802 NTAPI
01803 RtlUnicodeToOemN(
01804     PCHAR OemString,
01805     ULONG OemSize,
01806     PULONG ResultSize,
01807     PCWCH UnicodeString,
01808     ULONG UnicodeSize
01809 );
01810 
01811 //
01812 // Unicode->MultiByte String Functions
01813 //
01814 NTSYSAPI
01815 NTSTATUS
01816 NTAPI
01817 RtlUnicodeToMultiByteN(
01818     PCHAR MbString,
01819     ULONG MbSize,
01820     PULONG ResultSize,
01821     PCWCH UnicodeString,
01822     ULONG UnicodeSize
01823 );
01824 
01825 NTSYSAPI
01826 NTSTATUS
01827 NTAPI
01828 RtlUpcaseUnicodeToMultiByteN(
01829     PCHAR MbString,
01830     ULONG MbSize,
01831     PULONG ResultSize,
01832     PCWCH UnicodeString,
01833     ULONG UnicodeSize
01834 );
01835 
01836 NTSYSAPI
01837 NTSTATUS
01838 NTAPI
01839 RtlUnicodeToMultiByteSize(
01840     PULONG MbSize,
01841     PCWCH UnicodeString,
01842     ULONG UnicodeSize
01843 );
01844 
01845 NTSYSAPI
01846 ULONG
01847 NTAPI
01848 RtlxOemStringToUnicodeSize(IN PCOEM_STRING OemString);
01849 
01850 //
01851 // OEM to Unicode Functions
01852 //
01853 NTSYSAPI
01854 NTSTATUS
01855 NTAPI
01856 RtlOemStringToUnicodeString(
01857     PUNICODE_STRING DestinationString,
01858     PCOEM_STRING SourceString,
01859     BOOLEAN AllocateDestinationString
01860 );
01861 
01862 NTSYSAPI
01863 NTSTATUS
01864 NTAPI
01865 RtlOemToUnicodeN(
01866     PWSTR UnicodeString,
01867     ULONG MaxBytesInUnicodeString,
01868     PULONG BytesInUnicodeString,
01869     IN PCCH OemString,
01870     ULONG BytesInOemString
01871 );
01872 
01873 #ifdef NTOS_MODE_USER
01874 
01875 #define RtlOemStringToUnicodeSize(STRING) (                             \
01876     NLS_MB_OEM_CODE_PAGE_TAG ?                                          \
01877     RtlxOemStringToUnicodeSize(STRING) :                                \
01878     ((STRING)->Length + sizeof(ANSI_NULL)) * sizeof(WCHAR)              \
01879 )
01880 
01881 #define RtlOemStringToCountedUnicodeSize(STRING) (                      \
01882     (ULONG)(RtlOemStringToUnicodeSize(STRING) - sizeof(UNICODE_NULL))   \
01883 )
01884 
01885 #endif
01886 
01887 //
01888 // Ansi->Unicode String Functions
01889 //
01890 NTSYSAPI
01891 ULONG
01892 NTAPI
01893 RtlxAnsiStringToUnicodeSize(
01894     PCANSI_STRING AnsiString
01895 );
01896 
01897 NTSYSAPI
01898 NTSTATUS
01899 NTAPI
01900 RtlAnsiStringToUnicodeString(
01901     PUNICODE_STRING DestinationString,
01902     PCANSI_STRING SourceString,
01903     BOOLEAN AllocateDestinationString
01904 );
01905 
01906 #ifdef NTOS_MODE_USER
01907 
01908 #define RtlAnsiStringToUnicodeSize(STRING) (                        \
01909     NLS_MB_CODE_PAGE_TAG ?                                          \
01910     RtlxAnsiStringToUnicodeSize(STRING) :                           \
01911     ((STRING)->Length + sizeof(ANSI_NULL)) * sizeof(WCHAR)          \
01912 )
01913 
01914 #endif
01915 
01916 NTSYSAPI
01917 BOOLEAN
01918 NTAPI
01919 RtlCreateUnicodeStringFromAsciiz(
01920     OUT PUNICODE_STRING Destination,
01921     IN PCSZ Source
01922 );
01923 
01924 //
01925 // Unicode String Functions
01926 //
01927 NTSYSAPI
01928 NTSTATUS
01929 NTAPI
01930 RtlAppendUnicodeToString(
01931     PUNICODE_STRING Destination,
01932     PCWSTR Source
01933 );
01934 
01935 NTSYSAPI
01936 NTSTATUS
01937 NTAPI
01938 RtlAppendUnicodeStringToString(
01939     PUNICODE_STRING Destination,
01940     PCUNICODE_STRING Source
01941 );
01942 
01943 NTSYSAPI
01944 LONG
01945 NTAPI
01946 RtlCompareUnicodeString(
01947     PCUNICODE_STRING String1,
01948     PCUNICODE_STRING String2,
01949     BOOLEAN CaseInsensitive
01950 );
01951 
01952 NTSYSAPI
01953 VOID
01954 NTAPI
01955 RtlCopyUnicodeString(
01956     PUNICODE_STRING DestinationString,
01957     PCUNICODE_STRING SourceString
01958 );
01959 
01960 NTSYSAPI
01961 BOOLEAN
01962 NTAPI
01963 RtlCreateUnicodeString(
01964     PUNICODE_STRING DestinationString,
01965     PCWSTR SourceString
01966 );
01967 
01968 #ifdef NTOS_MODE_USER
01969 
01970 NTSYSAPI
01971 NTSTATUS
01972 NTAPI
01973 RtlDowncaseUnicodeString(
01974     IN OUT PUNICODE_STRING UniDest,
01975     IN PCUNICODE_STRING UniSource,
01976     IN BOOLEAN AllocateDestinationString
01977 );
01978 
01979 NTSYSAPI
01980 NTSTATUS
01981 NTAPI
01982 RtlDuplicateUnicodeString(
01983     IN ULONG Flags,
01984     IN PCUNICODE_STRING SourceString,
01985     OUT PUNICODE_STRING DestinationString
01986 );
01987 
01988 //
01989 // Memory Functions
01990 //
01991 NTSYSAPI
01992 VOID
01993 NTAPI
01994 RtlFillMemoryUlong(
01995     IN PVOID Destination,
01996     IN SIZE_T Length,
01997     IN ULONG Fill
01998 );
01999 
02000 NTSYSAPI
02001 VOID
02002 NTAPI
02003 RtlFillMemoryUlonglong(
02004     OUT PVOID Destination,
02005     IN SIZE_T Length,
02006     IN ULONGLONG Pattern
02007 );
02008 
02009 
02010 NTSYSAPI
02011 SIZE_T
02012 NTAPI
02013 RtlCompareMemoryUlong(
02014     IN PVOID Source,
02015     IN SIZE_T Length,
02016     IN ULONG Pattern
02017 );
02018 
02019 #define RtlCopyBytes RtlCopyMemory
02020 #define RtlFillBytes RtlFillMemory
02021 #define RtlZeroBytes RtlZeroMemory
02022 
02023 #endif
02024 
02025 NTSYSAPI
02026 BOOLEAN
02027 NTAPI
02028 RtlEqualUnicodeString(
02029     PCUNICODE_STRING String1,
02030     PCUNICODE_STRING String2,
02031     BOOLEAN CaseInsensitive
02032 );
02033 
02034 NTSYSAPI
02035 NTSTATUS
02036 NTAPI
02037 RtlFindCharInUnicodeString(
02038     IN ULONG Flags,
02039     IN PCUNICODE_STRING SearchString,
02040     IN PCUNICODE_STRING MatchString,
02041     OUT PUSHORT Position
02042 );
02043 
02044 NTSYSAPI
02045 VOID
02046 NTAPI
02047 RtlFreeUnicodeString(IN PUNICODE_STRING UnicodeString);
02048 
02049 NTSYSAPI
02050 NTSTATUS
02051 NTAPI
02052 RtlHashUnicodeString(
02053     IN CONST UNICODE_STRING *String,
02054     IN BOOLEAN CaseInSensitive,
02055     IN ULONG HashAlgorithm,
02056     OUT PULONG HashValue
02057 );
02058 
02059 NTSYSAPI
02060 VOID
02061 NTAPI
02062 RtlInitUnicodeString(
02063     IN OUT PUNICODE_STRING DestinationString,
02064     IN PCWSTR SourceString
02065 );
02066 
02067 NTSYSAPI
02068 NTSTATUS
02069 NTAPI
02070 RtlInitUnicodeStringEx(
02071     OUT PUNICODE_STRING DestinationString,
02072     IN PCWSTR SourceString OPTIONAL
02073 );
02074 
02075 NTSYSAPI
02076 BOOLEAN
02077 NTAPI
02078 RtlIsTextUnicode(
02079     PVOID Buffer,
02080     INT Length,
02081     INT *Flags
02082 );
02083 
02084 NTSYSAPI
02085 BOOLEAN
02086 NTAPI
02087 RtlPrefixString(
02088     PCANSI_STRING String1,
02089     PCANSI_STRING String2,
02090     BOOLEAN CaseInsensitive
02091 );
02092 
02093 NTSYSAPI
02094 BOOLEAN
02095 NTAPI
02096 RtlPrefixUnicodeString(
02097     PCUNICODE_STRING String1,
02098     PCUNICODE_STRING String2,
02099     BOOLEAN CaseInsensitive
02100 );
02101 
02102 NTSYSAPI
02103 NTSTATUS
02104 NTAPI
02105 RtlUpcaseUnicodeString(
02106     PUNICODE_STRING DestinationString,
02107     PCUNICODE_STRING SourceString,
02108     BOOLEAN AllocateDestinationString
02109 );
02110 
02111 NTSYSAPI
02112 NTSTATUS
02113 NTAPI
02114 RtlUnicodeStringToInteger(
02115     PCUNICODE_STRING String,
02116     ULONG Base,
02117     PULONG Value
02118 );
02119 
02120 NTSYSAPI
02121 NTSTATUS
02122 NTAPI
02123 RtlValidateUnicodeString(
02124     IN ULONG Flags,
02125     IN PCUNICODE_STRING String
02126 );
02127 
02128 //
02129 // Ansi String Functions
02130 //
02131 NTSYSAPI
02132 VOID
02133 NTAPI
02134 RtlFreeAnsiString(IN PANSI_STRING AnsiString);
02135 
02136 NTSYSAPI
02137 VOID
02138 NTAPI
02139 RtlInitAnsiString(
02140     PANSI_STRING DestinationString,
02141     PCSZ SourceString
02142 );
02143 
02144 NTSYSAPI
02145 NTSTATUS
02146 NTAPI
02147 RtlInitAnsiStringEx(
02148     PANSI_STRING DestinationString,
02149     PCSZ SourceString
02150 );
02151 
02152 //
02153 // OEM String Functions
02154 //
02155 NTSYSAPI
02156 VOID
02157 NTAPI
02158 RtlFreeOemString(IN POEM_STRING OemString);
02159 
02160 //
02161 // MultiByte->Unicode String Functions
02162 //
02163 NTSYSAPI
02164 NTSTATUS
02165 NTAPI
02166 RtlMultiByteToUnicodeN(
02167     PWCHAR UnicodeString,
02168     ULONG UnicodeSize,
02169     PULONG ResultSize,
02170     PCSTR MbString,
02171     ULONG MbSize
02172 );
02173 
02174 NTSYSAPI
02175 NTSTATUS
02176 NTAPI
02177 RtlMultiByteToUnicodeSize(
02178     PULONG UnicodeSize,
02179     PCSTR MbString,
02180     ULONG MbSize
02181 );
02182 
02183 //
02184 // Atom Functions
02185 //
02186 NTSYSAPI
02187 NTSTATUS
02188 NTAPI
02189 RtlAddAtomToAtomTable(
02190     IN PRTL_ATOM_TABLE AtomTable,
02191     IN PWSTR AtomName,
02192     OUT PRTL_ATOM Atom
02193 );
02194 
02195 NTSYSAPI
02196 NTSTATUS
02197 NTAPI
02198 RtlCreateAtomTable(
02199     IN ULONG TableSize,
02200     IN OUT PRTL_ATOM_TABLE *AtomTable
02201 );
02202 
02203 NTSYSAPI
02204 NTSTATUS
02205 NTAPI
02206 RtlDeleteAtomFromAtomTable(
02207     IN PRTL_ATOM_TABLE AtomTable,
02208     IN RTL_ATOM Atom
02209 );
02210 
02211 NTSYSAPI
02212 NTSTATUS
02213 NTAPI
02214 RtlDestroyAtomTable(IN PRTL_ATOM_TABLE AtomTable);
02215 
02216 NTSYSAPI
02217 NTSTATUS
02218 NTAPI
02219 RtlQueryAtomInAtomTable(
02220     IN PRTL_ATOM_TABLE AtomTable,
02221     IN RTL_ATOM Atom,
02222     IN OUT PULONG RefCount OPTIONAL,
02223     IN OUT PULONG PinCount OPTIONAL,
02224     IN OUT PWSTR AtomName OPTIONAL,
02225     IN OUT PULONG NameLength OPTIONAL
02226 );
02227 
02228 NTSYSAPI
02229 NTSTATUS
02230 NTAPI
02231 RtlPinAtomInAtomTable(
02232     IN PRTL_ATOM_TABLE AtomTable,
02233     IN RTL_ATOM Atom
02234 );
02235 
02236 NTSYSAPI
02237 NTSTATUS
02238 NTAPI
02239 RtlLookupAtomInAtomTable(
02240     IN PRTL_ATOM_TABLE AtomTable,
02241     IN PWSTR AtomName,
02242     OUT PRTL_ATOM Atom
02243 );
02244 
02245 //
02246 // Process Management Functions
02247 //
02248 NTSYSAPI
02249 PPEB
02250 NTAPI
02251 RtlGetCurrentPeb(
02252     VOID
02253 );
02254 
02255 NTSYSAPI
02256 VOID
02257 NTAPI
02258 RtlAcquirePebLock(VOID);
02259 
02260 NTSYSAPI
02261 NTSTATUS
02262 NTAPI
02263 RtlCreateProcessParameters (
02264     OUT PRTL_USER_PROCESS_PARAMETERS *ProcessParameters,
02265     IN PUNICODE_STRING ImagePathName OPTIONAL,
02266     IN PUNICODE_STRING DllPath OPTIONAL,
02267     IN PUNICODE_STRING CurrentDirectory OPTIONAL,
02268     IN PUNICODE_STRING CommandLine OPTIONAL,
02269     IN PWSTR Environment OPTIONAL,
02270     IN PUNICODE_STRING WindowTitle OPTIONAL,
02271     IN PUNICODE_STRING DesktopInfo OPTIONAL,
02272     IN PUNICODE_STRING ShellInfo OPTIONAL,
02273     IN PUNICODE_STRING RuntimeInfo OPTIONAL
02274 );
02275 
02276 NTSYSAPI
02277 NTSTATUS
02278 NTAPI
02279 RtlCreateUserProcess(
02280     IN PUNICODE_STRING ImageFileName,
02281     IN ULONG Attributes,
02282     IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters,
02283     IN PSECURITY_DESCRIPTOR ProcessSecutityDescriptor OPTIONAL,
02284     IN PSECURITY_DESCRIPTOR ThreadSecurityDescriptor OPTIONAL,
02285     IN HANDLE ParentProcess OPTIONAL,
02286     IN BOOLEAN CurrentDirectory,
02287     IN HANDLE DebugPort OPTIONAL,
02288     IN HANDLE ExceptionPort OPTIONAL,
02289     OUT PRTL_USER_PROCESS_INFORMATION ProcessInfo
02290 );
02291 
02292 NTSYSAPI
02293 NTSTATUS
02294 NTAPI
02295 RtlCreateUserThread(
02296     IN HANDLE ProcessHandle,
02297     IN PSECURITY_DESCRIPTOR SecurityDescriptor,
02298     IN BOOLEAN CreateSuspended,
02299     IN ULONG StackZeroBits,
02300     IN SIZE_T StackReserve,
02301     IN SIZE_T StackCommit,
02302     IN PTHREAD_START_ROUTINE StartAddress,
02303     IN PVOID Parameter,
02304     IN OUT PHANDLE ThreadHandle,
02305     IN OUT PCLIENT_ID ClientId
02306 );
02307 
02308 NTSYSAPI
02309 PRTL_USER_PROCESS_PARAMETERS
02310 NTAPI
02311 RtlDeNormalizeProcessParams(IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters);
02312 
02313 NTSYSAPI
02314 NTSTATUS
02315 NTAPI
02316 RtlDestroyProcessParameters(IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters);
02317 
02318 NTSYSAPI
02319 VOID
02320 NTAPI
02321 RtlExitUserThread(NTSTATUS Status);
02322 
02323 NTSYSAPI
02324 VOID
02325 NTAPI
02326 RtlInitializeContext(
02327     IN HANDLE ProcessHandle,
02328     OUT PCONTEXT ThreadContext,
02329     IN PVOID ThreadStartParam  OPTIONAL,
02330     IN PTHREAD_START_ROUTINE ThreadStartAddress,
02331     IN PINITIAL_TEB InitialTeb
02332 );
02333 
02334 #ifdef _M_AMD64
02335 typedef struct _WOW64_CONTEXT *PWOW64_CONTEXT;
02336 
02337 NTSYSAPI
02338 NTSTATUS
02339 NTAPI
02340 RtlWow64GetThreadContext(
02341     IN HANDLE ThreadHandle,
02342     IN OUT PWOW64_CONTEXT ThreadContext
02343 );
02344 
02345 
02346 NTSYSAPI
02347 NTSTATUS
02348 NTAPI
02349 RtlWow64SetThreadContext(
02350     IN HANDLE ThreadHandle,
02351     IN PWOW64_CONTEXT ThreadContext
02352 );
02353 #endif
02354 
02355 NTSYSAPI
02356 BOOLEAN
02357 NTAPI
02358 RtlIsThreadWithinLoaderCallout(VOID);
02359 
02360 NTSYSAPI
02361 PRTL_USER_PROCESS_PARAMETERS
02362 NTAPI
02363 RtlNormalizeProcessParams(IN PRTL_USER_PROCESS_PARAMETERS ProcessParameters);
02364 
02365 NTSYSAPI
02366 VOID
02367 NTAPI
02368 RtlReleasePebLock(VOID);
02369 
02370 NTSYSAPI
02371 NTSTATUS
02372 NTAPI
02373 RtlRemoteCall(
02374     IN HANDLE Process,
02375     IN HANDLE Thread,
02376     IN PVOID CallSite,
02377     IN ULONG ArgumentCount,
02378     IN PULONG Arguments,
02379     IN BOOLEAN PassContext,
02380     IN BOOLEAN AlreadySuspended
02381 );
02382 
02383 NTSYSAPI
02384 NTSTATUS
02385 NTAPI
02386 RtlSetProcessIsCritical(
02387     IN BOOLEAN NewValue,
02388     OUT PBOOLEAN OldValue OPTIONAL,
02389     IN BOOLEAN NeedBreaks
02390 );
02391 
02392 NTSYSAPI
02393 NTSTATUS
02394 NTAPI
02395 RtlSetThreadIsCritical(
02396     IN BOOLEAN NewValue,
02397     OUT PBOOLEAN OldValue OPTIONAL,
02398     IN BOOLEAN NeedBreaks
02399 );
02400 
02401 NTSYSAPI
02402 ULONG
02403 NTAPI
02404 RtlGetCurrentProcessorNumber(
02405     VOID
02406 );
02407 
02408 #define NtCurrentPeb() (NtCurrentTeb()->ProcessEnvironmentBlock)
02409 
02410 //
02411 // Thread Pool Functions
02412 //
02413 //
02414 NTSTATUS
02415 NTAPI
02416 RtlSetThreadPoolStartFunc(
02417     IN PRTL_START_POOL_THREAD StartPoolThread,
02418     IN PRTL_EXIT_POOL_THREAD ExitPoolThread
02419 );
02420 
02421 NTSYSAPI
02422 NTSTATUS
02423 NTAPI
02424 RtlDeregisterWaitEx(
02425     IN HANDLE hWaitHandle,
02426     IN HANDLE hCompletionEvent
02427 );
02428 
02429 NTSYSAPI
02430 NTSTATUS
02431 NTAPI
02432 RtlDeregisterWait(
02433     IN HANDLE hWaitHandle
02434 );
02435 
02436 NTSYSAPI
02437 NTSTATUS
02438 NTAPI
02439 RtlQueueWorkItem(
02440     IN WORKERCALLBACKFUNC Function,
02441     IN PVOID Context OPTIONAL,
02442     IN ULONG Flags
02443 );
02444 
02445 NTSYSAPI
02446 NTSTATUS
02447 NTAPI
02448 RtlSetIoCompletionCallback(
02449     IN HANDLE FileHandle,
02450     IN PIO_APC_ROUTINE Callback,
02451     IN ULONG Flags
02452 );
02453 
02454 NTSYSAPI
02455 NTSTATUS
02456 NTAPI
02457 RtlRegisterWait(
02458     IN PHANDLE phNewWaitObject,
02459     IN HANDLE hObject,
02460     IN WAITORTIMERCALLBACKFUNC Callback,
02461     IN PVOID pvContext,
02462     IN ULONG ulMilliseconds,
02463     IN ULONG ulFlags
02464 );
02465 
02466 //
02467 // Environment/Path Functions
02468 //
02469 NTSYSAPI
02470 NTSTATUS
02471 NTAPI
02472 RtlCreateEnvironment(
02473     BOOLEAN Inherit,
02474     PWSTR *Environment
02475 );
02476 
02477 NTSYSAPI
02478 NTSTATUS
02479 NTAPI
02480 RtlComputePrivatizedDllName_U(
02481     IN PUNICODE_STRING DllName,
02482     OUT PUNICODE_STRING RealName,
02483     OUT PUNICODE_STRING LocalName
02484 );
02485 
02486 NTSYSAPI
02487 VOID
02488 NTAPI
02489 RtlDestroyEnvironment(
02490     IN PWSTR Environment
02491 );
02492 
02493 NTSYSAPI
02494 BOOLEAN
02495 NTAPI
02496 RtlDoesFileExists_U(
02497     IN PCWSTR FileName
02498 );
02499 
02500 NTSYSAPI
02501 ULONG
02502 NTAPI
02503 RtlDetermineDosPathNameType_U(
02504     IN PCWSTR Path
02505 );
02506 
02507 NTSYSAPI
02508 ULONG
02509 NTAPI
02510 RtlDosSearchPath_U(
02511     IN PCWSTR Path,
02512     IN PCWSTR FileName,
02513     IN PCWSTR Extension,
02514     IN ULONG BufferSize,
02515     OUT PWSTR Buffer,
02516     OUT PWSTR *PartName
02517 );
02518 
02519 NTSYSAPI
02520 NTSTATUS
02521 NTAPI
02522 RtlDosSearchPath_Ustr(
02523     IN ULONG Flags,
02524     IN PUNICODE_STRING PathString,
02525     IN PUNICODE_STRING FileNameString,
02526     IN PUNICODE_STRING ExtensionString,
02527     IN PUNICODE_STRING CallerBuffer,
02528     IN OUT PUNICODE_STRING DynamicString OPTIONAL,
02529     OUT PUNICODE_STRING* FullNameOut OPTIONAL,
02530     OUT PSIZE_T FilePartSize OPTIONAL,
02531     OUT PSIZE_T LengthNeeded OPTIONAL
02532 );
02533 
02534 NTSYSAPI
02535 BOOLEAN
02536 NTAPI
02537 RtlDosPathNameToNtPathName_U(
02538     IN PCWSTR DosPathName,
02539     OUT PUNICODE_STRING NtPathName,
02540     OUT PCWSTR *NtFileNamePart,
02541     OUT PRTL_RELATIVE_NAME_U DirectoryInfo
02542 );
02543 
02544 NTSYSAPI
02545 BOOLEAN
02546 NTAPI
02547 RtlDosPathNameToRelativeNtPathName_U(
02548     IN PCWSTR DosName,
02549     OUT PUNICODE_STRING NtName,
02550     OUT PCWSTR *PartName,
02551     OUT PRTL_RELATIVE_NAME_U RelativeName
02552 );
02553 
02554 NTSYSAPI
02555 NTSTATUS
02556 NTAPI
02557 RtlExpandEnvironmentStrings_U(
02558     PWSTR Environment,
02559     PUNICODE_STRING Source,
02560     PUNICODE_STRING Destination,
02561     PULONG Length
02562 );
02563 
02564 NTSYSAPI
02565 ULONG
02566 NTAPI
02567 RtlGetCurrentDirectory_U(
02568     ULONG MaximumLength,
02569     PWSTR Buffer
02570 );
02571 
02572 NTSYSAPI
02573 ULONG
02574 NTAPI
02575 RtlGetFullPathName_U(
02576     IN PCWSTR FileName,
02577     IN ULONG Size,
02578     IN PWSTR Buffer,
02579     OUT PWSTR *ShortName
02580 );
02581 
02582 #if (NTDDI_VERSION >= NTDDI_WIN7)
02583 NTSYSAPI
02584 NTSTATUS
02585 NTAPI
02586 RtlGetFullPathName_UEx(
02587     IN PWSTR FileName,
02588     IN ULONG BufferLength,
02589     OUT PWSTR Buffer,
02590     OUT OPTIONAL PWSTR *FilePart,
02591     OUT OPTIONAL RTL_PATH_TYPE *InputPathType
02592     );
02593 #endif
02594 
02595 NTSTATUS
02596 NTAPI
02597 RtlGetFullPathName_UstrEx(
02598     IN PUNICODE_STRING FileName,
02599     IN PUNICODE_STRING StaticString,
02600     IN PUNICODE_STRING DynamicString,
02601     IN PUNICODE_STRING *StringUsed,
02602     IN PSIZE_T FilePartSize,
02603     OUT PBOOLEAN NameInvalid,
02604     OUT RTL_PATH_TYPE* PathType,
02605     OUT PSIZE_T LengthNeeded
02606 );
02607 
02608 NTSYSAPI
02609 ULONG
02610 NTAPI
02611 RtlGetLongestNtPathLength(
02612     VOID
02613 );
02614 
02615 NTSYSAPI
02616 ULONG
02617 NTAPI
02618 RtlIsDosDeviceName_U(
02619     IN PCWSTR Name
02620 );
02621 
02622 NTSYSAPI
02623 ULONG
02624 NTAPI
02625 RtlIsDosDeviceName_Ustr(
02626     IN PCUNICODE_STRING Name
02627 );
02628 
02629 
02630 NTSYSAPI
02631 BOOLEAN
02632 NTAPI
02633 RtlIsNameLegalDOS8Dot3(
02634     IN PCUNICODE_STRING Name,
02635     IN OUT POEM_STRING OemName OPTIONAL,
02636     IN OUT PBOOLEAN NameContainsSpaces OPTIONAL
02637 );
02638 
02639 NTSYSAPI
02640 NTSTATUS
02641 NTAPI
02642 RtlQueryEnvironmentVariable_U(
02643     IN OPTIONAL PWSTR Environment,
02644     IN PUNICODE_STRING Name,
02645     OUT PUNICODE_STRING Value
02646 );
02647 
02648 VOID
02649 NTAPI
02650 RtlReleaseRelativeName(
02651     IN PRTL_RELATIVE_NAME_U RelativeName
02652 );
02653 
02654 NTSYSAPI
02655 NTSTATUS
02656 NTAPI
02657 RtlSetCurrentDirectory_U(
02658     IN PUNICODE_STRING name
02659 );
02660 
02661 NTSYSAPI
02662 NTSTATUS
02663 NTAPI
02664 RtlSetEnvironmentVariable(
02665     PWSTR *Environment,
02666     PUNICODE_STRING Name,
02667     PUNICODE_STRING Value
02668 );
02669 
02670 //
02671 // Critical Section/Resource Functions
02672 //
02673 NTSYSAPI
02674 NTSTATUS
02675 NTAPI
02676 RtlDeleteCriticalSection (
02677     IN PRTL_CRITICAL_SECTION CriticalSection
02678 );
02679 
02680 NTSYSAPI
02681 NTSTATUS
02682 NTAPI
02683 RtlEnterCriticalSection(
02684     IN PRTL_CRITICAL_SECTION CriticalSection
02685 );
02686 
02687 NTSYSAPI
02688 NTSTATUS
02689 NTAPI
02690 RtlInitializeCriticalSection(
02691     IN PRTL_CRITICAL_SECTION CriticalSection
02692 );
02693 
02694 NTSYSAPI
02695 NTSTATUS
02696 NTAPI
02697 RtlInitializeCriticalSectionAndSpinCount(
02698     IN PRTL_CRITICAL_SECTION CriticalSection,
02699     IN ULONG SpinCount
02700 );
02701 
02702 NTSYSAPI
02703 NTSTATUS
02704 NTAPI
02705 RtlLeaveCriticalSection(
02706     IN PRTL_CRITICAL_SECTION CriticalSection
02707 );
02708 
02709 NTSYSAPI
02710 BOOLEAN
02711 NTAPI
02712 RtlTryEnterCriticalSection(
02713     IN PRTL_CRITICAL_SECTION CriticalSection
02714 );
02715 
02716 NTSYSAPI
02717 VOID
02718 NTAPI
02719 RtlpUnWaitCriticalSection(
02720     IN PRTL_CRITICAL_SECTION CriticalSection
02721 );
02722 
02723 NTSYSAPI
02724 NTSTATUS
02725 NTAPI
02726 RtlpWaitForCriticalSection(
02727     IN PRTL_CRITICAL_SECTION CriticalSection
02728 );
02729 
02730 NTSYSAPI
02731 BOOLEAN
02732 NTAPI
02733 RtlAcquireResourceExclusive(
02734     IN PRTL_RESOURCE Resource,
02735     IN BOOLEAN Wait
02736 );
02737 
02738 NTSYSAPI
02739 BOOLEAN
02740 NTAPI
02741 RtlAcquireResourceShared(
02742     IN PRTL_RESOURCE Resource,
02743     IN BOOLEAN Wait
02744 );
02745 
02746 NTSYSAPI
02747 VOID
02748 NTAPI
02749 RtlConvertExclusiveToShared(
02750     IN PRTL_RESOURCE Resource
02751 );
02752 
02753 NTSYSAPI
02754 VOID
02755 NTAPI
02756 RtlConvertSharedToExclusive(
02757     IN PRTL_RESOURCE Resource
02758 );
02759 
02760 NTSYSAPI
02761 VOID
02762 NTAPI
02763 RtlDeleteResource(
02764     IN PRTL_RESOURCE Resource
02765 );
02766 
02767 NTSYSAPI
02768 VOID
02769 NTAPI
02770 RtlDumpResource(
02771     IN PRTL_RESOURCE Resource
02772 );
02773 
02774 NTSYSAPI
02775 VOID
02776 NTAPI
02777 RtlInitializeResource(
02778     IN PRTL_RESOURCE Resource
02779 );
02780 
02781 NTSYSAPI
02782 VOID
02783 NTAPI
02784 RtlReleaseResource(
02785     IN PRTL_RESOURCE Resource
02786 );
02787 
02788 //
02789 // Compression Functions
02790 //
02791 NTSYSAPI
02792 NTSTATUS
02793 NTAPI
02794 RtlCompressBuffer(
02795     IN USHORT CompressionFormatAndEngine,
02796     IN PUCHAR UncompressedBuffer,
02797     IN ULONG UncompressedBufferSize,
02798     OUT PUCHAR CompressedBuffer,
02799     IN ULONG CompressedBufferSize,
02800     IN ULONG UncompressedChunkSize,
02801     OUT PULONG FinalCompressedSize,
02802     IN PVOID WorkSpace
02803 );
02804 
02805 NTSYSAPI
02806 NTSTATUS
02807 NTAPI
02808 RtlDecompressBuffer(
02809     IN USHORT CompressionFormat,
02810     OUT PUCHAR UncompressedBuffer,
02811     IN ULONG UncompressedBufferSize,
02812     IN PUCHAR CompressedBuffer,
02813     IN ULONG CompressedBufferSize,
02814     OUT PULONG FinalUncompressedSize
02815 );
02816 
02817 NTSYSAPI
02818 NTSTATUS
02819 NTAPI
02820 RtlGetCompressionWorkSpaceSize(
02821     IN USHORT CompressionFormatAndEngine,
02822     OUT PULONG CompressBufferWorkSpaceSize,
02823     OUT PULONG CompressFragmentWorkSpaceSize
02824 );
02825 
02826 //
02827 // Debug Info Functions
02828 //
02829 NTSYSAPI
02830 PRTL_DEBUG_INFORMATION
02831 NTAPI
02832 RtlCreateQueryDebugBuffer(
02833     IN ULONG Size,
02834     IN BOOLEAN EventPair
02835 );
02836 
02837 NTSYSAPI
02838 NTSTATUS
02839 NTAPI
02840 RtlDestroyQueryDebugBuffer(IN PRTL_DEBUG_INFORMATION DebugBuffer);
02841 
02842 NTSYSAPI
02843 NTSTATUS
02844 NTAPI
02845 RtlQueryProcessDebugInformation(
02846     IN ULONG ProcessId,
02847     IN ULONG DebugInfoClassMask,
02848     IN OUT PRTL_DEBUG_INFORMATION DebugBuffer
02849 );
02850 
02851 //
02852 // Bitmap Functions
02853 //
02854 NTSYSAPI
02855 BOOLEAN
02856 NTAPI
02857 RtlAreBitsClear(
02858     IN PRTL_BITMAP BitMapHeader,
02859     IN ULONG StartingIndex,
02860     IN ULONG Length
02861 );
02862 
02863 NTSYSAPI
02864 BOOLEAN
02865 NTAPI
02866 RtlAreBitsSet(
02867     IN PRTL_BITMAP BitMapHeader,
02868     IN ULONG StartingIndex,
02869     IN ULONG Length
02870 );
02871 
02872 NTSYSAPI
02873 VOID
02874 NTAPI
02875 RtlClearBits(
02876     IN PRTL_BITMAP BitMapHeader,
02877     IN ULONG StartingIndex,
02878     IN ULONG NumberToClear
02879 );
02880 
02881 NTSYSAPI
02882 ULONG
02883 NTAPI
02884 RtlFindClearBits(
02885     IN PRTL_BITMAP BitMapHeader,
02886     IN ULONG NumberToFind,
02887     IN ULONG HintIndex
02888 );
02889 
02890 NTSYSAPI
02891 ULONG
02892 NTAPI
02893 RtlFindClearBitsAndSet(
02894     IN PRTL_BITMAP BitMapHeader,
02895     IN ULONG NumberToFind,
02896     IN ULONG HintIndex
02897 );
02898 
02899 NTSYSAPI
02900 ULONG
02901 NTAPI
02902 RtlFindNextForwardRunClear(
02903     IN PRTL_BITMAP BitMapHeader,
02904     IN ULONG FromIndex,
02905     IN PULONG StartingRunIndex
02906 );
02907 
02908 NTSYSAPI
02909 VOID
02910 NTAPI
02911 RtlInitializeBitMap(
02912     IN PRTL_BITMAP BitMapHeader,
02913     IN PULONG BitMapBuffer,
02914     IN ULONG SizeOfBitMap
02915 );
02916 
02917 NTSYSAPI
02918 ULONG
02919 NTAPI
02920 RtlNumberOfSetBits(
02921     IN PRTL_BITMAP BitMapHeader
02922 );
02923 
02924 NTSYSAPI
02925 VOID
02926 NTAPI
02927 RtlSetBit(
02928     PRTL_BITMAP BitMapHeader,
02929     ULONG BitNumber
02930 );
02931 
02932 NTSYSAPI
02933 VOID
02934 NTAPI
02935 RtlSetBits(
02936     IN PRTL_BITMAP BitMapHeader,
02937     IN ULONG StartingIndex,
02938     IN ULONG NumberToSet
02939 );
02940 
02941 NTSYSAPI
02942 VOID
02943 NTAPI
02944 RtlSetAllBits(
02945     PRTL_BITMAP BitMapHeader
02946 );
02947 
02948 NTSYSAPI
02949 BOOLEAN
02950 NTAPI
02951 RtlTestBit(
02952     PRTL_BITMAP BitMapHeader,
02953     ULONG BitNumber
02954 );
02955 
02956 //
02957 // Timer Functions
02958 //
02959 NTSYSAPI
02960 NTSTATUS
02961 NTAPI
02962 RtlCreateTimer(
02963     HANDLE TimerQueue,
02964     PHANDLE phNewTimer,
02965     WAITORTIMERCALLBACKFUNC Callback,
02966     PVOID Parameter,
02967     ULONG DueTime,
02968     ULONG Period,
02969     ULONG Flags
02970 );
02971 
02972 NTSYSAPI
02973 NTSTATUS
02974 NTAPI
02975 RtlCreateTimerQueue(PHANDLE TimerQueue);
02976 
02977 NTSYSAPI
02978 NTSTATUS
02979 NTAPI
02980 RtlDeleteTimer(
02981     HANDLE TimerQueue,
02982     HANDLE Timer,
02983     HANDLE CompletionEvent
02984 );
02985 
02986 NTSYSAPI
02987 NTSTATUS
02988 NTAPI
02989 RtlUpdateTimer(
02990     HANDLE TimerQueue,
02991     HANDLE Timer,
02992     ULONG DueTime,
02993     ULONG Period
02994 );
02995 
02996 NTSYSAPI
02997 NTSTATUS
02998 NTAPI
02999 RtlDeleteTimerQueueEx(
03000     HANDLE TimerQueue,
03001     HANDLE CompletionEvent
03002 );
03003 
03004 NTSYSAPI
03005 NTSTATUS
03006 NTAPI
03007 RtlDeleteTimerQueue(HANDLE TimerQueue);
03008 
03009 //
03010 // SList functions
03011 //
03012 PSLIST_ENTRY
03013 FASTCALL
03014 InterlockedPushListSList(
03015     IN PSLIST_HEADER ListHead,
03016     IN PSLIST_ENTRY List,
03017     IN PSLIST_ENTRY ListEnd,
03018     IN ULONG Count
03019 );
03020 
03021 //
03022 // Range List functions
03023 //
03024 NTSYSAPI
03025 VOID
03026 NTAPI
03027 RtlInitializeRangeList(
03028     IN OUT PRTL_RANGE_LIST RangeList
03029 );
03030 
03031 NTSYSAPI
03032 VOID
03033 NTAPI
03034 RtlFreeRangeList(
03035     IN PRTL_RANGE_LIST RangeList
03036 );
03037 
03038 NTSYSAPI
03039 NTSTATUS
03040 NTAPI
03041 RtlAddRange(
03042     IN OUT PRTL_RANGE_LIST RangeList,
03043     IN ULONGLONG Start,
03044     IN ULONGLONG End,
03045     IN UCHAR Attributes,
03046     IN ULONG Flags,
03047     IN PVOID UserData OPTIONAL,
03048     IN PVOID Owner OPTIONAL
03049 );
03050 
03051 //
03052 // Debug Functions
03053 //
03054 ULONG
03055 __cdecl
03056 DbgPrint(
03057     IN PCCH  Format,
03058     IN ...
03059 );
03060 
03061 NTSYSAPI
03062 ULONG
03063 __cdecl
03064 DbgPrintEx(
03065     IN ULONG ComponentId,
03066     IN ULONG Level,
03067     IN PCCH Format,
03068     IN ...
03069 );
03070 
03071 NTSYSAPI
03072 ULONG
03073 NTAPI
03074 DbgPrompt(
03075     IN PCCH Prompt,
03076     OUT PCH Response,
03077     IN ULONG MaximumResponseLength
03078 );
03079 
03080 VOID
03081 NTAPI
03082 DbgBreakPoint(
03083     VOID
03084 );
03085 
03086 VOID
03087 NTAPI
03088 DbgLoadImageSymbols(
03089     IN PSTRING Name,
03090     IN PVOID Base,
03091     IN ULONG_PTR ProcessId
03092 );
03093 
03094 VOID
03095 NTAPI
03096 DbgUnLoadImageSymbols(
03097     IN PSTRING Name,
03098     IN PVOID Base,
03099     IN ULONG_PTR ProcessId
03100 );
03101 
03102 VOID
03103 NTAPI
03104 DbgCommandString(
03105     IN PCCH Name,
03106     IN PCCH Command
03107 );
03108 
03109 //
03110 // Generic Table Functions
03111 //
03112 #if defined(NTOS_MODE_USER) || defined(_NTIFS_)
03113 NTSYSAPI
03114 PVOID
03115 NTAPI
03116 RtlInsertElementGenericTable(
03117     IN PRTL_GENERIC_TABLE Table,
03118     IN PVOID Buffer,
03119     IN ULONG BufferSize,
03120     OUT PBOOLEAN NewElement OPTIONAL
03121 );
03122 
03123 NTSYSAPI
03124 PVOID
03125 NTAPI
03126 RtlInsertElementGenericTableFull(
03127     IN PRTL_GENERIC_TABLE Table,
03128     IN PVOID Buffer,
03129     IN ULONG BufferSize,
03130     OUT PBOOLEAN NewElement OPTIONAL,
03131     IN PVOID NodeOrParent,
03132     IN TABLE_SEARCH_RESULT SearchResult
03133 );
03134 
03135 NTSYSAPI
03136 BOOLEAN
03137 NTAPI
03138 RtlIsGenericTableEmpty(
03139     IN PRTL_GENERIC_TABLE Table
03140 );
03141 
03142 NTSYSAPI
03143 PVOID
03144 NTAPI
03145 RtlLookupElementGenericTableFull(
03146     IN PRTL_GENERIC_TABLE Table,
03147     IN PVOID Buffer,
03148     OUT PVOID *NodeOrParent,
03149     OUT TABLE_SEARCH_RESULT *SearchResult
03150 );
03151 #endif
03152 
03153 //
03154 // Handle Table Functions
03155 //
03156 NTSYSAPI
03157 PRTL_HANDLE_TABLE_ENTRY
03158 NTAPI
03159 RtlAllocateHandle(
03160     IN PRTL_HANDLE_TABLE HandleTable,
03161     IN OUT PULONG Index
03162 );
03163 
03164 NTSYSAPI
03165 VOID
03166 NTAPI
03167 RtlDestroyHandleTable(IN PRTL_HANDLE_TABLE HandleTable);
03168 
03169 NTSYSAPI
03170 BOOLEAN
03171 NTAPI
03172 RtlFreeHandle(
03173     IN PRTL_HANDLE_TABLE HandleTable,
03174     IN PRTL_HANDLE_TABLE_ENTRY Handle
03175 );
03176 
03177 NTSYSAPI
03178 VOID
03179 NTAPI
03180 RtlInitializeHandleTable(
03181     IN ULONG TableSize,
03182     IN ULONG HandleSize,
03183     IN PRTL_HANDLE_TABLE HandleTable
03184 );
03185 
03186 NTSYSAPI
03187 BOOLEAN
03188 NTAPI
03189 RtlIsValidHandle(
03190     IN PRTL_HANDLE_TABLE HandleTable,
03191     IN PRTL_HANDLE_TABLE_ENTRY Handle
03192 );
03193 
03194 NTSYSAPI
03195 BOOLEAN
03196 NTAPI
03197 RtlIsValidIndexHandle(
03198     IN PRTL_HANDLE_TABLE HandleTable,
03199     IN ULONG Index,
03200     OUT PRTL_HANDLE_TABLE_ENTRY *Handle
03201 );
03202 
03203 //
03204 // PE Functions
03205 //
03206 NTSYSAPI
03207 NTSTATUS
03208 NTAPI
03209 RtlFindMessage(
03210     IN PVOID BaseAddress,
03211     IN ULONG Type,
03212     IN ULONG Language,
03213     IN ULONG MessageId,
03214     OUT PMESSAGE_RESOURCE_ENTRY *MessageResourceEntry
03215 );
03216 
03217 NTSYSAPI
03218 ULONG
03219 NTAPI
03220 RtlGetNtGlobalFlags(VOID);
03221 
03222 NTSYSAPI
03223 PVOID
03224 NTAPI
03225 RtlImageDirectoryEntryToData(
03226     PVOID BaseAddress,
03227     BOOLEAN MappedAsImage,
03228     USHORT Directory,
03229     PULONG Size
03230 );
03231 
03232 NTSYSAPI
03233 PVOID
03234 NTAPI
03235 RtlImageRvaToVa(
03236     PIMAGE_NT_HEADERS NtHeader,
03237     PVOID BaseAddress,
03238     ULONG Rva,
03239     PIMAGE_SECTION_HEADER *SectionHeader
03240 );
03241 
03242 NTSYSAPI
03243 PIMAGE_NT_HEADERS
03244 NTAPI
03245 RtlImageNtHeader(IN PVOID BaseAddress);
03246 
03247 NTSYSAPI
03248 NTSTATUS
03249 NTAPI
03250 RtlImageNtHeaderEx(
03251     IN ULONG Flags,
03252     IN PVOID BaseAddress,
03253     IN ULONGLONG Size,
03254     IN PIMAGE_NT_HEADERS *NtHeader
03255 );
03256 
03257 NTSYSAPI
03258 PIMAGE_SECTION_HEADER
03259 NTAPI
03260 RtlImageRvaToSection(
03261     PIMAGE_NT_HEADERS NtHeader,
03262     PVOID BaseAddress,
03263     ULONG Rva
03264 );
03265 
03266 NTSYSAPI
03267 ULONG
03268 NTAPI
03269 LdrRelocateImageWithBias(
03270     IN PVOID NewAddress,
03271     IN LONGLONG AdditionalBias,
03272     IN PCCH LoaderName,
03273     IN ULONG Success,
03274     IN ULONG Conflict,
03275     IN ULONG Invalid
03276 );
03277 
03278 //
03279 // Activation Context Functions
03280 //
03281 #ifdef NTOS_MODE_USER
03282 NTSYSAPI
03283 NTSTATUS
03284 NTAPI
03285 RtlActivateActivationContextEx(
03286     IN ULONG Flags,
03287     IN PTEB Teb,
03288     IN PVOID Context,
03289     IN PULONG_PTR Cookie
03290 );
03291 
03292 NTSYSAPI
03293 NTSTATUS
03294 NTAPI
03295 RtlActivateActivationContext(
03296     IN ULONG Flags,
03297     IN HANDLE Handle,
03298     OUT PULONG_PTR Cookie
03299 );
03300 
03301 NTSYSAPI
03302 VOID
03303 NTAPI
03304 RtlAddRefActivationContext(
03305     PVOID Context
03306 );
03307 
03308 NTSYSAPI
03309 PRTL_ACTIVATION_CONTEXT_STACK_FRAME
03310 FASTCALL
03311 RtlActivateActivationContextUnsafeFast(
03312     IN PRTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED Frame,
03313     IN PVOID Context
03314 );
03315 
03316 NTSYSAPI
03317 NTSTATUS
03318 NTAPI
03319 RtlAllocateActivationContextStack(
03320     IN PVOID *Context
03321 );
03322 
03323 NTSYSAPI
03324 NTSTATUS
03325 NTAPI
03326 RtlCreateActivationContext(
03327     OUT PHANDLE Handle,
03328     IN OUT PVOID ReturnedData
03329 );
03330 
03331 NTSYSAPI
03332 NTSTATUS
03333 NTAPI
03334 RtlGetActiveActivationContext(
03335     IN PVOID *Context
03336 );
03337 
03338 NTSYSAPI
03339 VOID
03340 NTAPI
03341 RtlReleaseActivationContext(
03342     IN HANDLE handle
03343 );
03344 
03345 NTSYSAPI
03346 NTSTATUS
03347 NTAPI
03348 RtlDeactivateActivationContext(
03349     ULONG dwFlags,
03350     ULONG_PTR ulCookie
03351 );
03352 
03353 NTSYSAPI
03354 VOID
03355 NTAPI
03356 RtlFreeThreadActivationContextStack(void);
03357 
03358 NTSYSAPI
03359 PRTL_ACTIVATION_CONTEXT_STACK_FRAME
03360 FASTCALL
03361 RtlDeactivateActivationContextUnsafeFast(
03362     IN PRTL_CALLER_ALLOCATED_ACTIVATION_CONTEXT_STACK_FRAME_EXTENDED Frame
03363 );
03364 
03365 NTSYSAPI
03366 NTSTATUS
03367 NTAPI
03368 RtlDosApplyFileIsolationRedirection_Ustr(
03369     IN ULONG Flags,
03370     IN PUNICODE_STRING OriginalName,
03371     IN PUNICODE_STRING Extension,
03372     IN OUT PUNICODE_STRING StaticString,
03373     IN OUT PUNICODE_STRING DynamicString,
03374     IN OUT PUNICODE_STRING *NewName,
03375     IN PULONG NewFlags,
03376     IN PSIZE_T FileNameSize,
03377     IN PSIZE_T RequiredLength
03378 );
03379 
03380 NTSYSAPI
03381 NTSTATUS
03382 NTAPI
03383 RtlFindActivationContextSectionString(
03384     IN ULONG dwFlags,
03385     IN const GUID *ExtensionGuid,
03386     IN ULONG SectionType,
03387     IN PUNICODE_STRING SectionName,
03388     IN OUT PVOID ReturnedData
03389 );
03390 
03391 NTSYSAPI
03392 NTSTATUS
03393 NTAPI
03394 RtlQueryInformationActivationContext(
03395     DWORD dwFlags,
03396     PVOID Context,
03397     PVOID pvSubInstance,
03398     ULONG ulInfoClass,
03399     PVOID pvBuffer,
03400     SIZE_T cbBuffer OPTIONAL,
03401     SIZE_T *pcbWrittenOrRequired OPTIONAL
03402 );
03403 
03404 NTSYSAPI
03405 NTSTATUS
03406 NTAPI
03407 RtlZombifyActivationContext(
03408     PVOID Context
03409 );
03410 
03411 //
03412 // WOW64 Functions
03413 //
03414 NTSYSAPI
03415 NTSTATUS
03416 NTAPI
03417 RtlWow64EnableFsRedirection(
03418     IN BOOLEAN Wow64FsEnableRedirection
03419 );
03420 
03421 NTSYSAPI
03422 NTSTATUS
03423 NTAPI
03424 RtlWow64EnableFsRedirectionEx(
03425     IN PVOID Wow64FsEnableRedirection,
03426     OUT PVOID *OldFsRedirectionLevel
03427 );
03428 
03429 #endif
03430 
03431 //
03432 // Registry Functions
03433 //
03434 NTSYSAPI
03435 NTSTATUS
03436 NTAPI
03437 RtlCheckRegistryKey(
03438     ULONG RelativeTo,
03439     PWSTR Path
03440 );
03441 
03442 NTSYSAPI
03443 NTSTATUS
03444 NTAPI
03445 RtlCreateRegistryKey(
03446     IN ULONG RelativeTo,
03447     IN PWSTR Path
03448 );
03449 
03450 NTSYSAPI
03451 NTSTATUS
03452 NTAPI
03453 RtlFormatCurrentUserKeyPath(
03454     IN OUT PUNICODE_STRING KeyPath
03455 );
03456 
03457 NTSYSAPI
03458 NTSTATUS
03459 NTAPI
03460 RtlOpenCurrentUser(
03461     IN ACCESS_MASK DesiredAccess,
03462     OUT PHANDLE KeyHandle
03463 );
03464 
03465 NTSYSAPI
03466 NTSTATUS
03467 NTAPI
03468 RtlQueryRegistryValues(
03469     IN ULONG RelativeTo,
03470     IN PCWSTR Path,
03471     IN PRTL_QUERY_REGISTRY_TABLE QueryTable,
03472     IN PVOID Context,
03473     IN PVOID Environment
03474 );
03475 
03476 NTSYSAPI
03477 NTSTATUS
03478 NTAPI
03479 RtlWriteRegistryValue(
03480     ULONG RelativeTo,
03481     PCWSTR Path,
03482     PCWSTR ValueName,
03483     ULONG ValueType,
03484     PVOID ValueData,
03485     ULONG ValueLength
03486 );
03487 
03488 #ifdef NTOS_MODE_USER
03489 NTSYSAPI
03490 NTSTATUS
03491 NTAPI
03492 RtlpNtCreateKey(
03493     OUT HANDLE KeyHandle,
03494     IN ACCESS_MASK DesiredAccess,
03495     IN POBJECT_ATTRIBUTES ObjectAttributes,
03496     IN ULONG TitleIndex,
03497     IN PUNICODE_STRING Class,
03498     OUT PULONG Disposition
03499 );
03500 
03501 NTSYSAPI
03502 NTSTATUS
03503 NTAPI
03504 RtlpNtEnumerateSubKey(
03505     IN HANDLE KeyHandle,
03506     OUT PUNICODE_STRING SubKeyName,
03507     IN ULONG Index,
03508     IN ULONG Unused
03509 );
03510 
03511 NTSYSAPI
03512 NTSTATUS
03513 NTAPI
03514 RtlpNtMakeTemporaryKey(
03515     IN HANDLE KeyHandle
03516 );
03517 
03518 NTSYSAPI
03519 NTSTATUS
03520 NTAPI
03521 RtlpNtOpenKey(
03522     OUT HANDLE KeyHandle,
03523     IN ACCESS_MASK DesiredAccess,
03524     IN POBJECT_ATTRIBUTES ObjectAttributes,
03525     IN ULONG Unused
03526 );
03527 
03528 NTSYSAPI
03529 NTSTATUS
03530 NTAPI
03531 RtlpNtQueryValueKey(
03532     IN HANDLE KeyHandle,
03533     OUT PULONG Type OPTIONAL,
03534     OUT PVOID Data OPTIONAL,
03535     IN OUT PULONG DataLength OPTIONAL,
03536     IN ULONG Unused
03537 );
03538 
03539 NTSYSAPI
03540 NTSTATUS
03541 NTAPI
03542 RtlpNtSetValueKey(
03543     IN HANDLE KeyHandle,
03544     IN ULONG Type,
03545     IN PVOID Data,
03546     IN ULONG DataLength
03547 );
03548 #endif
03549 
03550 //
03551 // NLS Functions
03552 //
03553 NTSYSAPI
03554 VOID
03555 NTAPI
03556 RtlGetDefaultCodePage(
03557     OUT PUSHORT AnsiCodePage,
03558     OUT PUSHORT OemCodePage
03559 );
03560 
03561 NTSYSAPI
03562 VOID
03563 NTAPI
03564 RtlInitNlsTables(
03565     IN PUSHORT AnsiTableBase,
03566     IN PUSHORT OemTableBase,
03567     IN PUSHORT CaseTableBase,
03568     OUT PNLSTABLEINFO NlsTable
03569 );
03570 
03571 NTSYSAPI
03572 VOID
03573 NTAPI
03574 RtlInitCodePageTable(
03575     IN PUSHORT TableBase,
03576     OUT PCPTABLEINFO CodePageTable
03577 );
03578 
03579 NTSYSAPI
03580 VOID
03581 NTAPI
03582 RtlResetRtlTranslations(IN PNLSTABLEINFO NlsTable);
03583 
03584 #if defined(NTOS_MODE_USER) && !defined(NO_RTL_INLINES)
03585 
03586 //
03587 // Misc conversion functions
03588 //
03589 static __inline
03590 LARGE_INTEGER
03591 NTAPI_INLINE
03592 RtlConvertLongToLargeInteger(
03593     LONG SignedInteger
03594 )
03595 {
03596     LARGE_INTEGER Result;
03597 
03598     Result.QuadPart = SignedInteger;
03599     return Result;
03600 }
03601 
03602 static __inline
03603 LARGE_INTEGER
03604 NTAPI_INLINE
03605 RtlEnlargedIntegerMultiply(
03606     LONG Multiplicand,
03607     LONG Multiplier
03608 )
03609 {
03610     LARGE_INTEGER Product;
03611 
03612     Product.QuadPart = (LONGLONG)Multiplicand * (ULONGLONG)Multiplier;
03613     return Product;
03614 }
03615 
03616 static __inline
03617 ULONG
03618 NTAPI_INLINE
03619 RtlEnlargedUnsignedDivide(
03620     IN ULARGE_INTEGER Dividend,
03621     IN ULONG Divisor,
03622     IN PULONG Remainder OPTIONAL
03623 )
03624 {
03625     ULONG Quotient;
03626 
03627     Quotient = (ULONG)(Dividend.QuadPart / Divisor);
03628     if (Remainder) {
03629         *Remainder = (ULONG)(Dividend.QuadPart % Divisor);
03630     }
03631 
03632     return Quotient;
03633 }
03634 
03635 static __inline
03636 LARGE_INTEGER
03637 NTAPI_INLINE
03638 RtlEnlargedUnsignedMultiply(
03639     ULONG Multiplicand,
03640     ULONG Multiplier
03641 )
03642 {
03643     LARGE_INTEGER Product;
03644 
03645     Product.QuadPart = (ULONGLONG)Multiplicand * (ULONGLONG)Multiplier;
03646     return Product;
03647 }
03648 
03649 #if defined(_AMD64_) || defined(_IA64_)
03650 static __inline
03651 LARGE_INTEGER
03652 NTAPI_INLINE
03653 RtlExtendedLargeIntegerDivide(
03654   IN LARGE_INTEGER Dividend,
03655   IN ULONG Divisor,
03656   OUT PULONG Remainder OPTIONAL)
03657 {
03658   LARGE_INTEGER ret;
03659   ret.QuadPart = (ULONG64)Dividend.QuadPart / Divisor;
03660   if (Remainder)
03661     *Remainder = (ULONG)(Dividend.QuadPart % Divisor);
03662   return ret;
03663 }
03664 
03665 #else
03666 NTSYSAPI
03667 LARGE_INTEGER
03668 NTAPI
03669 RtlExtendedLargeIntegerDivide(
03670     IN LARGE_INTEGER Dividend,
03671     IN ULONG Divisor,
03672     OUT PULONG Remainder OPTIONAL
03673 );
03674 
03675 #endif /* defined(_AMD64_) || defined(_IA64_) */
03676 
03677 #endif
03678 
03679 
03680 NTSYSAPI
03681 ULONG
03682 NTAPI
03683 RtlUniform(
03684     IN PULONG Seed
03685 );
03686 
03687 NTSYSAPI
03688 ULONG
03689 NTAPI
03690 RtlRandom(
03691     IN OUT PULONG Seed
03692 );
03693 
03694 NTSYSAPI
03695 ULONG
03696 NTAPI
03697 RtlComputeCrc32(
03698     IN ULONG InitialCrc,
03699     IN PUCHAR Buffer,
03700     IN ULONG Length
03701 );
03702 
03703 //
03704 // Network Functions
03705 //
03706 NTSYSAPI
03707 NTSTATUS
03708 NTAPI
03709 RtlIpv4StringToAddressW(
03710     IN PCWSTR String,
03711     IN BOOLEAN Strict,
03712     OUT LPWSTR *Terminator,
03713     OUT struct in_addr *Addr
03714 );
03715 
03716 NTSYSAPI
03717 NTSTATUS
03718 NTAPI
03719 RtlIpv6StringToAddressA(
03720     IN PCHAR Name,
03721     OUT PCHAR *Terminator,
03722     OUT struct in6_addr *Addr
03723 );
03724 
03725 NTSYSAPI
03726 NTSTATUS
03727 NTAPI
03728 RtlIpv6StringToAddressW(
03729     IN PWCHAR Name,
03730     OUT PCHAR *Terminator,
03731     OUT struct in6_addr *Addr
03732 );
03733 
03734 NTSYSAPI
03735 NTSTATUS
03736 NTAPI
03737 RtlIpv6StringToAddressExA(
03738     IN PCHAR AddressString,
03739     IN struct in6_addr *Address,
03740     IN PULONG ScopeId,
03741     IN PUSHORT Port
03742 );
03743 
03744 NTSYSAPI
03745 NTSTATUS
03746 NTAPI
03747 RtlIpv6StringToAddressExW(
03748     IN PWCHAR AddressName,
03749     IN struct in6_addr *Address,
03750     IN PULONG ScopeId,
03751     IN PUSHORT Port
03752 );
03753 
03754 
03755 //
03756 // Time Functions
03757 //
03758 NTSYSAPI
03759 NTSTATUS
03760 NTAPI
03761 RtlQueryTimeZoneInformation(PRTL_TIME_ZONE_INFORMATION TimeZoneInformation);
03762 
03763 NTSYSAPI
03764 VOID
03765 NTAPI
03766 RtlSecondsSince1970ToTime(
03767     IN ULONG SecondsSince1970,
03768     OUT PLARGE_INTEGER Time
03769 );
03770 
03771 NTSYSAPI
03772 NTSTATUS
03773 NTAPI
03774 RtlSetTimeZoneInformation(PRTL_TIME_ZONE_INFORMATION TimeZoneInformation);
03775 
03776 NTSYSAPI
03777 BOOLEAN
03778 NTAPI
03779 RtlTimeFieldsToTime(
03780     PTIME_FIELDS TimeFields,
03781     PLARGE_INTEGER Time
03782 );
03783 
03784 NTSYSAPI
03785 BOOLEAN
03786 NTAPI
03787 RtlTimeToSecondsSince1970(
03788     PLARGE_INTEGER Time,
03789     OUT PULONG SecondsSince1970
03790 );
03791 
03792 NTSYSAPI
03793 VOID
03794 NTAPI
03795 RtlTimeToTimeFields(
03796     PLARGE_INTEGER Time,
03797     PTIME_FIELDS TimeFields
03798 );
03799 
03800 NTSYSAPI
03801 NTSTATUS
03802 NTAPI
03803 RtlSystemTimeToLocalTime(
03804     IN PLARGE_INTEGER SystemTime,
03805     OUT PLARGE_INTEGER LocalTime
03806 );
03807 
03808 //
03809 // Version Functions
03810 //
03811 NTSYSAPI
03812 NTSTATUS
03813 NTAPI
03814 RtlVerifyVersionInfo(
03815     IN PRTL_OSVERSIONINFOEXW VersionInfo,
03816     IN ULONG TypeMask,
03817     IN ULONGLONG ConditionMask
03818 );
03819 
03820 NTSYSAPI
03821 NTSTATUS
03822 NTAPI
03823 RtlGetVersion(IN OUT PRTL_OSVERSIONINFOW lpVersionInformation);
03824 
03825 NTSYSAPI
03826 BOOLEAN
03827 NTAPI
03828 RtlGetNtProductType(OUT PNT_PRODUCT_TYPE ProductType);
03829 
03830 //
03831 // Secure Memory Functions
03832 //
03833 #ifdef NTOS_MODE_USER
03834 NTSYSAPI
03835 NTSTATUS
03836 NTAPI
03837 RtlRegisterSecureMemoryCacheCallback(
03838     IN PRTL_SECURE_MEMORY_CACHE_CALLBACK Callback);
03839 
03840 NTSYSAPI
03841 BOOLEAN
03842 NTAPI
03843 RtlFlushSecureMemoryCache(
03844     IN PVOID MemoryCache,
03845     IN OPTIONAL SIZE_T MemoryLength
03846 );
03847 #endif
03848 
03849 //
03850 // Boot Status Data Functions
03851 //
03852 #ifdef NTOS_MODE_USER
03853 NTSYSAPI
03854 NTSTATUS
03855 NTAPI
03856 RtlCreateBootStatusDataFile(
03857     VOID
03858 );
03859 
03860 NTSYSAPI
03861 NTSTATUS
03862 NTAPI
03863 RtlGetSetBootStatusData(
03864     IN HANDLE FileHandle,
03865     IN BOOLEAN WriteMode,
03866     IN RTL_BSD_ITEM_TYPE DataClass,
03867     IN PVOID Buffer,
03868     IN ULONG BufferSize,
03869     OUT PULONG ReturnLength OPTIONAL
03870 );
03871 
03872 NTSYSAPI
03873 NTSTATUS
03874 NTAPI
03875 RtlLockBootStatusData(
03876     OUT PHANDLE FileHandle
03877 );
03878 
03879 NTSYSAPI
03880 NTSTATUS
03881 NTAPI
03882 RtlUnlockBootStatusData(
03883     IN HANDLE FileHandle
03884 );
03885 #endif
03886 
03887 #ifdef NTOS_MODE_USER
03888 NTSYSAPI
03889 NTSTATUS
03890 NTAPI
03891 RtlGUIDFromString(
03892   IN PUNICODE_STRING GuidString,
03893   OUT GUID *Guid);
03894 
03895 NTSYSAPI
03896 NTSTATUS
03897 NTAPI
03898 RtlComputeImportTableHash(
03899     IN HANDLE hFile,
03900     OUT PCHAR Hash,
03901     IN ULONG ImportTableHashRevision
03902 );
03903 #endif
03904 
03905 #ifdef __cplusplus
03906 }
03907 #endif
03908 
03909 #endif

Generated on Sat May 26 2012 04:29:43 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.