mirror of
https://github.com/reactos/reactos.git
synced 2025-03-10 18:24:02 +00:00
Implemented bitmap functions
svn path=/trunk/; revision=1040
This commit is contained in:
parent
c3f375c672
commit
89871935c1
6 changed files with 1199 additions and 250 deletions
|
@ -1,4 +1,4 @@
|
|||
; $Id: ntdll.def,v 1.43 2000/03/03 00:40:29 ekohl Exp $
|
||||
; $Id: ntdll.def,v 1.44 2000/03/09 00:13:37 ekohl Exp $
|
||||
;
|
||||
; ReactOS Operating System
|
||||
;
|
||||
|
@ -223,6 +223,346 @@ NtWriteRequestData@24
|
|||
NtWriteVirtualMemory@20
|
||||
NtW32Call@20
|
||||
NtYieldExecution@0
|
||||
;PfxFindPrefix
|
||||
;PfxInitialize
|
||||
;PfxInsertPrefix
|
||||
;PfxRemovePrefix
|
||||
;RtlAbortRXact
|
||||
RtlAbsoluteToSelfRelativeSD@12
|
||||
RtlAcquirePebLock@0
|
||||
;RtlAcqureResourceExclusive
|
||||
;RtlAcqureResourceShared
|
||||
;RtlAddAccessAllowedAce
|
||||
;RtlAddAccessDeniedAce
|
||||
;RtlAddAce
|
||||
;RtlAddActionToRXact
|
||||
;RtlAtomToAtomTable
|
||||
;RtlAddAttributeActionToRXact
|
||||
;RtlAddAuditAccessToAce
|
||||
;RtlAccCompoundAce
|
||||
;RtlAdjustPrivilege
|
||||
;RtlAllocateAndInitializeSid
|
||||
;RtlAllocateHandle
|
||||
RtlAllocateHeap@12
|
||||
RtlAnsiCharToUnicodeChar@4
|
||||
RtlAnsiStringToUnicodeSize@4
|
||||
RtlAnsiStringToUnicodeString@12
|
||||
RtlAppendAsciizToString@12
|
||||
RtlAppendStringToString@12
|
||||
RtlAppendUnicodeStringToString@12
|
||||
RtlAppendUnicodeToString@12
|
||||
;RtlApplyRXact
|
||||
;RtlApplyRXactNoFlush
|
||||
;RtlAreAllAccessesGranted
|
||||
;RtlAreAnyAccessesGranted
|
||||
RtlAreBitsClear@12
|
||||
RtlAreBitsSet@12
|
||||
;RtlAssert
|
||||
;RtlCaptureStackBackTrace
|
||||
RtlCharToInteger@12
|
||||
;RtlCheckRegistryKey
|
||||
RtlClearAllBits@4
|
||||
RtlClearBits@12
|
||||
;RtlClosePropertySet
|
||||
RtlCompactHeap@8
|
||||
RtlCompareMemory@12
|
||||
RtlCompareMemoryUlong@12
|
||||
RtlCompareString@12
|
||||
RtlCompareUnicodeString@12
|
||||
;RtlCompressBuffer
|
||||
;RtlConsoleMultiByteToUnicodeN
|
||||
;RtlConvertExclusiveToShared
|
||||
RtlConvertLongToLargeInteger@4
|
||||
;RtlConvertSharedToExclusive
|
||||
;RtlConvertSidToUnicodeString
|
||||
;RtlConvertUiListToApiList
|
||||
RtlConvertUlongToLargeInteger@4
|
||||
;RtlCopyLuid
|
||||
;RtlCopyLuidAndAttributesArray
|
||||
;RtlCopySecurityDescriptor
|
||||
;RtlCopySid
|
||||
;RtlCopySidAndAttributesArray
|
||||
RtlCopyString@8
|
||||
RtlCopyUnicodeString@8
|
||||
;RtlCreateAcl
|
||||
;RtlCreateAndSetSD
|
||||
;RtlCreateAtomTable
|
||||
RtlCreateEnvironment@8
|
||||
RtlCreateHeap@24
|
||||
RtlCreateProcessParameters@40
|
||||
;RtlCreatePropertySet
|
||||
;RtlCreateQueryDebugBuffer
|
||||
;RtlCreateRegistryKey
|
||||
RtlCreateSecurityDescriptor@8
|
||||
;RtlCreateTagHeap
|
||||
RtlCreateUnicodeString@8
|
||||
RtlCreateUnicodeStringFromAsciiz@8
|
||||
RtlCreateUserProcess@40
|
||||
;RtlCreateuserSecurityObject
|
||||
RtlCreateUserThread@40
|
||||
;RtlCustomCPToUnicodeN
|
||||
;RtlCutoverTimeToSystemTime
|
||||
RtlDeNormalizeProcessParams@4
|
||||
;RtlDecompressBuffer
|
||||
;RtlDecompressFragment
|
||||
;RtlDelete
|
||||
;RtlDeleteAce
|
||||
;RtlDeleteAtomFromAtomTable
|
||||
;RtlDeleteCriticalSection
|
||||
;RtlDeleteElementGenericTable
|
||||
;RtlDeleteNoSplay
|
||||
;RtlDeleteRegistryValue
|
||||
;RtlDeleteResource
|
||||
;RtlDeleteSecurityObject
|
||||
;RtlDestroyAtomTable
|
||||
RtlDestroyEnvironment@4
|
||||
;RtlDestroyHandleTable
|
||||
RtlDestroyHeap@4
|
||||
RtlDestroyProcessParameters@4
|
||||
;RtlDestroyQueryDebugBuffer
|
||||
RtlDetermineDosPathNameType_U@4
|
||||
RtlDoesFileExists_U@4
|
||||
RtlDosPathNameToNtPathName_U@16
|
||||
RtlDosSearchPath_U@24
|
||||
RtlDowncaseUnicodeString@12
|
||||
;RtlDumpResource
|
||||
;RtlEmptyAtomTable
|
||||
RtlEnlargedIntegerMultiply@8
|
||||
RtlEnlargedUnsignedDivide@16
|
||||
RtlEnlargedUnsignedMultiply@8
|
||||
;RtlEnterCriticalSection
|
||||
;RtlEnumProcessHeaps
|
||||
;RtlEnumerateGenericTable
|
||||
;RtlEnumerateGenericTableWithoutSplaying
|
||||
;RtlEnumerateProperties
|
||||
;RtlEqualComputerName
|
||||
;RtlEqualDomainName
|
||||
;RtlEqualLuid
|
||||
;RtlEqualPrefixSid
|
||||
;RtlEqualSid
|
||||
RtlEqualString@12
|
||||
RtlEqualUnicodeString@12
|
||||
RtlEraseUnicodeString@4
|
||||
RtlExpandEnvironmentStrings_U@16
|
||||
;RtlExtendHeap
|
||||
RtlExtendedIntegerMultiply@12
|
||||
RtlExtendedLargeIntegerDivide@16
|
||||
RtlExtendedMagicDivide@20
|
||||
RtlFillMemory@12
|
||||
RtlFillMemoryUlong@12
|
||||
RtlFindClearBits@12
|
||||
RtlFindClearBitsAndSet@12
|
||||
RtlFindLongestRunClear@8
|
||||
RtlFindLongestRunSet@8
|
||||
;RtlFindMessage
|
||||
RtlFindSetBits@12
|
||||
RtlFindSetBitsAndClear@12
|
||||
;RtlFirstFreeAce
|
||||
;RtlFlushPropertySet
|
||||
;RtlFormatCurrentUserKeyPath
|
||||
;RtlFormatMessage
|
||||
RtlFreeAnsiString@4
|
||||
;RtlFreeHandle
|
||||
RtlFreeHeap@12
|
||||
RtlFreeOemString@4
|
||||
;RtlFreeSid
|
||||
RtlFreeUnicodeString@4
|
||||
;RtlFreeUserThreadStack
|
||||
;RtlGenerate8dot3Name
|
||||
;RtlGetAce
|
||||
;RtlGetCallersAddress
|
||||
;RtlGetCompressionWorkSpaceSize
|
||||
;RtlGetControlSecurityDescriptor
|
||||
RtlGetCurrentDirectory_U@8
|
||||
RtlGetDaclSecurityDescriptor@16
|
||||
;RtlGetElementGenericTable
|
||||
RtlGetFullPathName_U@16
|
||||
RtlGetGroupSecurityDescriptor@12
|
||||
RtlGetLongestNtPathLength@0
|
||||
;RtlGetNtGlobalFlags
|
||||
;RtlGetNtProductType
|
||||
RtlGetOwnerSecurityDescriptor@12
|
||||
;RtlGetProcessHeaps
|
||||
RtlGetProcessHeap@0
|
||||
;RtlGetSaclSecurityDescriptor
|
||||
;RtlGetUserInfoHeap
|
||||
;RtlGuidToPropertySetName
|
||||
;RtlIdentifierAuthoritySid
|
||||
;RtlImageDirectoryEntryToData
|
||||
;RtlImageNtHeader
|
||||
;RtlImageRvaToSection
|
||||
;RtlImageRvaToVa
|
||||
;RtlImpersonateSelf
|
||||
RtlInitAnsiString@8
|
||||
;RtlInitcodePageTable
|
||||
;RtlInitNlsTables
|
||||
RtlInitString@8
|
||||
RtlInitUnicodeString@8
|
||||
;RtlInitializeAtomPackage
|
||||
RtlInitializeBitMap@12
|
||||
RtlInitializeContext@20
|
||||
;RtlInitializeCriticalSection
|
||||
;RtlInitializeGenericTable
|
||||
;RtlInitializeHandleTable
|
||||
;RtlInitializeRXact
|
||||
;RtlInitializeResource
|
||||
;RtlInitializeSid
|
||||
;RtlInsertElementGenericTable
|
||||
RtlIntegerToChar@16
|
||||
RtlIntegerToUnicodeString@12
|
||||
RtlIsDosDeviceName_U@4
|
||||
;RtlIsGenericTableEmpty
|
||||
RtlIsNameLegalDOS8Dot3@12
|
||||
;RtlIsTextUnicode
|
||||
;RtlIsValidHandle
|
||||
;RtlIsValidIndexHandle
|
||||
RtlLargeIntegerAdd@16
|
||||
RtlLargeIntegerArithmeticShift@12
|
||||
RtlLargeIntegerDivide@20
|
||||
RtlLargeIntegerNegate@8
|
||||
RtlLargeIntegerShiftLeft@12
|
||||
RtlLargeIntegerShiftRight@12
|
||||
RtlLargeIntegerSubtract@16
|
||||
;RtlLargeIntegerToChar
|
||||
;RtlLeaveCriticalSection
|
||||
;RtlLengthRequiredSid
|
||||
RtlLengthSecurityDescriptor@4
|
||||
;RtlLengthSid
|
||||
;RtlLocalTimeToSystemTime
|
||||
RtlLockHeap@4
|
||||
;RtlLookupAtomInAtomTable
|
||||
;RtlLookupElementGenericTable
|
||||
;RtlMakeSelfRelativeSD
|
||||
;RtlMapGenericMask
|
||||
RtlMoveMemory@12
|
||||
RtlMultiByteToUnicodeN@20
|
||||
RtlMultiByteToUnicodeSize@12
|
||||
;RtlNewInstanceSecurityObject
|
||||
;RtlNewSecurityGrantedAccess
|
||||
;RtlNewSecurityObject
|
||||
RtlNormalizeProcessParams@4
|
||||
RtlNtStatusToDosError@4
|
||||
RtlNtStatusToPsxErrno@4
|
||||
;RtlNumberGenericTableElements
|
||||
RtlNumberOfClearBits@4
|
||||
RtlNumberOfSetBits@4
|
||||
RtlOemStringToUnicodeSize@4
|
||||
RtlOemStringToUnicodeString@12
|
||||
RtlOemToUnicodeN@20
|
||||
;RtlOpenCurrentUser
|
||||
;RtlPcToFileHeader
|
||||
;RtlPinAtomInAtomTable
|
||||
;RtlPrefixString
|
||||
;RtlPrefixUnicodeString
|
||||
;RtlPropertySetNameToGuid
|
||||
;RtlProtectHeap
|
||||
;RtlQueryAtomInAtomTable
|
||||
RtlQueryEnvironmentVariable_U@12
|
||||
;RtlQueryInformationAcl
|
||||
;RtlQueryProcessBackTraceInformation
|
||||
;RtlQueryProcessDebugInformation
|
||||
;RtlQueryProcessHeapInformation
|
||||
;RtlQueryProcessLockInformation
|
||||
;RtlQueryProperties
|
||||
;RtlQueryPropertyNames
|
||||
;RtlQueryPropertySet
|
||||
;RtlQueryRegistryValues
|
||||
;RtlQuerySecutityObject
|
||||
;RtlQueryTagHeap
|
||||
;RtlQueryTimeZoneInformation
|
||||
;RtlRaiseException
|
||||
;RtlRaiseStatus
|
||||
;RtlRandom
|
||||
RtlReAllocateHeap@16
|
||||
;RtlRealPredecessor
|
||||
;RtlRealSuccessor
|
||||
RtlReleasePebLock@0
|
||||
;RtlReleaseResource
|
||||
;RtlRemoteCall
|
||||
;RtlResetRtlTranslations
|
||||
;RtlRunDecodeUnicodeString
|
||||
;RtlRunEncodeUnicodeString
|
||||
;RtlSecondsSince1970ToTime
|
||||
;RtlSecondsSince1980ToTime
|
||||
;RtlSelfRelatedToAbsoluteSD
|
||||
RtlSetAllBits@4
|
||||
;RtlSetAttributesSecurityDescriptor
|
||||
RtlSetBits@12
|
||||
RtlSetCurrentDirectory_U@4
|
||||
RtlSetCurrentEnvironment@8
|
||||
RtlSetDaclSecurityDescriptor@16
|
||||
RtlSetEnvironmentVariable@12
|
||||
RtlSetGroupSecurityDescriptor@12
|
||||
;RtlSetInformationAcl
|
||||
RtlSetOwnerSecurityDescriptor@12
|
||||
;RtlSetProperties
|
||||
;RtlSetPropertyNames
|
||||
;RtlSetPropertySetClassId
|
||||
;RtlSetSaclSecurityDescriptor
|
||||
;RtlSetSecurityObject
|
||||
;RtlSetTimeZoneInformation
|
||||
;RtlSetUnicodeCallouts
|
||||
;RtlSetUserFlagsHeap
|
||||
;RtlSetUserValueHeap
|
||||
RtlSizeHeap@12
|
||||
;RtlSplay
|
||||
;RtlStartRXact
|
||||
;RtlSubAuthorityCountSid
|
||||
;RtlSubAuthoritySid
|
||||
;RtlSubtreePredecessor
|
||||
;RtlSubtreeSuccessor
|
||||
;RtlSystemTimeToLocalTime
|
||||
;RtlTimeFieldsToTime
|
||||
;RtlTimeToElapsedTimeFields
|
||||
;RtlTimeToSecondsSince1970
|
||||
;RtlTimeToSecondsSince1980
|
||||
;RtlTimeToTimeFields
|
||||
;RtlTryEnterCriticalSection
|
||||
RtlUnicodeStringToAnsiSize@4
|
||||
RtlUnicodeStringToAnsiString@12
|
||||
RtlUnicodeStringToCountedOemString@12
|
||||
RtlUnicodeStringToInteger@12
|
||||
RtlUnicodeStringToOemSize@4
|
||||
RtlUnicodeStringToOemString@12
|
||||
;RtlUnicodeToCustomCPN
|
||||
RtlUnicodeToMultiByteN@20
|
||||
RtlUnicodeToMultiByteSize@12
|
||||
RtlUnicodeToOemN@20
|
||||
;RtlUniform
|
||||
RtlUnlockHeap@4
|
||||
RtlUnwind@0
|
||||
RtlUpcaseUnicodeChar@4
|
||||
RtlUpcaseUnicodeString@12
|
||||
RtlUpcaseUnicodeStringToAnsiString@12
|
||||
RtlUpcaseUnicodeStringToCountedOemString@12
|
||||
RtlUpcaseUnicodeStringToOemString@12
|
||||
;RtlUpcaseUnicodeToCustomCPN
|
||||
RtlUpcaseUnicodeToMultiByteN@20
|
||||
RtlUpcaseUnicodeToOemN@20
|
||||
RtlUpperChar@4
|
||||
RtlUpperString@8
|
||||
;RtlUsageHeap
|
||||
;RtlValidAcl
|
||||
RtlValidSecurityDescriptor@4
|
||||
;RtlValidSid
|
||||
RtlValidateHeap@12
|
||||
;RtlValidateProcessHeaps
|
||||
;RtlWalkHeap
|
||||
;RtlWriteRegistryValue
|
||||
;RtlZeroHeap
|
||||
RtlZeroMemory@8
|
||||
;RtlpNtCreateKey
|
||||
;RtlpNtEnumerateSubKey
|
||||
;RtlpNtMakeTemporaryKey
|
||||
;RtlpNtOpenKey
|
||||
;RtlpNtQueryValueKey
|
||||
;RtlpNtSetValueKey
|
||||
;RtlpUnWaitCriticalSection
|
||||
;RtlpWaitForCriticalSection
|
||||
RtlxAnsiStringToUnicodeSize@4
|
||||
RtlxOemStringToUnicodeSize@4
|
||||
RtlxUnicodeStringToAnsiSize@4
|
||||
RtlxUnicodeStringToOemSize@4
|
||||
ZwAcceptConnectPort@24
|
||||
ZwAccessCheck@32
|
||||
ZwAccessCheckAndAuditAlarm@44
|
||||
|
@ -433,127 +773,6 @@ ZwWriteRequestData@24
|
|||
ZwWriteVirtualMemory@20
|
||||
ZwW32Call@20
|
||||
ZwYieldExecution@0
|
||||
RtlAbsoluteToSelfRelativeSD@12
|
||||
RtlAcquirePebLock@0
|
||||
RtlAllocateHeap@12
|
||||
RtlAnsiCharToUnicodeChar@4
|
||||
RtlAnsiStringToUnicodeSize@4
|
||||
RtlAnsiStringToUnicodeString@12
|
||||
RtlAppendAsciizToString@12
|
||||
RtlAppendStringToString@12
|
||||
RtlAppendUnicodeStringToString@12
|
||||
RtlAppendUnicodeToString@12
|
||||
RtlCharToInteger@12
|
||||
RtlCreateEnvironment@8
|
||||
RtlCreateHeap@24
|
||||
RtlCreateProcessParameters@40
|
||||
RtlCreateSecurityDescriptor@8
|
||||
RtlCreateUnicodeString@8
|
||||
RtlCreateUnicodeStringFromAsciiz@8
|
||||
RtlCreateUserProcess@40
|
||||
RtlCreateUserThread@40
|
||||
RtlCompactHeap@8
|
||||
RtlCompareString@12
|
||||
RtlCompareUnicodeString@12
|
||||
RtlConvertLongToLargeInteger@4
|
||||
RtlConvertUlongToLargeInteger@4
|
||||
;RtlCopyMemory@12
|
||||
;RtlCopyMemory
|
||||
RtlCopyString@8
|
||||
RtlCopyUnicodeString@8
|
||||
RtlDeNormalizeProcessParams@4
|
||||
RtlDestroyEnvironment@4
|
||||
RtlDestroyHeap@4
|
||||
RtlDestroyProcessParameters@4
|
||||
RtlDetermineDosPathNameType_U@4
|
||||
RtlDoesFileExists_U@4
|
||||
RtlDosPathNameToNtPathName_U@16
|
||||
RtlDosSearchPath_U@24
|
||||
RtlDowncaseUnicodeString@12
|
||||
RtlEnlargedIntegerMultiply@8
|
||||
RtlEnlargedUnsignedDivide@16
|
||||
RtlEnlargedUnsignedMultiply@8
|
||||
RtlEqualString@12
|
||||
RtlEqualUnicodeString@12
|
||||
RtlEraseUnicodeString@4
|
||||
RtlExpandEnvironmentStrings_U@16
|
||||
RtlExtendedIntegerMultiply@12
|
||||
RtlExtendedLargeIntegerDivide@16
|
||||
RtlExtendedMagicDivide@20
|
||||
RtlFillMemory@12
|
||||
RtlFreeAnsiString@4
|
||||
RtlFreeHeap@12
|
||||
RtlFreeOemString@4
|
||||
RtlFreeUnicodeString@4
|
||||
RtlGetCurrentDirectory_U@8
|
||||
RtlGetDaclSecurityDescriptor@16
|
||||
RtlGetFullPathName_U@16
|
||||
RtlGetGroupSecurityDescriptor@12
|
||||
RtlGetLongestNtPathLength@0
|
||||
RtlGetOwnerSecurityDescriptor@12
|
||||
RtlGetProcessHeap@0
|
||||
RtlInitAnsiString@8
|
||||
RtlInitString@8
|
||||
RtlInitUnicodeString@8
|
||||
RtlInitializeContext@20
|
||||
RtlIntegerToChar@16
|
||||
RtlIntegerToUnicodeString@12
|
||||
RtlIsDosDeviceName_U@4
|
||||
RtlIsNameLegalDOS8Dot3@12
|
||||
RtlLargeIntegerAdd@16
|
||||
RtlLargeIntegerArithmeticShift@12
|
||||
RtlLargeIntegerDivide@20
|
||||
RtlLargeIntegerNegate@8
|
||||
RtlLargeIntegerShiftLeft@12
|
||||
RtlLargeIntegerShiftRight@12
|
||||
RtlLargeIntegerSubtract@16
|
||||
RtlLengthSecurityDescriptor@4
|
||||
RtlLockHeap@4
|
||||
RtlMoveMemory@12
|
||||
RtlMultiByteToUnicodeN@20
|
||||
RtlNormalizeProcessParams@4
|
||||
RtlNtStatusToDosError@4
|
||||
RtlNtStatusToPsxErrno@4
|
||||
RtlOemStringToUnicodeSize@4
|
||||
RtlOemStringToUnicodeString@12
|
||||
RtlOemToUnicodeN@20
|
||||
RtlQueryEnvironmentVariable_U@12
|
||||
RtlReAllocateHeap@16
|
||||
RtlReleasePebLock@0
|
||||
RtlSetCurrentDirectory_U@4
|
||||
RtlSetCurrentEnvironment@8
|
||||
RtlSetDaclSecurityDescriptor@16
|
||||
RtlSetEnvironmentVariable@12
|
||||
RtlSetGroupSecurityDescriptor@12
|
||||
RtlSetOwnerSecurityDescriptor@12
|
||||
RtlSizeHeap@12
|
||||
RtlUnlockHeap@4
|
||||
RtlUnicodeStringToAnsiSize@4
|
||||
RtlUnicodeStringToAnsiString@12
|
||||
RtlUnicodeStringToCountedOemString@12
|
||||
RtlUnicodeStringToInteger@12
|
||||
RtlUnicodeStringToOemSize@4
|
||||
RtlUnicodeStringToOemString@12
|
||||
RtlUnicodeToMultiByteN@20
|
||||
RtlUnicodeToMultiByteSize@12
|
||||
RtlUnicodeToOemN@20
|
||||
RtlUnwind@0
|
||||
RtlUpcaseUnicodeChar@4
|
||||
RtlUpcaseUnicodeString@12
|
||||
RtlUpcaseUnicodeStringToAnsiString@12
|
||||
RtlUpcaseUnicodeStringToCountedOemString@12
|
||||
RtlUpcaseUnicodeStringToOemString@12
|
||||
RtlUpcaseUnicodeToMultiByteN@20
|
||||
RtlUpcaseUnicodeToOemN@20
|
||||
RtlUpperChar@4
|
||||
RtlUpperString@8
|
||||
RtlValidSecurityDescriptor@4
|
||||
RtlValidateHeap@12
|
||||
RtlZeroMemory@8
|
||||
RtlxAnsiStringToUnicodeSize@4
|
||||
RtlxOemStringToUnicodeSize@4
|
||||
RtlxUnicodeStringToAnsiSize@4
|
||||
RtlxUnicodeStringToOemSize@4
|
||||
__isascii
|
||||
__iscsym
|
||||
__iscsymf
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
; $Id: ntdll.edf,v 1.32 2000/03/03 00:40:29 ekohl Exp $
|
||||
; $Id: ntdll.edf,v 1.33 2000/03/09 00:13:37 ekohl Exp $
|
||||
;
|
||||
; ReactOS Operating System
|
||||
;
|
||||
|
@ -223,6 +223,141 @@ NtWriteRequestData=NtWriteRequestData@24
|
|||
NtWriteVirtualMemory=NtWriteVirtualMemory@20
|
||||
NtW32Call=NtW32Call@20
|
||||
NtYieldExecution=NtYieldExecution@0
|
||||
RtlAbsoluteToSelfRelativeSD=RtlAbsoluteToSelfRelativeSD@12
|
||||
RtlAcquirePebLock=RtlAcquirePebLock@0
|
||||
RtlAllocateHeap=RtlAllocateHeap@12
|
||||
RtlAnsiCharToUnicodeChar=RtlAnsiCharToUnicodeChar@4
|
||||
RtlAnsiStringToUnicodeSize=RtlAnsiStringToUnicodeSize@4
|
||||
RtlAnsiStringToUnicodeString=RtlAnsiStringToUnicodeString@12
|
||||
RtlAppendUnicodeStringToString=RtlAppendUnicodeStringToString@8
|
||||
RtlAppendUnicodeToString=RtlAppendUnicodeToString@8
|
||||
RtlAreBitsClear=RtlAreBitsClear@12
|
||||
RtlAreBitsSet=RtlAreBitsSet@12
|
||||
RtlCharToInteger=RtlCharToInteger@12
|
||||
RtlClearAllBits=RtlClearAllBits@4
|
||||
RtlClearBits=RtlClearBits@12
|
||||
RtlCompactHeap=RtlCompactHeap@8
|
||||
RtlCompareMemory=RtlCompareMemory@12
|
||||
RtlCompareMemoryUlong=RtlCompareMemoryUlong@12
|
||||
RtlCompareString=RtlCompareString@12
|
||||
RtlCompareUnicodeString=RtlCompareUnicodeString@12
|
||||
RtlConvertLongToLargeInteger=RtlConvertLongToLargeInteger@4
|
||||
RtlConvertUlongToLargeInteger=RtlConvertUlongToLargeInteger@4
|
||||
RtlCopyString=RtlCopyString@8
|
||||
RtlCopyUnicodeString=RtlCopyUnicodeString@8
|
||||
RtlCreateEnvironment=RtlCreateEnvironment@8
|
||||
RtlCreateHeap=RtlCreateHeap@24
|
||||
RtlCreateProcessParameters=RtlCreateProcessParameters@40
|
||||
RtlCreateSecurityDescriptor=RtlCreateSecurityDescriptor@8
|
||||
RtlCreateUnicodeString=RtlCreateUnicodeString@8
|
||||
RtlCreateUnicodeStringFromAsciiz=RtlCreateUnicodeStringFromAsciiz@8
|
||||
RtlCreateUserProcess=RtlCreateUserProcess@40
|
||||
RtlCreateUserThread=RtlCreateUserThread@40
|
||||
RtlDeNormalizeProcessParams=RtlDeNormalizeProcessParams@4
|
||||
RtlDestroyEnvironment=RtlDestroyEnvironment@4
|
||||
RtlDestroyHeap=RtlDestroyHeap@4
|
||||
RtlDestroyProcessParameters=RtlDestroyProcessParameters@4
|
||||
RtlDetermineDosPathNameType_U=RtlDetermineDosPathNameType_U@4
|
||||
RtlDoesFileExists_U=RtlDoesFileExists_U@4
|
||||
RtlDosPathNameToNtPathName_U=RtlDosPathNameToNtPathName_U@16
|
||||
RtlDosSearchPath_U=RtlDosSearchPath_U@24
|
||||
RtlDowncaseUnicodeString=RtlDowncaseUnicodeString@12
|
||||
RtlEnlargedIntegerMultiply=RtlEnlargedIntegerMultiply@8
|
||||
RtlEnlargedUnsignedDivide=RtlEnlargedUnsignedDivide@16
|
||||
RtlEnlargedUnsignedMultiply=RtlEnlargedUnsignedMultiply@8
|
||||
RtlEqualString=RtlEqualString@12
|
||||
RtlEqualUnicodeString=RtlEqualUnicodeString@12
|
||||
RtlEraseUnicodeString=RtlEraseUnicodeString@4
|
||||
RtlExpandEnvironmentStrings_U=RtlExpandEnvironmentStrings_U@16
|
||||
RtlExtendedIntegerMultiply=RtlExtendedIntegerMultiply@12
|
||||
RtlExtendedLargeIntegerDivide=RtlExtendedLargeIntegerDivide@16
|
||||
RtlExtendedMagicDivide=RtlExtendedMagicDivide@20
|
||||
RtlFillMemory=RtlFillMemory@12
|
||||
RtlFillMemoryUlong=RtlFillMemoryUlong@12
|
||||
RtlFindClearBits=RtlFindClearBits@12
|
||||
RtlFindClearBitsAndSet=RtlFindClearBitsAndSet@12
|
||||
RtlFindLongestRunClear=RtlFindLongestRunClear@8
|
||||
RtlFindLongestRunSet=RtlFindLongestRunSet@8
|
||||
RtlFindSetBits=RtlFindSetBits@12
|
||||
RtlFindSetBitsAndClear=RtlFindSetBitsAndClear@12
|
||||
RtlFreeAnsiString=RtlFreeAnsiString@4
|
||||
RtlFreeHeap=RtlFreeHeap@12
|
||||
RtlFreeUnicodeString=RtlFreeUnicodeString@4
|
||||
RtlGetCurrentDirectory_U=RtlGetCurrentDirectory_U@8
|
||||
RtlGetDaclSecurityDescriptor=RtlGetDaclSecurityDescriptor@16
|
||||
RtlGetFullPathName_U=RtlGetFullPathName_U@16
|
||||
RtlGetGroupSecurityDescriptor=RtlGetGroupSecurityDescriptor@12
|
||||
RtlGetLongestNtPathLength=RtlGetLongestNtPathLength@0
|
||||
RtlGetOwnerSecurityDescriptor=RtlGetOwnerSecurityDescriptor@12
|
||||
RtlGetProcessHeap=RtlGetProcessHeap@0
|
||||
RtlInitAnsiString=RtlInitAnsiString@8
|
||||
RtlInitString=RtlInitString@8
|
||||
RtlInitUnicodeString=RtlInitUnicodeString@8
|
||||
RtlInitializeBitMap=RtlInitializeBitMap@12
|
||||
RtlInitializeContext=RtlInitializeContext@20
|
||||
RtlIntegerToChar=RtlIntegerToChar@16
|
||||
RtlIntegerToUnicodeString=RtlIntegerToUnicodeString@12
|
||||
RtlIsDosDeviceName_U=RtlIsDosDeviceName_U@4
|
||||
RtlIsNameLegalDOS8Dot3=RtlIsNameLegalDOS8Dot3@12
|
||||
RtlLargeIntegerAdd=RtlLargeIntegerAdd@16
|
||||
RtlLargeIntegerArithmeticShift=RtlLargeIntegerArithmeticShift@12
|
||||
RtlLargeIntegerDivide=RtlLargeIntegerDivide@20
|
||||
RtlLargeIntegerNegate=RtlLargeIntegerNegate@8
|
||||
RtlLargeIntegerShiftLeft=RtlLargeIntegerShiftLeft@12
|
||||
RtlLargeIntegerShiftRight=RtlLargeIntegerShiftRight@12
|
||||
RtlLargeIntegerSubtract=RtlLargeIntegerSubtract@16
|
||||
RtlLengthSecurityDescriptor=RtlLengthSecurityDescriptor@4
|
||||
RtlLockHeap=RtlLockHeap@4
|
||||
RtlMoveMemory=RtlMoveMemory@12
|
||||
RtlMultiByteToUnicodeN=RtlMultiByteToUnicodeN@20
|
||||
RtlMultiByteToUnicodeSize=RtlMultiByteToUnicodeSize@12
|
||||
RtlNormalizeProcessParams=RtlNormalizeProcessParams@4
|
||||
RtlNtStatusToDosError=RtlNtStatusToDosError@4
|
||||
RtlNtStatusToPsxErrno=RtlNtStatusToPsxErrno@4
|
||||
RtlNumberOfClearBits=RtlNumberOfClearBits@4
|
||||
RtlNumberOfSetBits=RtlNumberOfSetBits@4
|
||||
RtlOemStringToUnicodeSize=RtlOemStringToUnicodeSize@4
|
||||
RtlOemStringToUnicodeString=RtlOemStringToUnicodeString@12
|
||||
RtlOemToUnicodeN=RtlOemToUnicodeN@20
|
||||
RtlQueryEnvironmentVariable_U=RtlQueryEnvironmentVariable_U@12
|
||||
RtlReAllocateHeap=RtlReAllocateHeap@16
|
||||
RtlReleasePebLock=RtlReleasePebLock@0
|
||||
RtlSetAllBits=RtlSetAllBits@4
|
||||
RtlSetBits=RtlSetBits@12
|
||||
RtlSetCurrentDirectory_U=RtlSetCurrentDirectory_U@4
|
||||
RtlSetCurrentEnvironment=RtlSetCurrentEnvironment@8
|
||||
RtlSetDaclSecurityDescriptor=RtlSetDaclSecurityDescriptor@16
|
||||
RtlSetEnvironmentVariable=RtlSetEnvironmentVariable@12
|
||||
RtlSetGroupSecurityDescriptor=RtlSetGroupSecurityDescriptor@12
|
||||
RtlSetOwnerSecurityDescriptor=RtlSetOwnerSecurityDescriptor@12
|
||||
RtlSizeHeap=RtlSizeHeap@12
|
||||
RtlUnicodeStringToAnsiSize=RtlUnicodeStringToAnsiSize@4
|
||||
RtlUnicodeStringToAnsiString=RtlUnicodeStringToAnsiString@12
|
||||
RtlUnicodeStringToCountedOemString=RtlUnicodeStringToCountedOemString@12
|
||||
RtlUnicodeStringToInteger=RtlUnicodeStringToInteger@12
|
||||
RtlUnicodeStringToOemSize=RtlUnicodeStringToOemSize@4
|
||||
RtlUnicodeStringToOemString=RtlUnicodeStringToOemString@12
|
||||
RtlUnicodeToMultiByteN=RtlUnicodeToMultiByteN@20
|
||||
RtlUnicodeToMultiByteSize=RtlUnicodeToMultiByteSize@12
|
||||
RtlUnicodeToOemN=RtlUnicodeToOemN@20
|
||||
RtlUnlockHeap=RtlUnlockHeap@4
|
||||
RtlUnwind=RtlUnwind@0
|
||||
RtlUpcaseUnicodeChar=RtlUpcaseUnicodeChar@4
|
||||
RtlUpcaseUnicodeString=RtlUpcaseUnicodeString@12
|
||||
RtlUpcaseUnicodeStringToAnsiString=RtlUpcaseUnicodeStringToAnsiString@12
|
||||
RtlUpcaseUnicodeStringToCountedOemString=RtlUpcaseUnicodeStringToCountedOemString@12
|
||||
RtlUpcaseUnicodeStringToOemString=RtlUpcaseUnicodeStringToOemString@12
|
||||
RtlUpcaseUnicodeToMultiByteN=RtlUpcaseUnicodeToMultiByteN@20
|
||||
RtlUpcaseUnicodeToOemN=RtlUpcaseUnicodeToOemN@20
|
||||
RtlUpperChar=RtlUpperChar@4
|
||||
RtlUpperString=RtlUpperString@8
|
||||
RtlValidSecurityDescriptor=RtlValidSecurityDescriptor@4
|
||||
RtlValidateHeap=RtlValidateHeap@12
|
||||
RtlZeroMemory=RtlZeroMemory@8
|
||||
RtlxAnsiStringToUnicodeSize=RtlxAnsiStringToUnicodeSize@4
|
||||
RtlxOemStringToUnicodeSize=RtlxOemStringToUnicodeSize@4
|
||||
RtlxUnicodeStringToAnsiSize=RtlxUnicodeStringToAnsiSize@4
|
||||
RtlxUnicodeStringToOemSize=RtlxUnicodeStringToOemSize@4
|
||||
ZwAcceptConnectPort=ZwAcceptConnectPort@24
|
||||
ZwAccessCheck=ZwAccessCheck@32
|
||||
ZwAccessCheckAndAuditAlarm=ZwAccessCheckAndAuditAlarm@44
|
||||
|
@ -433,122 +568,6 @@ ZwWriteRequestData=ZwWriteRequestData@24
|
|||
ZwWriteVirtualMemory=ZwWriteVirtualMemory@20
|
||||
ZwW32Call=ZwW32Call@20
|
||||
ZwYieldExecution=ZwYieldExecution@0
|
||||
RtlAbsoluteToSelfRelativeSD=RtlAbsoluteToSelfRelativeSD@12
|
||||
RtlAcquirePebLock=RtlAcquirePebLock@0
|
||||
RtlAllocateHeap=RtlAllocateHeap@12
|
||||
RtlAnsiCharToUnicodeChar=RtlAnsiCharToUnicodeChar@4
|
||||
RtlAnsiStringToUnicodeSize=RtlAnsiStringToUnicodeSize@4
|
||||
RtlAnsiStringToUnicodeString=RtlAnsiStringToUnicodeString@12
|
||||
RtlAppendUnicodeStringToString=RtlAppendUnicodeStringToString@8
|
||||
RtlAppendUnicodeToString=RtlAppendUnicodeToString@8
|
||||
RtlCharToInteger=RtlCharToInteger@12
|
||||
RtlCreateEnvironment=RtlCreateEnvironment@8
|
||||
RtlCreateHeap=RtlCreateHeap@24
|
||||
RtlCreateProcessParameters=RtlCreateProcessParameters@40
|
||||
RtlCreateSecurityDescriptor=RtlCreateSecurityDescriptor@8
|
||||
RtlCreateUnicodeString=RtlCreateUnicodeString@8
|
||||
RtlCreateUnicodeStringFromAsciiz=RtlCreateUnicodeStringFromAsciiz@8
|
||||
RtlCreateUserProcess=RtlCreateUserProcess@40
|
||||
RtlCreateUserThread=RtlCreateUserThread@40
|
||||
RtlCompactHeap=RtlCompactHeap@8
|
||||
RtlCompareString=RtlCompareString@12
|
||||
RtlCompareUnicodeString=RtlCompareUnicodeString@12
|
||||
RtlConvertLongToLargeInteger=RtlConvertLongToLargeInteger@4
|
||||
RtlConvertUlongToLargeInteger=RtlConvertUlongToLargeInteger@4
|
||||
RtlCopyString=RtlCopyString@8
|
||||
RtlCopyUnicodeString=RtlCopyUnicodeString@8
|
||||
RtlDeNormalizeProcessParams=RtlDeNormalizeProcessParams@4
|
||||
RtlDestroyEnvironment=RtlDestroyEnvironment@4
|
||||
RtlDestroyHeap=RtlDestroyHeap@4
|
||||
RtlDestroyProcessParameters=RtlDestroyProcessParameters@4
|
||||
RtlDetermineDosPathNameType_U=RtlDetermineDosPathNameType_U@4
|
||||
RtlDoesFileExists_U=RtlDoesFileExists_U@4
|
||||
RtlDosPathNameToNtPathName_U=RtlDosPathNameToNtPathName_U@16
|
||||
RtlDosSearchPath_U=RtlDosSearchPath_U@24
|
||||
RtlDowncaseUnicodeString=RtlDowncaseUnicodeString@12
|
||||
RtlEnlargedIntegerMultiply=RtlEnlargedIntegerMultiply@8
|
||||
RtlEnlargedUnsignedDivide=RtlEnlargedUnsignedDivide@16
|
||||
RtlEnlargedUnsignedMultiply=RtlEnlargedUnsignedMultiply@8
|
||||
RtlEqualString=RtlEqualString@12
|
||||
RtlEqualUnicodeString=RtlEqualUnicodeString@12
|
||||
RtlEraseUnicodeString=RtlEraseUnicodeString@4
|
||||
RtlExpandEnvironmentStrings_U=RtlExpandEnvironmentStrings_U@16
|
||||
RtlExtendedIntegerMultiply=RtlExtendedIntegerMultiply@12
|
||||
RtlExtendedLargeIntegerDivide=RtlExtendedLargeIntegerDivide@16
|
||||
RtlExtendedMagicDivide=RtlExtendedMagicDivide@20
|
||||
RtlFillMemory=RtlFillMemory@12
|
||||
RtlFreeAnsiString=RtlFreeAnsiString@4
|
||||
RtlFreeHeap=RtlFreeHeap@12
|
||||
RtlFreeUnicodeString=RtlFreeUnicodeString@4
|
||||
RtlGetCurrentDirectory_U=RtlGetCurrentDirectory_U@8
|
||||
RtlGetDaclSecurityDescriptor=RtlGetDaclSecurityDescriptor@16
|
||||
RtlGetFullPathName_U=RtlGetFullPathName_U@16
|
||||
RtlGetGroupSecurityDescriptor=RtlGetGroupSecurityDescriptor@12
|
||||
RtlGetLongestNtPathLength=RtlGetLongestNtPathLength@0
|
||||
RtlGetOwnerSecurityDescriptor=RtlGetOwnerSecurityDescriptor@12
|
||||
RtlGetProcessHeap=RtlGetProcessHeap@0
|
||||
RtlInitAnsiString=RtlInitAnsiString@8
|
||||
RtlInitString=RtlInitString@8
|
||||
RtlInitUnicodeString=RtlInitUnicodeString@8
|
||||
RtlInitializeContext=RtlInitializeContext@20
|
||||
RtlIntegerToChar=RtlIntegerToChar@16
|
||||
RtlIntegerToUnicodeString=RtlIntegerToUnicodeString@12
|
||||
RtlIsDosDeviceName_U=RtlIsDosDeviceName_U@4
|
||||
RtlIsNameLegalDOS8Dot3=RtlIsNameLegalDOS8Dot3@12
|
||||
RtlLargeIntegerAdd=RtlLargeIntegerAdd@16
|
||||
RtlLargeIntegerArithmeticShift=RtlLargeIntegerArithmeticShift@12
|
||||
RtlLargeIntegerDivide=RtlLargeIntegerDivide@20
|
||||
RtlLargeIntegerNegate=RtlLargeIntegerNegate@8
|
||||
RtlLargeIntegerShiftLeft=RtlLargeIntegerShiftLeft@12
|
||||
RtlLargeIntegerShiftRight=RtlLargeIntegerShiftRight@12
|
||||
RtlLargeIntegerSubtract=RtlLargeIntegerSubtract@16
|
||||
RtlLengthSecurityDescriptor=RtlLengthSecurityDescriptor@4
|
||||
RtlLockHeap=RtlLockHeap@4
|
||||
RtlMoveMemory=RtlMoveMemory@12
|
||||
RtlMultiByteToUnicodeN=RtlMultiByteToUnicodeN@20
|
||||
RtlNormalizeProcessParams=RtlNormalizeProcessParams@4
|
||||
RtlNtStatusToDosError=RtlNtStatusToDosError@4
|
||||
RtlNtStatusToPsxErrno=RtlNtStatusToPsxErrno@4
|
||||
RtlOemStringToUnicodeSize=RtlOemStringToUnicodeSize@4
|
||||
RtlOemStringToUnicodeString=RtlOemStringToUnicodeString@12
|
||||
RtlOemToUnicodeN=RtlOemToUnicodeN@20
|
||||
RtlQueryEnvironmentVariable_U=RtlQueryEnvironmentVariable_U@12
|
||||
RtlReAllocateHeap=RtlReAllocateHeap@16
|
||||
RtlReleasePebLock=RtlReleasePebLock@0
|
||||
RtlSetCurrentDirectory_U=RtlSetCurrentDirectory_U@4
|
||||
RtlSetCurrentEnvironment=RtlSetCurrentEnvironment@8
|
||||
RtlSetDaclSecurityDescriptor=RtlSetDaclSecurityDescriptor@16
|
||||
RtlSetEnvironmentVariable=RtlSetEnvironmentVariable@12
|
||||
RtlSetGroupSecurityDescriptor=RtlSetGroupSecurityDescriptor@12
|
||||
RtlSetOwnerSecurityDescriptor=RtlSetOwnerSecurityDescriptor@12
|
||||
RtlSizeHeap=RtlSizeHeap@12
|
||||
RtlUnlockHeap=RtlUnlockHeap@4
|
||||
RtlUnicodeStringToAnsiSize=RtlUnicodeStringToAnsiSize@4
|
||||
RtlUnicodeStringToAnsiString=RtlUnicodeStringToAnsiString@12
|
||||
RtlUnicodeStringToCountedOemString=RtlUnicodeStringToCountedOemString@12
|
||||
RtlUnicodeStringToInteger=RtlUnicodeStringToInteger@12
|
||||
RtlUnicodeStringToOemSize=RtlUnicodeStringToOemSize@4
|
||||
RtlUnicodeStringToOemString=RtlUnicodeStringToOemString@12
|
||||
RtlUnicodeToMultiByteN=RtlUnicodeToMultiByteN@20
|
||||
RtlUnicodeToMultiByteSize=RtlUnicodeToMultiByteSize@12
|
||||
RtlUnicodeToOemN=RtlUnicodeToOemN@20
|
||||
RtlUnwind=RtlUnwind@0
|
||||
RtlUpcaseUnicodeChar=RtlUpcaseUnicodeChar@4
|
||||
RtlUpcaseUnicodeString=RtlUpcaseUnicodeString@12
|
||||
RtlUpcaseUnicodeStringToAnsiString=RtlUpcaseUnicodeStringToAnsiString@12
|
||||
RtlUpcaseUnicodeStringToCountedOemString=RtlUpcaseUnicodeStringToCountedOemString@12
|
||||
RtlUpcaseUnicodeStringToOemString=RtlUpcaseUnicodeStringToOemString@12
|
||||
RtlUpcaseUnicodeToMultiByteN=RtlUpcaseUnicodeToMultiByteN@20
|
||||
RtlUpcaseUnicodeToOemN=RtlUpcaseUnicodeToOemN@20
|
||||
RtlUpperChar=RtlUpperChar@4
|
||||
RtlUpperString=RtlUpperString@8
|
||||
RtlValidSecurityDescriptor=RtlValidSecurityDescriptor@4
|
||||
RtlValidateHeap=RtlValidateHeap@12
|
||||
RtlZeroMemory=RtlZeroMemory@8
|
||||
RtlxAnsiStringToUnicodeSize=RtlxAnsiStringToUnicodeSize@4
|
||||
RtlxOemStringToUnicodeSize=RtlxOemStringToUnicodeSize@4
|
||||
RtlxUnicodeStringToAnsiSize=RtlxUnicodeStringToAnsiSize@4
|
||||
RtlxUnicodeStringToOemSize=RtlxUnicodeStringToOemSize@4
|
||||
__isascii
|
||||
__iscsym
|
||||
__iscsymf
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# $Id: makefile,v 1.38 2000/02/13 16:05:13 dwelch Exp $
|
||||
# $Id: makefile,v 1.39 2000/03/09 00:13:14 ekohl Exp $
|
||||
#
|
||||
# ReactOS Operating System
|
||||
#
|
||||
|
@ -29,7 +29,8 @@ DBG_OBJECTS = dbg/brkpoint.o dbg/print.o
|
|||
|
||||
RTL_OBJECTS = rtl/critical.o rtl/error.o rtl/heap.o rtl/largeint.o \
|
||||
rtl/math.o rtl/mem.o rtl/nls.o rtl/process.o rtl/sd.o \
|
||||
rtl/thread.o rtl/unicode.o rtl/env.o rtl/path.o rtl/ppb.o
|
||||
rtl/thread.o rtl/unicode.o rtl/env.o rtl/path.o rtl/ppb.o \
|
||||
rtl/bitmap.o
|
||||
|
||||
STDIO_OBJECTS = stdio/sprintf.o stdio/swprintf.o
|
||||
|
||||
|
|
649
reactos/lib/ntdll/rtl/bitmap.c
Normal file
649
reactos/lib/ntdll/rtl/bitmap.c
Normal file
|
@ -0,0 +1,649 @@
|
|||
/* $Id: bitmap.c,v 1.1 2000/03/09 00:14:10 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
* FILE: lib/ntdll/rtl/bitmap.c
|
||||
* PURPOSE: Bitmap functions
|
||||
* UPDATE HISTORY:
|
||||
* 20/08/99 Created by Eric Kohl
|
||||
*/
|
||||
|
||||
#include <ddk/ntddk.h>
|
||||
|
||||
|
||||
#define ALIGN(x,align) (((x)+(align)-1) / (align))
|
||||
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
RtlInitializeBitMap (
|
||||
PRTL_BITMAP BitMapHeader,
|
||||
PULONG BitMapBuffer,
|
||||
ULONG SizeOfBitMap
|
||||
)
|
||||
{
|
||||
BitMapHeader->SizeOfBitMap = SizeOfBitMap;
|
||||
BitMapHeader->Buffer = BitMapBuffer;
|
||||
}
|
||||
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
RtlAreBitsClear (
|
||||
PRTL_BITMAP BitMapHeader,
|
||||
ULONG StartingIndex,
|
||||
ULONG Length
|
||||
)
|
||||
{
|
||||
ULONG Size = BitMapHeader->SizeOfBitMap;
|
||||
ULONG Shift;
|
||||
ULONG Count;
|
||||
PCHAR Ptr;
|
||||
|
||||
if (StartingIndex >= Size ||
|
||||
!Length ||
|
||||
(StartingIndex + Length > Size))
|
||||
return FALSE;
|
||||
|
||||
Ptr = (PCHAR)BitMapHeader->Buffer + (StartingIndex / 8);
|
||||
while (Length)
|
||||
{
|
||||
/* get bit shift in current byte */
|
||||
Shift = StartingIndex & 7;
|
||||
|
||||
/* get number of bits to check in current byte */
|
||||
Count = (Length > 8 - Shift) ? 8 - Shift : Length;
|
||||
|
||||
/* check byte */
|
||||
if (*Ptr++ & (~(0xFF << Count) << Shift))
|
||||
return FALSE;
|
||||
|
||||
Length -= Count;
|
||||
StartingIndex += Count;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
RtlAreBitsSet (
|
||||
PRTL_BITMAP BitMapHeader,
|
||||
ULONG StartingIndex,
|
||||
ULONG Length
|
||||
)
|
||||
{
|
||||
ULONG Size = BitMapHeader->SizeOfBitMap;
|
||||
ULONG Shift;
|
||||
ULONG Count;
|
||||
PCHAR Ptr;
|
||||
|
||||
if (StartingIndex >= Size ||
|
||||
!Length ||
|
||||
(StartingIndex + Length > Size))
|
||||
return FALSE;
|
||||
|
||||
Ptr = (PCHAR)BitMapHeader->Buffer + (StartingIndex / 8);
|
||||
while (Length)
|
||||
{
|
||||
/* get bit shift in current byte */
|
||||
Shift = StartingIndex & 7;
|
||||
|
||||
/* get number of bits to check in current byte */
|
||||
Count = (Length > 8 - Shift) ? 8 - Shift : Length;
|
||||
|
||||
/* check byte */
|
||||
if (~*Ptr++ & (~(0xFF << Count) << Shift))
|
||||
return FALSE;
|
||||
|
||||
Length -= Count;
|
||||
StartingIndex += Count;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
RtlClearAllBits (
|
||||
IN OUT PRTL_BITMAP BitMapHeader
|
||||
)
|
||||
{
|
||||
memset (BitMapHeader->Buffer,
|
||||
0x00,
|
||||
ALIGN(BitMapHeader->SizeOfBitMap, 8));
|
||||
}
|
||||
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
RtlClearBits (
|
||||
PRTL_BITMAP BitMapHeader,
|
||||
ULONG StartingIndex,
|
||||
ULONG NumberToClear
|
||||
)
|
||||
{
|
||||
ULONG Size = BitMapHeader->SizeOfBitMap;
|
||||
ULONG Count;
|
||||
ULONG Shift;
|
||||
PCHAR Ptr;
|
||||
|
||||
if (StartingIndex >= Size || NumberToClear == 0)
|
||||
return;
|
||||
|
||||
if (StartingIndex + NumberToClear > Size)
|
||||
NumberToClear = Size - StartingIndex;
|
||||
|
||||
Ptr = (PCHAR)(BitMapHeader->Buffer + (StartingIndex / 8));
|
||||
while (NumberToClear)
|
||||
{
|
||||
/* bit shift in current byte */
|
||||
Shift = StartingIndex & 7;
|
||||
|
||||
/* number of bits to change in current byte */
|
||||
Count = (NumberToClear > 8 - Shift ) ? 8 - Shift : NumberToClear;
|
||||
|
||||
/* adjust byte */
|
||||
*Ptr++ &= ~(~(0xFF << Count) << Shift);
|
||||
NumberToClear -= Count;
|
||||
StartingIndex += Count;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ULONG
|
||||
STDCALL
|
||||
RtlFindClearBits (
|
||||
PRTL_BITMAP BitMapHeader,
|
||||
ULONG NumberToFind,
|
||||
ULONG HintIndex
|
||||
)
|
||||
{
|
||||
ULONG Size = BitMapHeader->SizeOfBitMap;
|
||||
ULONG Index;
|
||||
ULONG Count;
|
||||
PCHAR Ptr;
|
||||
CHAR Mask;
|
||||
|
||||
if (NumberToFind > Size || NumberToFind == 0)
|
||||
return -1;
|
||||
|
||||
if (HintIndex >= Size)
|
||||
HintIndex = 0;
|
||||
|
||||
Index = HintIndex;
|
||||
Ptr = (PCHAR)BitMapHeader->Buffer + (Index / 8);
|
||||
Mask = 1 << (Index & 7);
|
||||
|
||||
while (HintIndex < Size)
|
||||
{
|
||||
/* count clear bits */
|
||||
for (Count = 0; Index < Size && ~*Ptr & Mask; Index++)
|
||||
{
|
||||
if (++Count >= NumberToFind)
|
||||
return HintIndex;
|
||||
Mask <<= 1;
|
||||
if (Mask == 0)
|
||||
{
|
||||
Mask = 1;
|
||||
Ptr++;
|
||||
}
|
||||
}
|
||||
|
||||
/* skip set bits */
|
||||
for (; Index < Size && *Ptr & Mask; Index++)
|
||||
{
|
||||
Mask <<= 1;
|
||||
if (Mask == 0)
|
||||
{
|
||||
Mask = 1;
|
||||
Ptr++;
|
||||
}
|
||||
}
|
||||
HintIndex = Index;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
ULONG
|
||||
STDCALL
|
||||
RtlFindClearBitsAndSet (
|
||||
PRTL_BITMAP BitMapHeader,
|
||||
ULONG NumberToFind,
|
||||
ULONG HintIndex
|
||||
)
|
||||
{
|
||||
ULONG Index;
|
||||
|
||||
Index = RtlFindClearBits (BitMapHeader,
|
||||
NumberToFind,
|
||||
HintIndex);
|
||||
if (Index != (ULONG)-1)
|
||||
RtlSetBits (BitMapHeader,
|
||||
Index,
|
||||
NumberToFind);
|
||||
|
||||
return Index;
|
||||
}
|
||||
|
||||
|
||||
ULONG
|
||||
STDCALL
|
||||
RtlFindFirstRunClear (
|
||||
PRTL_BITMAP BitMapHeader,
|
||||
PULONG StartingIndex
|
||||
)
|
||||
{
|
||||
ULONG Size = BitMapHeader->SizeOfBitMap;
|
||||
ULONG Index;
|
||||
ULONG Count;
|
||||
PCHAR Ptr;
|
||||
CHAR Mask;
|
||||
|
||||
if (*StartingIndex > Size)
|
||||
{
|
||||
*StartingIndex = (ULONG)-1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
Index = *StartingIndex;
|
||||
Ptr = (PCHAR)BitMapHeader->Buffer + (Index / 8);
|
||||
Mask = 1 << (Index & 7);
|
||||
|
||||
/* skip set bits */
|
||||
for (; Index < Size && *Ptr & Mask; Index++)
|
||||
{
|
||||
Mask <<= 1;
|
||||
if (Mask == 0)
|
||||
{
|
||||
Mask = 1;
|
||||
Ptr++;
|
||||
}
|
||||
}
|
||||
|
||||
/* return index of first clear bit */
|
||||
if (Index >= Size)
|
||||
{
|
||||
*StartingIndex = (ULONG)-1;
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
*StartingIndex = Index;
|
||||
|
||||
/* count clear bits */
|
||||
for (Count = 0; Index < Size && ~*Ptr & Mask; Index++)
|
||||
{
|
||||
Count++;
|
||||
Mask <<= 1;
|
||||
if (Mask == 0)
|
||||
{
|
||||
Mask = 1;
|
||||
Ptr++;
|
||||
}
|
||||
}
|
||||
|
||||
return Count;
|
||||
}
|
||||
|
||||
|
||||
ULONG
|
||||
STDCALL
|
||||
RtlFindFirstRunSet (
|
||||
PRTL_BITMAP BitMapHeader,
|
||||
PULONG StartingIndex
|
||||
)
|
||||
{
|
||||
ULONG Size = BitMapHeader->SizeOfBitMap;
|
||||
ULONG Index;
|
||||
ULONG Count;
|
||||
PCHAR Ptr;
|
||||
CHAR Mask;
|
||||
|
||||
if (*StartingIndex > Size)
|
||||
{
|
||||
*StartingIndex = (ULONG)-1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
Index = *StartingIndex;
|
||||
Ptr = (PCHAR)BitMapHeader->Buffer + (Index / 8);
|
||||
Mask = 1 << (Index & 7);
|
||||
|
||||
/* skip clear bits */
|
||||
for (; Index < Size && ~*Ptr & Mask; Index++)
|
||||
{
|
||||
Mask <<= 1;
|
||||
if (Mask == 0)
|
||||
{
|
||||
Mask = 1;
|
||||
Ptr++;
|
||||
}
|
||||
}
|
||||
|
||||
/* return index of first set bit */
|
||||
if (Index >= Size)
|
||||
{
|
||||
*StartingIndex = (ULONG)-1;
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
*StartingIndex = Index;
|
||||
|
||||
/* count set bits */
|
||||
for (Count = 0; Index < Size && *Ptr & Mask; Index++)
|
||||
{
|
||||
Count++;
|
||||
Mask <<= 1;
|
||||
if (Mask == 0)
|
||||
{
|
||||
Mask = 1;
|
||||
Ptr++;
|
||||
}
|
||||
}
|
||||
|
||||
return Count;
|
||||
}
|
||||
|
||||
|
||||
ULONG
|
||||
STDCALL
|
||||
RtlFindLongestRunClear (
|
||||
PRTL_BITMAP BitMapHeader,
|
||||
PULONG StartingIndex
|
||||
)
|
||||
{
|
||||
ULONG Size = BitMapHeader->SizeOfBitMap;
|
||||
PCHAR Ptr = (PCHAR)BitMapHeader->Buffer;
|
||||
ULONG Index = 0;
|
||||
ULONG Count;
|
||||
ULONG Max = 0;
|
||||
ULONG Start;
|
||||
ULONG Maxstart = 0;
|
||||
CHAR Mask = 1;
|
||||
|
||||
while (Index < Size)
|
||||
{
|
||||
Start = Index;
|
||||
|
||||
/* count clear bits */
|
||||
for (Count = 0; Index < Size && ~*Ptr & Mask; Index++)
|
||||
{
|
||||
Count++;
|
||||
Mask <<= 1;
|
||||
if (Mask == 0)
|
||||
{
|
||||
Mask = 1;
|
||||
Ptr++;
|
||||
}
|
||||
}
|
||||
|
||||
/* skip set bits */
|
||||
for (; Index < Size && *Ptr & Mask; Index++)
|
||||
{
|
||||
Mask <<= 1;
|
||||
if (Mask == 0)
|
||||
{
|
||||
Mask = 1;
|
||||
Ptr++;
|
||||
}
|
||||
}
|
||||
|
||||
if (Count > Max)
|
||||
{
|
||||
Max = Count;
|
||||
Maxstart = Start;
|
||||
}
|
||||
}
|
||||
|
||||
if (StartingIndex)
|
||||
*StartingIndex = Maxstart;
|
||||
|
||||
return Max;
|
||||
}
|
||||
|
||||
|
||||
ULONG
|
||||
STDCALL
|
||||
RtlFindLongestRunSet (
|
||||
PRTL_BITMAP BitMapHeader,
|
||||
PULONG StartingIndex
|
||||
)
|
||||
{
|
||||
ULONG Size = BitMapHeader->SizeOfBitMap;
|
||||
PCHAR Ptr = (PCHAR)BitMapHeader->Buffer;
|
||||
ULONG Index = 0;
|
||||
ULONG Count;
|
||||
ULONG Max = 0;
|
||||
ULONG Start;
|
||||
ULONG Maxstart = 0;
|
||||
CHAR Mask = 1;
|
||||
|
||||
while (Index < Size)
|
||||
{
|
||||
Start = Index;
|
||||
|
||||
/* count set bits */
|
||||
for (Count = 0; Index < Size && *Ptr & Mask; Index++)
|
||||
{
|
||||
Count++;
|
||||
Mask <<= 1;
|
||||
if (Mask == 0)
|
||||
{
|
||||
Mask = 1;
|
||||
Ptr++;
|
||||
}
|
||||
}
|
||||
|
||||
/* skip clear bits */
|
||||
for (; Index < Size && ~*Ptr & Mask; Index++)
|
||||
{
|
||||
Mask <<= 1;
|
||||
if (Mask == 0)
|
||||
{
|
||||
Mask = 1;
|
||||
Ptr++;
|
||||
}
|
||||
}
|
||||
|
||||
if (Count > Max)
|
||||
{
|
||||
Max = Count;
|
||||
Maxstart = Start;
|
||||
}
|
||||
}
|
||||
|
||||
if (StartingIndex)
|
||||
*StartingIndex = Maxstart;
|
||||
|
||||
return Max;
|
||||
}
|
||||
|
||||
|
||||
ULONG
|
||||
STDCALL
|
||||
RtlFindSetBits (
|
||||
PRTL_BITMAP BitMapHeader,
|
||||
ULONG NumberToFind,
|
||||
ULONG HintIndex
|
||||
)
|
||||
{
|
||||
ULONG Size = BitMapHeader->SizeOfBitMap;
|
||||
ULONG Index;
|
||||
ULONG Count;
|
||||
PCHAR Ptr;
|
||||
CHAR Mask;
|
||||
|
||||
if (NumberToFind > Size || NumberToFind == 0)
|
||||
return (ULONG)-1;
|
||||
|
||||
if (HintIndex >= Size)
|
||||
HintIndex = 0;
|
||||
|
||||
Index = HintIndex;
|
||||
Ptr = (PCHAR)BitMapHeader->Buffer + (Index / 8);
|
||||
Mask = 1 << (Index & 7);
|
||||
|
||||
while (HintIndex < Size)
|
||||
{
|
||||
/* count set bits */
|
||||
for (Count = 0; Index < Size && *Ptr & Mask; Index++)
|
||||
{
|
||||
if (++Count >= NumberToFind)
|
||||
return HintIndex;
|
||||
Mask <<= 1;
|
||||
if (Mask == 0)
|
||||
{
|
||||
Mask = 1;
|
||||
Ptr++;
|
||||
}
|
||||
}
|
||||
|
||||
/* skip clear bits */
|
||||
for (; Index < Size && ~*Ptr & Mask; Index++)
|
||||
{
|
||||
Mask <<= 1;
|
||||
if (Mask == 0)
|
||||
{
|
||||
Mask = 1;
|
||||
Ptr++;
|
||||
}
|
||||
}
|
||||
HintIndex = Index;
|
||||
}
|
||||
|
||||
return (ULONG)-1;
|
||||
}
|
||||
|
||||
|
||||
ULONG
|
||||
STDCALL
|
||||
RtlFindSetBitsAndClear (
|
||||
PRTL_BITMAP BitMapHeader,
|
||||
ULONG NumberToFind,
|
||||
ULONG HintIndex
|
||||
)
|
||||
{
|
||||
ULONG Index;
|
||||
|
||||
Index = RtlFindSetBits (BitMapHeader,
|
||||
NumberToFind,
|
||||
HintIndex);
|
||||
if (Index != (ULONG)-1)
|
||||
RtlClearBits (BitMapHeader,
|
||||
Index,
|
||||
NumberToFind);
|
||||
|
||||
return Index;
|
||||
}
|
||||
|
||||
|
||||
ULONG
|
||||
STDCALL
|
||||
RtlNumberOfClearBits (
|
||||
PRTL_BITMAP BitMapHeader
|
||||
)
|
||||
{
|
||||
PCHAR Ptr = (PCHAR)BitMapHeader->Buffer;
|
||||
ULONG Size = BitMapHeader->SizeOfBitMap;
|
||||
ULONG Index;
|
||||
ULONG Count;
|
||||
CHAR Mask;
|
||||
|
||||
for (Mask = 1, Index = 0, Count = 0; Index < Size; Index++)
|
||||
{
|
||||
if (~*Ptr & Mask)
|
||||
Count++;
|
||||
|
||||
Mask <<= 1;
|
||||
if (Mask == 0)
|
||||
{
|
||||
Mask = 1;
|
||||
Ptr++;
|
||||
}
|
||||
}
|
||||
|
||||
return Count;
|
||||
}
|
||||
|
||||
|
||||
ULONG
|
||||
STDCALL
|
||||
RtlNumberOfSetBits (
|
||||
PRTL_BITMAP BitMapHeader
|
||||
)
|
||||
{
|
||||
PCHAR Ptr = (PCHAR)BitMapHeader->Buffer;
|
||||
ULONG Size = BitMapHeader->SizeOfBitMap;
|
||||
ULONG Index;
|
||||
ULONG Count;
|
||||
CHAR Mask;
|
||||
|
||||
for (Mask = 1, Index = 0, Count = 0; Index < Size; Index++)
|
||||
{
|
||||
if (*Ptr & Mask)
|
||||
Count++;
|
||||
|
||||
Mask <<= 1;
|
||||
if (Mask == 0)
|
||||
{
|
||||
Mask = 1;
|
||||
Ptr++;
|
||||
}
|
||||
}
|
||||
|
||||
return Count;
|
||||
}
|
||||
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
RtlSetAllBits (
|
||||
IN OUT PRTL_BITMAP BitMapHeader
|
||||
)
|
||||
{
|
||||
memset (BitMapHeader->Buffer,
|
||||
0xFF,
|
||||
ALIGN(BitMapHeader->SizeOfBitMap, 8));
|
||||
}
|
||||
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
RtlSetBits (
|
||||
PRTL_BITMAP BitMapHeader,
|
||||
ULONG StartingIndex,
|
||||
ULONG NumberToSet
|
||||
)
|
||||
{
|
||||
ULONG Size = BitMapHeader->SizeOfBitMap;
|
||||
ULONG Count;
|
||||
ULONG Shift;
|
||||
PCHAR Ptr;
|
||||
|
||||
if (StartingIndex >= Size || NumberToSet == 0)
|
||||
return;
|
||||
|
||||
if (StartingIndex + NumberToSet > Size)
|
||||
NumberToSet = Size - StartingIndex;
|
||||
|
||||
Ptr = (PCHAR)BitMapHeader->Buffer + (StartingIndex / 8);
|
||||
while (NumberToSet)
|
||||
{
|
||||
/* bit shift in current byte */
|
||||
Shift = StartingIndex & 7;
|
||||
|
||||
/* number of bits to change in current byte */
|
||||
Count = (NumberToSet > 8 - Shift) ? 8 - Shift : NumberToSet;
|
||||
|
||||
/* adjust byte */
|
||||
*Ptr++ |= ~(0xFF << Count) << Shift;
|
||||
NumberToSet -= Count;
|
||||
StartingIndex += Count;
|
||||
}
|
||||
}
|
||||
|
||||
/* EOF */
|
|
@ -1,8 +1,9 @@
|
|||
/*
|
||||
/* $Id: critical.c,v 1.5 2000/03/09 00:14:10 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS system libraries
|
||||
* FILE: lib/kernel32/sync/critical.c
|
||||
* PURPOSE: Critical regions
|
||||
* FILE: lib/ntdll/rtl/critical.c
|
||||
* PURPOSE: Critical sections
|
||||
* UPDATE HISTORY:
|
||||
* Created 30/09/98
|
||||
*/
|
||||
|
@ -16,16 +17,22 @@
|
|||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
VOID RtlDeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
|
||||
VOID
|
||||
STDCALL
|
||||
RtlDeleteCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
|
||||
{
|
||||
lpCriticalSection->Reserved = -1;
|
||||
}
|
||||
|
||||
VOID RtlEnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
|
||||
VOID
|
||||
STDCALL
|
||||
RtlEnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
|
||||
{
|
||||
}
|
||||
|
||||
VOID RtlInitializeCriticalSection(LPCRITICAL_SECTION pcritical)
|
||||
VOID
|
||||
STDCALL
|
||||
RtlInitializeCriticalSection(LPCRITICAL_SECTION pcritical)
|
||||
{
|
||||
pcritical->LockCount = -1;
|
||||
pcritical->RecursionCount = 0;
|
||||
|
@ -34,13 +41,18 @@ VOID RtlInitializeCriticalSection(LPCRITICAL_SECTION pcritical)
|
|||
pcritical->Reserved = 0;
|
||||
}
|
||||
|
||||
VOID RtlLeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
|
||||
VOID
|
||||
STDCALL
|
||||
RtlLeaveCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
|
||||
{
|
||||
}
|
||||
|
||||
WINBOOL RtlTryEntryCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
|
||||
BOOLEAN
|
||||
STDCALL
|
||||
RtlTryEnterCriticalSection(LPCRITICAL_SECTION lpCriticalSection)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
for(;;);
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: mem.c,v 1.7 2000/02/21 22:37:36 ekohl Exp $
|
||||
/* $Id: mem.c,v 1.8 2000/03/09 00:14:10 ekohl Exp $
|
||||
*
|
||||
* COPYRIGHT: See COPYING in the top level directory
|
||||
* PROJECT: ReactOS kernel
|
||||
|
@ -44,6 +44,36 @@ RtlCompareMemory(PVOID Source1, PVOID Source2, ULONG Length)
|
|||
return(total);
|
||||
}
|
||||
|
||||
ULONG
|
||||
STDCALL
|
||||
RtlCompareMemoryUlong (
|
||||
PVOID Source,
|
||||
ULONG Length,
|
||||
ULONG Value
|
||||
)
|
||||
/*
|
||||
* FUNCTION: Compares a block of ULONGs with an ULONG and returns the number of equal bytes
|
||||
* ARGUMENTS:
|
||||
* Source = Block to compare
|
||||
* Length = Number of bytes to compare
|
||||
* Value = Value to compare
|
||||
* RETURNS: Number of equal bytes
|
||||
*/
|
||||
{
|
||||
PULONG ptr = (PULONG)Source;
|
||||
ULONG len = Length / sizeof(ULONG);
|
||||
int i;
|
||||
|
||||
for (i = 0; i < len; i++)
|
||||
{
|
||||
if (*ptr != Value)
|
||||
break;
|
||||
ptr++;
|
||||
}
|
||||
|
||||
return (ULONG)((PCHAR)ptr - (PCHAR)Source);
|
||||
}
|
||||
|
||||
#if 0
|
||||
VOID RtlCopyBytes(PVOID Destination,
|
||||
CONST VOID* Source,
|
||||
|
@ -76,6 +106,25 @@ RtlFillMemory (
|
|||
);
|
||||
}
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
RtlFillMemoryUlong (
|
||||
PVOID Destination,
|
||||
ULONG Length,
|
||||
ULONG Fill
|
||||
)
|
||||
{
|
||||
PULONG Dest = Destination;
|
||||
ULONG Count = Length / sizeof(ULONG);
|
||||
|
||||
while (Count > 0)
|
||||
{
|
||||
*Dest = Fill;
|
||||
Dest++;
|
||||
Count--;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
VOID
|
||||
STDCALL
|
||||
|
|
Loading…
Reference in a new issue