- Timestamp:
- Apr 7, 2003, 8:40:53 PM (22 years ago)
- Location:
- trunk/src/NTDLL
- Files:
-
- 22 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/NTDLL/exception.c
r9684 r9986 1 /* $Id: exception.c,v 1. 1 2003-01-16 15:22:35sandervl Exp $ */1 /* $Id: exception.c,v 1.2 2003-04-07 18:40:48 sandervl Exp $ */ 2 2 3 3 /* -
trunk/src/NTDLL/file.c
r8428 r9986 19 19 #include <stdlib.h> 20 20 #include <string.h> 21 21 22 #include "wine/debug.h" 22 23 #include "ntdll_misc.h" -
trunk/src/NTDLL/initntdll.c
r9776 r9986 60 60 61 61 dprintf(("ntdll init %s %s (%x)", __DATE__, __TIME__, inittermNTDLL)); 62 63 62 break; 64 63 case 1 : -
trunk/src/NTDLL/initterm.cpp
r9739 r9986 40 40 void __ctordtorInit (void); 41 41 void __ctordtorTerm (void); 42 void __ehInit(); 43 //InitOverrides deals with EMX runtime FS setting and allows us to 44 //switch to using our own funcs namely _errno & _thread in runtime 45 void InitOverrides(void); 42 46 int _CRT_init (void); 43 47 void _CRT_term (void); … … 59 63 ulFlag) 60 64 { 61 size_t i;62 65 APIRET rc; 63 66 … … 73 76 return 0; 74 77 __ctordtorInit (); 78 __ehInit(); 79 InitOverrides(); 75 80 76 81 rc = DosExitList(EXITLIST_NONCRITDLL|EXLST_ADD, cleanup); 77 82 if (rc) 78 83 return 0UL; -
trunk/src/NTDLL/large_int.c
r9684 r9986 3 3 * 4 4 * Copyright 2000 Alexandre Julliard 5 * Copyright 2003 Thomas Mertes 5 6 * 6 7 * This library is free software; you can redistribute it and/or … … 185 186 * This function computes (a * b) >> (64 + shift) 186 187 * 187 * This allows replacing a division by a longlong constant 188 * by a multiplication by the inverse constant. 189 * 190 * If 'c' is the constant divisor, the constants 'b' and 'shift' 191 * must be chosen such that b = 2^(64+shift) / c. 192 * Then we have RtlExtendedMagicDivide(a,b,shift) == a * b / 2^(64+shift) == a / c. 193 * 194 * I'm too lazy to implement it right now... 195 */ 196 /* LONGLONG WINAPI RtlExtendedMagicDivide( LONGLONG a, LONGLONG b, INT shift ) 197 * { 198 * return 0; 199 * } 200 */ 188 * RETURNS 189 * (a * b) >> (64 + shift) 190 * 191 * NOTES 192 * This allows replacing a division by a longlong constant 193 * by a multiplication by the inverse constant. 194 * 195 * If 'c' is the constant divisor, the constants 'b' and 'shift' 196 * must be chosen such that b = 2^(64+shift) / c. 197 * Then we have RtlExtendedMagicDivide(a,b,shift) == a * b / 2^(64+shift) == a / c. 198 * 199 * The Parameter b although defined as LONGLONG is used as ULONGLONG. 200 */ 201 #define LOWER_32(A) ((A) & 0xffffffff) 202 #define UPPER_32(A) ((A) >> 32) 203 LONGLONG WINAPI RtlExtendedMagicDivide( 204 LONGLONG a, /* [I] Dividend to be divided by the constant divisor */ 205 LONGLONG b, /* [I] Constant computed manually as 2^(64+shift) / divisor */ 206 INT shift) /* [I] Constant shift chosen to make b as big as possible for 64 bits */ 207 { 208 ULONGLONG a_high; 209 ULONGLONG a_low; 210 ULONGLONG b_high; 211 ULONGLONG b_low; 212 ULONGLONG ah_bl; 213 ULONGLONG al_bh; 214 LONGLONG result; 215 int positive; 216 217 if (a < 0) { 218 a_high = UPPER_32((ULONGLONG) -a); 219 a_low = LOWER_32((ULONGLONG) -a); 220 positive = 0; 221 } else { 222 a_high = UPPER_32((ULONGLONG) a); 223 a_low = LOWER_32((ULONGLONG) a); 224 positive = 1; 225 } /* if */ 226 b_high = UPPER_32((ULONGLONG) b); 227 b_low = LOWER_32((ULONGLONG) b); 228 229 ah_bl = a_high * b_low; 230 al_bh = a_low * b_high; 231 232 result = (LONGLONG) ((a_high * b_high + 233 UPPER_32(ah_bl) + 234 UPPER_32(al_bh) + 235 UPPER_32(LOWER_32(ah_bl) + LOWER_32(al_bh) + UPPER_32(a_low * b_low))) >> shift); 236 237 if (positive) { 238 return result; 239 } else { 240 return -result; 241 } /* if */ 242 } 243 244 245 /****************************************************************************** 246 * RtlLargeIntegerToChar [NTDLL.@] 247 * 248 * Convert an unsigned large integer to a character string. 249 * 250 * RETURNS 251 * Success: STATUS_SUCCESS. str contains the converted number 252 * Failure: STATUS_INVALID_PARAMETER, if base is not 0, 2, 8, 10 or 16. 253 * STATUS_BUFFER_OVERFLOW, if str would be larger than length. 254 * STATUS_ACCESS_VIOLATION, if str is NULL. 255 * 256 * NOTES 257 * Instead of base 0 it uses 10 as base. 258 * Writes at most length characters to the string str. 259 * Str is '\0' terminated when length allowes it. 260 * When str fits exactly in length characters the '\0' is ommitted. 261 * If value_ptr is NULL it crashes, as the native function does. 262 * 263 * DIFFERENCES 264 * - Accept base 0 as 10 instead of crashing as native function does. 265 * - The native function does produce garbage or STATUS_BUFFER_OVERFLOW for 266 * base 2, 8 and 16 when the value is larger than 0xFFFFFFFF. 267 */ 268 NTSTATUS WINAPI RtlLargeIntegerToChar( 269 const ULONGLONG *value_ptr, /* [I] Pointer to the value to be converted */ 270 ULONG base, /* [I] Number base for conversion (allowed 0, 2, 8, 10 or 16) */ 271 ULONG length, /* [I] Length of the str buffer in bytes */ 272 PCHAR str) /* [O] Destination for the converted value */ 273 { 274 ULONGLONG value = *value_ptr; 275 CHAR buffer[65]; 276 PCHAR pos; 277 CHAR digit; 278 ULONG len; 279 280 if (base == 0) { 281 base = 10; 282 } else if (base != 2 && base != 8 && base != 10 && base != 16) { 283 return STATUS_INVALID_PARAMETER; 284 } /* if */ 285 286 pos = &buffer[64]; 287 *pos = '\0'; 288 289 do { 290 pos--; 291 digit = value % base; 292 value = value / base; 293 if (digit < 10) { 294 *pos = '0' + digit; 295 } else { 296 *pos = 'A' + digit - 10; 297 } /* if */ 298 } while (value != 0L); 299 300 len = &buffer[64] - pos; 301 if (len > length) { 302 return STATUS_BUFFER_OVERFLOW; 303 } else if (str == NULL) { 304 return STATUS_ACCESS_VIOLATION; 305 } else if (len == length) { 306 memcpy(str, pos, len); 307 } else { 308 memcpy(str, pos, len + 1); 309 } /* if */ 310 return STATUS_SUCCESS; 311 } 312 313 314 /************************************************************************** 315 * RtlInt64ToUnicodeString (NTDLL.@) 316 * 317 * Convert a large unsigned integer to a '\0' terminated unicode string. 318 * 319 * RETURNS 320 * Success: STATUS_SUCCESS. str contains the converted number 321 * Failure: STATUS_INVALID_PARAMETER, if base is not 0, 2, 8, 10 or 16. 322 * STATUS_BUFFER_OVERFLOW, if str is too small to hold the string 323 * (with the '\0' termination). In this case str->Length 324 * is set to the length, the string would have (which can 325 * be larger than the MaximumLength). 326 * 327 * NOTES 328 * Instead of base 0 it uses 10 as base. 329 * If str is NULL it crashes, as the native function does. 330 * 331 * DIFFERENCES 332 * - Accept base 0 as 10 instead of crashing as native function does. 333 * - Do not return STATUS_BUFFER_OVERFLOW when the string is long enough. 334 * The native function does this when the string would be longer than 31 335 * characters even when the string parameter is long enough. 336 * - The native function does produce garbage or STATUS_BUFFER_OVERFLOW for 337 * base 2, 8 and 16 when the value is larger than 0xFFFFFFFF. 338 */ 339 NTSTATUS WINAPI RtlInt64ToUnicodeString( 340 ULONGLONG value, /* [I] Value to be converted */ 341 ULONG base, /* [I] Number base for conversion (allowed 0, 2, 8, 10 or 16) */ 342 UNICODE_STRING *str) /* [O] Destination for the converted value */ 343 { 344 WCHAR buffer[65]; 345 PWCHAR pos; 346 WCHAR digit; 347 348 if (base == 0) { 349 base = 10; 350 } else if (base != 2 && base != 8 && base != 10 && base != 16) { 351 return STATUS_INVALID_PARAMETER; 352 } /* if */ 353 354 pos = &buffer[64]; 355 *pos = '\0'; 356 357 do { 358 pos--; 359 digit = value % base; 360 value = value / base; 361 if (digit < 10) { 362 *pos = '0' + digit; 363 } else { 364 *pos = 'A' + digit - 10; 365 } /* if */ 366 } while (value != 0L); 367 368 str->Length = (&buffer[64] - pos) * sizeof(WCHAR); 369 if (str->Length >= str->MaximumLength) { 370 return STATUS_BUFFER_OVERFLOW; 371 } else { 372 memcpy(str->Buffer, pos, str->Length + sizeof(WCHAR)); 373 } /* if */ 374 return STATUS_SUCCESS; 375 } 201 376 202 377 … … 244 419 return a % b; 245 420 } 246 -
trunk/src/NTDLL/large_int_odin.asm
r9684 r9986 18 18 align 4h 19 19 20 public RtlpLargeIntegerAdd21 RtlpLargeIntegerAddproc20 public _RtlpLargeIntegerAdd@8 21 _RtlpLargeIntegerAdd@8 proc 22 22 23 23 ; 25 return a + b; … … 45 45 pop ebp 46 46 ret 0Ch 47 RtlpLargeIntegerAddendp47 _RtlpLargeIntegerAdd@8 endp 48 48 49 49 CODE32 ends -
trunk/src/NTDLL/makefile
r9776 r9986 1 # $Id: makefile,v 1.3 6 2003-02-07 13:58:28sandervl Exp $1 # $Id: makefile,v 1.37 2003-04-07 18:40:49 sandervl Exp $ 2 2 3 3 # … … 9 9 10 10 CCENV = EMX 11 NOTEXPDEF = 112 11 WRC_PREFIX_RESOURCE=1 13 12 … … 17 16 !include ../../makefile.inc 18 17 18 CDEFINES = -I$(ODIN32_INCLUDE)\emxruntime $(CDEFINES) 19 19 20 20 # … … 53 53 # 54 54 55 # -liberty_s -lstdcxx -lExCRuntime -lExDllSupport -lc_alias -lgcc_eh 56 # -lgcc -lc -lc_dllso -lgcc_eh -lgcc -lc -lsys -los2 -lend 57 58 LIBS = \ 59 $(ODIN32_LIB_)\EmxSupport\EMXOS2FSRoutines.lib \ 60 $(EMX)\lib\iberty_s.lib \ 61 $(EMX)\lib\gcc-lib\i386-pc-os2-emx\3.2.1\mt\stdcxx.lib \ 62 $(EMX)\lib\c_alias.lib \ 63 $(EMX)\lib\gcc-lib\i386-pc-os2-emx\3.2.1\mt\gcc_eh.lib \ 64 $(EMX)\lib\gcc-lib\i386-pc-os2-emx\3.2.1\mt\gcc.lib \ 65 $(EMX)\lib\mt\c.lib \ 66 $(EMX)\lib\mt\c_dllso.lib \ 67 $(EMX)\lib\mt\sys.lib \ 68 $(EMX)\lib\os2.lib \ 69 $(ODIN32_LIB_)\EmxSupport\ExCRuntime.lib \ 70 $(ODIN32_LIB_)\EmxSupport\ExDllSupport.lib \ 71 $(ODIN32_LIB)\kernel32.lib \ 72 $(ODIN32_LIB)\user32.lib 55 73 56 74 # … … 59 77 TARGET = ntdll 60 78 61 all: $(OBJDIR) $(OBJDIR)\$(TARGET).dll $(TARGET).lib62 63 $(OBJDIR)\$(TARGET).dll: $(OBJS) $(TARGET).def64 $(LD) $(LDFLAGS) -L$(ODIN32_LIB_)\Release -Zso -Zsys $(OBJS) $(TARGET).def -L.\libs -lm\65 -liberty_s -lstdcxx -o $(OBJDIR)\$(TARGET).dll66 touch $(OBJDIR)\$(TARGET).map67 @echo "Illegal Sym File for EMX" > $(OBJDIR)\$(TARGET).sym68 69 $(TARGET).lib:70 implib $(OBJDIR)\$(TARGET).lib ntdll.def71 @copy $(OBJDIR)\$(TARGET).lib $(ODIN32_LIB_)\Release > nul:72 @copy $(OBJDIR)\$(TARGET).lib $(ODIN32_LIB_)\Debug > nul:73 74 79 # 75 80 # Includes the common rules. … … 77 82 !include $(ODIN32_POST_INC) 78 83 79 lib:80 $(IMPDEF) $(IMPDEF_FLAGS) ntdll-vac.def $(OBJDIR)\ntdllexp.def81 implib $(OBJDIR)\$(TARGET).lib $(OBJDIR)\ntdllexp.def82 @copy $(OBJDIR)\$(TARGET).lib $(ODIN32_LIB_)\Release > nul:83 @copy $(OBJDIR)\$(TARGET).lib $(ODIN32_LIB_)\Debug > nul: -
trunk/src/NTDLL/ntdll.c
r9803 r9986 1 /* $Id: ntdll.c,v 1. 6 2003-02-13 17:17:05sandervl Exp $ */1 /* $Id: ntdll.c,v 1.7 2003-04-07 18:40:49 sandervl Exp $ */ 2 2 3 3 /* -
trunk/src/NTDLL/ntdll.def
r9731 r9986 1 ; $Id: ntdll.def,v 1. 49 2003-01-23 20:21:59 sandervl Exp $1 ; $Id: ntdll.def,v 1.50 2003-04-07 18:40:49 sandervl Exp $ 2 2 3 3 ; … … 13 13 _RtlEnterCriticalSection@4 = KERNEL32.EnterCriticalSection 14 14 _RtlDeleteCriticalSection@4 = KERNEL32.DeleteCriticalSection 15 GetVersionExW = KERNEL32.42916 WriteLog = KERNEL32.120217 ReleaseSemaphore = KERNEL32.58318 CreateSemaphoreA = KERNEL32.17419 CloseHandle = KERNEL32.13720 HeapDestroy = KERNEL32.46221 RegisterLxDll = KERNEL32.123822 HeapCreate =KERNEL32.46123 HeapAlloc = KERNEL32.45924 HeapCompact = KERNEL32.46025 HeapUnlock = KERNEL32.46826 HeapValidate = KERNEL32.46927 HeapFree = KERNEL32.46328 HeapLock = KERNEL32.46429 HeapWalk = KERNEL32.47030 "HeapSize" = KERNEL32.46731 HeapReAlloc = KERNEL32.46532 InitializeCriticalSection = KERNEL32.47233 EnterCriticalSection = KERNEL32.19534 WaitForSingleObject = KERNEL32.72335 LeaveCriticalSection = KERNEL32.49436 GetProcessHeap = KERNEL32.37537 casemap_lower = KERNEL32.200838 casemap_upper = KERNEL32.200739 lstrcmpiA = KERNEL32.77040 lstrcpy = KERNEL32.77241 lstrlenW = KERNEL32.78042 lstrncmpiA = KERNEL32.88743 lstrncmpiW = KERNEL32.88844 strcmpiW = KERNEL32.202045 strncmpiW = KERNEL32.202246 wctype_table = KERNEL32.200647 TerminateThread = KERNEL32.68548 wvsnprintfA = USER32.201049 TerminateProcess = KERNEL32.68450 GetCurrentProcess = KERNEL32.30651 GetCurrentThreadId = KERNEL32.30952 DeleteCriticalSection = KERNEL32.18553 IsBadReadPtr = KERNEL32.48054 cp_wcstombs = KERNEL32.202355 cp_mbstowcs = KERNEL32.202456 cp_get_table = KERNEL32.202557 SetLastError = KERNEL32.65458 UnregisterLxDll = KERNEL32.123959 DisableThreadLibraryCalls = KERNEL32.18960 CheckVersionFromHMOD = KERNEL32.122361 strstrW = KERNEL32.202162 HEAP_strdupW = KERNEL32.124863 HEAP_strdupWtoA = KERNEL32.124564 15 65 16 EXPORTS 66 17 67 ; ?Allocate@CBufferAllocator@@UAEPAXK@Z @1 68 ; PropertyLengthAsVariant @2 69 ; RtlCompareVariants @3 70 ; RtlConvertPropertyToVariant @4 71 ; RtlConvertVariantToProperty @5 72 ; CsrAllocateCaptureBuffer @6 73 ; CsrAllocateCapturePointer @7 74 ; CsrAllocateMessagePointer @8 75 ; CsrCaptureMessageBuffer @9 76 ; CsrCaptureMessageString @10 77 ; CsrCaptureTimeout @11 78 ; CsrClientCallServer @12 79 ; CsrClientConnectToServer @13 80 ; CsrFreeCaptureBuffer @14 81 ; CsrIdentifyAlertableThread @15 82 ; CsrNewThread @16 83 ; CsrProbeForRead @17 84 ; CsrProbeForWrite @18 85 ; CsrSetPriorityClass @19 86 DbgBreakPoint = DbgBreakPoint @20 87 DbgPrint @21 88 ; DbgPrompt @22 89 ; DbgSsHandleKmApiMsg @23 90 ; DbgSsInitialize @24 91 ; DbgUiConnectToDbg @25 92 ; DbgUiContinue @26 93 ; DbgUiWaitStateChange @27 94 DbgUserBreakPoint = DbgUserBreakPoint @28 95 ; KiRaiseUserExceptionDispatcher @29 96 ; KiUserApcDispatcher @30 97 ; KiUserCallbackDispatcher @31 98 ; KiUserExceptionDispatcher @32 99 ; LdrAccessResource @33 100 LdrDisableThreadCalloutsForDll @34 101 ; LdrEnumResources @35 102 ; LdrFindEntryForAddress @36 103 ; LdrFindResourceDirectory_U @37 104 ; LdrFindResource_U @38 105 ; LdrGetDllHandle @39 106 ; LdrGetProcedureAddress @40 107 ; LdrInitializeThunk @41 108 ; LdrLoadDll @42 109 ; LdrProcessRelocationBlock @43 110 ; LdrQueryImageFileExecutionOptions @44 111 ; LdrQueryProcessModuleInformation @45 112 ; LdrShutdownProcess @46 113 ; LdrShutdownThread @47 114 ; LdrUnloadDll @48 115 ; LdrVerifyImageMatchesChecksum @49 116 ; NPXEMULATORTABLE @50 117 ; NlsAnsiCodePage @51 118 ; NlsMbCodePageTag @52 119 ; NlsMbOemCodePageTag @53 120 NtAcceptConnectPort @54 121 NtAccessCheck @55 122 ; NtAccessCheckAndAuditAlarm @56 123 ; NtAddAtom @57 124 ; NtAdjustGroupsToken @58 125 NtAdjustPrivilegesToken @59 126 ; NtAlertResumeThread @60 127 NtAlertThread @61 128 NtAllocateLocallyUniqueId @62 129 NtAllocateUuids @63 130 ; NtAllocateVirtualMemory @64 131 ; NtCallbackReturn @65 132 ; NtCancelIoFile @66 133 ; NtCancelTimer @67 134 NtClearEvent @68 135 NtClose @69 136 ; NtCloseObjectAuditAlarm @70 137 NtCompleteConnectPort @71 138 NtConnectPort @72 139 ; NtContinue @73 140 ; NtCreateChannel @74 141 NtCreateDirectoryObject @75 142 NtCreateEvent @76 143 ; NtCreateEventPair @77 144 NtCreateFile @78 145 ; NtCreateIoCompletion @79 146 NtCreateKey @80 147 NtCreateMailslotFile @81 148 ; NtCreateMutant @82 149 ; NtCreateNamedPipeFile @83 150 NtCreatePagingFile @84 151 NtCreatePort @85 152 ; NtCreateProcess @86 153 ; NtCreateProfile @87 154 NtCreateSection @88 155 NtCreateSemaphore @89 156 NtCreateSymbolicLinkObject @90 157 ; NtCreateThread @91 158 NtCreateTimer @92 159 ; NtCreateToken @93 160 ; NtCurrentTeb @94 161 ; NtDelayExecution @95 162 ; NtDeleteAtom @96 163 ; NtDeleteFile @97 164 NtDeleteKey @98 165 ; NtDeleteObjectAuditAlarm @99 166 NtDeleteValueKey @100 167 NtDeviceIoControlFile @101 168 NtDisplayString @102 169 NtDuplicateObject @103 170 NtDuplicateToken @104 171 NtEnumerateKey @105 172 NtEnumerateValueKey @106 173 ; NtExtendSection @107 174 ; NtFindAtom @108 175 ; NtFlushBuffersFile @109 176 ; NtFlushInstructionCache @110 177 NtFlushKey @111 178 ; NtFlushVirtualMemory @112 179 ; NtFlushWriteBuffer @113 180 ; NtFreeVirtualMemory @114 181 NtFsControlFile @115 182 ; NtGetContextThread @116 183 ; NtGetPlugPlayEvent @117 184 ; NtGetTickCount @118 185 NtImpersonateClientOfPort @119 186 ; NtImpersonateThread @120 187 ; NtInitializeRegistry @121 188 ; NtListenChannel @122 189 NtListenPort @123 190 ; NtLoadDriver @124 191 ; NtLoadKey2 @125 192 NtLoadKey @126 193 ; NtLockFile @127 194 ; NtLockVirtualMemory @128 195 ; NtMakeTemporaryObject @129 196 NtMapViewOfSection @130 197 ; NtNotifyChangeDirectoryFile @131 198 NtNotifyChangeKey @132 199 ; NtOpenChannel @133 200 NtOpenDirectoryObject @134 201 NtOpenEvent @135 202 ; NtOpenEventPair @136 203 NtOpenFile @137 204 ; NtOpenIoCompletion @138 205 NtOpenKey @139 206 ; NtOpenMutant @140 207 ; NtOpenObjectAuditAlarm @141 208 ; NtOpenProcess @142 209 NtOpenProcessToken @143 210 NtOpenSection @144 211 NtOpenSemaphore @145 212 NtOpenSymbolicLinkObject @146 213 NtOpenThread @147 214 NtOpenThreadToken @148 215 ; NtOpenTimer @149 216 ; NtPlugPlayControl @150 217 ; NtPrivilegeCheck @151 218 ; NtPrivilegeObjectAuditAlarm @152 219 ; NtPrivilegedServiceAuditAlarm @153 220 ; NtProtectVirtualMemory @154 221 NtPulseEvent @155 222 ; NtQueryAttributesFile @156 223 ; NtQueryDefaultLocale @157 224 NtQueryDirectoryFile @158 225 NtQueryDirectoryObject @159 226 ; NtQueryEaFile @160 227 NtQueryEvent @161 228 ; NtQueryFullAttributesFile @162 229 ; NtQueryInformationAtom @163 230 NtQueryInformationFile @164 231 ; NtQueryInformationPort @165 232 NtQueryInformationProcess @166 233 NtQueryInformationThread @167 234 NtQueryInformationToken @168 235 ; NtQueryIntervalProfile @169 236 ; NtQueryIoCompletion @170 237 NtQueryKey @171 238 NtQueryMultipleValueKey @172 239 ; NtQueryMutant @173 240 NtQueryObject @174 241 ; NtQueryOleDirectoryFile @175 242 NtQueryPerformanceCounter @176 243 NtQuerySection @177 244 NtQuerySecurityObject @178 245 NtQuerySemaphore @179 246 NtQuerySymbolicLinkObject @180 247 ; NtQuerySystemEnvironmentValue @181 248 NtQuerySystemInformation @182 249 NtQuerySystemTime @183 250 ; NtQueryTimer @184 251 NtQueryTimerResolution @185 252 NtQueryValueKey @186 253 ; NtQueryVirtualMemory @187 254 NtQueryVolumeInformationFile @188 255 ; NtQueueApcThread @189 256 NtRaiseException = __regs_NtRaiseException @190 257 ; NtRaiseHardError @191 258 NtReadFile @192 259 ; NtReadFileScatter @193 260 NtReadRequestData @194 261 ; NtReadVirtualMemory @195 262 NtRegisterThreadTerminatePort @196 263 ; NtReleaseMutant @197 264 NtReleaseSemaphore @198 265 ; NtRemoveIoCompletion @199 266 NtReplaceKey @200 267 NtReplyPort @201 268 NtReplyWaitReceivePort @202 269 NtReplyWaitReplyPort @203 270 ; NtReplyWaitSendChannel @204 271 NtRequestPort @205 272 NtRequestWaitReplyPort @206 273 NtResetEvent @207 274 NtRestoreKey @208 275 NtResumeThread @209 276 NtSaveKey @210 277 ; NtSendWaitReplyChannel @211 278 ; NtSetContextChannel @212 279 ; NtSetContextThread @213 280 ; NtSetDefaultHardErrorPort @214 281 ; NtSetDefaultLocale @215 282 ; NtSetEaFile @216 283 NtSetEvent @217 284 ; NtSetHighEventPair @218 285 ; NtSetHighWaitLowEventPair @219 286 ; NtSetHighWaitLowThread @220 287 NtSetInformationFile @221 288 NtSetInformationKey @222 289 ; NtSetInformationObject @223 290 NtSetInformationProcess @224 291 NtSetInformationThread @225 292 ; NtSetInformationToken @226 293 NtSetIntervalProfile @227 294 ; NtSetIoCompletion @228 295 ; NtSetLdtEntries @229 296 ; NtSetLowEventPair @230 297 ; NtSetLowWaitHighEventPair @231 298 ; NtSetLowWaitHighThread @232 299 NtSetSecurityObject @233 300 ; NtSetSystemEnvironmentValue @234 301 ; NtSetSystemInformation @235 302 ; NtSetSystemPowerState @236 303 ; NtSetSystemTime @237 304 NtSetTimer @238 305 ; NtSetTimerResolution @239 306 NtSetValueKey @240 307 NtSetVolumeInformationFile @241 308 ; NtShutdownSystem @242 309 ; NtSignalAndWaitForSingleObject @243 310 ; NtStartProfile @244 311 ; NtStopProfile @245 312 ; NtSuspendThread @246 313 ; NtSystemDebugControl @247 314 NtTerminateProcess @248 315 NtTerminateThread @249 316 NtTestAlert @250 317 ; NtUnloadDriver @251 318 NtUnloadKey @252 319 ; NtUnlockFile @253 320 ; NtUnlockVirtualMemory @254 321 ; NtUnmapViewOfSection @255 322 ; NtVdmControl @256 323 ; NtWaitForMultipleObjects @257 324 NtWaitForSingleObject @258 325 ; NtWaitHighEventPair @259 326 ; NtWaitLowEventPair @260 327 ; NtWriteFile @261 328 ; NtWriteFileGather @262 329 NtWriteRequestData @263 330 ; NtWriteVirtualMemory @264 331 ; NtYieldExecution @265 332 ; PfxFindPrefix @266 333 ; PfxInitialize @267 334 ; PfxInsertPrefix @268 335 ; PfxRemovePrefix @269 336 ; RestoreEm87Context @270 337 ; RtlAbortRXact @271 338 ; RtlAbsoluteToSelfRelativeSD @272 339 RtlAcquirePebLock @273 340 RtlAcquireResourceExclusive @274 341 RtlAcquireResourceShared @275 342 RtlAddAccessAllowedAce @276 343 ; RtlAddAccessDeniedAce @277 344 RtlAddAce @278 345 ; RtlAddActionToRXact @279 346 ; RtlAddAtomToAtomTable @280 347 ; RtlAddAttributeActionToRXact @281 348 ; RtlAddAuditAccessAce @282 349 ; RtlAddCompoundAce @283 350 RtlAdjustPrivilege @284 351 RtlAllocateAndInitializeSid @285 352 ; RtlAllocateHandle @286 353 ;;; RtlAllocateHeap = _RtlAllocateHeap@12 @287 354 RtlAllocateHeap = HeapAlloc @287 355 ; RtlAnsiCharToUnicodeChar @288 356 RtlAnsiStringToUnicodeSize @289 357 RtlAnsiStringToUnicodeString @290 358 RtlAppendAsciizToString @291 359 RtlAppendStringToString @292 360 RtlAppendUnicodeStringToString @293 361 RtlAppendUnicodeToString @294 362 ; RtlApplyRXact @295 363 ; RtlApplyRXactNoFlush @296 364 ; RtlAreAllAccessesGranted @297 365 ; RtlAreAnyAccessesGranted @298 366 RtlAreBitsClear @299 367 RtlAreBitsSet @300 368 369 RtlAssert @301 370 ; RtlCaptureStackBackTrace @302 371 ; RtlCharToInteger @303 372 ; RtlCheckRegistryKey @304 373 ; RtlClearAllBits @305 374 RtlClearBits @306 375 ; RtlClosePropertySet @307 376 ;; RtlCompactHeap @308 377 RtlCompactHeap = HeapCompact @308 378 RtlCompareMemory @309 379 ; RtlCompareMemoryUlong @310 380 RtlCompareString @311 381 RtlCompareUnicodeString @312 382 ; RtlCompressBuffer @313 383 ; RtlConsoleMultiByteToUnicodeN @314 384 ; RtlConvertExclusiveToShared @315 385 RtlConvertLongToLargeInteger @316 386 ; RtlConvertSharedToExclusive @317 387 RtlConvertSidToUnicodeString @318 388 ; RtlConvertUiListToApiList @319 389 RtlConvertUlongToLargeInteger @320 390 RtlCopyLuid @321 391 ; RtlCopyLuidAndAttributesArray @322 392 RtlCopyMemory @1100 393 ; RtlCopySecurityDescriptor @323 394 RtlCopySid @324 395 ; RtlCopySidAndAttributesArray @325 396 RtlCopyString @326 397 RtlCopyUnicodeString @327 398 RtlCreateAcl @328 399 ; RtlCreateAndSetSD @329 400 ; RtlCreateAtomTable @330 401 RtlCreateEnvironment @331 402 ;;;; RtlCreateHeap @332 403 ; RtlCreateProcessParameters @333 404 ; RtlCreatePropertySet @334 405 ; RtlCreateQueryDebugBuffer @335 406 ; RtlCreateRegistryKey @336 407 RtlCreateSecurityDescriptor @337 408 ; RtlCreateTagHeap @338 409 RtlCreateUnicodeString @339 410 RtlCreateUnicodeStringFromAsciiz @340 411 ; RtlCreateUserProcess @341 412 ; RtlCreateUserSecurityObject @342 413 ; RtlCreateUserThread @343 414 ; RtlCustomCPToUnicodeN @344 415 ; RtlCutoverTimeToSystemTime @345 416 ; RtlDeNormalizeProcessParams @346 417 ; RtlDecompressBuffer @347 418 ; RtlDecompressFragment @348 419 ; RtlDelete @349 420 ; RtlDeleteAce @350 421 ; RtlDeleteAtomFromAtomTable @351 422 RtlDeleteCriticalSection = DeleteCriticalSection @352 423 ; RtlDeleteElementGenericTable @353 424 ; RtlDeleteNoSplay @354 425 ; RtlDeleteRegistryValue @355 426 RtlDeleteResource @356 427 RtlDeleteSecurityObject @357 428 ; RtlDestroyAtomTable @358 429 RtlDestroyEnvironment @359 430 ; RtlDestroyHandleTable @360 431 ;;;; RtlDestroyHeap = _RtlDestroyHeap@4 @361 432 ; RtlDestroyProcessParameters @362 433 ; RtlDestroyQueryDebugBuffer @363 434 ; RtlDetermineDosPathNameType_U @364 435 ; RtlDoesFileExists_U @365 436 RtlDosPathNameToNtPathName_U @366 437 ; RtlDosSearchPath_U @367 438 ; RtlDowncaseUnicodeString @368 439 RtlDumpResource @369 440 ; RtlEmptyAtomTable @370 441 RtlEnlargedIntegerMultiply @371 442 RtlEnlargedUnsignedDivide @372 443 RtlEnlargedUnsignedMultiply @373 444 RtlEnterCriticalSection = EnterCriticalSection @374 445 ; RtlEnumProcessHeaps @375 446 ; RtlEnumerateGenericTable @376 447 ; RtlEnumerateGenericTableWithoutSplaying @377 448 ; RtlEnumerateProperties @378 449 ; RtlEqualComputerName @379 450 ; RtlEqualDomainName @380 451 ; RtlEqualLuid @381 452 RtlEqualPrefixSid @382 453 RtlEqualSid @383 454 RtlEqualString @384 455 RtlEqualUnicodeString @385 456 RtlEraseUnicodeString @386 457 ; RtlExpandEnvironmentStrings_U @387 458 ; RtlExtendHeap @388 459 RtlExtendedIntegerMultiply @389 460 RtlExtendedLargeIntegerDivide @390 461 ; RtlExtendedMagicDivide @391 462 RtlFillMemory @392 463 RtlFillMemoryUlong @393 464 RtlFindClearBits @394 465 ; RtlFindClearBitsAndSet @395 466 ; RtlFindLongestRunClear @396 467 ; RtlFindLongestRunSet @397 468 ; RtlFindMessage @398 469 ; RtlFindSetBits @399 470 ; RtlFindSetBitsAndClear @400 471 RtlFirstFreeAce @401 472 ; RtlFlushPropertySet @402 473 RtlFormatCurrentUserKeyPath @403 474 ; RtlFormatMessage @404 475 RtlFreeAnsiString @405 476 ; RtlFreeHandle @406 477 ;;;; RtlFreeHeap = _RtlFreeHeap@12 @407 478 RtlFreeHeap = HeapFree @407 479 RtlFreeOemString @408 480 RtlFreeSid @409 481 RtlFreeUnicodeString @410 482 ; RtlFreeUserThreadStack @411 483 ; RtlGenerate8dot3Name @412 484 RtlGetAce @413 485 ; RtlGetCallersAddress @414 486 ; RtlGetCompressionWorkSpaceSize @415 487 RtlGetControlSecurityDescriptor @416 488 ; RtlGetCurrentDirectory_U @417 489 RtlGetDaclSecurityDescriptor @418 490 ; RtlGetElementGenericTable @419 491 ; RtlGetFullPathName_U @420 492 RtlGetGroupSecurityDescriptor @421 493 RtlGetLongestNtPathLength @422 494 ; RtlGetNtGlobalFlags @423 495 RtlGetNtProductType @424 496 RtlGetOwnerSecurityDescriptor @425 497 ;;;; RtlGetProcessHeaps @426 498 RtlGetSaclSecurityDescriptor @427 499 ; RtlGetUserInfoHeap @428 500 ; RtlGuidToPropertySetName @429 501 RtlIdentifierAuthoritySid @430 502 ; RtlImageDirectoryEntryToData @431 503 RtlImageNtHeader @432 504 ; RtlImageRvaToSection @433 505 ; RtlImageRvaToVa @434 506 RtlImpersonateSelf @435 507 RtlInitAnsiString @436 508 ; RtlInitCodePageTable @437 509 ; RtlInitNlsTables @438 510 RtlInitString @439 511 RtlInitUnicodeString @440 512 ; RtlInitializeAtomPackage @441 513 RtlInitializeBitMap @442 514 ; RtlInitializeContext @443 515 RtlInitializeCriticalSection = InitializeCriticalSection @444 516 ; RtlInitializeCriticalSectionAndSpinCount @445 517 RtlInitializeGenericTable @446 518 ; RtlInitializeHandleTable @447 519 ; RtlInitializeRXact @448 520 RtlInitializeResource @449 521 RtlInitializeSid @450 522 ; RtlInsertElementGenericTable @451 523 RtlIntegerToChar @452 524 ; RtlIntegerToUnicodeString @453 525 ; RtlIsDosDeviceName_U @454 526 ; RtlIsGenericTableEmpty @455 527 ; RtlIsNameLegalDOS8Dot3 @456 528 RtlIsTextUnicode @457 529 ; RtlIsValidHandle @458 530 ; RtlIsValidIndexHandle @459 531 RtlLargeIntegerAdd @460 532 RtlLargeIntegerArithmeticShift @461 533 RtlLargeIntegerDivide @462 534 RtlLargeIntegerNegate @463 535 RtlLargeIntegerShiftLeft @464 536 RtlLargeIntegerShiftRight @465 537 RtlLargeIntegerSubtract @466 538 RtlLargeIntegerToChar @467 539 RtlLeaveCriticalSection = LeaveCriticalSection @468 540 RtlLengthRequiredSid @469 541 RtlLengthSecurityDescriptor @470 542 RtlLengthSid @471 543 ; RtlLocalTimeToSystemTime @472 544 ;;;; RtlLockHeap RtlLockHeap@4 @473 545 RtlLockHeap = HeapLock @473 546 ; RtlLookupAtomInAtomTable @474 547 ; RtlLookupElementGenericTable @475 548 RtlMakeSelfRelativeSD @476 549 ; RtlMapGenericMask @477 550 RtlMoveMemory @478 551 RtlMultiByteToUnicodeN @479 552 RtlMultiByteToUnicodeSize @480 553 ; RtlNewInstanceSecurityObject @481 554 ; RtlNewSecurityGrantedAccess @482 555 RtlNewSecurityObject @483 556 RtlNormalizeProcessParams @484 557 RtlNtStatusToDosError @485 558 ; RtlNumberGenericTableElements @486 559 ; RtlNumberOfClearBits @487 560 ; RtlNumberOfSetBits @488 561 RtlOemStringToUnicodeSize @489 562 RtlOemStringToUnicodeString @490 563 RtlOemToUnicodeN @491 564 ; RtlOnMappedStreamEvent @492 565 RtlOpenCurrentUser @493 566 ; RtlPcToFileHeader @494 567 ; RtlPinAtomInAtomTable @495 568 RtlPrefixString @496 569 RtlPrefixUnicodeString @497 570 ; RtlPropertySetNameToGuid @498 571 ; RtlProtectHeap @499 572 ; RtlQueryAtomInAtomTable @500 573 RtlQueryEnvironmentVariable_U @501 574 ; RtlQueryInformationAcl @502 575 ; RtlQueryProcessBackTraceInformation @503 576 ; RtlQueryProcessDebugInformation @504 577 ; RtlQueryProcessHeapInformation @505 578 ; RtlQueryProcessLockInformation @506 579 ; RtlQueryProperties @507 580 ; RtlQueryPropertyNames @508 581 ; RtlQueryPropertySet @509 582 ; RtlQueryRegistryValues @510 583 ; RtlQuerySecurityObject @511 584 ; RtlQueryTagHeap @512 585 RtlQueryTimeZoneInformation @513 586 RtlRaiseException = __regs_RtlRaiseException @514 587 RtlRaiseStatus @515 588 RtlRandom @516 589 ;;;; RtlReAllocateHeap = _RtlReAllocateHeap@16 @517 590 RtlReAllocateHeap = HeapReAlloc @517 591 ; RtlRealPredecessor @518 592 ; RtlRealSuccessor @519 593 RtlReleasePebLock @520 594 RtlReleaseResource @521 595 ; RtlRemoteCall @522 596 ; RtlResetRtlTranslations @523 597 ; RtlRunDecodeUnicodeString @524 598 ; RtlRunEncodeUnicodeString @525 599 RtlSecondsSince1970ToTime @526 600 RtlSecondsSince1980ToTime @527 601 ; RtlSelfRelativeToAbsoluteSD @528 602 ; RtlSetAllBits @529 603 ; RtlSetAttributesSecurityDescriptor @530 604 RtlSetBits @531 605 ; RtlSetCriticalSectionSpinCount @532 606 ; RtlSetCurrentDirectory_U @533 607 ; RtlSetCurrentEnvironment @534 608 RtlSetDaclSecurityDescriptor @535 609 RtlSetEnvironmentVariable @536 610 RtlSetGroupSecurityDescriptor @537 611 ; RtlSetInformationAcl @538 612 RtlSetOwnerSecurityDescriptor @539 613 ; RtlSetProperties @540 614 ; RtlSetPropertyNames @541 615 ; RtlSetPropertySetClassId @542 616 RtlSetSaclSecurityDescriptor @543 617 ; RtlSetSecurityObject @544 618 ; RtlSetTimeZoneInformation @545 619 ; RtlSetUnicodeCallouts @546 620 ; RtlSetUserFlagsHeap @547 621 ; RtlSetUserValueHeap @548 622 ;;;; RtlSizeHeap = _RtlSizeHeap@12 @549 623 RtlSizeHeap = "HeapSize" @549 624 ; RtlSplay @550 625 ; RtlStartRXact @551 626 RtlSubAuthorityCountSid @552 627 RtlSubAuthoritySid @553 628 ; RtlSubtreePredecessor @554 629 ; RtlSubtreeSuccessor @555 630 RtlSystemTimeToLocalTime @556 631 ; RtlTimeFieldsToTime @557 632 RtlTimeToElapsedTimeFields @558 633 RtlTimeToSecondsSince1970 @559 634 RtlTimeToSecondsSince1980 @560 635 ; RtlTimeToTimeFields @561 636 ; RtlTryEnterCriticalSection @562 637 RtlUnicodeStringToAnsiSize @563 638 RtlUnicodeStringToAnsiString @564 639 ; RtlUnicodeStringToCountedOemString @565 640 RtlUnicodeStringToInteger @566 641 RtlUnicodeStringToOemSize @567 642 RtlUnicodeStringToOemString @568 643 ; RtlUnicodeToCustomCPN @569 644 RtlUnicodeToMultiByteN @570 645 RtlUnicodeToMultiByteSize @571 646 RtlUnicodeToOemN @572 647 ; RtlUniform @573 648 ;;;; RtlUnlockHeap = _RtlUnlockHeap@4 @574 649 RtlUnlockHeap = HeapUnlock @574 650 RtlUnwind = __regs_RtlUnwind @575 651 ; RtlUpcaseUnicodeChar @576 652 RtlUpcaseUnicodeString @577 653 ; RtlUpcaseUnicodeStringToCountedOemString @579 654 RtlUpcaseUnicodeStringToOemString @580 655 ; RtlUpcaseUnicodeToCustomCPN @581 656 RtlUpcaseUnicodeToMultiByteN @582 657 RtlUpcaseUnicodeToOemN @583 658 ; RtlUpperChar @584 659 RtlUpperString @585 660 ; RtlUsageHeap @586 661 ; RtlValidAcl @587 662 RtlValidSecurityDescriptor @588 663 RtlValidSid @589 664 ;;;; RtlValidateHeap @590 665 RtlValidateHeap = HeapValidate @590 666 ; RtlValidateProcessHeaps @591 667 ;; RtlWalkHeap @592 668 RtlWalkHeap = HeapWalk @592 669 ; RtlWriteRegistryValue @593 670 ; RtlZeroHeap @594 671 RtlZeroMemory @595 672 ; RtlpNtCreateKey @596 673 ; RtlpNtEnumerateSubKey @597 674 ; RtlpNtMakeTemporaryKey @598 675 ; RtlpNtOpenKey @599 676 ; RtlpNtQueryValueKey @600 677 678 ; RtlpNtSetValueKey @601 679 ; RtlpUnWaitCriticalSection @602 680 ; RtlpWaitForCriticalSection @603 681 RtlxAnsiStringToUnicodeSize = RtlAnsiStringToUnicodeSize @604 682 RtlxOemStringToUnicodeSize = RtlOemStringToUnicodeSize @605 683 RtlxUnicodeStringToAnsiSize = RtlUnicodeStringToAnsiSize @606 684 RtlxUnicodeStringToOemSize = RtlUnicodeStringToOemSize @607 685 ; SaveEm87Context @608 686 ZwAcceptConnectPort = NtAcceptConnectPort @609 687 ; ZwAccessCheck @610 688 ; ZwAccessCheckAndAuditAlarm @611 689 ; ZwAddAtom @612 690 ; ZwAdjustGroupsToken @613 691 ZwAdjustPrivilegesToken = NtAdjustPrivilegesToken @614 692 ; ZwAlertResumeThread @615 693 ZwAlertThread = NtAlertThread @616 694 ; ZwAllocateLocallyUniqueId @617 695 ZwAllocateUuids = NtAllocateUuids @618 696 ; ZwAllocateVirtualMemory @619 697 ; ZwCallbackReturn @620 698 ; ZwCancelIoFile @621 699 ; ZwCancelTimer @622 700 ; ZwClearEvent @623 701 ZwClose = NtClose @624 702 ; ZwCloseObjectAuditAlarm @625 703 ZwCompleteConnectPort = NtCompleteConnectPort @626 704 ZwConnectPort = NtConnectPort @627 705 ; ZwContinue @628 706 ; ZwCreateChannel @629 707 ZwCreateDirectoryObject = NtCreateDirectoryObject @630 708 ZwCreateEvent = NtCreateEvent @631 709 ; ZwCreateEventPair @632 710 ZwCreateFile = NtCreateFile @633 711 ; ZwCreateIoCompletion @634 712 ZwCreateKey = NtCreateKey @635 713 ZwCreateMailslotFile = NtCreateMailslotFile @636 714 ; ZwCreateMutant @637 715 ; ZwCreateNamedPipeFile @638 716 ZwCreatePagingFile = NtCreatePagingFile @639 717 ZwCreatePort = NtCreatePort @640 718 ; ZwCreateProcess @641 719 ; ZwCreateProfile @642 720 ZwCreateSection = NtCreateSection @643 721 ZwCreateSemaphore = NtCreateSemaphore @644 722 ZwCreateSymbolicLinkObject = NtCreateSymbolicLinkObject @645 723 ; ZwCreateThread @646 724 ZwCreateTimer = NtCreateTimer @647 725 ; ZwCreateToken @648 726 ; ZwDelayExecution @649 727 ; ZwDeleteAtom @650 728 ; ZwDeleteFile @651 729 ZwDeleteKey = NtDeleteKey @652 730 ; ZwDeleteObjectAuditAlarm @653 731 ZwDeleteValueKey = NtDeleteValueKey @654 732 ZwDeviceIoControlFile = NtDeviceIoControlFile @655 733 ZwDisplayString = NtDisplayString @656 734 ZwDuplicateObject = NtDuplicateObject @657 735 ZwDuplicateToken = NtDuplicateToken @658 736 ZwEnumerateKey = NtEnumerateKey @659 737 ZwEnumerateValueKey = NtEnumerateValueKey @660 738 ; ZwExtendSection @661 739 ; ZwFindAtom @662 740 ; ZwFlushBuffersFile @663 741 ; ZwFlushInstructionCache @664 742 ZwFlushKey = NtFlushKey @665 743 ; ZwFlushVirtualMemory @666 744 ; ZwFlushWriteBuffer @667 745 ; ZwFreeVirtualMemory @668 746 ZwFsControlFile = NtFsControlFile @669 747 ; ZwGetContextThread @670 748 ; ZwGetPlugPlayEvent @671 749 ; ZwGetTickCount @672 750 ZwImpersonateClientOfPort = NtImpersonateClientOfPort @673 751 ; ZwImpersonateThread @674 752 ; ZwInitializeRegistry @675 753 ; ZwListenChannel @676 754 ZwListenPort = NtListenPort @677 755 ; ZwLoadDriver @678 756 ; ZwLoadKey2 @679 757 ZwLoadKey = NtLoadKey @680 758 ; ZwLockFile @681 759 ; ZwLockVirtualMemory @682 760 ; ZwMakeTemporaryObject @683 761 ZwMapViewOfSection = NtMapViewOfSection @684 762 ; ZwNotifyChangeDirectoryFile @685 763 ZwNotifyChangeKey = NtNotifyChangeKey @686 764 ; ZwOpenChannel @687 765 ZwOpenDirectoryObject = NtOpenDirectoryObject @688 766 ZwOpenEvent = NtOpenEvent @689 767 ; ZwOpenEventPair @690 768 ZwOpenFile = NtOpenFile @691 769 ; ZwOpenIoCompletion @692 770 ZwOpenKey = NtOpenKey @693 771 ; ZwOpenMutant @694 772 ; ZwOpenObjectAuditAlarm @695 773 ; ZwOpenProcess @696 774 ZwOpenProcessToken = NtOpenProcessToken @697 775 ZwOpenSection = NtOpenSection @698 776 ZwOpenSemaphore = NtOpenSemaphore @699 777 ZwOpenSymbolicLinkObject = NtQuerySymbolicLinkObject @700 778 ; ZwOpenThread @701 779 ZwOpenThreadToken = NtOpenThreadToken @702 780 ; ZwOpenTimer @703 781 ; ZwPlugPlayControl @704 782 ; ZwPrivilegeCheck @705 783 ; ZwPrivilegeObjectAuditAlarm @706 784 ; ZwPrivilegedServiceAuditAlarm @707 785 ; ZwProtectVirtualMemory @708 786 ; ZwPulseEvent @709 787 ; ZwQueryAttributesFile @710 788 ; ZwQueryDefaultLocale @711 789 ZwQueryDirectoryFile = NtQueryDirectoryFile @712 790 ZwQueryDirectoryObject = NtQueryDirectoryObject @713 791 ; ZwQueryEaFile @714 792 ; ZwQueryEvent @715 793 ; ZwQueryFullAttributesFile @716 794 ; ZwQueryInformationAtom @717 795 ZwQueryInformationFile = NtQueryInformationFile @718 796 ; ZwQueryInformationPort @719 797 ZwQueryInformationProcess = NtQueryInformationProcess @720 798 ZwQueryInformationThread = NtQueryInformationThread @721 799 ZwQueryInformationToken = NtQueryInformationToken @722 800 ; ZwQueryIntervalProfile @723 801 ; ZwQueryIoCompletion @724 802 ZwQueryKey = NtQueryKey @725 803 ZwQueryMultipleValueKey = NtQueryMultipleValueKey @726 804 ; ZwQueryMutant @727 805 ZwQueryObject = NtQueryObject @728 806 ; ZwQueryOleDirectoryFile @729 807 ZwQueryPerformanceCounter = NtQueryPerformanceCounter @730 808 ZwQuerySection = NtQuerySection @731 809 ZwQuerySecurityObject = NtQuerySecurityObject @732 810 ZwQuerySemaphore = NtQuerySemaphore @733 811 ZwQuerySymbolicLinkObject = NtQuerySymbolicLinkObject @734 812 ; ZwQuerySystemEnvironmentValue @735 813 ZwQuerySystemInformation = NtQuerySystemInformation @736 814 ZwQuerySystemTime = NtQuerySystemTime @737 815 ; ZwQueryTimer @738 816 ZwQueryTimerResolution = NtQueryTimerResolution @739 817 ZwQueryValueKey = NtQueryValueKey @740 818 ; ZwQueryVirtualMemory @741 819 ; ZwQueryVolumeInformationFile @742 820 ; ZwQueueApcThread @743 821 ZwRaiseException = __regs_NtRaiseException @744 822 ; ZwRaiseHardError @745 823 ZwReadFile = NtReadFile @746 824 ; ZwReadFileScatter @747 825 ZwReadRequestData = NtReadRequestData @748 826 ; ZwReadVirtualMemory @749 827 ZwRegisterThreadTerminatePort = NtRegisterThreadTerminatePort @750 828 ; ZwReleaseMutant @751 829 ZwReleaseSemaphore = NtReleaseSemaphore @752 830 ; ZwRemoveIoCompletion @753 831 ZwReplaceKey = NtReplaceKey @754 832 ZwReplyPort = NtReplyPort @755 833 ZwReplyWaitReceivePort = NtReplyWaitReceivePort @756 834 ZwReplyWaitReplyPort = NtReplyWaitReplyPort @757 835 ; ZwReplyWaitSendChannel @758 836 ZwRequestPort = NtRequestPort @759 837 ZwRequestWaitReplyPort = NtRequestWaitReplyPort @760 838 ZwResetEvent = NtResetEvent @761 839 ZwRestoreKey = NtRestoreKey @762 840 ZwResumeThread = NtResumeThread @763 841 ZwSaveKey = NtSaveKey @764 842 ; ZwSendWaitReplyChannel @765 843 ; ZwSetContextChannel @766 844 ; ZwSetContextThread @767 845 ; ZwSetDefaultHardErrorPort @768 846 ; ZwSetDefaultLocale @769 847 ; ZwSetEaFile @770 848 ZwSetEvent = NtSetEvent @771 849 ; ZwSetHighEventPair @772 850 ; ZwSetHighWaitLowEventPair @773 851 ; ZwSetHighWaitLowThread @774 852 ZwSetInformationFile = NtSetInformationFile @775 853 ZwSetInformationKey = NtSetInformationKey @776 854 ; ZwSetInformationObject @777 855 ZwSetInformationProcess = NtSetInformationProcess @778 856 ZwSetInformationThread = NtSetInformationThread @779 857 ; ZwSetInformationToken @780 858 ZwSetIntervalProfile = NtSetIntervalProfile @781 859 ; ZwSetIoCompletion @782 860 ; ZwSetLdtEntries @783 861 ; ZwSetLowEventPair @784 862 ; ZwSetLowWaitHighEventPair @785 863 ; ZwSetLowWaitHighThread @786 864 ; ZwSetSecurityObject @787 865 ; ZwSetSystemEnvironmentValue @788 866 ; ZwSetSystemInformation @789 867 ; ZwSetSystemPowerState @790 868 ; ZwSetSystemTime @791 869 ZwSetTimer = NtSetTimer @792 870 ; ZwSetTimerResolution @793 871 ZwSetValueKey = NtSetValueKey @794 872 ZwSetVolumeInformationFile = NtSetVolumeInformationFile @795 873 ; ZwShutdownSystem @796 874 ; ZwSignalAndWaitForSingleObject @797 875 ; ZwStartProfile @798 876 ; ZwStopProfile @799 877 ; ZwSuspendThread @800 878 879 ; ZwSystemDebugControl @801 880 ZwTerminateProcess = NtTerminateProcess @802 881 ZwTerminateThread = NtTerminateThread @803 882 ZwTestAlert = NtTestAlert @804 883 ; ZwUnloadDriver @805 884 ZwUnloadKey = NtUnloadKey @806 885 ; ZwUnlockFile @807 886 ; ZwUnlockVirtualMemory @808 887 ; ZwUnmapViewOfSection @809 888 ; ZwVdmControl @810 889 ; ZwWaitForMultipleObjects @811 890 ZwWaitForSingleObject = NtWaitForSingleObject @812 891 ; ZwWaitHighEventPair @813 892 ; ZwWaitLowEventPair @814 893 ; ZwWriteFile @815 894 ; ZwWriteFileGather @816 895 ZwWriteRequestData = NtWriteRequestData @817 896 ; ZwWriteVirtualMemory @818 897 ; ZwYieldExecution @819 898 899 _CIpow = NTDLL__CIpow @820 900 ; __eCommonExceptions @821 901 ; __eEmulatorInit @822 902 ; __eF2XM1 @823 903 ; __eFABS @824 904 ; __eFADD32 @825 905 ; __eFADD64 @826 906 ; __eFADDPreg @827 907 ; __eFADDreg @828 908 ; __eFADDtop @829 909 ; __eFCHS @830 910 ; __eFCOM @831 911 ; __eFCOM32 @832 912 ; __eFCOM64 @833 913 ; __eFCOMP @834 914 ; __eFCOMP32 @835 915 ; __eFCOMP64 @836 916 ; __eFCOMPP @837 917 ; __eFCOS @838 918 ; __eFDECSTP @839 919 ; __eFDIV32 @840 920 ; __eFDIV64 @841 921 ; __eFDIVPreg @842 922 ; __eFDIVR32 @843 923 ; __eFDIVR64 @844 924 ; __eFDIVRPreg @845 925 ; __eFDIVRreg @846 926 ; __eFDIVRtop @847 927 ; __eFDIVreg @848 928 ; __eFDIVtop @849 929 ; __eFFREE @850 930 ; __eFIADD16 @851 931 ; __eFIADD32 @852 932 ; __eFICOM16 @853 933 ; __eFICOM32 @854 934 ; __eFICOMP16 @855 935 ; __eFICOMP32 @856 936 ; __eFIDIV16 @857 937 ; __eFIDIV32 @858 938 ; __eFIDIVR16 @859 939 ; __eFIDIVR32 @860 940 ; __eFILD16 @861 941 ; __eFILD32 @862 942 ; __eFILD64 @863 943 ; __eFIMUL16 @864 944 ; __eFIMUL32 @865 945 ; __eFINCSTP @866 946 ; __eFINIT @867 947 ; __eFIST16 @868 948 ; __eFIST32 @869 949 ; __eFISTP16 @870 950 ; __eFISTP32 @871 951 ; __eFISTP64 @872 952 ; __eFISUB16 @873 953 ; __eFISUB32 @874 954 ; __eFISUBR16 @875 955 ; __eFISUBR32 @876 956 ; __eFLD1 @877 957 ; __eFLD32 @878 958 ; __eFLD64 @879 959 ; __eFLD80 @880 960 ; __eFLDCW @881 961 ; __eFLDENV @882 962 ; __eFLDL2E @883 963 ; __eFLDLN2 @884 964 ; __eFLDPI @885 965 ; __eFLDZ @886 966 ; __eFMUL32 @887 967 ; __eFMUL64 @888 968 ; __eFMULPreg @889 969 ; __eFMULreg @890 970 ; __eFMULtop @891 971 ; __eFPATAN @892 972 ; __eFPREM @893 973 ; __eFPREM1 @894 974 ; __eFPTAN @895 975 ; __eFRNDINT @896 976 ; __eFRSTOR @897 977 ; __eFSAVE @898 978 ; __eFSCALE @899 979 ; __eFSIN @900 980 ; __eFSQRT @901 981 ; __eFST @902 982 ; __eFST32 @903 983 ; __eFST64 @904 984 ; __eFSTCW @905 985 ; __eFSTENV @906 986 ; __eFSTP @907 987 ; __eFSTP32 @908 988 ; __eFSTP64 @909 989 ; __eFSTP80 @910 990 ; __eFSTSW @911 991 ; __eFSUB32 @912 992 ; __eFSUB64 @913 993 ; __eFSUBPreg @914 994 ; __eFSUBR32 @915 995 ; __eFSUBR64 @916 996 ; __eFSUBRPreg @917 997 ; __eFSUBRreg @918 998 ; __eFSUBRtop @919 999 ; __eFSUBreg @920 1000 ; __eFSUBtop @921 1001 ; __eFTST @922 1002 ; __eFUCOM @923 1003 ; __eFUCOMP @924 1004 ; __eFUCOMPP @925 1005 ; __eFXAM @926 1006 ; __eFXCH @927 1007 ; __eFXTRACT @928 1008 ; __eFYL2X @929 1009 ; __eFYL2XP1 @930 1010 ; __eGetStatusWord @931 1011 ; __eFSQRT @901 1012 ; __eFST @902 1013 ; __eFST32 @903 1014 ; __eFST64 @904 1015 ; __eFSTCW @905 1016 ; __eFSTENV @906 1017 ; __eFSTP @907 1018 ; __eFSTP32 @908 1019 ; __eFSTP64 @909 1020 ; __eFSTP80 @910 1021 ; __eFSTSW @911 1022 ; __eFSUB32 @912 1023 ; __eFSUB64 @913 1024 ; __eFSUBPreg @914 1025 ; __eFSUBR32 @915 1026 ; __eFSUBR64 @916 1027 ; __eFSUBRPreg @917 1028 ; __eFSUBRreg @918 1029 ; __eFSUBRtop @919 1030 ; __eFSUBreg @920 1031 ; __eFSUBtop @921 1032 ; __eFTST @922 1033 ; __eFUCOM @923 1034 ; __eFUCOMP @924 1035 ; __eFUCOMPP @925 1036 ; __eFXAM @926 1037 ; __eFXCH @927 1038 ; __eFXTRACT @928 1039 ; __eFYL2X @929 1040 ; __eFYL2XP1 @930 1041 ; __eGetStatusWord @931 1042 _allrem @939 1043 ; _allshl @940 1044 ; _allshr @941 1045 ; _atoi64 @942 1046 _aulldiv @943 1047 _aullrem @944 1048 ; _aullshr @945 1049 _chkstk = _chkstk @946 1050 ; _fltused @947 1051 _ftol = NTDLL__ftol @948 1052 ; _i64toa = _MSVCRT__i64toa @949 1053 ; _i64tow = _MSVCRT__i64tow @950 1054 _itoa = _itoa @951 1055 ; _itow = _LL__itow @952 1056 _ltoa = _ltoa @953 1057 ; _ltow = _MSVCRT__ltow @954 1058 _memccpy = _memccpy @955 1059 _memicmp = NTDLL_memicmp @956 1060 _snprintf = _snprintf @957 1061 _snwprintf = _snwprintf @958 1062 _splitpath = _splitpath @959 1063 _strcmpi = _stricmp @960 1064 _stricmp = _stricmp @961 1065 _strlwr = _strlwr @962 1066 _strnicmp @963 1067 _strupr @964 1068 ; _tolower = _CRTDLL__tolower @965 1069 ; _toupper = _CRTDLL__toupper @966 1070 _ultoa @967 1071 _ultow @968 1072 _vsnprintf @969 1073 _wcsicmp = NTDLL__wcsicmp @970 1074 _wcslwr = NTDLL__wcslwr @971 1075 _wcsnicmp = NTDLL__wcsnicmp @972 1076 _wcsupr = NTDLL__wcsupr @973 1077 _wtoi @974 1078 ; _wtoi64 = _MSVCRT__wtoi64 @975 1079 _wtol @976 1080 1081 abs @977 1082 atan @978 1083 atoi @979 1084 atol @980 1085 ceil @981 1086 cos @982 1087 fabs @983 1088 floor @984 1089 isalnum @985 1090 isalpha @986 1091 iscntrl @987 1092 isdigit @988 1093 isgraph @989 1094 islower @990 1095 isprint @991 1096 ispunct @992 1097 isspace @993 1098 isupper @994 18 ; ?Allocate@CBufferAllocator@@UAEPAXK@Z @1 19 ; PropertyLengthAsVariant @2 20 ; RtlCompareVariants @3 21 ; RtlConvertPropertyToVariant @4 22 ; RtlConvertVariantToProperty @5 23 ; CsrAllocateCaptureBuffer @6 24 ; CsrAllocateCapturePointer @7 25 ; CsrAllocateMessagePointer @8 26 ; CsrCaptureMessageBuffer @9 27 ; CsrCaptureMessageString @10 28 ; CsrCaptureTimeout @11 29 ; CsrClientCallServer @12 30 ; CsrClientConnectToServer @13 31 ; CsrFreeCaptureBuffer @14 32 ; CsrIdentifyAlertableThread @15 33 ; CsrNewThread @16 34 ; CsrProbeForRead @17 35 ; CsrProbeForWrite @18 36 ; CsrSetPriorityClass @19 37 DbgBreakPoint @20 38 DbgPrint @21 39 ; DbgPrompt @22 40 ; DbgSsHandleKmApiMsg @23 41 ; DbgSsInitialize @24 42 ; DbgUiConnectToDbg @25 43 ; DbgUiContinue @26 44 ; DbgUiWaitStateChange @27 45 DbgUserBreakPoint @28 46 ; KiRaiseUserExceptionDispatcher @29 47 ; KiUserApcDispatcher @30 48 ; KiUserCallbackDispatcher @31 49 ; KiUserExceptionDispatcher @32 50 ; LdrAccessResource @33 51 LdrDisableThreadCalloutsForDll = _LdrDisableThreadCalloutsForDll@4 @34 52 ; LdrEnumResources @35 53 ; LdrFindEntryForAddress @36 54 ; LdrFindResourceDirectory_U @37 55 ; LdrFindResource_U @38 56 ; LdrGetDllHandle @39 57 ; LdrGetProcedureAddress @40 58 ; LdrInitializeThunk @41 59 ; LdrLoadDll @42 60 ; LdrProcessRelocationBlock @43 61 ; LdrQueryImageFileExecutionOptions @44 62 ; LdrQueryProcessModuleInformation @45 63 ; LdrShutdownProcess @46 64 ; LdrShutdownThread @47 65 ; LdrUnloadDll @48 66 ; LdrVerifyImageMatchesChecksum @49 67 ; NPXEMULATORTABLE @50 68 ; NlsAnsiCodePage @51 69 ; NlsMbCodePageTag @52 70 ; NlsMbOemCodePageTag @53 71 NtAcceptConnectPort = _NtAcceptConnectPort@24 @54 72 NtAccessCheck = _NtAccessCheck@32 @55 73 ; NtAccessCheckAndAuditAlarm @56 74 ; NtAddAtom @57 75 ; NtAdjustGroupsToken @58 76 NtAdjustPrivilegesToken = _NtAdjustPrivilegesToken@24 @59 77 ; NtAlertResumeThread @60 78 NtAlertThread = _NtAlertThread@8 @61 79 NtAllocateLocallyUniqueId = _NtAllocateLocallyUniqueId@4 @62 80 NtAllocateUuids = _NtAllocateUuids@16 @63 81 ; NtAllocateVirtualMemory @64 82 ; NtCallbackReturn @65 83 ; NtCancelIoFile @66 84 ; NtCancelTimer @67 85 NtClearEvent = _NtClearEvent@4 @68 86 NtClose = _NtClose@4 @69 87 ; NtCloseObjectAuditAlarm @70 88 NtCompleteConnectPort = _NtCompleteConnectPort@4 @71 89 NtConnectPort = _NtConnectPort@32 @72 90 ; NtContinue @73 91 ; NtCreateChannel @74 92 NtCreateDirectoryObject = _NtCreateDirectoryObject@12 @75 93 NtCreateEvent = _NtCreateEvent@20 @76 94 ; NtCreateEventPair @77 95 NtCreateFile = _NtCreateFile@44 @78 96 ; NtCreateIoCompletion @79 97 NtCreateKey = _NtCreateKey@28 @80 98 NtCreateMailslotFile = _NtCreateMailslotFile@32 @81 99 ; NtCreateMutant @82 100 ; NtCreateNamedPipeFile @83 101 NtCreatePagingFile = _NtCreatePagingFile@16 @84 102 NtCreatePort = _NtCreatePort@20 @85 103 ; NtCreateProcess @86 104 ; NtCreateProfile @87 105 NtCreateSection = _NtCreateSection@28 @88 106 NtCreateSemaphore = _NtCreateSemaphore@20 @89 107 NtCreateSymbolicLinkObject = _NtCreateSymbolicLinkObject@16 @90 108 ; NtCreateThread @91 109 NtCreateTimer = _NtCreateTimer@16 @92 110 ; NtCreateToken @93 111 ; NtCurrentTeb = _NtCurrentTeb @94 112 ; NtDelayExecution @95 113 ; NtDeleteAtom @96 114 ; NtDeleteFile @97 115 NtDeleteKey = _NtDeleteKey@4 @98 116 ; NtDeleteObjectAuditAlarm @99 117 NtDeleteValueKey = _NtDeleteValueKey@8 @100 118 NtDeviceIoControlFile = _NtDeviceIoControlFile@40 @101 119 NtDisplayString = _NtDisplayString@4 @102 120 NtDuplicateObject = _NtDuplicateObject@28 @103 121 NtDuplicateToken = _NtDuplicateToken@24 @104 122 NtEnumerateKey = _NtEnumerateKey@24 @105 123 NtEnumerateValueKey = _NtEnumerateValueKey@24 @106 124 ; NtExtendSection @107 125 ; NtFindAtom @108 126 ; NtFlushBuffersFile @109 127 ; NtFlushInstructionCache @110 128 NtFlushKey = _NtFlushKey@4 @111 129 ; NtFlushVirtualMemory @112 130 ; NtFlushWriteBuffer @113 131 ; NtFreeVirtualMemory @114 132 NtFsControlFile = _NtFsControlFile@40 @115 133 ; NtGetContextThread @116 134 ; NtGetPlugPlayEvent @117 135 ; NtGetTickCount @118 136 NtImpersonateClientOfPort = _NtImpersonateClientOfPort@16 @119 137 ; NtImpersonateThread @120 138 ; NtInitializeRegistry @121 139 ; NtListenChannel @122 140 NtListenPort = _NtListenPort@8 @123 141 ; NtLoadDriver @124 142 ; NtLoadKey2 @125 143 NtLoadKey = _NtLoadKey@8 @126 144 ; NtLockFile @127 145 ; NtLockVirtualMemory @128 146 ; NtMakeTemporaryObject @129 147 NtMapViewOfSection = _NtMapViewOfSection@40 @130 148 ; NtNotifyChangeDirectoryFile @131 149 NtNotifyChangeKey = _NtNotifyChangeKey@40 @132 150 ; NtOpenChannel @133 151 NtOpenDirectoryObject = _NtOpenDirectoryObject@12 @134 152 NtOpenEvent = _NtOpenEvent@12 @135 153 ; NtOpenEventPair @136 154 NtOpenFile = _NtOpenFile@24 @137 155 ; NtOpenIoCompletion @138 156 NtOpenKey = _NtOpenKey@12 @139 157 ; NtOpenMutant @140 158 ; NtOpenObjectAuditAlarm @141 159 ; NtOpenProcess @142 160 NtOpenProcessToken = _NtOpenProcessToken@12 @143 161 NtOpenSection = _NtOpenSection@12 @144 162 NtOpenSemaphore = _NtOpenSemaphore@12 @145 163 NtOpenSymbolicLinkObject = _NtQuerySymbolicLinkObject@12 @146 164 NtOpenThread = _NtOpenThread@16 @147 165 NtOpenThreadToken = _NtOpenThreadToken@16 @148 166 ; NtOpenTimer @149 167 ; NtPlugPlayControl @150 168 ; NtPrivilegeCheck @151 169 ; NtPrivilegeObjectAuditAlarm @152 170 ; NtPrivilegedServiceAuditAlarm @153 171 ; NtProtectVirtualMemory @154 172 NtPulseEvent = _NtPulseEvent@8 @155 173 ; NtQueryAttributesFile @156 174 ; NtQueryDefaultLocale @157 175 NtQueryDirectoryFile = _NtQueryDirectoryFile@44 @158 176 NtQueryDirectoryObject = _NtQueryDirectoryObject@28 @159 177 ; NtQueryEaFile @160 178 NtQueryEvent = _NtQueryEvent@20 @161 179 ; NtQueryFullAttributesFile @162 180 ; NtQueryInformationAtom @163 181 NtQueryInformationFile = _NtQueryInformationFile@20 @164 182 ; NtQueryInformationPort @165 183 NtQueryInformationProcess = _NtQueryInformationProcess@20 @166 184 NtQueryInformationThread = _NtQueryInformationThread@20 @167 185 NtQueryInformationToken = _NtQueryInformationToken@20 @168 186 ; NtQueryIntervalProfile @169 187 ; NtQueryIoCompletion @170 188 NtQueryKey = _NtQueryKey@20 @171 189 NtQueryMultipleValueKey = _NtQueryMultipleValueKey@24 @172 190 ; NtQueryMutant @173 191 NtQueryObject = _NtQueryObject@20 @174 192 ; NtQueryOleDirectoryFile @175 193 NtQueryPerformanceCounter = _NtQueryPerformanceCounter@8 @176 194 NtQuerySection = _NtQuerySection@20 @177 195 NtQuerySecurityObject = _NtQuerySecurityObject@20 @178 196 NtQuerySemaphore = _NtQuerySemaphore@20 @179 197 NtQuerySymbolicLinkObject = _NtQuerySymbolicLinkObject@12 @180 198 ; NtQuerySystemEnvironmentValue @181 199 NtQuerySystemInformation = _NtQuerySystemInformation@16 @182 200 NtQuerySystemTime = _NtQuerySystemTime@4 @183 201 ; NtQueryTimer @184 202 NtQueryTimerResolution = _NtQueryTimerResolution@12 @185 203 NtQueryValueKey = _NtQueryValueKey@24 @186 204 ; NtQueryVirtualMemory @187 205 NtQueryVolumeInformationFile = _NtQueryVolumeInformationFile@20 @188 206 ; NtQueueApcThread @189 207 NtRaiseException = ___regs_NtRaiseException@16 @190 208 ; NtRaiseHardError @191 209 NtReadFile = _NtReadFile@36 @192 210 ; NtReadFileScatter @193 211 NtReadRequestData = _NtReadRequestData@20 @194 212 ; NtReadVirtualMemory @195 213 NtRegisterThreadTerminatePort = _NtRegisterThreadTerminatePort@4 @196 214 ; NtReleaseMutant @197 215 NtReleaseSemaphore = _NtReleaseSemaphore@12 @198 216 ; NtRemoveIoCompletion @199 217 NtReplaceKey = _NtReplaceKey@12 @200 218 NtReplyPort = _NtReplyPort@16 @201 219 NtReplyWaitReceivePort = _NtReplyWaitReceivePort@16 @202 220 NtReplyWaitReplyPort = _NtReplyWaitReplyPort@16 @203 221 ; NtReplyWaitSendChannel @204 222 NtRequestPort = _NtRequestPort@16 @205 223 NtRequestWaitReplyPort = _NtRequestWaitReplyPort@12 @206 224 NtResetEvent = _NtResetEvent@8 @207 225 NtRestoreKey = _NtRestoreKey@12 @208 226 NtResumeThread = _NtResumeThread@8 @209 227 NtSaveKey = _NtSaveKey@8 @210 228 ; NtSendWaitReplyChannel @211 229 ; NtSetContextChannel @212 230 ; NtSetContextThread @213 231 ; NtSetDefaultHardErrorPort @214 232 ; NtSetDefaultLocale @215 233 ; NtSetEaFile @216 234 NtSetEvent = _NtSetEvent@8 @217 235 ; NtSetHighEventPair @218 236 ; NtSetHighWaitLowEventPair @219 237 ; NtSetHighWaitLowThread @220 238 NtSetInformationFile = _NtSetInformationFile@20 @221 239 NtSetInformationKey = _NtSetInformationKey@16 @222 240 ; NtSetInformationObject @223 241 NtSetInformationProcess = _NtSetInformationProcess@16 @224 242 NtSetInformationThread = _NtSetInformationThread@16 @225 243 ; NtSetInformationToken @226 244 NtSetIntervalProfile = _NtSetIntervalProfile@8 @227 245 ; NtSetIoCompletion @228 246 ; NtSetLdtEntries @229 247 ; NtSetLowEventPair @230 248 ; NtSetLowWaitHighEventPair @231 249 ; NtSetLowWaitHighThread @232 250 NtSetSecurityObject = _NtSetSecurityObject@12 @233 251 ; NtSetSystemEnvironmentValue @234 252 ; NtSetSystemInformation @235 253 ; NtSetSystemPowerState @236 254 ; NtSetSystemTime @237 255 NtSetTimer = _NtSetTimer@28 @238 256 ; NtSetTimerResolution @239 257 NtSetValueKey = _NtSetValueKey@24 @240 258 NtSetVolumeInformationFile = _NtSetVolumeInformationFile@20 @241 259 ; NtShutdownSystem @242 260 ; NtSignalAndWaitForSingleObject @243 261 ; NtStartProfile @244 262 ; NtStopProfile @245 263 ; NtSuspendThread @246 264 ; NtSystemDebugControl @247 265 NtTerminateProcess = _NtTerminateProcess@8 @248 266 NtTerminateThread = _NtTerminateThread@8 @249 267 NtTestAlert = _NtTestAlert@8 @250 268 ; NtUnloadDriver @251 269 NtUnloadKey = _NtUnloadKey@4 @252 270 ; NtUnlockFile @253 271 ; NtUnlockVirtualMemory @254 272 ; NtUnmapViewOfSection @255 273 ; NtVdmControl @256 274 ; NtWaitForMultipleObjects @257 275 NtWaitForSingleObject = _NtWaitForSingleObject@12 @258 276 ; NtWaitHighEventPair @259 277 ; NtWaitLowEventPair @260 278 ; NtWriteFile @261 279 ; NtWriteFileGather @262 280 NtWriteRequestData = _NtWriteRequestData@20 @263 281 ; NtWriteVirtualMemory @264 282 ; NtYieldExecution @265 283 ; PfxFindPrefix @266 284 ; PfxInitialize @267 285 ; PfxInsertPrefix @268 286 ; PfxRemovePrefix @269 287 ; RestoreEm87Context @270 288 289 ; RtlAbortRXact @271 290 ; RtlAbsoluteToSelfRelativeSD @272 291 RtlAcquirePebLock = _RtlAcquirePebLock@0 @273 292 RtlAcquireResourceExclusive = _RtlAcquireResourceExclusive@8 @274 293 RtlAcquireResourceShared = _RtlAcquireResourceShared@8 @275 294 RtlAddAccessAllowedAce = _RtlAddAccessAllowedAce@16 @276 295 ; RtlAddAccessDeniedAce @277 296 RtlAddAce = _RtlAddAce@20 @278 297 ; RtlAddActionToRXact @279 298 ; RtlAddAtomToAtomTable @280 299 ; RtlAddAttributeActionToRXact @281 300 ; RtlAddAuditAccessAce @282 301 ; RtlAddCompoundAce @283 302 RtlAdjustPrivilege = _RtlAdjustPrivilege@16 @284 303 RtlAllocateAndInitializeSid = _RtlAllocateAndInitializeSid@44 @285 304 ; RtlAllocateHandle @286 305 ;;; RtlAllocateHeap = _RtlAllocateHeap@12 @287 306 RtlAllocateHeap = _HeapAlloc@12 @287 307 ; RtlAnsiCharToUnicodeChar @288 308 RtlAnsiStringToUnicodeSize = _RtlAnsiStringToUnicodeSize@4 @289 309 RtlAnsiStringToUnicodeString = _RtlAnsiStringToUnicodeString@12 @290 310 RtlAppendAsciizToString = _RtlAppendAsciizToString@8 @291 311 RtlAppendStringToString = _RtlAppendStringToString@8 @292 312 RtlAppendUnicodeStringToString= _RtlAppendUnicodeStringToString@8 @293 313 RtlAppendUnicodeToString = _RtlAppendUnicodeToString@8 @294 314 ; RtlApplyRXact @295 315 ; RtlApplyRXactNoFlush @296 316 ; RtlAreAllAccessesGranted @297 317 ; RtlAreAnyAccessesGranted @298 318 RtlAreBitsClear = _RtlAreBitsClear@12 @299 319 RtlAreBitsSet = _RtlAreBitsSet@12 @300 320 321 RtlAssert = _RtlAssert@16 @301 322 ; RtlCaptureStackBackTrace @302 323 RtlCharToInteger = _RtlCharToInteger@12 @303 324 ; RtlCheckRegistryKey @304 325 ; RtlClearAllBits @305 326 RtlClearBits = _RtlClearBits@12 @306 327 ; RtlClosePropertySet @307 328 ;; RtlCompactHeap = _RtlCompactHeap@8 @308 329 RtlCompactHeap = _HeapCompact@8 @308 330 RtlCompareMemory = _RtlCompareMemory@12 @309 331 ; RtlCompareMemoryUlong @310 332 RtlCompareString = _RtlCompareString@12 @311 333 RtlCompareUnicodeString = _RtlCompareUnicodeString@12 @312 334 ; RtlCompressBuffer @313 335 ; RtlConsoleMultiByteToUnicodeN @314 336 ; RtlConvertExclusiveToShared @315 337 RtlConvertLongToLargeInteger = _RtlConvertLongToLargeInteger@4 @316 338 ; RtlConvertSharedToExclusive @317 339 RtlConvertSidToUnicodeString = _RtlConvertSidToUnicodeString@12 @318 340 ; RtlConvertUiListToApiList @319 341 RtlConvertUlongToLargeInteger = _RtlConvertUlongToLargeInteger@4 @320 342 RtlCopyLuid = _RtlCopyLuid@8 @321 343 ; RtlCopyLuidAndAttributesArray @322 344 RtlCopyMemory = _RtlCopyMemory@12 @1100 345 ; RtlCopySecurityDescriptor @323 346 RtlCopySid = _RtlCopySid@12 @324 347 ; RtlCopySidAndAttributesArray @325 348 RtlCopyString = _RtlCopyString@8 @326 349 RtlCopyUnicodeString = _RtlCopyUnicodeString@8 @327 350 RtlCreateAcl = _RtlCreateAcl@12 @328 351 ; RtlCreateAndSetSD @329 352 ; RtlCreateAtomTable @330 353 RtlCreateEnvironment = _RtlCreateEnvironment@8 @331 354 ;;;; RtlCreateHeap = _RtlCreateHeap@24 @332 355 ; RtlCreateProcessParameters @333 356 ; RtlCreatePropertySet @334 357 ; RtlCreateQueryDebugBuffer @335 358 ; RtlCreateRegistryKey @336 359 RtlCreateSecurityDescriptor = _RtlCreateSecurityDescriptor@8 @337 360 ; RtlCreateTagHeap @338 361 RtlCreateUnicodeString = _RtlCreateUnicodeString@8 @339 362 RtlCreateUnicodeStringFromAsciiz = _RtlCreateUnicodeStringFromAsciiz@8 @340 363 ; RtlCreateUserProcess @341 364 ; RtlCreateUserSecurityObject @342 365 ; RtlCreateUserThread @343 366 ; RtlCustomCPToUnicodeN @344 367 ; RtlCutoverTimeToSystemTime @345 368 ; RtlDeNormalizeProcessParams @346 369 ; RtlDecompressBuffer @347 370 ; RtlDecompressFragment @348 371 ; RtlDelete @349 372 ; RtlDeleteAce @350 373 ; RtlDeleteAtomFromAtomTable @351 374 RtlDeleteCriticalSection = _DeleteCriticalSection@4 @352 375 ; RtlDeleteElementGenericTable @353 376 ; RtlDeleteNoSplay @354 377 ; RtlDeleteRegistryValue @355 378 RtlDeleteResource = _RtlDeleteResource@4 @356 379 RtlDeleteSecurityObject = _RtlDeleteSecurityObject@4 @357 380 ; RtlDestroyAtomTable @358 381 RtlDestroyEnvironment = _RtlDestroyEnvironment@4 @359 382 ; RtlDestroyHandleTable @360 383 ;;;; RtlDestroyHeap = _RtlDestroyHeap@4 @361 384 ; RtlDestroyProcessParameters @362 385 ; RtlDestroyQueryDebugBuffer @363 386 ; RtlDetermineDosPathNameType_U @364 387 ; RtlDoesFileExists_U @365 388 RtlDosPathNameToNtPathName_U = _RtlDosPathNameToNtPathName_U@16 @366 389 ; RtlDosSearchPath_U @367 390 RtlDowncaseUnicodeString = _RtlDowncaseUnicodeString@12 @368 391 RtlDumpResource = _RtlDumpResource@4 @369 392 ; RtlEmptyAtomTable @370 393 RtlEnlargedIntegerMultiply = _RtlEnlargedIntegerMultiply@8 @371 394 RtlEnlargedUnsignedDivide = _RtlEnlargedUnsignedDivide@16 @372 395 RtlEnlargedUnsignedMultiply = _RtlEnlargedUnsignedMultiply@8 @373 396 RtlEnterCriticalSection = _EnterCriticalSection@4 @374 397 ; RtlEnumProcessHeaps @375 398 ; RtlEnumerateGenericTable @376 399 ; RtlEnumerateGenericTableWithoutSplaying @377 400 ; RtlEnumerateProperties @378 401 RtlEqualComputerName = _RtlEqualComputerName@8 @379 402 RtlEqualDomainName = _RtlEqualDomainName@8 @380 403 ; RtlEqualLuid @381 404 RtlEqualPrefixSid = _RtlEqualPrefixSid@8 @382 405 RtlEqualSid = _RtlEqualSid@8 @383 406 RtlEqualString = _RtlEqualString@12 @384 407 RtlEqualUnicodeString = _RtlEqualUnicodeString@12 @385 408 RtlEraseUnicodeString = _RtlEraseUnicodeString@4 @386 409 ; RtlExpandEnvironmentStrings_U @387 410 ; RtlExtendHeap @388 411 RtlExtendedIntegerMultiply = _RtlExtendedIntegerMultiply@12 @389 412 RtlExtendedLargeIntegerDivide = _RtlExtendedLargeIntegerDivide@16 @390 413 RtlExtendedMagicDivide = _RtlExtendedMagicDivide@20 @391 414 RtlFillMemory = _RtlFillMemory@12 @392 415 ; RtlFillMemoryUlong @393 416 RtlFindClearBits = _RtlFindClearBits@12 @394 417 ; RtlFindClearBitsAndSet @395 418 ; RtlFindLongestRunClear @396 419 ; RtlFindLongestRunSet @397 420 ; RtlFindMessage @398 421 ; RtlFindSetBits @399 422 ; RtlFindSetBitsAndClear @400 423 RtlFirstFreeAce = _RtlFirstFreeAce@8 @401 424 ; RtlFlushPropertySet @402 425 RtlFormatCurrentUserKeyPath = _RtlFormatCurrentUserKeyPath@4 @403 426 ; RtlFormatMessage @404 427 RtlFreeAnsiString = _RtlFreeAnsiString@4 @405 428 ; RtlFreeHandle @406 429 ;;;; RtlFreeHeap = _RtlFreeHeap@12 @407 430 RtlFreeHeap = _HeapFree@12 @407 431 RtlFreeOemString = _RtlFreeOemString@4 @408 432 RtlFreeSid = _RtlFreeSid@4 @409 433 RtlFreeUnicodeString = _RtlFreeUnicodeString@4 @410 434 ; RtlFreeUserThreadStack @411 435 ; RtlGenerate8dot3Name @412 436 RtlGetAce = _RtlGetAce@12 @413 437 ; RtlGetCallersAddress @414 438 ; RtlGetCompressionWorkSpaceSize @415 439 RtlGetControlSecurityDescriptor = _RtlGetControlSecurityDescriptor@12 @416 440 ; RtlGetCurrentDirectory_U @417 441 RtlGetDaclSecurityDescriptor = _RtlGetDaclSecurityDescriptor@16 @418 442 ; RtlGetElementGenericTable @419 443 ; RtlGetFullPathName_U @420 444 RtlGetGroupSecurityDescriptor = _RtlGetGroupSecurityDescriptor@12 @421 445 ; RtlGetLongestNtPathLength @422 446 ; RtlGetNtGlobalFlags @423 447 RtlGetNtProductType = _RtlGetNtProductType@4 @424 448 RtlGetOwnerSecurityDescriptor = _RtlGetOwnerSecurityDescriptor@12 @425 449 ;;;; RtlGetProcessHeaps = _RtlGetProcessHeaps@8 @426 450 RtlGetSaclSecurityDescriptor = _RtlGetSaclSecurityDescriptor@16 @427 451 ; RtlGetUserInfoHeap @428 452 ; RtlGuidToPropertySetName @429 453 RtlIdentifierAuthoritySid = _RtlIdentifierAuthoritySid@4 @430 454 ; RtlImageDirectoryEntryToData @431 455 RtlImageNtHeader = _RtlImageNtHeader@4 @432 456 ; RtlImageRvaToSection @433 457 ; RtlImageRvaToVa @434 458 RtlImpersonateSelf = _RtlImpersonateSelf@4 @435 459 RtlInitAnsiString = _RtlInitAnsiString@8 @436 460 ; RtlInitCodePageTable @437 461 ; RtlInitNlsTables @438 462 RtlInitString = _RtlInitString@8 @439 463 RtlInitUnicodeString = _RtlInitUnicodeString@8 @440 464 ; RtlInitializeAtomPackage @441 465 RtlInitializeBitMap = _RtlInitializeBitMap@12 @442 466 ; RtlInitializeContext @443 467 RtlInitializeCriticalSection = _InitializeCriticalSection@4 @444 468 ; RtlInitializeCriticalSectionAndSpinCount @445 469 RtlInitializeGenericTable = _RtlInitializeGenericTable@0 @446 470 ; RtlInitializeHandleTable @447 471 ; RtlInitializeRXact @448 472 RtlInitializeResource = _RtlInitializeResource@4 @449 473 RtlInitializeSid = _RtlInitializeSid@12 @450 474 ; RtlInsertElementGenericTable @451 475 RtlIntegerToChar = _RtlIntegerToChar@16 @452 476 RtlIntegerToUnicodeString = _RtlIntegerToUnicodeString@12 @453 477 ; RtlIsDosDeviceName_U @454 478 ; RtlIsGenericTableEmpty @455 479 ; RtlIsNameLegalDOS8Dot3 @456 480 RtlIsTextUnicode = _RtlIsTextUnicode@12 @457 481 ; RtlIsValidHandle @458 482 ; RtlIsValidIndexHandle @459 483 RtlLargeIntegerAdd = _RtlLargeIntegerAdd@16 @460 484 RtlLargeIntegerArithmeticShift= _RtlLargeIntegerArithmeticShift@12 @461 485 RtlLargeIntegerDivide = _RtlLargeIntegerDivide@20 @462 486 RtlLargeIntegerNegate = _RtlLargeIntegerNegate@8 @463 487 RtlLargeIntegerShiftLeft = _RtlLargeIntegerShiftLeft@12 @464 488 RtlLargeIntegerShiftRight = _RtlLargeIntegerShiftRight@12 @465 489 RtlLargeIntegerSubtract = _RtlLargeIntegerSubtract@16 @466 490 RtlLargeIntegerToChar = _RtlLargeIntegerToChar@16 @467 491 RtlLeaveCriticalSection = _LeaveCriticalSection@4 @468 492 RtlLengthRequiredSid = _RtlLengthRequiredSid@4 @469 493 RtlLengthSecurityDescriptor = _RtlLengthSecurityDescriptor@4 @470 494 RtlLengthSid = _RtlLengthSid@4 @471 495 ; RtlLocalTimeToSystemTime @472 496 ;;;; RtlLockHeap = _RtlLockHeap@4 @473 497 RtlLockHeap = _HeapLock@4 @473 498 ; RtlLookupAtomInAtomTable @474 499 ; RtlLookupElementGenericTable @475 500 RtlMakeSelfRelativeSD = _RtlMakeSelfRelativeSD@12 @476 501 ; RtlMapGenericMask @477 502 RtlMoveMemory = _RtlMoveMemory@12 @478 503 RtlMultiByteToUnicodeN = _RtlMultiByteToUnicodeN@20 @479 504 RtlMultiByteToUnicodeSize = _RtlMultiByteToUnicodeSize@12 @480 505 ; RtlNewInstanceSecurityObject @481 506 ; RtlNewSecurityGrantedAccess @482 507 RtlNewSecurityObject = _RtlNewSecurityObject@24 @483 508 RtlNormalizeProcessParams = _RtlNormalizeProcessParams@4 @484 509 RtlNtStatusToDosError = _RtlNtStatusToDosError@4 @485 510 ; RtlNumberGenericTableElements @486 511 RtlNumberOfClearBits = _RtlNumberOfClearBits@4 @487 512 RtlNumberOfSetBits = _RtlNumberOfSetBits@4 @488 513 RtlOemStringToUnicodeSize = _RtlOemStringToUnicodeSize@4 @489 514 RtlOemStringToUnicodeString = _RtlOemStringToUnicodeString@12 @490 515 RtlOemToUnicodeN = _RtlOemToUnicodeN@20 @491 516 ; RtlOnMappedStreamEvent @492 517 RtlOpenCurrentUser = _RtlOpenCurrentUser@8 @493 518 ; RtlPcToFileHeader @494 519 ; RtlPinAtomInAtomTable @495 520 RtlPrefixString = _RtlPrefixString@12 @496 521 RtlPrefixUnicodeString = _RtlPrefixUnicodeString@12 @497 522 ; RtlPropertySetNameToGuid @498 523 ; RtlProtectHeap @499 524 ; RtlQueryAtomInAtomTable @500 525 RtlQueryEnvironmentVariable_U = _RtlQueryEnvironmentVariable_U@12 @501 526 ; RtlQueryInformationAcl @502 527 ; RtlQueryProcessBackTraceInformation @503 528 ; RtlQueryProcessDebugInformation @504 529 ; RtlQueryProcessHeapInformation @505 530 ; RtlQueryProcessLockInformation @506 531 ; RtlQueryProperties @507 532 ; RtlQueryPropertyNames @508 533 ; RtlQueryPropertySet @509 534 ; RtlQueryRegistryValues @510 535 ; RtlQuerySecurityObject @511 536 ; RtlQueryTagHeap @512 537 RtlQueryTimeZoneInformation = _RtlQueryTimeZoneInformation@4 @513 538 RtlRaiseException = ___regs_RtlRaiseException@8 @514 539 RtlRaiseStatus = _RtlRaiseStatus@4 @515 540 RtlRandom = _RtlRandom@4 @516 541 ;;;; RtlReAllocateHeap = _RtlReAllocateHeap@16 @517 542 RtlReAllocateHeap = _HeapReAlloc@16 @517 543 ; RtlRealPredecessor @518 544 ; RtlRealSuccessor @519 545 RtlReleasePebLock = _RtlReleasePebLock@0 @520 546 RtlReleaseResource = _RtlReleaseResource@4 @521 547 ; RtlRemoteCall @522 548 ; RtlResetRtlTranslations @523 549 ; RtlRunDecodeUnicodeString @524 550 ; RtlRunEncodeUnicodeString @525 551 RtlSecondsSince1970ToTime = _RtlSecondsSince1970ToTime@8 @526 552 RtlSecondsSince1980ToTime = _RtlSecondsSince1980ToTime@8 @527 553 ; RtlSelfRelativeToAbsoluteSD @528 554 RtlSetAllBits = _RtlSetAllBits@4 @529 555 ; RtlSetAttributesSecurityDescriptor @530 556 RtlSetBits = _RtlSetBits@12 @531 557 ; RtlSetCriticalSectionSpinCount @532 558 ; RtlSetCurrentDirectory_U @533 559 ; RtlSetCurrentEnvironment @534 560 RtlSetDaclSecurityDescriptor = _RtlSetDaclSecurityDescriptor@16 @535 561 RtlSetEnvironmentVariable = _RtlSetEnvironmentVariable@12 @536 562 RtlSetGroupSecurityDescriptor = _RtlSetGroupSecurityDescriptor@12 @537 563 ; RtlSetInformationAcl @538 564 RtlSetOwnerSecurityDescriptor = _RtlSetOwnerSecurityDescriptor@12 @539 565 ; RtlSetProperties @540 566 ; RtlSetPropertyNames @541 567 ; RtlSetPropertySetClassId @542 568 RtlSetSaclSecurityDescriptor = _RtlSetSaclSecurityDescriptor@16 @543 569 ; RtlSetSecurityObject @544 570 ; RtlSetTimeZoneInformation @545 571 ; RtlSetUnicodeCallouts @546 572 ; RtlSetUserFlagsHeap @547 573 ; RtlSetUserValueHeap @548 574 ;;;; RtlSizeHeap = _RtlSizeHeap@12 @549 575 RtlSizeHeap = _HeapSize@12 @549 576 ; RtlSplay @550 577 ; RtlStartRXact @551 578 RtlSubAuthorityCountSid = _RtlSubAuthorityCountSid@4 @552 579 RtlSubAuthoritySid = _RtlSubAuthoritySid@8 @553 580 ; RtlSubtreePredecessor @554 581 ; RtlSubtreeSuccessor @555 582 RtlSystemTimeToLocalTime = _RtlSystemTimeToLocalTime@8 @556 583 RtlTimeFieldsToTime = _RtlTimeFieldsToTime@8 @557 584 RtlTimeToElapsedTimeFields = _RtlTimeToElapsedTimeFields@8 @558 585 RtlTimeToSecondsSince1970 = _RtlTimeToSecondsSince1970@8 @559 586 RtlTimeToSecondsSince1980 = _RtlTimeToSecondsSince1980@8 @560 587 RtlTimeToTimeFields = _RtlTimeToTimeFields@8 @561 588 ; RtlTryEnterCriticalSection @562 589 RtlUnicodeStringToAnsiSize = _RtlUnicodeStringToAnsiSize@4 @563 590 RtlUnicodeStringToAnsiString = _RtlUnicodeStringToAnsiString@12 @564 591 ; RtlUnicodeStringToCountedOemString @565 592 RtlUnicodeStringToInteger = _RtlUnicodeStringToInteger@12 @566 593 RtlUnicodeStringToOemSize = _RtlUnicodeStringToOemSize@4 @567 594 RtlUnicodeStringToOemString = _RtlUnicodeStringToOemString@12 @568 595 ; RtlUnicodeToCustomCPN @569 596 RtlUnicodeToMultiByteN = _RtlUnicodeToMultiByteN@20 @570 597 RtlUnicodeToMultiByteSize = _RtlUnicodeToMultiByteSize@12 @571 598 RtlUnicodeToOemN = _RtlUnicodeToOemN@20 @572 599 ; RtlUniform @573 600 ;;;; RtlUnlockHeap = _RtlUnlockHeap@4 @574 601 RtlUnlockHeap = _HeapUnlock@4 @574 602 RtlUnwind = _RtlUnwind@16 @575 603 RtlUpcaseUnicodeChar = _RtlUpcaseUnicodeChar@4 @576 604 RtlUpcaseUnicodeString = _RtlUpcaseUnicodeString@12 @577 605 ; RtlUpcaseUnicodeStringToCountedOemString @579 606 RtlUpcaseUnicodeStringToOemString = _RtlUpcaseUnicodeStringToOemString@12 @580 607 ; RtlUpcaseUnicodeToCustomCPN @581 608 RtlUpcaseUnicodeToMultiByteN = _RtlUpcaseUnicodeToMultiByteN@20 @582 609 RtlUpcaseUnicodeToOemN = _RtlUpcaseUnicodeToOemN@20 @583 610 RtlUpperChar = _RtlUpperChar@4 @584 611 RtlUpperString = _RtlUpperString@8 @585 612 ; RtlUsageHeap @586 613 ; RtlValidAcl @587 614 RtlValidSecurityDescriptor = _RtlValidSecurityDescriptor@4 @588 615 RtlValidSid = _RtlValidSid@4 @589 616 ;;;; RtlValidateHeap = _RtlValidateHeap@12 @590 617 RtlValidateHeap = _HeapValidate@12 @590 618 ; RtlValidateProcessHeaps @591 619 ;; RtlWalkHeap = _RtlWalkHeap@8 @592 620 RtlWalkHeap = _HeapWalk@8 @592 621 ; RtlWriteRegistryValue @593 622 ; RtlZeroHeap @594 623 RtlZeroMemory = _RtlZeroMemory@8 @595 624 ; RtlpNtCreateKey @596 625 ; RtlpNtEnumerateSubKey @597 626 ; RtlpNtMakeTemporaryKey @598 627 ; RtlpNtOpenKey @599 628 ; RtlpNtQueryValueKey @600 629 630 ; RtlpNtSetValueKey @601 631 ; RtlpUnWaitCriticalSection @602 632 ; RtlpWaitForCriticalSection @603 633 RtlxAnsiStringToUnicodeSize = _RtlAnsiStringToUnicodeSize@4 @604 634 RtlxOemStringToUnicodeSize = _RtlOemStringToUnicodeSize@4 @605 635 RtlxUnicodeStringToAnsiSize = _RtlUnicodeStringToAnsiSize@4 @606 636 RtlxUnicodeStringToOemSize = _RtlUnicodeStringToOemSize@4 @607 637 ; SaveEm87Context @608 638 639 ZwAcceptConnectPort = _NtAcceptConnectPort@24 @609 640 ; ZwAccessCheck @610 641 ; ZwAccessCheckAndAuditAlarm @611 642 ; ZwAddAtom @612 643 ; ZwAdjustGroupsToken @613 644 ZwAdjustPrivilegesToken = _NtAdjustPrivilegesToken@24 @614 645 ; ZwAlertResumeThread @615 646 ZwAlertThread = _NtAlertThread@8 @616 647 ; ZwAllocateLocallyUniqueId @617 648 ZwAllocateUuids = _NtAllocateUuids@16 @618 649 ; ZwAllocateVirtualMemory @619 650 ; ZwCallbackReturn @620 651 ; ZwCancelIoFile @621 652 ; ZwCancelTimer @622 653 ; ZwClearEvent @623 654 ZwClose = _NtClose@4 @624 655 ; ZwCloseObjectAuditAlarm @625 656 ZwCompleteConnectPort = _NtCompleteConnectPort@4 @626 657 ZwConnectPort = _NtConnectPort@32 @627 658 ; ZwContinue @628 659 ; ZwCreateChannel @629 660 ZwCreateDirectoryObject = _NtCreateDirectoryObject@12 @630 661 ZwCreateEvent = _NtCreateEvent@20 @631 662 ; ZwCreateEventPair @632 663 ZwCreateFile = _NtCreateFile@44 @633 664 ; ZwCreateIoCompletion @634 665 ZwCreateKey = _NtCreateKey@28 @635 666 ZwCreateMailslotFile = _NtCreateMailslotFile@32 @636 667 ; ZwCreateMutant @637 668 ; ZwCreateNamedPipeFile @638 669 ZwCreatePagingFile = _NtCreatePagingFile@16 @639 670 ZwCreatePort = _NtCreatePort@20 @640 671 ; ZwCreateProcess @641 672 ; ZwCreateProfile @642 673 ZwCreateSection = _NtCreateSection@28 @643 674 ZwCreateSemaphore = _NtCreateSemaphore@20 @644 675 ZwCreateSymbolicLinkObject = _NtCreateSymbolicLinkObject@16 @645 676 ; ZwCreateThread @646 677 ZwCreateTimer = _NtCreateTimer@16 @647 678 ; ZwCreateToken @648 679 ; ZwDelayExecution @649 680 ; ZwDeleteAtom @650 681 ; ZwDeleteFile @651 682 ZwDeleteKey = _NtDeleteKey@4 @652 683 ; ZwDeleteObjectAuditAlarm @653 684 ZwDeleteValueKey = _NtDeleteValueKey@8 @654 685 ZwDeviceIoControlFile = _NtDeviceIoControlFile@40 @655 686 ZwDisplayString = _NtDisplayString@4 @656 687 ZwDuplicateObject = _NtDuplicateObject@28 @657 688 ZwDuplicateToken = _NtDuplicateToken@24 @658 689 ZwEnumerateKey = _NtEnumerateKey@24 @659 690 ZwEnumerateValueKey = _NtEnumerateValueKey@24 @660 691 ; ZwExtendSection @661 692 ; ZwFindAtom @662 693 ; ZwFlushBuffersFile @663 694 ; ZwFlushInstructionCache @664 695 ZwFlushKey = _NtFlushKey@4 @665 696 ; ZwFlushVirtualMemory @666 697 ; ZwFlushWriteBuffer @667 698 ; ZwFreeVirtualMemory @668 699 ZwFsControlFile = _NtFsControlFile@40 @669 700 ; ZwGetContextThread @670 701 ; ZwGetPlugPlayEvent @671 702 ; ZwGetTickCount @672 703 ZwImpersonateClientOfPort = _NtImpersonateClientOfPort@16 @673 704 ; ZwImpersonateThread @674 705 ; ZwInitializeRegistry @675 706 ; ZwListenChannel @676 707 ZwListenPort = _NtListenPort@8 @677 708 ; ZwLoadDriver @678 709 ; ZwLoadKey2 @679 710 ZwLoadKey = _NtLoadKey@8 @680 711 ; ZwLockFile @681 712 ; ZwLockVirtualMemory @682 713 ; ZwMakeTemporaryObject @683 714 ZwMapViewOfSection = _NtMapViewOfSection@40 @684 715 ; ZwNotifyChangeDirectoryFile @685 716 ZwNotifyChangeKey = _NtNotifyChangeKey@40 @686 717 ; ZwOpenChannel @687 718 ZwOpenDirectoryObject = _NtOpenDirectoryObject@12 @688 719 ZwOpenEvent = _NtOpenEvent@12 @689 720 ; ZwOpenEventPair @690 721 ZwOpenFile = _NtOpenFile@24 @691 722 ; ZwOpenIoCompletion @692 723 ZwOpenKey = _NtOpenKey@12 @693 724 ; ZwOpenMutant @694 725 ; ZwOpenObjectAuditAlarm @695 726 ; ZwOpenProcess @696 727 ZwOpenProcessToken = _NtOpenProcessToken@12 @697 728 ZwOpenSection = _NtOpenSection@12 @698 729 ZwOpenSemaphore = _NtOpenSemaphore@12 @699 730 ZwOpenSymbolicLinkObject = _NtQuerySymbolicLinkObject@12 @700 731 ; ZwOpenThread @701 732 ZwOpenThreadToken = _NtOpenThreadToken@16 @702 733 ; ZwOpenTimer @703 734 ; ZwPlugPlayControl @704 735 ; ZwPrivilegeCheck @705 736 ; ZwPrivilegeObjectAuditAlarm @706 737 ; ZwPrivilegedServiceAuditAlarm @707 738 ; ZwProtectVirtualMemory @708 739 ; ZwPulseEvent @709 740 ; ZwQueryAttributesFile @710 741 ; ZwQueryDefaultLocale @711 742 ZwQueryDirectoryFile = _NtQueryDirectoryFile@44 @712 743 ZwQueryDirectoryObject = _NtQueryDirectoryObject@28 @713 744 ; ZwQueryEaFile @714 745 ; ZwQueryEvent @715 746 ; ZwQueryFullAttributesFile @716 747 ; ZwQueryInformationAtom @717 748 ZwQueryInformationFile = _NtQueryInformationFile@20 @718 749 ; ZwQueryInformationPort @719 750 ZwQueryInformationProcess = _NtQueryInformationProcess@20 @720 751 ZwQueryInformationThread = _NtQueryInformationThread@20 @721 752 ZwQueryInformationToken = _NtQueryInformationToken@20 @722 753 ; ZwQueryIntervalProfile @723 754 ; ZwQueryIoCompletion @724 755 ZwQueryKey = _NtQueryKey@20 @725 756 ZwQueryMultipleValueKey = _NtQueryMultipleValueKey@24 @726 757 ; ZwQueryMutant @727 758 ZwQueryObject = _NtQueryObject@20 @728 759 ; ZwQueryOleDirectoryFile @729 760 ZwQueryPerformanceCounter = _NtQueryPerformanceCounter@8 @730 761 ZwQuerySection = _NtQuerySection@20 @731 762 ZwQuerySecurityObject = _NtQuerySecurityObject@20 @732 763 ZwQuerySemaphore = _NtQuerySemaphore@20 @733 764 ZwQuerySymbolicLinkObject = _NtQuerySymbolicLinkObject@12 @734 765 ; ZwQuerySystemEnvironmentValue @735 766 ZwQuerySystemInformation = _NtQuerySystemInformation@16 @736 767 ZwQuerySystemTime = _NtQuerySystemTime@4 @737 768 ; ZwQueryTimer @738 769 ZwQueryTimerResolution = _NtQueryTimerResolution@12 @739 770 ZwQueryValueKey = _NtQueryValueKey@24 @740 771 ; ZwQueryVirtualMemory @741 772 ; ZwQueryVolumeInformationFile @742 773 ; ZwQueueApcThread @743 774 ZwRaiseException = ___regs_NtRaiseException@16 @744 775 ; ZwRaiseHardError @745 776 ZwReadFile = _NtReadFile@36 @746 777 ; ZwReadFileScatter @747 778 ZwReadRequestData = _NtReadRequestData@20 @748 779 ; ZwReadVirtualMemory @749 780 ZwRegisterThreadTerminatePort = _NtRegisterThreadTerminatePort@4 @750 781 ; ZwReleaseMutant @751 782 ZwReleaseSemaphore = _NtReleaseSemaphore@12 @752 783 ; ZwRemoveIoCompletion @753 784 ZwReplaceKey = _NtReplaceKey@12 @754 785 ZwReplyPort = _NtReplyPort@16 @755 786 ZwReplyWaitReceivePort = _NtReplyWaitReceivePort@16 @756 787 ZwReplyWaitReplyPort = _NtReplyWaitReplyPort@16 @757 788 ; ZwReplyWaitSendChannel @758 789 ZwRequestPort = _NtRequestPort@16 @759 790 ZwRequestWaitReplyPort = _NtRequestWaitReplyPort@12 @760 791 ZwResetEvent = _NtResetEvent@8 @761 792 ZwRestoreKey = _NtRestoreKey@12 @762 793 ZwResumeThread = _NtResumeThread@8 @763 794 ZwSaveKey = _NtSaveKey@8 @764 795 ; ZwSendWaitReplyChannel @765 796 ; ZwSetContextChannel @766 797 ; ZwSetContextThread @767 798 ; ZwSetDefaultHardErrorPort @768 799 ; ZwSetDefaultLocale @769 800 ; ZwSetEaFile @770 801 ZwSetEvent = _NtSetEvent@8 @771 802 ; ZwSetHighEventPair @772 803 ; ZwSetHighWaitLowEventPair @773 804 ; ZwSetHighWaitLowThread @774 805 ZwSetInformationFile = _NtSetInformationFile@20 @775 806 ZwSetInformationKey = _NtSetInformationKey@16 @776 807 ; ZwSetInformationObject @777 808 ZwSetInformationProcess = _NtSetInformationProcess@16 @778 809 ZwSetInformationThread = _NtSetInformationThread@16 @779 810 ; ZwSetInformationToken @780 811 ZwSetIntervalProfile = _NtSetIntervalProfile@8 @781 812 ; ZwSetIoCompletion @782 813 ; ZwSetLdtEntries @783 814 ; ZwSetLowEventPair @784 815 ; ZwSetLowWaitHighEventPair @785 816 ; ZwSetLowWaitHighThread @786 817 ; ZwSetSecurityObject @787 818 ; ZwSetSystemEnvironmentValue @788 819 ; ZwSetSystemInformation @789 820 ; ZwSetSystemPowerState @790 821 ; ZwSetSystemTime @791 822 ZwSetTimer = _NtSetTimer@28 @792 823 ; ZwSetTimerResolution @793 824 ZwSetValueKey = _NtSetValueKey@24 @794 825 ZwSetVolumeInformationFile = _NtSetVolumeInformationFile@20 @795 826 ; ZwShutdownSystem @796 827 ; ZwSignalAndWaitForSingleObject @797 828 ; ZwStartProfile @798 829 ; ZwStopProfile @799 830 ; ZwSuspendThread @800 831 832 ; ZwSystemDebugControl @801 833 ZwTerminateProcess = _NtTerminateProcess@8 @802 834 ZwTerminateThread = _NtTerminateThread@8 @803 835 ZwTestAlert = _NtTestAlert@8 @804 836 ; ZwUnloadDriver @805 837 ZwUnloadKey = _NtUnloadKey@4 @806 838 ; ZwUnlockFile @807 839 ; ZwUnlockVirtualMemory @808 840 ; ZwUnmapViewOfSection @809 841 ; ZwVdmControl @810 842 ; ZwWaitForMultipleObjects @811 843 ZwWaitForSingleObject = _NtWaitForSingleObject@12 @812 844 ; ZwWaitHighEventPair @813 845 ; ZwWaitLowEventPair @814 846 ; ZwWriteFile @815 847 ; ZwWriteFileGather @816 848 ZwWriteRequestData = _NtWriteRequestData@20 @817 849 ; ZwWriteVirtualMemory @818 850 ; ZwYieldExecution @819 851 852 853 _CIpow = NTDLL__CIpow @820 854 ; __eCommonExceptions @821 855 ; __eEmulatorInit @822 856 ; __eF2XM1 @823 857 ; __eFABS @824 858 ; __eFADD32 @825 859 ; __eFADD64 @826 860 ; __eFADDPreg @827 861 ; __eFADDreg @828 862 ; __eFADDtop @829 863 ; __eFCHS @830 864 ; __eFCOM @831 865 ; __eFCOM32 @832 866 ; __eFCOM64 @833 867 ; __eFCOMP @834 868 ; __eFCOMP32 @835 869 ; __eFCOMP64 @836 870 ; __eFCOMPP @837 871 ; __eFCOS @838 872 ; __eFDECSTP @839 873 ; __eFDIV32 @840 874 ; __eFDIV64 @841 875 ; __eFDIVPreg @842 876 ; __eFDIVR32 @843 877 ; __eFDIVR64 @844 878 ; __eFDIVRPreg @845 879 ; __eFDIVRreg @846 880 ; __eFDIVRtop @847 881 ; __eFDIVreg @848 882 ; __eFDIVtop @849 883 ; __eFFREE @850 884 ; __eFIADD16 @851 885 ; __eFIADD32 @852 886 ; __eFICOM16 @853 887 ; __eFICOM32 @854 888 ; __eFICOMP16 @855 889 ; __eFICOMP32 @856 890 ; __eFIDIV16 @857 891 ; __eFIDIV32 @858 892 ; __eFIDIVR16 @859 893 ; __eFIDIVR32 @860 894 ; __eFILD16 @861 895 ; __eFILD32 @862 896 ; __eFILD64 @863 897 ; __eFIMUL16 @864 898 ; __eFIMUL32 @865 899 ; __eFINCSTP @866 900 ; __eFINIT @867 901 ; __eFIST16 @868 902 ; __eFIST32 @869 903 ; __eFISTP16 @870 904 ; __eFISTP32 @871 905 ; __eFISTP64 @872 906 ; __eFISUB16 @873 907 ; __eFISUB32 @874 908 ; __eFISUBR16 @875 909 ; __eFISUBR32 @876 910 ; __eFLD1 @877 911 ; __eFLD32 @878 912 ; __eFLD64 @879 913 ; __eFLD80 @880 914 ; __eFLDCW @881 915 ; __eFLDENV @882 916 ; __eFLDL2E @883 917 ; __eFLDLN2 @884 918 ; __eFLDPI @885 919 ; __eFLDZ @886 920 ; __eFMUL32 @887 921 ; __eFMUL64 @888 922 ; __eFMULPreg @889 923 ; __eFMULreg @890 924 ; __eFMULtop @891 925 ; __eFPATAN @892 926 ; __eFPREM @893 927 ; __eFPREM1 @894 928 ; __eFPTAN @895 929 ; __eFRNDINT @896 930 ; __eFRSTOR @897 931 ; __eFSAVE @898 932 ; __eFSCALE @899 933 ; __eFSIN @900 934 935 ; __eFSQRT @901 936 ; __eFST @902 937 ; __eFST32 @903 938 ; __eFST64 @904 939 ; __eFSTCW @905 940 ; __eFSTENV @906 941 ; __eFSTP @907 942 ; __eFSTP32 @908 943 ; __eFSTP64 @909 944 ; __eFSTP80 @910 945 ; __eFSTSW @911 946 ; __eFSUB32 @912 947 ; __eFSUB64 @913 948 ; __eFSUBPreg @914 949 ; __eFSUBR32 @915 950 ; __eFSUBR64 @916 951 ; __eFSUBRPreg @917 952 ; __eFSUBRreg @918 953 ; __eFSUBRtop @919 954 ; __eFSUBreg @920 955 ; __eFSUBtop @921 956 ; __eFTST @922 957 ; __eFUCOM @923 958 ; __eFUCOMP @924 959 ; __eFUCOMPP @925 960 ; __eFXAM @926 961 ; __eFXCH @927 962 ; __eFXTRACT @928 963 ; __eFYL2X @929 964 ; __eFYL2XP1 @930 965 ; __eGetStatusWord @931 966 _allrem = __allrem@16 @939 967 ; _allshl @940 968 ; _allshr @941 969 _atoi64 @942 970 _aulldiv = __aulldiv@16 @943 971 _aullrem = __allrem@16 @944 972 ; _aullshr @945 973 _chkstk = _chkstk @946 974 ; _fltused @947 975 _ftol = NTDLL__ftol @948 976 _i64toa @949 977 _i64tow @950 978 _itoa = NTDLL_itoa @951 979 _itow @952 980 _ltoa = NTDLL_ltoa @953 981 _ltow @954 982 _memccpy @955 983 _memicmp = NTDLL__memicmp @956 984 _snprintf = _snprintf @957 985 _snwprintf = _snwprintf @958 986 _splitpath = _splitpath @959 987 _strcmpi = _stricmp @960 988 _stricmp = _stricmp @961 989 _strlwr = _strlwr @962 990 _strnicmp @963 991 _strupr @964 992 _ultoa = NTDLL_ultoa @967 993 _ultow @968 994 _vsnprintf @969 995 _wcsicmp = NTDLL__wcsicmp @970 996 _wcslwr = NTDLL__wcslwr @971 997 _wcsnicmp = NTDLL__wcsnicmp @972 998 _wcsupr = NTDLL__wcsupr @973 999 _wtoi @974 1000 _wtoi64 @975 1001 _wtol @976 1002 1003 ; Borrow most funcs from our internal Odin EMX runtime 1004 1005 abs = emx_abs @977 1006 atan = emx_atan @978 1007 atoi = emx_atoi @979 1008 atol = emx_atol @980 1009 ceil = emx_ceil @981 1010 cos = emx_cos @982 1011 fabs = emx_fabs @983 1012 floor = emx_floor @984 1013 isalnum = emx_isalnum @985 1014 isalpha = emx_isalpha @986 1015 iscntrl = emx_iscntrl @987 1016 isdigit = emx_isdigit @988 1017 isgraph = emx_isgraph @989 1018 islower = emx_islower @990 1019 isprint = emx_isprint @991 1020 ispunct = emx_ispunct @992 1021 isspace = emx_isspace @993 1022 isupper = emx_isupper @994 1099 1023 iswalpha = NTDLL_iswalpha @995 1100 iswctype = NTDLL_iswctype @996 1101 isxdigit @997 1102 labs @998 1103 log @999 1104 mbstowcs = NTDLL_mbstowcs @1000 1105 1106 memchr @1001 1107 memcmp @1002 1108 memcpy @1003 1109 memmove @1004 1110 memset @1005 1111 pow @1106 1112 qsort @1007 1113 sin @1008 1114 sprintf @1009 1115 sqrt @1010 1116 sscanf @1011 1117 strcat @1012 1118 strchr @1013 1119 strcmp @1014 1120 strcpy @1015 1121 strcspn @1016 1122 strlen @1017 1123 strncat @1018 1124 strncmp @1019 1125 strncpy @1020 1126 strpbrk @1021 1127 strrchr @1022 1128 strspn @1023 1129 strstr @1024 1130 strtol @1025 1131 strtoul @1026 1132 swprintf = NTDLL_swprintf @1027 1133 tan @1028 1134 tolower @1029 1135 toupper @1030 1136 towlower = NTDLL_towlower @1031 1137 towupper = NTDLL_towupper @1032 1138 vsprintf @1033 1139 1140 wcscat = NTDLL_wcscat @1034 1141 wcschr = NTDLL_wcschr @1035 1142 wcscmp = NTDLL_wcscmp @1036 1143 wcscpy = NTDLL_wcscpy @1037 1144 wcscspn = NTDLL_wcscspn @1038 1145 wcslen = NTDLL_wcslen @1039 1146 wcsncat = NTDLL_wcsncat @1040 1147 wcsncmp = NTDLL_wcsncmp @1041 1148 wcsncpy = NTDLL_wcsncpy @1042 1149 wcspbrk = NTDLL_wcspbrk @1043 1150 wcsrchr = NTDLL_wcsrchr @1044 1151 wcsspn = NTDLL_wcsspn @1045 1152 wcsstr = NTDLL_wcsstr @1046 1153 wcstok = NTDLL_wcstok @1050 1154 wcstol = NTDLL_wcstol @1047 1155 wcstombs = NTDLL_wcstombs @1048 1156 wcstoul = NTDLL_wcstoul @1049 1157 RtlGetNtVersionNumbers @1051 1024 iswctype = NTDLL_iswctype @996 1025 isxdigit = emx_isxdigit @997 1026 labs = emx_labs @998 1027 log = emx_log @999 1028 mbstowcs = NTDLL_mbstowcs @1000 1029 1030 memchr = emx_memchr @1001 1031 memcmp = emx_memcmp @1002 1032 memcpy = emx_memcpy @1003 1033 memmove = emx_memmove @1004 1034 memset = emx_memset @1005 1035 pow = emx_pow @1106 1036 qsort = emx_qsort @1007 1037 sin = emx_sin @1008 1038 sprintf = emx_sprintf @1009 1039 sqrt = emx_sqrt @1010 1040 sscanf = emx_sscanf @1011 1041 strcat = emx_strcat @1012 1042 strchr = emx_strchr @1013 1043 strcmp = emx_strcmp @1014 1044 strcpy = emx_strcpy @1015 1045 strcspn = emx_strcspn @1016 1046 strlen = emx_strlen @1017 1047 strncat = emx_strncat @1018 1048 strncmp = emx_strncmp @1019 1049 strncpy = emx_strncpy @1020 1050 strpbrk = emx_strpbrk @1021 1051 strrchr = emx_strrchr @1022 1052 strspn = emx_strspn @1023 1053 strstr = emx_strstr @1024 1054 strtol = emx_strtol @1025 1055 strtoul = emx_strtoul @1026 1056 swprintf = NTDLL_swprintf @1027 1057 tan = emx_tan @1028 1058 tolower = emx_tolower @1029 1059 toupper = emx_toupper @1030 1060 towlower = NTDLL_towlower @1031 1061 towupper = NTDLL_towupper @1032 1062 vsprintf = emx_vsprintf @1033 1063 1064 wcscat = NTDLL_wcscat @1034 1065 wcschr = NTDLL_wcschr @1035 1066 wcscmp = NTDLL_wcscmp @1036 1067 wcscpy = NTDLL_wcscpy @1037 1068 wcscspn = NTDLL_wcscspn @1038 1069 wcslen = NTDLL_wcslen @1039 1070 wcsncat = NTDLL_wcsncat @1040 1071 wcsncmp = NTDLL_wcsncmp @1041 1072 wcsncpy = NTDLL_wcsncpy @1042 1073 wcspbrk = NTDLL_wcspbrk @1043 1074 wcsrchr = NTDLL_wcsrchr @1044 1075 wcsspn = NTDLL_wcsspn @1045 1076 wcsstr = NTDLL_wcsstr @1046 1077 wcstok = NTDLL_wcstok @1050 1078 wcstol = NTDLL_wcstol @1047 1079 wcstombs = NTDLL_wcstombs @1048 1080 wcstoul = NTDLL_wcstoul @1049 1158 1081 1159 1082 ; Not found in NTDLL-SP6: 1160 DebugBreak = __ regs_DebugBreak@12001161 NtPowerInformation = NtPowerInformation@12011083 DebugBreak = ___regs_DebugBreak@4 @1200 1084 NtPowerInformation = _NtPowerInformation@20 @1201 1162 1085 1163 1086 ; Odin private functions 1164 RtlpLargeIntegerAdd @1300 1165 1087 _RtlpLargeIntegerAdd@8 @1300 1088 1089 ; latest NTDLL additions start from 2000 1090 1091 RtlInt64ToUnicodeString = _RtlInt64ToUnicodeString@16 @2000 1092 RtlComputeCrc32 = _RtlComputeCrc32@12 @2001 1093 RtlDowncaseUnicodeChar = _RtlDowncaseUnicodeChar@4 @2002 1094 iswdigit = NTDLL_iswdigit @2003 1095 iswlower = NTDLL_iswlower @2004 1096 iswspace = NTDLL_iswspace @2005 1097 iswxdigit = NTDLL_iswxdigit @2006 1098 _alldiv = __alldiv@16 @2007 1099 _allmul = __allmul@16 @2008 1100 _ui64toa @2009 1101 _ui64tow @2010 -
trunk/src/NTDLL/ntdll.h
r9803 r9986 1 /* $Id: ntdll.h,v 1.1 5 2003-02-13 17:17:06sandervl Exp $ */1 /* $Id: ntdll.h,v 1.16 2003-04-07 18:40:50 sandervl Exp $ */ 2 2 3 3 /* -
trunk/src/NTDLL/ntdllrsrc.orc
r9684 r9986 1 /* $Id: ntdllrsrc.orc,v 1. 2 2003-01-16 15:22:38sandervl Exp $ */1 /* $Id: ntdllrsrc.orc,v 1.3 2003-04-07 18:40:50 sandervl Exp $ */ 2 2 3 3 #include "winuser.h" -
trunk/src/NTDLL/reg.c
r9684 r9986 1 /* $Id: reg.c,v 1. 3 2003-01-16 15:22:39sandervl Exp $ */1 /* $Id: reg.c,v 1.4 2003-04-07 18:40:50 sandervl Exp $ */ 2 2 3 3 /* -
trunk/src/NTDLL/regfunc.asm
r9684 r9986 1 ; $Id: regfunc.asm,v 1. 4 2003-01-16 15:22:39sandervl Exp $1 ; $Id: regfunc.asm,v 1.5 2003-04-07 18:40:51 sandervl Exp $ 2 2 3 3 ;/* -
trunk/src/NTDLL/rtl.c
r9731 r9986 1 /* $Id: rtl.c,v 1. 4 2003-01-23 20:22:00sandervl Exp $ */1 /* $Id: rtl.c,v 1.5 2003-04-07 18:40:51 sandervl Exp $ */ 2 2 3 3 /* … … 19 19 #include <stdio.h> 20 20 #include <string.h> 21 21 22 #include <odinwrap.h> 22 23 … … 36 37 ODINDEBUGCHANNEL(NTDLL-RTL) 37 38 39 static CRITICAL_SECTION peb_lock = CRITICAL_SECTION_INIT("peb_lock"); 40 41 /* CRC polynomial 0xedb88320 */ 42 static const DWORD CRC_table[256] = 43 { 44 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 45 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 46 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2, 47 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 48 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 49 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 50 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c, 51 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 52 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 53 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 54 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106, 55 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433, 56 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 57 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 58 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950, 59 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65, 60 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 61 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 62 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 63 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f, 64 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 65 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 66 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84, 67 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 68 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 69 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 70 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e, 71 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 72 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 73 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 74 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28, 75 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d, 76 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 77 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 78 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242, 79 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777, 80 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 81 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 82 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 83 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9, 84 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 85 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 86 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d 87 }; 88 38 89 39 90 /* … … 54 105 void WINAPI RtlInitializeResource(LPRTL_RWLOCK rwl) 55 106 { 56 dprintf(("NTDLL: RtlInitializeResource(%08xh)\n", 57 rwl)); 107 dprintf(("NTDLL: RtlInitializeResource(%08xh)\n", rwl)); 58 108 59 109 if( rwl ) … … 281 331 VOID WINAPI RtlAcquirePebLock(void) 282 332 { 283 dprintf(("NTDLL: RtlAcquirePebLock() not implemented.\n")); 284 285 /* enter critical section ? */ 333 EnterCriticalSection( &peb_lock ); 286 334 } 287 335 … … 292 340 VOID WINAPI RtlReleasePebLock(void) 293 341 { 294 dprintf(("NTDLL: RtlReleasePebLock() not implemented.\n")); 295 296 /* leave critical section ? */ 297 } 298 299 300 /****************************************************************************** 301 * RtlIntegerToChar [NTDLL] 302 */ 303 DWORD WINAPI RtlIntegerToChar(DWORD x1, 304 DWORD x2, 305 DWORD x3, 306 DWORD x4) 307 { 308 dprintf(("NTDLL: RtlIntegerToChar(%08xh,%08xh,%08xh,%08xh) not implemented.\n", 309 x1, 310 x2, 311 x3, 312 x4)); 313 314 return 0; 315 } 316 317 318 /****************************************************************************** 319 * RtlSetEnvironmentVariable [NTDLL] 320 */ 321 DWORD WINAPI RtlSetEnvironmentVariable(DWORD x1, 322 PUNICODE_STRING key, 323 PUNICODE_STRING val) 324 { 325 dprintf(("NTDLL: RtlSetEnvironmentVariable(%08xh,%08xh,%08xh) not implemented.\n", 326 x1, 327 key, 328 val)); 329 330 return 0; 331 } 332 333 334 /****************************************************************************** 335 * RtlNewSecurityObject [NTDLL] 336 */ 337 DWORD WINAPI RtlNewSecurityObject(DWORD x1, 338 DWORD x2, 339 DWORD x3, 340 DWORD x4, 341 DWORD x5, 342 DWORD x6) 343 { 344 dprintf(("NTDLL: RtlNewSecurityObject(%08xh,%08xh,%08xh,%08xh,%08xh,%08xh) not implemented.\n", 345 x1, 346 x2, 347 x3, 348 x4, 349 x5, 350 x6)); 351 352 return 0; 353 } 354 355 356 /****************************************************************************** 357 * RtlDeleteSecurityObject [NTDLL] 358 */ 359 DWORD WINAPI RtlDeleteSecurityObject(DWORD x1) 360 { 361 dprintf(("NTDLL: RtlDeleteSecurityObject(%08xh) not implemented.\n", 362 x1)); 363 364 return 0; 365 } 366 342 LeaveCriticalSection( &peb_lock ); 343 } 344 345 /****************************************************************************** 346 * RtlSetEnvironmentVariable [NTDLL.@] 347 */ 348 DWORD WINAPI RtlSetEnvironmentVariable(DWORD x1,PUNICODE_STRING key,PUNICODE_STRING val) { 349 FIXME("(0x%08lx,%s,%s),stub!\n",x1,debugstr_w(key->Buffer),debugstr_w(val->Buffer)); 350 return 0; 351 } 352 353 /****************************************************************************** 354 * RtlNewSecurityObject [NTDLL.@] 355 */ 356 DWORD WINAPI RtlNewSecurityObject(DWORD x1,DWORD x2,DWORD x3,DWORD x4,DWORD x5,DWORD x6) { 357 FIXME("(0x%08lx,0x%08lx,0x%08lx,0x%08lx,0x%08lx,0x%08lx),stub!\n",x1,x2,x3,x4,x5,x6); 358 return 0; 359 } 360 361 /****************************************************************************** 362 * RtlDeleteSecurityObject [NTDLL.@] 363 */ 364 DWORD WINAPI RtlDeleteSecurityObject(DWORD x1) { 365 FIXME("(0x%08lx),stub!\n",x1); 366 return 0; 367 } 367 368 368 369 /************************************************************************** 369 * RtlNormalizeProcessParams [NTDLL.441]370 * RtlNormalizeProcessParams [NTDLL.@] 370 371 */ 371 372 LPVOID WINAPI RtlNormalizeProcessParams(LPVOID x) 372 373 { 373 dprintf(("NTDLL: RtlNormalizeProcessParams(%08xh) not implemented.\n", 374 x)); 375 376 return x; 377 } 378 379 374 FIXME("(%p), stub\n",x); 375 return x; 376 } 380 377 381 378 /************************************************************************** 382 * RtlGetNtProductType [NTDLL.390]379 * RtlGetNtProductType [NTDLL.@] 383 380 */ 384 381 BOOLEAN WINAPI RtlGetNtProductType(LPDWORD type) 385 382 { 386 dprintf(("NTDLL: RtlGetNtProductType(%08xh) not correctly implemented.\n", 387 type)); 388 389 *type=3; /* dunno. 1 for client, 3 for server? */ 390 return 1; 391 } 392 383 FIXME("(%p): stub\n", type); 384 *type=3; /* dunno. 1 for client, 3 for server? */ 385 return 1; 386 } 393 387 394 388 … … 676 670 return 277; 677 671 } 672 673 /********************************************************************* 674 * RtlComputeCrc32 [NTDLL.@] 675 * 676 * Calculate the CRC32 checksum of a block of bytes 677 * 678 * PARAMS 679 * dwInitial [I] Initial CRC value 680 * pData [I] Data block 681 * iLen [I] Length of the byte block 682 * 683 * RETURNS 684 * The cumulative CRC32 of dwInitial and iLen bytes of the pData block. 685 */ 686 DWORD WINAPI RtlComputeCrc32(DWORD dwInitial, PBYTE pData, INT iLen) 687 { 688 DWORD crc = ~dwInitial; 689 690 TRACE("(%ld,%p,%d)\n", dwInitial, pData, iLen); 691 692 while (iLen > 0) 693 { 694 crc = CRC_table[(crc ^ *pData) & 0xff] ^ (crc >> 8); 695 pData++; 696 iLen--; 697 } 698 return ~crc; 699 } -
trunk/src/NTDLL/rtlbitmap.c
r9733 r9986 28 28 * Note that to avoid unexpected behaviour, the size of a bitmap should be set 29 29 * to a multiple of 32. 30 31 */ 32 #include <winbase.h> 30 */ 31 #include <stdlib.h> 32 #include <string.h> 33 #include "windef.h" 33 34 #include "winternl.h" 34 35 #include "wine/debug.h" … … 50 51 51 52 /* Last set bit in a nibble; used for determining most significant bit */ 52 static const BYTENTDLL_mostSignificant[16] = {53 0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 353 static const signed char NTDLL_mostSignificant[16] = { 54 -1, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3 54 55 }; 55 56 … … 568 569 * Find the most significant bit in a 64 bit integer. 569 570 * 570 * PARAMS571 * lpBits [I] Bitmap pointer572 * ulStart [I] First bit to search from573 *574 571 * RETURNS 575 572 * The position of the most significant bit. … … 577 574 CCHAR WINAPI RtlFindMostSignificantBit(ULONGLONG ulLong) 578 575 { 579 LONG lCount = 64; 580 LPBYTE lpOut = (LPBYTE)&ulLong + 7; 581 582 TRACE("(%lld)\n", ulLong); 583 584 if (!(ulLong & 0xffffffff00000000ul)) 585 { 586 lpOut -= 4; 587 lCount -= 32; 588 } 589 590 for (; lCount > 0; lCount -= 8) 591 { 592 if (*lpOut) 593 { 594 if (*lpOut & 0x0f) 595 return lCount - 8 + NTDLL_mostSignificant[*lpOut & 0x0f]; 596 return lCount - 4 + NTDLL_mostSignificant[*lpOut >> 4]; 597 } 598 lpOut--; 599 } 600 return -1; 576 signed char ret = 32; 577 DWORD dw; 578 579 if (!(dw = (ulLong >> 32))) 580 { 581 ret = 0; 582 dw = (DWORD)ulLong; 583 } 584 if (dw & 0xffff0000) 585 { 586 dw >>= 16; 587 ret += 16; 588 } 589 if (dw & 0xff00) 590 { 591 dw >>= 8; 592 ret += 8; 593 } 594 if (dw & 0xf0) 595 { 596 dw >>= 4; 597 ret += 4; 598 } 599 return ret + NTDLL_mostSignificant[dw]; 601 600 } 602 601 … … 606 605 * Find the least significant bit in a 64 bit integer. 607 606 * 608 * PARAMS609 * lpBits [I] Bitmap pointer610 * ulStart [I] First bit to search from611 *612 607 * RETURNS 613 608 * The position of the least significant bit. … … 615 610 CCHAR WINAPI RtlFindLeastSignificantBit(ULONGLONG ulLong) 616 611 { 617 ULONG ulCount = 0; 618 LPBYTE lpOut = (LPBYTE)&ulLong; 619 620 TRACE("(%lld)\n", ulLong); 621 622 if (!(ulLong & 0xffffffff)) 623 { 624 lpOut += 4; 625 ulCount = 32; 626 } 627 628 for (; ulCount < 64; ulCount += 8) 629 { 630 if (*lpOut) 631 { 632 if (*lpOut & 0x0f) 633 return ulCount + NTDLL_leastSignificant[*lpOut & 0x0f]; 634 return ulCount + 4 + NTDLL_leastSignificant[*lpOut >> 4]; 635 } 636 lpOut++; 637 } 638 return -1; 612 signed char ret = 0; 613 DWORD dw; 614 615 if (!(dw = (DWORD)ulLong)) 616 { 617 ret = 32; 618 if (!(dw = ulLong >> 32)) return -1; 619 } 620 if (!(dw & 0xffff)) 621 { 622 dw >>= 16; 623 ret += 16; 624 } 625 if (!(dw & 0xff)) 626 { 627 dw >>= 8; 628 ret += 8; 629 } 630 if (!(dw & 0x0f)) 631 { 632 dw >>= 4; 633 ret += 4; 634 } 635 return ret + NTDLL_leastSignificant[dw & 0x0f]; 639 636 } 640 637 … … 642 639 * NTDLL_RunSortFn 643 640 * 644 * Internal helper: qsort compar ason function for RTL_BITMAP_RUN arrays641 * Internal helper: qsort comparison function for RTL_BITMAP_RUN arrays 645 642 */ 646 643 static int NTDLL_RunSortFn(const void *lhs, const void *rhs) -
trunk/src/NTDLL/rtlstr.c
r9684 r9986 30 30 #include "wine/unicode.h" 31 31 #include "wine/debug.h" 32 #include "winnt.h" 32 33 33 34 WINE_DEFAULT_DEBUG_CHANNEL(ntdll); … … 155 156 memcpy( target->Buffer, src, len ); 156 157 target->MaximumLength = len; 157 target->Length = len - 2;158 target->Length = len - sizeof(WCHAR); 158 159 return TRUE; 159 160 } … … 336 337 } 337 338 339 /************************************************************************** 340 * RtlEqualComputerName (NTDLL.@) 341 * 342 * Determine if two computer names are the same. 343 * 344 * PARAMS 345 * left [I] First computer name 346 * right [I] Second computer name 347 * 348 * RETURNS 349 * 0 if the names are equal, non-zero otherwise. 350 * 351 * NOTES 352 * The comparason is case insensitive. 353 */ 354 NTSTATUS WINAPI RtlEqualComputerName(const UNICODE_STRING *left, 355 const UNICODE_STRING *right) 356 { 357 NTSTATUS ret; 358 STRING upLeft, upRight; 359 360 if (!(ret = RtlUpcaseUnicodeStringToOemString( &upLeft, left, TRUE ))) 361 { 362 if (!(ret = RtlUpcaseUnicodeStringToOemString( &upRight, right, TRUE ))) 363 { 364 ret = RtlEqualString( &upLeft, &upRight, FALSE ); 365 RtlFreeOemString( &upRight ); 366 } 367 RtlFreeOemString( &upLeft ); 368 } 369 return ret; 370 } 371 372 /************************************************************************** 373 * RtlEqualDomainName (NTDLL.@) 374 * 375 * Determine if two domain names are the same. 376 * 377 * PARAMS 378 * left [I] First domain name 379 * right [I] Second domain name 380 * 381 * RETURNS 382 * 0 if the names are equal, non-zero otherwise. 383 * 384 * NOTES 385 * The comparason is case insensitive. 386 */ 387 NTSTATUS WINAPI RtlEqualDomainName(const UNICODE_STRING *left, 388 const UNICODE_STRING *right) 389 { 390 return RtlEqualComputerName(left, right); 391 } 392 338 393 339 394 /* … … 527 582 528 583 /************************************************************************** 584 * RtlUpperChar (NTDLL.@) 585 * 586 * Converts an Ascii character to uppercase. 587 * 588 * PARAMS 589 * ch [I] Character to convert 590 * 591 * RETURNS 592 * The uppercase character value. 593 * 594 * NOTES 595 * For the input characters from 'a' .. 'z' it returns 'A' .. 'Z'. 596 * All other input characters are returned unchanged. The locale and 597 * multibyte characters are not taken into account (as native DLL). 598 */ 599 CHAR WINAPI RtlUpperChar( CHAR ch ) 600 { 601 if (ch >= 'a' && ch <= 'z') { 602 return ch - 'a' + 'A'; 603 } else { 604 return ch; 605 } /* if */ 606 } 607 608 /************************************************************************** 529 609 * RtlUpperString (NTDLL.@) 610 * 611 * Converts an Ascii string to uppercase. 612 * 613 * PARAMS 614 * dst [O] Destination for converted string 615 * src [I] Source string to convert 616 * 617 * RETURNS 618 * Nothing. 619 * 620 * NOTES 621 * For the src characters from 'a' .. 'z' it assigns 'A' .. 'Z' to dst. 622 * All other src characters are copied unchanged to dst. The locale and 623 * multibyte characters are not taken into account (as native DLL). 624 * The number of character copied is the minimum of src->Length and 625 * the dst->MaximumLength. 530 626 */ 531 627 void WINAPI RtlUpperString( STRING *dst, const STRING *src ) … … 533 629 unsigned int i, len = min(src->Length, dst->MaximumLength); 534 630 535 for (i = 0; i < len; i++) dst->Buffer[i] = toupper(src->Buffer[i]);631 for (i = 0; i < len; i++) dst->Buffer[i] = RtlUpperChar(src->Buffer[i]); 536 632 dst->Length = len; 537 633 } 538 634 635 636 /************************************************************************** 637 * RtlUpcaseUnicodeChar (NTDLL.@) 638 * 639 * Converts an Unicode character to uppercase. 640 * 641 * PARAMS 642 * wch [I] Character to convert 643 * 644 * RETURNS 645 * The uppercase character value. 646 */ 647 WCHAR WINAPI RtlUpcaseUnicodeChar( WCHAR wch ) 648 { 649 return toupperW(wch); 650 } 651 652 /************************************************************************** 653 * RtlDowncaseUnicodeChar (NTDLL.@) 654 * 655 * Converts an Unicode character to lowercase. 656 * 657 * PARAMS 658 * wch [I] Character to convert 659 * 660 * RETURNS 661 * The lowercase character value. 662 */ 663 WCHAR WINAPI RtlDowncaseUnicodeChar(WCHAR wch) 664 { 665 return tolowerW(wch); 666 } 539 667 540 668 /************************************************************************** … … 564 692 } 565 693 694 695 /************************************************************************** 696 * RtlDowncaseUnicodeString (NTDLL.@) 697 * 698 * Converts an Unicode string to lowercase. 699 * 700 * PARAMS 701 * dest [O] Destination for converted string 702 * src [I] Source string to convert 703 * doalloc [I] TRUE=Allocate a buffer for dest if it doesn't have one 704 * 705 * RETURNS 706 * Success: STATUS_SUCCESS. dest contains the converted string. 707 * Failure: STATUS_NO_MEMORY, if doalloc is TRUE and memory allocation fails, or 708 * STATUS_BUFFER_OVERFLOW, if doalloc is FALSE and dest is too small. 709 * 710 * NOTES 711 * dest is never NUL terminated because it may be equal to src, and src 712 * might not be NUL terminated. dest->Length is only set upon success. 713 */ 714 NTSTATUS WINAPI RtlDowncaseUnicodeString( 715 UNICODE_STRING *dest, 716 const UNICODE_STRING *src, 717 BOOLEAN doalloc) 718 { 719 DWORD i; 720 DWORD len = src->Length; 721 722 if (doalloc) { 723 dest->MaximumLength = len; 724 if (!(dest->Buffer = RtlAllocateHeap( GetProcessHeap(), 0, len ))) { 725 return STATUS_NO_MEMORY; 726 } /* if */ 727 } else if (len > dest->MaximumLength) { 728 return STATUS_BUFFER_OVERFLOW; 729 } /* if */ 730 731 for (i = 0; i < len/sizeof(WCHAR); i++) { 732 dest->Buffer[i] = tolowerW(src->Buffer[i]); 733 } /* for */ 734 dest->Length = len; 735 return STATUS_SUCCESS; 736 } 566 737 567 738 /************************************************************************** … … 788 959 { 789 960 unsigned int len = src->Length + dst->Length; 961 if (src->Length == 0) return STATUS_SUCCESS; 790 962 if (len > dst->MaximumLength) return STATUS_BUFFER_TOO_SMALL; 791 963 memcpy( dst->Buffer + dst->Length/sizeof(WCHAR), src->Buffer, src->Length ); … … 848 1020 849 1021 /************************************************************************** 850 * RtlUnicodeStringToInteger (NTDLL.@) 851 * 852 * Convert a text buffer into its integer form 1022 * RtlCharToInteger (NTDLL.@) 1023 * 1024 * Converts a character string into its integer equivalent. 1025 * 1026 * RETURNS 1027 * Success: STATUS_SUCCESS. value contains the converted number 1028 * Failure: STATUS_INVALID_PARAMETER, if base is not 0, 2, 8, 10 or 16. 1029 * STATUS_ACCESS_VIOLATION, if value is NULL. 1030 * 1031 * NOTES 1032 * For base 0 it uses 10 as base and the string should be in the format 1033 * "{whitespace} [+|-] [0[x|o|b]] {digits}". 1034 * For other bases the string should be in the format 1035 * "{whitespace} [+|-] {digits}". 1036 * No check is made for value overflow, only the lower 32 bits are assigned. 1037 * If str is NULL it crashes, as the native function does. 1038 * 1039 * DIFFERENCES 1040 * This function does not read garbage behind '\0' as the native version does. 1041 */ 1042 NTSTATUS WINAPI RtlCharToInteger( 1043 PCSZ str, /* [I] '\0' terminated single-byte string containing a number */ 1044 ULONG base, /* [I] Number base for conversion (allowed 0, 2, 8, 10 or 16) */ 1045 ULONG *value) /* [O] Destination for the converted value */ 1046 { 1047 CHAR chCurrent; 1048 int digit; 1049 ULONG RunningTotal = 0; 1050 char bMinus = 0; 1051 1052 while (*str != '\0' && *str <= ' ') { 1053 str++; 1054 } /* while */ 1055 1056 if (*str == '+') { 1057 str++; 1058 } else if (*str == '-') { 1059 bMinus = 1; 1060 str++; 1061 } /* if */ 1062 1063 if (base == 0) { 1064 base = 10; 1065 if (str[0] == '0') { 1066 if (str[1] == 'b') { 1067 str += 2; 1068 base = 2; 1069 } else if (str[1] == 'o') { 1070 str += 2; 1071 base = 8; 1072 } else if (str[1] == 'x') { 1073 str += 2; 1074 base = 16; 1075 } /* if */ 1076 } /* if */ 1077 } else if (base != 2 && base != 8 && base != 10 && base != 16) { 1078 return STATUS_INVALID_PARAMETER; 1079 } /* if */ 1080 1081 if (value == NULL) { 1082 return STATUS_ACCESS_VIOLATION; 1083 } /* if */ 1084 1085 while (*str != '\0') { 1086 chCurrent = *str; 1087 if (chCurrent >= '0' && chCurrent <= '9') { 1088 digit = chCurrent - '0'; 1089 } else if (chCurrent >= 'A' && chCurrent <= 'Z') { 1090 digit = chCurrent - 'A' + 10; 1091 } else if (chCurrent >= 'a' && chCurrent <= 'z') { 1092 digit = chCurrent - 'a' + 10; 1093 } else { 1094 digit = -1; 1095 } /* if */ 1096 if (digit < 0 || digit >= base) { 1097 *value = bMinus ? -RunningTotal : RunningTotal; 1098 return STATUS_SUCCESS; 1099 } /* if */ 1100 1101 RunningTotal = RunningTotal * base + digit; 1102 str++; 1103 } /* while */ 1104 1105 *value = bMinus ? -RunningTotal : RunningTotal; 1106 return STATUS_SUCCESS; 1107 } 1108 1109 /************************************************************************** 1110 * RtlIntegerToChar (NTDLL.@) 1111 * 1112 * Converts an unsigned integer to a character string. 1113 * 1114 * RETURNS 1115 * Success: STATUS_SUCCESS. str contains the converted number 1116 * Failure: STATUS_INVALID_PARAMETER, if base is not 0, 2, 8, 10 or 16. 1117 * STATUS_BUFFER_OVERFLOW, if str would be larger than length. 1118 * STATUS_ACCESS_VIOLATION, if str is NULL. 1119 * 1120 * NOTES 1121 * Instead of base 0 it uses 10 as base. 1122 * Writes at most length characters to the string str. 1123 * Str is '\0' terminated when length allowes it. 1124 * When str fits exactly in length characters the '\0' is ommitted. 1125 */ 1126 NTSTATUS WINAPI RtlIntegerToChar( 1127 ULONG value, /* [I] Value to be converted */ 1128 ULONG base, /* [I] Number base for conversion (allowed 0, 2, 8, 10 or 16) */ 1129 ULONG length, /* [I] Length of the str buffer in bytes */ 1130 PCHAR str) /* [O] Destination for the converted value */ 1131 { 1132 CHAR buffer[33]; 1133 PCHAR pos; 1134 CHAR digit; 1135 ULONG len; 1136 1137 if (base == 0) { 1138 base = 10; 1139 } else if (base != 2 && base != 8 && base != 10 && base != 16) { 1140 return STATUS_INVALID_PARAMETER; 1141 } /* if */ 1142 1143 pos = &buffer[32]; 1144 *pos = '\0'; 1145 1146 do { 1147 pos--; 1148 digit = value % base; 1149 value = value / base; 1150 if (digit < 10) { 1151 *pos = '0' + digit; 1152 } else { 1153 *pos = 'A' + digit - 10; 1154 } /* if */ 1155 } while (value != 0L); 1156 1157 len = &buffer[32] - pos; 1158 if (len > length) { 1159 return STATUS_BUFFER_OVERFLOW; 1160 } else if (str == NULL) { 1161 return STATUS_ACCESS_VIOLATION; 1162 } else if (len == length) { 1163 memcpy(str, pos, len); 1164 } else { 1165 memcpy(str, pos, len + 1); 1166 } /* if */ 1167 return STATUS_SUCCESS; 1168 } 1169 1170 /************************************************************************** 1171 * RtlUnicodeStringToInteger (NTDLL.@) 1172 * 1173 * Converts an unicode string into its integer equivalent. 1174 * 1175 * RETURNS 1176 * Success: STATUS_SUCCESS. value contains the converted number 1177 * Failure: STATUS_INVALID_PARAMETER, if base is not 0, 2, 8, 10 or 16. 1178 * STATUS_ACCESS_VIOLATION, if value is NULL. 1179 * 1180 * NOTES 1181 * For base 0 it uses 10 as base and the string should be in the format 1182 * "{whitespace} [+|-] [0[x|o|b]] {digits}". 1183 * For other bases the string should be in the format 1184 * "{whitespace} [+|-] {digits}". 1185 * No check is made for value overflow, only the lower 32 bits are assigned. 1186 * If str is NULL it crashes, as the native function does. 1187 * 1188 * DIFFERENCES 1189 * This function does not read garbage on string length 0 as the native 1190 * version does. 853 1191 */ 854 1192 NTSTATUS WINAPI RtlUnicodeStringToInteger( 855 const UNICODE_STRING *str, 856 int base, 857 int * pdest) 858 { 859 LPWSTR lpwstr = str->Buffer; 860 WCHAR wchCurrent = 0; 861 int CharsParsed = 0; 862 int RunningTotal = 0; 863 char bMinus = 0; 864 865 /* no checking done on UNICODE_STRING and int* in native DLL either */ 866 TRACE("(%p, %d, %p)", str, base, pdest); 867 868 switch (base) 869 { 870 case 0: 871 base = 10; 872 break; 873 case 2: 874 case 8: 875 case 10: 876 case 16: 877 break; 878 default: 879 return STATUS_INVALID_PARAMETER; 880 } 881 882 if ((str->Length) >= 4 && (base == 10) && (*lpwstr == '0') && (*(lpwstr+1) == 'x')) 883 { 884 lpwstr+=2; 1193 const UNICODE_STRING *str, /* [I] Unicode string to be converted */ 1194 ULONG base, /* [I] Number base for conversion (allowed 0, 2, 8, 10 or 16) */ 1195 ULONG *value) /* [O] Destination for the converted value */ 1196 { 1197 LPWSTR lpwstr = str->Buffer; 1198 USHORT CharsRemaining = str->Length / sizeof(WCHAR); 1199 WCHAR wchCurrent; 1200 int digit; 1201 ULONG RunningTotal = 0; 1202 char bMinus = 0; 1203 1204 while (CharsRemaining >= 1 && *lpwstr <= ' ') { 1205 lpwstr++; 1206 CharsRemaining--; 1207 } /* while */ 1208 1209 if (CharsRemaining >= 1) { 1210 if (*lpwstr == '+') { 1211 lpwstr++; 1212 CharsRemaining--; 1213 } else if (*lpwstr == '-') { 1214 bMinus = 1; 1215 lpwstr++; 1216 CharsRemaining--; 1217 } /* if */ 1218 } /* if */ 1219 1220 if (base == 0) { 1221 base = 10; 1222 if (CharsRemaining >= 2 && lpwstr[0] == '0') { 1223 if (lpwstr[1] == 'b') { 1224 lpwstr += 2; 1225 CharsRemaining -= 2; 1226 base = 2; 1227 } else if (lpwstr[1] == 'o') { 1228 lpwstr += 2; 1229 CharsRemaining -= 2; 1230 base = 8; 1231 } else if (lpwstr[1] == 'x') { 1232 lpwstr += 2; 1233 CharsRemaining -= 2; 885 1234 base = 16; 886 } 887 888 *pdest = 0; 889 for (; (CharsParsed*sizeof(WCHAR) < str->Length) && (*lpwstr <= ' '); lpwstr++) 890 CharsParsed++; 891 892 if (*lpwstr == '+') 893 lpwstr++; 894 else if (*lpwstr == '-') 895 { 896 bMinus = 1; 897 lpwstr++; 898 } 899 900 for (; (CharsParsed*sizeof(WCHAR) < str->Length) && (*lpwstr != '\0'); lpwstr++) 901 { 902 CharsParsed++; 903 wchCurrent = *lpwstr; 904 if (wchCurrent >= 'A') 905 wchCurrent = '0' + 10 + wchCurrent - 'A'; 906 if ((wchCurrent - '0') >= base || wchCurrent < '0') 907 { 908 *pdest = bMinus ? -RunningTotal: RunningTotal; 909 return STATUS_SUCCESS; 910 } 911 /* 912 * increase significance of previous digits each time 913 * we find another valid one and add on this valid one 914 */ 915 RunningTotal = wchCurrent - '0' + RunningTotal * base; 916 } 917 918 *pdest = bMinus ? -RunningTotal : RunningTotal; 919 return STATUS_SUCCESS; 920 } 1235 } /* if */ 1236 } /* if */ 1237 } else if (base != 2 && base != 8 && base != 10 && base != 16) { 1238 return STATUS_INVALID_PARAMETER; 1239 } /* if */ 1240 1241 if (value == NULL) { 1242 return STATUS_ACCESS_VIOLATION; 1243 } /* if */ 1244 1245 while (CharsRemaining >= 1) { 1246 wchCurrent = *lpwstr; 1247 if (wchCurrent >= '0' && wchCurrent <= '9') { 1248 digit = wchCurrent - '0'; 1249 } else if (wchCurrent >= 'A' && wchCurrent <= 'Z') { 1250 digit = wchCurrent - 'A' + 10; 1251 } else if (wchCurrent >= 'a' && wchCurrent <= 'z') { 1252 digit = wchCurrent - 'a' + 10; 1253 } else { 1254 digit = -1; 1255 } /* if */ 1256 if (digit < 0 || digit >= base) { 1257 *value = bMinus ? -RunningTotal : RunningTotal; 1258 return STATUS_SUCCESS; 1259 } /* if */ 1260 1261 RunningTotal = RunningTotal * base + digit; 1262 lpwstr++; 1263 CharsRemaining--; 1264 } /* while */ 1265 1266 *value = bMinus ? -RunningTotal : RunningTotal; 1267 return STATUS_SUCCESS; 1268 } 1269 1270 /************************************************************************** 1271 * RtlIntegerToUnicodeString (NTDLL.@) 1272 * 1273 * Converts an unsigned integer to a '\0' terminated unicode string. 1274 * 1275 * RETURNS 1276 * Success: STATUS_SUCCESS. str contains the converted number 1277 * Failure: STATUS_INVALID_PARAMETER, if base is not 0, 2, 8, 10 or 16. 1278 * STATUS_BUFFER_OVERFLOW, if str is too small to hold the string 1279 * (with the '\0' termination). In this case str->Length 1280 * is set to the length, the string would have (which can 1281 * be larger than the MaximumLength). 1282 * 1283 * NOTES 1284 * Instead of base 0 it uses 10 as base. 1285 * If str is NULL it crashes, as the native function does. 1286 * 1287 * DIFFERENCES 1288 * Do not return STATUS_BUFFER_OVERFLOW when the string is long enough. 1289 * The native function does this when the string would be longer than 16 1290 * characters even when the string parameter is long enough. 1291 */ 1292 NTSTATUS WINAPI RtlIntegerToUnicodeString( 1293 ULONG value, /* [I] Value to be converted */ 1294 ULONG base, /* [I] Number base for conversion (allowed 0, 2, 8, 10 or 16) */ 1295 UNICODE_STRING *str) /* [O] Destination for the converted value */ 1296 { 1297 WCHAR buffer[33]; 1298 PWCHAR pos; 1299 WCHAR digit; 1300 1301 if (base == 0) { 1302 base = 10; 1303 } else if (base != 2 && base != 8 && base != 10 && base != 16) { 1304 return STATUS_INVALID_PARAMETER; 1305 } /* if */ 1306 1307 pos = &buffer[32]; 1308 *pos = '\0'; 1309 1310 do { 1311 pos--; 1312 digit = value % base; 1313 value = value / base; 1314 if (digit < 10) { 1315 *pos = '0' + digit; 1316 } else { 1317 *pos = 'A' + digit - 10; 1318 } /* if */ 1319 } while (value != 0L); 1320 1321 str->Length = (&buffer[32] - pos) * sizeof(WCHAR); 1322 if (str->Length >= str->MaximumLength) { 1323 return STATUS_BUFFER_OVERFLOW; 1324 } else { 1325 memcpy(str->Buffer, pos, str->Length + sizeof(WCHAR)); 1326 } /* if */ 1327 return STATUS_SUCCESS; 1328 } -
trunk/src/NTDLL/sec.c
r9684 r9986 1 /* $Id: sec.c,v 1. 3 2003-01-16 15:22:40sandervl Exp $ */1 /* $Id: sec.c,v 1.4 2003-04-07 18:40:52 sandervl Exp $ */ 2 2 3 3 /* … … 16 16 #include <stdlib.h> 17 17 #include <string.h> 18 18 19 #include <time.h> 19 20 #include <ctype.h> -
trunk/src/NTDLL/string.c
r9684 r9986 25 25 #include <string.h> 26 26 27 27 28 #include "windef.h" 28 29 … … 30 31 * _memicmp (NTDLL.@) 31 32 */ 32 #ifdef __WIN32OS2__ 33 INT __cdecl NTDLL_memicmp( LPCSTR s1, LPCSTR s2, DWORD len ) 34 #else 35 INT __cdecl _memicmp( LPCSTR s1, LPCSTR s2, DWORD len ) 36 #endif 33 INT __cdecl NTDLL__memicmp( LPCSTR s1, LPCSTR s2, DWORD len ) 37 34 { 38 35 int ret = 0; … … 73 70 */ 74 71 #ifdef __WIN32OS2__ 75 LPSTR __cdecl NTDLL_ultoa( unsigned long x, LPSTR buf, INT radix )72 LPSTR __cdecl NTDLL_ultoa( unsigned long value, LPSTR str, INT radix ) 76 73 #else 77 LPSTR __cdecl _ultoa( unsigned long x, LPSTR buf, INT radix )74 LPSTR __cdecl _ultoa( unsigned long value, LPSTR str, INT radix ) 78 75 #endif 79 76 { 80 char buffer[32], *p; 81 82 p = buffer + sizeof(buffer); 83 *--p = 0; 84 do 85 { 86 int rem = x % radix; 87 *--p = (rem <= 9) ? rem + '0' : rem + 'a' - 10; 88 x /= radix; 89 } while (x); 90 strcpy( buf, p ); 91 return buf; 77 char buffer[33]; 78 char *pos; 79 int digit; 80 81 pos = &buffer[32]; 82 *pos = '\0'; 83 84 do { 85 digit = value % radix; 86 value = value / radix; 87 if (digit < 10) { 88 *--pos = '0' + digit; 89 } else { 90 *--pos = 'a' + digit - 10; 91 } /* if */ 92 } while (value != 0L); 93 94 memcpy(str, pos, &buffer[32] - pos + 1); 95 return str; 92 96 } 93 97 … … 95 99 /********************************************************************* 96 100 * _ltoa (NTDLL.@) 97 */ 101 * 102 * RETURNS 103 * Always returns str. 104 * 105 * NOTES 106 * Converts value to a '\0' terminated string which is copied to str. 107 * The maximum length of the copied str is 33 bytes. If radix 108 * is 10 and value is negative, the value is converted with sign. 109 * Does not check if radix is in the range of 2 to 36. 110 * If str is NULL it crashes, as the native function does. 111 */ 112 98 113 #ifdef __WIN32OS2__ 99 LPSTR __cdecl NTDLL_ltoa( long x, LPSTR buf, INT radix )114 LPSTR __cdecl NTDLL_ltoa( long value, LPSTR str, INT radix ) 100 115 #else 101 LPSTR __cdecl _ltoa( long x, LPSTR buf, INT radix )116 LPSTR __cdecl _ltoa( long value, LPSTR str, INT radix ) 102 117 #endif 103 118 { 104 LPSTR p = buf; 105 if (x < 0) 106 { 107 *p++ = '-'; 108 x = -x; 109 } 110 _ultoa( x, p, radix ); 111 return buf; 119 unsigned long val; 120 int negative; 121 char buffer[33]; 122 char *pos; 123 int digit; 124 125 if (value < 0 && radix == 10) { 126 negative = 1; 127 val = -value; 128 } else { 129 negative = 0; 130 val = value; 131 } /* if */ 132 133 pos = &buffer[32]; 134 *pos = '\0'; 135 136 do { 137 digit = val % radix; 138 val = val / radix; 139 if (digit < 10) { 140 *--pos = '0' + digit; 141 } else { 142 *--pos = 'a' + digit - 10; 143 } /* if */ 144 } while (val != 0L); 145 146 if (negative) { 147 *--pos = '-'; 148 } /* if */ 149 150 memcpy(str, pos, &buffer[32] - pos + 1); 151 return str; 112 152 } 113 153 … … 122 162 #endif 123 163 { 124 return _ltoa( x, buf, radix ); 164 return NTDLL_ltoa( x, buf, radix ); 165 } 166 167 /********************************************************************* 168 * _ui64toa (NTDLL.@) 169 * 170 * Converts a large unsigned integer to a string. 171 * 172 * Assigns a '\0' terminated string to str and returns str. 173 * Does not check if radix is in the range of 2 to 36 (as native DLL). 174 * For str == NULL just crashes (as native DLL). 175 */ 176 char * __cdecl _ui64toa( ULONGLONG value, char *str, int radix ) 177 { 178 char buffer[65]; 179 char *pos; 180 int digit; 181 182 pos = &buffer[64]; 183 *pos = '\0'; 184 185 do { 186 digit = value % radix; 187 value = value / radix; 188 if (digit < 10) { 189 *--pos = '0' + digit; 190 } else { 191 *--pos = 'a' + digit - 10; 192 } /* if */ 193 } while (value != 0L); 194 195 memcpy(str, pos, &buffer[64] - pos + 1); 196 return str; 197 } 198 199 200 /********************************************************************* 201 * _i64toa (NTDLL.@) 202 * 203 * Converts a large integer to a string. 204 * 205 * Assigns a '\0' terminated string to str and returns str. If radix 206 * is 10 and value is negative, the value is converted with sign. 207 * Does not check if radix is in the range of 2 to 36 (as native DLL). 208 * For str == NULL just crashes (as native DLL). 209 * 210 * Difference: 211 * - The native DLL converts negative values (for base 10) wrong: 212 * -1 is converted to -18446744073709551615 213 * -2 is converted to -18446744073709551614 214 * -9223372036854775807 is converted to -9223372036854775809 215 * -9223372036854775808 is converted to -9223372036854775808 216 * The native msvcrt _i64toa function and our ntdll function do 217 * not have this bug. 218 */ 219 char * __cdecl _i64toa( LONGLONG value, char *str, int radix ) 220 { 221 ULONGLONG val; 222 int negative; 223 char buffer[65]; 224 char *pos; 225 int digit; 226 227 if (value < 0 && radix == 10) { 228 negative = 1; 229 val = -value; 230 } else { 231 negative = 0; 232 val = value; 233 } /* if */ 234 235 pos = &buffer[64]; 236 *pos = '\0'; 237 238 do { 239 digit = val % radix; 240 val = val / radix; 241 if (digit < 10) { 242 *--pos = '0' + digit; 243 } else { 244 *--pos = 'a' + digit - 10; 245 } /* if */ 246 } while (val != 0L); 247 248 if (negative) { 249 *--pos = '-'; 250 } /* if */ 251 252 memcpy(str, pos, &buffer[64] - pos + 1); 253 return str; 254 } 255 256 257 /********************************************************************* 258 * _atoi64 (NTDLL.@) 259 * 260 * Converts a string to a large integer. 261 * 262 * On success it returns the integer value otherwise it returns 0. 263 * Accepts: {whitespace} [+|-] {digits} 264 * No check of overflow: Just assigns lower 64 bits (as native DLL). 265 * Does not check for str != NULL (as native DLL). 266 */ 267 LONGLONG __cdecl _atoi64( char *str ) 268 { 269 ULONGLONG RunningTotal = 0; 270 char bMinus = 0; 271 272 while (*str == ' ' || (*str >= '\011' && *str <= '\015')) { 273 str++; 274 } /* while */ 275 276 if (*str == '+') { 277 str++; 278 } else if (*str == '-') { 279 bMinus = 1; 280 str++; 281 } /* if */ 282 283 while (*str >= '0' && *str <= '9') { 284 RunningTotal = RunningTotal * 10 + *str - '0'; 285 str++; 286 } /* while */ 287 288 return bMinus ? -RunningTotal : RunningTotal; 125 289 } 126 290 -
trunk/src/NTDLL/sync.c
r9684 r9986 1 /* $Id: sync.c,v 1. 3 2003-01-16 15:22:41sandervl Exp $ */1 /* $Id: sync.c,v 1.4 2003-04-07 18:40:52 sandervl Exp $ */ 2 2 3 3 /* -
trunk/src/NTDLL/time.c
r9684 r9986 427 427 428 428 TRACE("(%p, %p)\n", LocalTime, SystemTime); 429 430 429 RtlQueryTimeZoneInformation(&tzinfo); 431 430 SystemTime->QuadPart = LocalTime->QuadPart + tzinfo.Bias * 60 * (LONGLONG)10000000; -
trunk/src/NTDLL/unknown.c
r9684 r9986 1 /* $Id: unknown.c,v 1. 1 2003-01-16 15:22:42 sandervl Exp $ */1 /* $Id: unknown.c,v 1.2 2003-04-07 18:40:52 sandervl Exp $ */ 2 2 3 3 /* … … 48 48 return 0; 49 49 } 50 51 52 /*****************************************************************************53 * Name : _alldiv54 * Purpose : unknown55 * Parameters: unknown, probably wrong56 * Variables :57 * Result :58 * Remark : NTDLL.?59 * Status : UNTESTED STUB60 *61 * Author : Patrick Haller [Tue, 1999/06/01 09:00]62 *****************************************************************************/63 64 DWORD CDECL OS2_alldiv(DWORD x1,65 DWORD x2)66 {67 dprintf(("NTDLL: _alldiv(%08xh,%08xh) not implemented.\n",68 x1,69 x2));70 71 return (x1 / x2);72 }73 74 75 /*****************************************************************************76 * Name : _allmul77 * Purpose : unknown78 * Parameters: unknown, probably wrong79 * Variables :80 * Result :81 * Remark : NTDLL.?82 * Status : UNTESTED STUB83 *84 * Author : Patrick Haller [Tue, 1999/06/01 09:00]85 *****************************************************************************/86 87 DWORD CDECL OS2_allmul(DWORD x1,88 DWORD x2)89 {90 dprintf(("NTDLL: _allmul(%08xh,%08xh) not implemented.\n",91 x1,92 x2));93 94 return (x1 * x2);95 }96 97 98 /*****************************************************************************99 * Name : RtlLargeIntegerToChar100 * Purpose : unknown101 * Parameters: unknown, probably wrong102 * Variables :103 * Result :104 * Remark : NTDLL.?105 * Status : UNTESTED STUB106 *107 * Author : Patrick Haller [Tue, 1999/06/01 09:00]108 *****************************************************************************/109 110 DWORD WIN32API RtlLargeIntegerToChar(LARGE_INTEGER li,111 LPWSTR retstr,112 DWORD retlen)113 {114 dprintf(("NTDLL: RtlLargeIntegerToChar(%08xh,%08xh,%08xh) not implemented.\n",115 li,116 retstr,117 retlen));118 119 return 0;120 }121 122 123 50 124 51 /***************************************************************************** -
trunk/src/NTDLL/wcstring.c
r8429 r9986 4 4 * Copyright 2000 Alexandre Julliard 5 5 * Copyright 2000 Jon Griffiths 6 * Copyright 2003 Thomas Mertes 6 7 * 7 8 * This library is free software; you can redistribute it and/or … … 23 24 24 25 #include <ctype.h> 25 #include <limits.h>26 26 #include <stdlib.h> 27 27 #include <string.h> 28 28 #include <stdio.h> 29 30 #include "ntddk.h" 29 #include <limits.h> 30 31 #include "winternl.h" 31 32 #include "wine/unicode.h" 32 33 #include "wine/debug.h" … … 304 305 /********************************************************************* 305 306 * wcstol (NTDLL.@) 306 * Like strtol, but for wide character strings. 307 */ 308 INT __cdecl NTDLL_wcstol(LPCWSTR s,LPWSTR *end,INT base) 309 { 310 UNICODE_STRING uni; 311 ANSI_STRING ansi; 312 INT ret; 313 LPSTR endA; 314 315 RtlInitUnicodeString( &uni, s ); 316 RtlUnicodeStringToAnsiString( &ansi, &uni, TRUE ); 317 ret = strtol( ansi.Buffer, &endA, base ); 318 if (end) 319 { 320 DWORD len; 321 RtlMultiByteToUnicodeSize( &len, ansi.Buffer, endA - ansi.Buffer ); 322 *end = (LPWSTR)s + len/sizeof(WCHAR); 323 } 324 RtlFreeAnsiString( &ansi ); 325 return ret; 307 */ 308 long __cdecl NTDLL_wcstol(LPCWSTR s,LPWSTR *end,INT base) 309 { 310 return strtolW( s, end, base ); 326 311 } 327 312 … … 329 314 /********************************************************************* 330 315 * wcstoul (NTDLL.@) 331 * Like strtoul, but for wide character strings. 332 */ 333 INT __cdecl NTDLL_wcstoul(LPCWSTR s,LPWSTR *end,INT base) 334 { 335 UNICODE_STRING uni; 336 ANSI_STRING ansi; 337 INT ret; 338 LPSTR endA; 339 340 RtlInitUnicodeString( &uni, s ); 341 RtlUnicodeStringToAnsiString( &ansi, &uni, TRUE ); 342 ret = strtoul( ansi.Buffer, &endA, base ); 343 if (end) 344 { 345 DWORD len; 346 RtlMultiByteToUnicodeSize( &len, ansi.Buffer, endA - ansi.Buffer ); 347 *end = (LPWSTR)s + len/sizeof(WCHAR); 348 } 349 RtlFreeAnsiString( &ansi ); 350 return ret; 316 */ 317 unsigned long __cdecl NTDLL_wcstoul(LPCWSTR s,LPWSTR *end,INT base) 318 { 319 return strtoulW( s, end, base ); 351 320 } 352 321 … … 369 338 } 370 339 371 372 /********************************************************************* 373 * _ultow (NTDLL.@) 374 * Like _ultoa, but for wide character strings. 375 */ 376 LPWSTR __cdecl _ultow(ULONG value, LPWSTR string, INT radix) 377 { 378 WCHAR tmp[33]; 379 LPWSTR tp = tmp; 380 LPWSTR sp; 381 LONG i; 382 ULONG v = value; 383 384 if (radix > 36 || radix <= 1) 385 return 0; 386 387 while (v || tp == tmp) 388 { 389 i = v % radix; 390 v = v / radix; 391 if (i < 10) 392 *tp++ = i + '0'; 393 else 394 *tp++ = i + 'a' - 10; 395 } 396 397 sp = string; 398 while (tp > tmp) 399 *sp++ = *--tp; 400 *sp = 0; 401 return string; 402 } 403 404 /********************************************************************* 405 * _wtol (NTDLL.@) 406 * Like atol, but for wide character strings. 407 */ 408 LONG __cdecl _wtol(LPWSTR string) 409 { 410 char buffer[30]; 411 NTDLL_wcstombs( buffer, string, sizeof(buffer) ); 412 return atol( buffer ); 413 } 414 415 /********************************************************************* 416 * _wtoi (NTDLL.@) 417 */ 418 INT __cdecl _wtoi(LPWSTR string) 340 /********************************************************************* 341 * iswdigit (NTDLL.@) 342 * 343 * Checks if an unicode char wc is a digit 344 * 345 * RETURNS 346 * TRUE: The unicode char wc is a digit. 347 * FALSE: Otherwise 348 */ 349 INT __cdecl NTDLL_iswdigit( WCHAR wc ) 350 { 351 return isdigitW(wc); 352 } 353 354 355 /********************************************************************* 356 * iswlower (NTDLL.@) 357 * 358 * Checks if an unicode char wc is a lower case letter 359 * 360 * RETURNS 361 * TRUE: The unicode char wc is a lower case letter. 362 * FALSE: Otherwise 363 */ 364 INT __cdecl NTDLL_iswlower( WCHAR wc ) 365 { 366 return islowerW(wc); 367 } 368 369 370 /********************************************************************* 371 * iswspace (NTDLL.@) 372 * 373 * Checks if an unicode char wc is a white space character 374 * 375 * RETURNS 376 * TRUE: The unicode char wc is a white space character. 377 * FALSE: Otherwise 378 */ 379 INT __cdecl NTDLL_iswspace( WCHAR wc ) 380 { 381 return isspaceW(wc); 382 } 383 384 385 /********************************************************************* 386 * iswxdigit (NTDLL.@) 387 * 388 * Checks if an unicode char wc is an extended digit 389 * 390 * RETURNS 391 * TRUE: The unicode char wc is an extended digit. 392 * FALSE: Otherwise 393 */ 394 INT __cdecl NTDLL_iswxdigit( WCHAR wc ) 395 { 396 return isxdigitW(wc); 397 } 398 399 400 /********************************************************************* 401 * _ultow (NTDLL.@) 402 * 403 * Converts an unsigned long integer to an unicode string. 404 * 405 * Assigns a '\0' terminated string to str and returns str. 406 * Does not check if radix is in the range of 2 to 36 (as native DLL). 407 * For str == NULL just returns NULL (as native DLL). 408 */ 409 LPWSTR __cdecl _ultow( unsigned long value, LPWSTR str, INT radix ) 410 { 411 WCHAR buffer[33]; 412 PWCHAR pos; 413 WCHAR digit; 414 415 pos = &buffer[32]; 416 *pos = '\0'; 417 418 do { 419 digit = value % radix; 420 value = value / radix; 421 if (digit < 10) { 422 *--pos = '0' + digit; 423 } else { 424 *--pos = 'a' + digit - 10; 425 } /* if */ 426 } while (value != 0L); 427 428 if (str != NULL) { 429 memcpy(str, pos, (&buffer[32] - pos + 1) * sizeof(WCHAR)); 430 } /* if */ 431 return str; 432 } 433 434 435 /********************************************************************* 436 * _ltow (NTDLL.@) 437 * 438 * Converts a long integer to an unicode string. 439 * 440 * RETURNS 441 * Always returns str. 442 * 443 * NOTES 444 * Converts value to a '\0' terminated wstring which is copied to str. 445 * The maximum length of the copied str is 33 bytes. If radix 446 * is 10 and value is negative, the value is converted with sign. 447 * Does not check if radix is in the range of 2 to 36. 448 * If str is NULL it just returns NULL. 449 */ 450 LPWSTR __cdecl _ltow( 451 long value, /* [I] Value to be converted */ 452 LPWSTR str, /* [O] Destination for the converted value */ 453 INT radix) /* [I] Number base for conversion */ 454 { 455 unsigned long val; 456 int negative; 457 WCHAR buffer[33]; 458 PWCHAR pos; 459 WCHAR digit; 460 461 if (value < 0 && radix == 10) { 462 negative = 1; 463 val = -value; 464 } else { 465 negative = 0; 466 val = value; 467 } /* if */ 468 469 pos = &buffer[32]; 470 *pos = '\0'; 471 472 do { 473 digit = val % radix; 474 val = val / radix; 475 if (digit < 10) { 476 *--pos = '0' + digit; 477 } else { 478 *--pos = 'a' + digit - 10; 479 } /* if */ 480 } while (val != 0L); 481 482 if (negative) { 483 *--pos = '-'; 484 } /* if */ 485 486 if (str != NULL) { 487 memcpy(str, pos, (&buffer[32] - pos + 1) * sizeof(WCHAR)); 488 } /* if */ 489 return str; 490 } 491 492 493 494 /********************************************************************* 495 * _itow (NTDLL.@) 496 * 497 * Converts an integer to an unicode string. 498 * 499 * RETURNS 500 * Always returns str. 501 * 502 * NOTES 503 * Converts value to a '\0' terminated wstring which is copied to str. 504 * The maximum length of the copied str is 33 bytes. If radix 505 * is 10 and value is negative, the value is converted with sign. 506 * Does not check if radix is in the range of 2 to 36. 507 * If str is NULL it just returns NULL. 508 * 509 * DIFFERENCES 510 * - The native function crashes when the string is longer than 19 chars. 511 * This function does not have this bug. 512 */ 513 LPWSTR __cdecl _itow( 514 int value, /* [I] Value to be converted */ 515 LPWSTR str, /* [O] Destination for the converted value */ 516 INT radix) /* [I] Number base for conversion */ 517 { 518 return _ltow(value, str, radix); 519 } 520 521 522 /********************************************************************* 523 * _ui64tow (NTDLL.@) 524 * 525 * Converts a large unsigned integer to an unicode string. 526 * 527 * Assigns a '\0' terminated wstring to str and returns str. 528 * Does not check if radix is in the range of 2 to 36 (as native DLL). 529 * For str == NULL just returns NULL (as native DLL). 530 * 531 * Difference: 532 * - This function does not exist in the native DLL (but in msvcrt). 533 * But since the maintenance of all these functions is better done 534 * in one place we implement it here. 535 */ 536 LPWSTR __cdecl _ui64tow( ULONGLONG value, LPWSTR str, INT radix ) 537 { 538 WCHAR buffer[65]; 539 PWCHAR pos; 540 WCHAR digit; 541 542 pos = &buffer[64]; 543 *pos = '\0'; 544 545 do { 546 digit = value % radix; 547 value = value / radix; 548 if (digit < 10) { 549 *--pos = '0' + digit; 550 } else { 551 *--pos = 'a' + digit - 10; 552 } /* if */ 553 } while (value != 0L); 554 555 if (str != NULL) { 556 memcpy(str, pos, (&buffer[64] - pos + 1) * sizeof(WCHAR)); 557 } /* if */ 558 return str; 559 } 560 561 562 /********************************************************************* 563 * _i64tow (NTDLL.@) 564 * 565 * Converts a large integer to an unicode string. 566 * 567 * Assigns a '\0' terminated wstring to str and returns str. If radix 568 * is 10 and value is negative, the value is converted with sign. 569 * Does not check if radix is in the range of 2 to 36 (as native DLL). 570 * For str == NULL just returns NULL (as native DLL). 571 * 572 * Difference: 573 * - The native DLL converts negative values (for base 10) wrong: 574 * -1 is converted to -18446744073709551615 575 * -2 is converted to -18446744073709551614 576 * -9223372036854775807 is converted to -9223372036854775809 577 * -9223372036854775808 is converted to -9223372036854775808 578 * The native msvcrt _i64tow function and our ntdll function do 579 * not have this bug. 580 */ 581 LPWSTR __cdecl _i64tow( LONGLONG value, LPWSTR str, INT radix ) 582 { 583 ULONGLONG val; 584 int negative; 585 WCHAR buffer[65]; 586 PWCHAR pos; 587 WCHAR digit; 588 589 if (value < 0 && radix == 10) { 590 negative = 1; 591 val = -value; 592 } else { 593 negative = 0; 594 val = value; 595 } /* if */ 596 597 pos = &buffer[64]; 598 *pos = '\0'; 599 600 do { 601 digit = val % radix; 602 val = val / radix; 603 if (digit < 10) { 604 *--pos = '0' + digit; 605 } else { 606 *--pos = 'a' + digit - 10; 607 } /* if */ 608 } while (val != 0L); 609 610 if (negative) { 611 *--pos = '-'; 612 } /* if */ 613 614 if (str != NULL) { 615 memcpy(str, pos, (&buffer[64] - pos + 1) * sizeof(WCHAR)); 616 } /* if */ 617 return str; 618 } 619 620 621 /********************************************************************* 622 * _wtol (NTDLL.@) 623 * 624 * Converts an unicode string to a long integer. 625 * 626 * On success it returns the integer value otherwise it returns 0. 627 * Accepts: {whitespace} [+|-] {digits} 628 * No check of overflow: Just assigns lower 32 bits (as native DLL). 629 * Does not check for str != NULL (as native DLL). 630 */ 631 LONG __cdecl _wtol( LPWSTR str ) 632 { 633 ULONG RunningTotal = 0; 634 char bMinus = 0; 635 636 while (isspaceW(*str)) { 637 str++; 638 } /* while */ 639 640 if (*str == '+') { 641 str++; 642 } else if (*str == '-') { 643 bMinus = 1; 644 str++; 645 } /* if */ 646 647 while (*str >= '0' && *str <= '9') { 648 RunningTotal = RunningTotal * 10 + *str - '0'; 649 str++; 650 } /* while */ 651 652 return bMinus ? -RunningTotal : RunningTotal; 653 } 654 655 656 /********************************************************************* 657 * _wtoi (NTDLL.@) 658 * 659 * Converts an unicode string to an integer. 660 * 661 * On success it returns the integer value otherwise it returns 0. 662 * Accepts: {whitespace} [+|-] {digits} 663 * No check of overflow: Just assigns lower 32 bits (as native DLL). 664 * Does not check for str != NULL (as native DLL). 665 */ 666 int __cdecl _wtoi( LPWSTR string ) 419 667 { 420 668 return _wtol(string); 421 669 } 422 670 423 /* INTERNAL: Wide char snprintf 424 * If you fix a bug in this function, fix it in msvcrt/wcs.c also! 425 */ 426 static int __cdecl NTDLL_vsnwprintf(WCHAR *str, unsigned int len, 427 const WCHAR *format, va_list valist) 428 { 429 unsigned int written = 0; 430 const WCHAR *iter = format; 431 char bufa[256], fmtbufa[64], *fmta; 432 433 TRACE("(%d,%s)\n",len,debugstr_w(format)); 434 435 while (*iter) 436 { 437 while (*iter && *iter != (WCHAR)L'%') 438 { 439 if (written++ >= len) 440 return -1; 441 *str++ = *iter++; 442 } 443 if (*iter == (WCHAR)L'%') 444 { 445 fmta = fmtbufa; 446 *fmta++ = *iter++; 447 while (*iter == (WCHAR)L'0' || 448 *iter == (WCHAR)L'+' || 449 *iter == (WCHAR)L'-' || 450 *iter == (WCHAR)L' ' || 451 *iter == (WCHAR)L'0' || 452 *iter == (WCHAR)L'*' || 453 *iter == (WCHAR)L'#') 454 { 455 if (*iter == (WCHAR)L'*') 456 { 457 char *buffiter = bufa; 458 int fieldlen = va_arg(valist, int); 459 sprintf(buffiter, "%d", fieldlen); 460 while (*buffiter) 461 *fmta++ = *buffiter++; 462 } 463 else 464 *fmta++ = *iter; 465 iter++; 466 } 467 468 while (isdigit(*iter)) 469 *fmta++ = *iter++; 470 471 if (*iter == (WCHAR)L'.') 472 { 473 *fmta++ = *iter++; 474 if (*iter == (WCHAR)L'*') 475 { 476 char *buffiter = bufa; 477 int fieldlen = va_arg(valist, int); 478 sprintf(buffiter, "%d", fieldlen); 479 while (*buffiter) 480 *fmta++ = *buffiter++; 481 } 482 else 483 while (isdigit(*iter)) 484 *fmta++ = *iter++; 485 } 486 if (*iter == (WCHAR)L'h' || 487 *iter == (WCHAR)L'l') 488 { 489 *fmta++ = *iter++; 490 *fmta++ = *iter++; 491 } 492 493 switch (*iter) 494 { 495 case (WCHAR)L's': 496 { 497 static const WCHAR none[] = { '(', 'n', 'u', 'l', 'l', ')', 0 }; 498 const WCHAR *wstr = va_arg(valist, const WCHAR *); 499 const WCHAR *striter = wstr ? wstr : none; 500 while (*striter) 501 { 502 if (written++ >= len) 503 return -1; 504 *str++ = *striter++; 505 } 506 iter++; 507 break; 508 } 509 510 case (WCHAR)L'c': 511 if (written++ >= len) 512 return -1; 513 *str++ = (WCHAR)va_arg(valist, int); 514 iter++; 515 break; 516 517 default: 518 { 519 /* For non wc types, use system sprintf and append to wide char output */ 520 /* FIXME: for unrecognised types, should ignore % when printing */ 521 char *bufaiter = bufa; 522 if (*iter == (WCHAR)L'p') 523 sprintf(bufaiter, "%08lX", va_arg(valist, long)); 524 else 525 { 526 *fmta++ = *iter; 527 *fmta = '\0'; 528 if (*iter == (WCHAR)L'f') 529 sprintf(bufaiter, fmtbufa, va_arg(valist, double)); 530 else 531 sprintf(bufaiter, fmtbufa, va_arg(valist, void *)); 532 } 533 while (*bufaiter) 534 { 535 if (written++ >= len) 536 return -1; 537 *str++ = *bufaiter++; 538 } 539 iter++; 540 break; 541 } 542 } 543 } 544 } 545 if (written >= len) 546 return -1; 547 *str++ = (WCHAR)L'\0'; 548 return (int)written; 549 } 671 672 /********************************************************************* 673 * _wtoi64 (NTDLL.@) 674 * 675 * Converts an unicode string to a large integer. 676 * 677 * On success it returns the integer value otherwise it returns 0. 678 * Accepts: {whitespace} [+|-] {digits} 679 * No check of overflow: Just assigns lower 64 bits (as native DLL). 680 * Does not check for str != NULL (as native DLL). 681 */ 682 LONGLONG __cdecl _wtoi64( LPWSTR str ) 683 { 684 ULONGLONG RunningTotal = 0; 685 char bMinus = 0; 686 687 while (isspaceW(*str)) { 688 str++; 689 } /* while */ 690 691 if (*str == '+') { 692 str++; 693 } else if (*str == '-') { 694 bMinus = 1; 695 str++; 696 } /* if */ 697 698 while (*str >= '0' && *str <= '9') { 699 RunningTotal = RunningTotal * 10 + *str - '0'; 700 str++; 701 } /* while */ 702 703 return bMinus ? -RunningTotal : RunningTotal; 704 } 705 550 706 551 707 … … 558 714 va_list valist; 559 715 va_start(valist, format); 560 retval = NTDLL_vsnwprintf(str, len, format, valist);716 retval = vsnprintfW(str, len, format, valist); 561 717 va_end(valist); 562 718 return retval; … … 572 728 va_list valist; 573 729 va_start(valist, format); 574 retval = NTDLL_vsnwprintf(str, INT_MAX, format, valist);730 retval = vsnprintfW(str, INT_MAX, format, valist); 575 731 va_end(valist); 576 732 return retval;
Note:
See TracChangeset
for help on using the changeset viewer.