mirror of
https://github.com/reactos/reactos.git
synced 2024-10-15 05:37:44 +00:00
Added some RtlLargeInteger functions.
svn path=/trunk/; revision=762
This commit is contained in:
parent
761e03c5a1
commit
58b907b668
|
@ -1212,7 +1212,7 @@ DPRINT("AdjOffset:%ld:%ld + Length:%ld = AdjExtent:%ld:%ld\n",
|
||||||
PartitionExtent.QuadPart = DeviceExtension->Offset + DeviceExtension->Size;
|
PartitionExtent.QuadPart = DeviceExtension->Offset + DeviceExtension->Size;
|
||||||
PartitionExtent = RtlExtendedIntegerMultiply(PartitionExtent,
|
PartitionExtent = RtlExtendedIntegerMultiply(PartitionExtent,
|
||||||
DeviceExtension->BytesPerSector);
|
DeviceExtension->BytesPerSector);
|
||||||
if (RtlLargeIntegerGreaterThan(AdjustedExtent, PartitionExtent) ||
|
if ((AdjustedExtent.QuadPart > PartitionExtent.QuadPart) ||
|
||||||
(IrpStack->Parameters.Read.Length & (DeviceExtension->BytesPerSector - 1)))
|
(IrpStack->Parameters.Read.Length & (DeviceExtension->BytesPerSector - 1)))
|
||||||
{
|
{
|
||||||
DPRINT("Request failed on bad parameters\n",0);
|
DPRINT("Request failed on bad parameters\n",0);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
; $Id: ntdll.def,v 1.18 1999/10/21 16:13:39 ekohl Exp $
|
; $Id: ntdll.def,v 1.19 1999/11/09 18:09:57 ekohl Exp $
|
||||||
;
|
;
|
||||||
; ReactOS Operating System
|
; ReactOS Operating System
|
||||||
;
|
;
|
||||||
|
@ -439,6 +439,8 @@ RtlCreateUserThread@40
|
||||||
RtlCompactHeap@8
|
RtlCompactHeap@8
|
||||||
RtlCompareString
|
RtlCompareString
|
||||||
RtlCompareUnicodeString
|
RtlCompareUnicodeString
|
||||||
|
RtlConvertLongToLargeInteger
|
||||||
|
RtlConvertUlongToLargeInteger
|
||||||
RtlCopyString
|
RtlCopyString
|
||||||
RtlCopyUnicodeString
|
RtlCopyUnicodeString
|
||||||
RtlDestroyHeap@4
|
RtlDestroyHeap@4
|
||||||
|
@ -459,6 +461,10 @@ RtlInitUnicodeString
|
||||||
RtlIntegerToUnicodeString
|
RtlIntegerToUnicodeString
|
||||||
RtlLargeIntegerAdd
|
RtlLargeIntegerAdd
|
||||||
RtlLargeIntegerDivide
|
RtlLargeIntegerDivide
|
||||||
|
RtlLargeIntegerNegate
|
||||||
|
RtlLargeIntegerShiftLeft
|
||||||
|
RtlLargeIntegerShiftRight
|
||||||
|
RtlLargeIntegerSubtract
|
||||||
RtlLengthSecurityDescriptor
|
RtlLengthSecurityDescriptor
|
||||||
RtlLockHeap@4
|
RtlLockHeap@4
|
||||||
RtlMoveMemory@12
|
RtlMoveMemory@12
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
; $Id: ntdll.edf,v 1.8 1999/10/21 16:13:39 ekohl Exp $
|
; $Id: ntdll.edf,v 1.9 1999/11/09 18:09:57 ekohl Exp $
|
||||||
;
|
;
|
||||||
; ReactOS Operating System
|
; ReactOS Operating System
|
||||||
;
|
;
|
||||||
|
@ -439,6 +439,8 @@ RtlCreateUserThread=RtlCreateUserThread@40
|
||||||
RtlCompactHeap=RtlCompactHeap@8
|
RtlCompactHeap=RtlCompactHeap@8
|
||||||
RtlCompareString
|
RtlCompareString
|
||||||
RtlCompareUnicodeString
|
RtlCompareUnicodeString
|
||||||
|
RtlConvertLongToLargeInteger
|
||||||
|
RtlConvertUlongToLargeInteger
|
||||||
RtlCopyString
|
RtlCopyString
|
||||||
RtlCopyUnicodeString
|
RtlCopyUnicodeString
|
||||||
RtlDestroyHeap=RtlDestroyHeap@4
|
RtlDestroyHeap=RtlDestroyHeap@4
|
||||||
|
@ -459,6 +461,10 @@ RtlInitUnicodeString
|
||||||
RtlIntegerToUnicodeString
|
RtlIntegerToUnicodeString
|
||||||
RtlLargeIntegerAdd
|
RtlLargeIntegerAdd
|
||||||
RtlLargeIntegerDivide
|
RtlLargeIntegerDivide
|
||||||
|
RtlLargeIntegerNegate
|
||||||
|
RtlLargeIntegerShiftLeft
|
||||||
|
RtlLargeIntegerShiftRight
|
||||||
|
RtlLargeIntegerSubtract
|
||||||
RtlLengthSecurityDescriptor
|
RtlLengthSecurityDescriptor
|
||||||
RtlLockHeap=RtlLockHeap@4
|
RtlLockHeap=RtlLockHeap@4
|
||||||
RtlMoveMemory=RtlMoveMemory@12
|
RtlMoveMemory=RtlMoveMemory@12
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: largeint.c,v 1.4 1999/09/29 23:09:44 ekohl Exp $
|
/* $Id: largeint.c,v 1.5 1999/11/09 18:09:00 ekohl Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -12,28 +12,13 @@
|
||||||
/* INCLUDES *****************************************************************/
|
/* INCLUDES *****************************************************************/
|
||||||
|
|
||||||
#include <ddk/ntddk.h>
|
#include <ddk/ntddk.h>
|
||||||
#include <internal/ke.h>
|
|
||||||
#include <internal/linkage.h>
|
|
||||||
|
|
||||||
#define NDEBUG
|
#define NDEBUG
|
||||||
#include <internal/debug.h>
|
#include <internal/debug.h>
|
||||||
|
|
||||||
typedef long long int LLI, *PLLI;
|
|
||||||
typedef unsigned long long int ULLI, *PULLI;
|
|
||||||
|
|
||||||
#define LIFromLLI(X) (*(PLARGE_INTEGER)&(X))
|
|
||||||
#define LLIFromLI(X) (*(PLLI)&(X))
|
|
||||||
#define ULIFromULLI(X) (*(PULARGE_INTEGER)&(X))
|
|
||||||
|
|
||||||
/* FUNCTIONS *****************************************************************/
|
/* FUNCTIONS *****************************************************************/
|
||||||
|
|
||||||
LARGE_INTEGER
|
|
||||||
RtlLargeIntegerDivide(LARGE_INTEGER Dividend,
|
|
||||||
LARGE_INTEGER Divisor,
|
|
||||||
PLARGE_INTEGER Remainder)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
LARGE_INTEGER
|
LARGE_INTEGER
|
||||||
RtlConvertLongToLargeInteger(LONG SignedInteger)
|
RtlConvertLongToLargeInteger(LONG SignedInteger)
|
||||||
{
|
{
|
||||||
|
@ -65,8 +50,9 @@ RtlEnlargedIntegerMultiply(LONG Multiplicand,
|
||||||
return RC;
|
return RC;
|
||||||
}
|
}
|
||||||
|
|
||||||
LARGE_INTEGER RtlEnlargedUnsignedMultiply(ULONG Multiplicand,
|
LARGE_INTEGER
|
||||||
ULONG Multiplier)
|
RtlEnlargedUnsignedMultiply(ULONG Multiplicand,
|
||||||
|
ULONG Multiplier)
|
||||||
{
|
{
|
||||||
LARGE_INTEGER RC;
|
LARGE_INTEGER RC;
|
||||||
|
|
||||||
|
@ -97,13 +83,30 @@ RtlLargeIntegerAdd(LARGE_INTEGER Addend1,
|
||||||
return RC;
|
return RC;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID RtlLargeIntegerAnd(PLARGE_INTEGER Result,
|
VOID
|
||||||
LARGE_INTEGER Source,
|
RtlLargeIntegerAnd(PLARGE_INTEGER Result,
|
||||||
LARGE_INTEGER Mask)
|
LARGE_INTEGER Source,
|
||||||
|
LARGE_INTEGER Mask)
|
||||||
{
|
{
|
||||||
Result->QuadPart = Source.QuadPart & Mask.QuadPart;
|
Result->QuadPart = Source.QuadPart & Mask.QuadPart;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LARGE_INTEGER
|
||||||
|
RtlLargeIntegerDivide(LARGE_INTEGER Dividend,
|
||||||
|
LARGE_INTEGER Divisor,
|
||||||
|
PLARGE_INTEGER Remainder)
|
||||||
|
{
|
||||||
|
LARGE_INTEGER RC;
|
||||||
|
|
||||||
|
if (Remainder)
|
||||||
|
Remainder->QuadPart = Dividend.QuadPart % Divisor.QuadPart;
|
||||||
|
|
||||||
|
|
||||||
|
RC.QuadPart = Dividend.QuadPart / Divisor.QuadPart;
|
||||||
|
|
||||||
|
return RC;
|
||||||
|
}
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
RtlLargeIntegerEqualTo(LARGE_INTEGER Operand1,
|
RtlLargeIntegerEqualTo(LARGE_INTEGER Operand1,
|
||||||
LARGE_INTEGER Operand2)
|
LARGE_INTEGER Operand2)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
; $Id: ntoskrnl.def,v 1.23 1999/11/04 06:41:47 ea Exp $
|
; $Id: ntoskrnl.def,v 1.24 1999/11/09 18:04:26 ekohl Exp $
|
||||||
;
|
;
|
||||||
; reactos/ntoskrnl/ntoskrnl.def
|
; reactos/ntoskrnl/ntoskrnl.def
|
||||||
;
|
;
|
||||||
|
@ -173,19 +173,28 @@ NtUnlockFile@20
|
||||||
NtWaitForSingleObject@12
|
NtWaitForSingleObject@12
|
||||||
NtWriteFile@36
|
NtWriteFile@36
|
||||||
RtlAnsiStringToUnicodeString
|
RtlAnsiStringToUnicodeString
|
||||||
RtlCompareMemory
|
RtlCompareMemory@12
|
||||||
RtlConvertLongToLargeInteger
|
RtlConvertLongToLargeInteger
|
||||||
RtlConvertUlongToLargeInteger
|
RtlConvertUlongToLargeInteger
|
||||||
RtlCopyMemory
|
RtlCopyMemory
|
||||||
RtlEnlargedIntegerMultiply
|
RtlEnlargedIntegerMultiply
|
||||||
|
RtlEnlargedUnsignedDivide
|
||||||
|
RtlEnlargedUnsignedMultiply
|
||||||
RtlExtendedIntegerMultiply
|
RtlExtendedIntegerMultiply
|
||||||
|
RtlExtendedLargeIntegerDivide
|
||||||
|
RtlExtendedMagicDivide
|
||||||
RtlFillMemory@12
|
RtlFillMemory@12
|
||||||
|
RtlFillMemoryUlong@12
|
||||||
RtlFreeUnicodeString
|
RtlFreeUnicodeString
|
||||||
RtlInitAnsiString
|
RtlInitAnsiString
|
||||||
RtlInitUnicodeString
|
RtlInitUnicodeString
|
||||||
RtlLargeIntegerAdd
|
RtlLargeIntegerAdd
|
||||||
RtlLargeIntegerGreaterThan
|
RtlLargeIntegerArithmeticShift
|
||||||
|
RtlLargeIntegerDivide
|
||||||
|
RtlLargeIntegerNegate
|
||||||
|
RtlLargeIntegerShiftLeft
|
||||||
RtlLargeIntegerShiftRight
|
RtlLargeIntegerShiftRight
|
||||||
|
RtlLargeIntegerSubtract
|
||||||
RtlMoveMemory@12
|
RtlMoveMemory@12
|
||||||
RtlSecondsSince1970ToTime
|
RtlSecondsSince1970ToTime
|
||||||
RtlSecondsSince1980ToTime
|
RtlSecondsSince1980ToTime
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
; $Id: ntoskrnl.edf,v 1.10 1999/10/31 22:41:49 ea Exp $
|
; $Id: ntoskrnl.edf,v 1.11 1999/11/09 18:04:26 ekohl Exp $
|
||||||
;
|
;
|
||||||
; reactos/ntoskrnl/ntoskrnl.def
|
; reactos/ntoskrnl/ntoskrnl.def
|
||||||
;
|
;
|
||||||
|
@ -173,19 +173,28 @@ NtUnlockFile=NtUnlockFile@20
|
||||||
NtWaitForSingleObject=NtWaitForSingleObject@12
|
NtWaitForSingleObject=NtWaitForSingleObject@12
|
||||||
NtWriteFile=NtWriteFile@36
|
NtWriteFile=NtWriteFile@36
|
||||||
RtlAnsiStringToUnicodeString
|
RtlAnsiStringToUnicodeString
|
||||||
RtlCompareMemory
|
RtlCompareMemory=RtlCompareMemory@12
|
||||||
RtlConvertLongToLargeInteger
|
RtlConvertLongToLargeInteger
|
||||||
RtlConvertUlongToLargeInteger
|
RtlConvertUlongToLargeInteger
|
||||||
RtlCopyMemory
|
RtlCopyMemory
|
||||||
RtlEnlargedIntegerMultiply
|
RtlEnlargedIntegerMultiply
|
||||||
|
RtlEnlargedUnsignedDivide
|
||||||
|
RtlEnlargedUnsignedMultiply
|
||||||
RtlExtendedIntegerMultiply
|
RtlExtendedIntegerMultiply
|
||||||
|
RtlExtendedLargeIntegerDivide
|
||||||
|
RtlExtendedMagicDivide
|
||||||
RtlFillMemory=RtlFillMemory@12
|
RtlFillMemory=RtlFillMemory@12
|
||||||
|
RtlFillMemoryUlong=RtlFillMemoryUlong@12
|
||||||
RtlFreeUnicodeString
|
RtlFreeUnicodeString
|
||||||
RtlInitAnsiString
|
RtlInitAnsiString
|
||||||
RtlInitUnicodeString
|
RtlInitUnicodeString
|
||||||
RtlLargeIntegerAdd
|
RtlLargeIntegerAdd
|
||||||
RtlLargeIntegerGreaterThan
|
RtlLargeIntegerArithmeticShift
|
||||||
|
RtlLargeIntegerDivide
|
||||||
|
RtlLargeIntegerNegate
|
||||||
|
RtlLargeIntegerShiftLeft
|
||||||
RtlLargeIntegerShiftRight
|
RtlLargeIntegerShiftRight
|
||||||
|
RtlLargeIntegerSubtract
|
||||||
RtlMoveMemory=RtlMoveMemory@12
|
RtlMoveMemory=RtlMoveMemory@12
|
||||||
RtlSecondsSince1970ToTime
|
RtlSecondsSince1970ToTime
|
||||||
RtlSecondsSince1980ToTime
|
RtlSecondsSince1980ToTime
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
/*
|
/* $Id: largeint.c,v 1.8 1999/11/09 18:01:43 ekohl Exp $
|
||||||
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
* FILE: kernel/rtl/largeint.c
|
* FILE: kernel/rtl/largeint.c
|
||||||
|
@ -11,18 +12,10 @@
|
||||||
/* INCLUDES *****************************************************************/
|
/* INCLUDES *****************************************************************/
|
||||||
|
|
||||||
#include <ddk/ntddk.h>
|
#include <ddk/ntddk.h>
|
||||||
#include <internal/ke.h>
|
|
||||||
#include <internal/linkage.h>
|
|
||||||
|
|
||||||
#define NDEBUG
|
#define NDEBUG
|
||||||
#include <internal/debug.h>
|
#include <internal/debug.h>
|
||||||
|
|
||||||
typedef long long int LLI, *PLLI;
|
|
||||||
typedef unsigned long long int ULLI, *PULLI;
|
|
||||||
|
|
||||||
#define LIFromLLI(X) (*(PLARGE_INTEGER)&(X))
|
|
||||||
#define LLIFromLI(X) (*(PLLI)&(X))
|
|
||||||
#define ULIFromULLI(X) (*(PULARGE_INTEGER)&(X))
|
|
||||||
|
|
||||||
/* FUNCTIONS *****************************************************************/
|
/* FUNCTIONS *****************************************************************/
|
||||||
|
|
||||||
|
@ -57,15 +50,20 @@ RtlEnlargedIntegerMultiply(LONG Multiplicand,
|
||||||
return RC;
|
return RC;
|
||||||
}
|
}
|
||||||
|
|
||||||
ULONG RtlEnlargedUnsignedDivide(ULARGE_INTEGER Dividend,
|
ULONG
|
||||||
ULONG Divisor,
|
RtlEnlargedUnsignedDivide(ULARGE_INTEGER Dividend,
|
||||||
PULONG Remainder)
|
ULONG Divisor,
|
||||||
|
PULONG Remainder)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
if (Remainder)
|
||||||
|
*Remainder = Dividend.QuadPart % Divisor;
|
||||||
|
|
||||||
|
return (ULONG)(Dividend.QuadPart / Divisor);
|
||||||
}
|
}
|
||||||
|
|
||||||
LARGE_INTEGER RtlEnlargedUnsignedMultiply(ULONG Multiplicand,
|
LARGE_INTEGER
|
||||||
ULONG Multiplier)
|
RtlEnlargedUnsignedMultiply(ULONG Multiplicand,
|
||||||
|
ULONG Multiplier)
|
||||||
{
|
{
|
||||||
LARGE_INTEGER RC;
|
LARGE_INTEGER RC;
|
||||||
|
|
||||||
|
@ -85,23 +83,25 @@ RtlExtendedIntegerMultiply(LARGE_INTEGER Multiplicand,
|
||||||
return RC;
|
return RC;
|
||||||
}
|
}
|
||||||
|
|
||||||
LARGE_INTEGER RtlExtendedLargeIntegerDivide(LARGE_INTEGER Dividend,
|
LARGE_INTEGER
|
||||||
ULONG Divisor,
|
RtlExtendedLargeIntegerDivide(LARGE_INTEGER Dividend,
|
||||||
PULONG Remainder)
|
ULONG Divisor,
|
||||||
|
PULONG Remainder)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
LARGE_INTEGER RC;
|
||||||
|
|
||||||
|
if (Remainder)
|
||||||
|
*Remainder = Dividend.QuadPart % Divisor;
|
||||||
|
|
||||||
|
RC.QuadPart = Dividend.QuadPart / Divisor;
|
||||||
|
|
||||||
|
return RC;
|
||||||
}
|
}
|
||||||
|
|
||||||
LARGE_INTEGER RtlExtendedMagicDivide(LARGE_INTEGER Dividend,
|
LARGE_INTEGER
|
||||||
LARGE_INTEGER MagicDivisor,
|
RtlExtendedMagicDivide(LARGE_INTEGER Dividend,
|
||||||
CCHAR ShiftCount)
|
LARGE_INTEGER MagicDivisor,
|
||||||
{
|
CCHAR ShiftCount)
|
||||||
UNIMPLEMENTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
LARGE_INTEGER ExInterlockedAddLargeInteger(PLARGE_INTEGER Addend,
|
|
||||||
LARGE_INTEGER Increment,
|
|
||||||
PKSPIN_LOCK Lock)
|
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
UNIMPLEMENTED;
|
||||||
}
|
}
|
||||||
|
@ -117,47 +117,50 @@ RtlLargeIntegerAdd(LARGE_INTEGER Addend1,
|
||||||
return RC;
|
return RC;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID RtlLargeIntegerAnd(PLARGE_INTEGER Result,
|
VOID
|
||||||
LARGE_INTEGER Source,
|
RtlLargeIntegerAnd(PLARGE_INTEGER Result,
|
||||||
LARGE_INTEGER Mask)
|
LARGE_INTEGER Source,
|
||||||
|
LARGE_INTEGER Mask)
|
||||||
{
|
{
|
||||||
Result->QuadPart = Source.QuadPart & Mask.QuadPart;
|
Result->QuadPart = Source.QuadPart & Mask.QuadPart;
|
||||||
}
|
}
|
||||||
|
|
||||||
LARGE_INTEGER RtlLargeIntegerArithmeticShift(LARGE_INTEGER LargeInteger,
|
LARGE_INTEGER
|
||||||
CCHAR ShiftCount)
|
RtlLargeIntegerArithmeticShift(LARGE_INTEGER LargeInteger,
|
||||||
|
CCHAR ShiftCount)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
|
||||||
#if 0
|
|
||||||
LARGE_INTEGER RC;
|
LARGE_INTEGER RC;
|
||||||
|
CHAR Shift;
|
||||||
|
|
||||||
|
Shift = ShiftCount % 64;
|
||||||
|
|
||||||
RC.QuadPart = LargeInteger.QuadPart >> ShiftCount;
|
if (Shift < 32)
|
||||||
asm ("movb %2, %%cl\n\t"
|
{
|
||||||
"andb $0x3f, %%cl\n\t"
|
RC.QuadPart = LargeInteger.QuadPart >> Shift;
|
||||||
"movl %3, %%eax\n\t"
|
}
|
||||||
"movl %4, %%edx\n\t"
|
else
|
||||||
"shrdl %%cl, %%edx, %%eax\n\t"
|
{
|
||||||
"sarl %%cl, %%edx\n\t"
|
/* copy the sign bit */
|
||||||
"movl %%eax, %0\n\t"
|
RC.u.HighPart |= (LargeInteger.u.HighPart & 0x80000000);
|
||||||
"movl %%edx, %1\n\t"
|
RC.u.LowPart = LargeInteger.u.HighPart >> Shift;
|
||||||
: "=m" (LargeInteger.LowPart),
|
}
|
||||||
"=m" (LargeInteger.HighPart)
|
|
||||||
: "m" (ShiftCount),
|
|
||||||
"0" (LargeInteger.LowPart),
|
|
||||||
"1" (LargeInteger.HighPart)
|
|
||||||
: "eax", "ecx", "edx"
|
|
||||||
);
|
|
||||||
|
|
||||||
return RC;
|
return RC;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LARGE_INTEGER RtlLargeIntegerDivide(LARGE_INTEGER Dividend,
|
LARGE_INTEGER
|
||||||
LARGE_INTEGER Divisor,
|
RtlLargeIntegerDivide(LARGE_INTEGER Dividend,
|
||||||
PLARGE_INTEGER Remainder)
|
LARGE_INTEGER Divisor,
|
||||||
|
PLARGE_INTEGER Remainder)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED;
|
LARGE_INTEGER RC;
|
||||||
|
|
||||||
|
if (Remainder)
|
||||||
|
Remainder->QuadPart = Dividend.QuadPart % Divisor.QuadPart;
|
||||||
|
|
||||||
|
RC.QuadPart = Dividend.QuadPart / Divisor.QuadPart;
|
||||||
|
|
||||||
|
return RC;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
@ -165,10 +168,6 @@ RtlLargeIntegerEqualTo(LARGE_INTEGER Operand1,
|
||||||
LARGE_INTEGER Operand2)
|
LARGE_INTEGER Operand2)
|
||||||
{
|
{
|
||||||
return Operand1.QuadPart == Operand2.QuadPart;
|
return Operand1.QuadPart == Operand2.QuadPart;
|
||||||
#if 0
|
|
||||||
return Operand1.HighPart == Operand2.HighPart &&
|
|
||||||
Operand1.LowPart == Operand2.LowPart;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
@ -182,11 +181,6 @@ RtlLargeIntegerGreaterThan(LARGE_INTEGER Operand1,
|
||||||
LARGE_INTEGER Operand2)
|
LARGE_INTEGER Operand2)
|
||||||
{
|
{
|
||||||
return Operand1.QuadPart > Operand2.QuadPart;
|
return Operand1.QuadPart > Operand2.QuadPart;
|
||||||
#if 0
|
|
||||||
return Operand1.HighPart > Operand2.HighPart ||
|
|
||||||
(Operand1.HighPart == Operand2.HighPart &&
|
|
||||||
Operand1.LowPart > Operand2.LowPart);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
@ -194,30 +188,18 @@ RtlLargeIntegerGreaterThanOrEqualTo(LARGE_INTEGER Operand1,
|
||||||
LARGE_INTEGER Operand2)
|
LARGE_INTEGER Operand2)
|
||||||
{
|
{
|
||||||
return Operand1.QuadPart >= Operand2.QuadPart;
|
return Operand1.QuadPart >= Operand2.QuadPart;
|
||||||
#if 0
|
|
||||||
return Operand1.HighPart > Operand2.HighPart ||
|
|
||||||
(Operand1.HighPart == Operand2.HighPart &&
|
|
||||||
Operand1.LowPart >= Operand2.LowPart);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
RtlLargeIntegerGreaterThanOrEqualToZero(LARGE_INTEGER Operand1)
|
RtlLargeIntegerGreaterThanOrEqualToZero(LARGE_INTEGER Operand1)
|
||||||
{
|
{
|
||||||
return Operand1.QuadPart >= 0;
|
return Operand1.QuadPart >= 0;
|
||||||
#if 0
|
|
||||||
return Operand1.HighPart >= 0;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
RtlLargeIntegerGreaterThanZero(LARGE_INTEGER Operand1)
|
RtlLargeIntegerGreaterThanZero(LARGE_INTEGER Operand1)
|
||||||
{
|
{
|
||||||
return Operand1.QuadPart > 0;
|
return Operand1.QuadPart > 0;
|
||||||
#if 0
|
|
||||||
return Operand1.HighPart > 0 ||
|
|
||||||
(Operand1.HighPart == 0 && Operand1.LowPart > 0);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
@ -225,11 +207,6 @@ RtlLargeIntegerLessThan(LARGE_INTEGER Operand1,
|
||||||
LARGE_INTEGER Operand2)
|
LARGE_INTEGER Operand2)
|
||||||
{
|
{
|
||||||
return Operand1.QuadPart < Operand2.QuadPart;
|
return Operand1.QuadPart < Operand2.QuadPart;
|
||||||
#if 0
|
|
||||||
return Operand1.HighPart < Operand2.HighPart ||
|
|
||||||
(Operand1.HighPart == Operand2.HighPart &&
|
|
||||||
Operand1.LowPart < Operand2.LowPart);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
|
@ -237,33 +214,22 @@ RtlLargeIntegerLessThanOrEqualTo(LARGE_INTEGER Operand1,
|
||||||
LARGE_INTEGER Operand2)
|
LARGE_INTEGER Operand2)
|
||||||
{
|
{
|
||||||
return Operand1.QuadPart <= Operand2.QuadPart;
|
return Operand1.QuadPart <= Operand2.QuadPart;
|
||||||
#if 0
|
|
||||||
return Operand1.HighPart < Operand2.HighPart ||
|
|
||||||
(Operand1.HighPart == Operand2.HighPart &&
|
|
||||||
Operand1.LowPart <= Operand2.LowPart);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
RtlLargeIntegerLessThanOrEqualToZero(LARGE_INTEGER Operand)
|
RtlLargeIntegerLessThanOrEqualToZero(LARGE_INTEGER Operand)
|
||||||
{
|
{
|
||||||
return Operand.QuadPart <= 0;
|
return Operand.QuadPart <= 0;
|
||||||
#if 0
|
|
||||||
return Operand.HighPart < 0 ||
|
|
||||||
(Operand.HighPart == 0 && Operand.LowPart == 0);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
RtlLargeIntegerLessThanZero(LARGE_INTEGER Operand)
|
RtlLargeIntegerLessThanZero(LARGE_INTEGER Operand)
|
||||||
{
|
{
|
||||||
return Operand.QuadPart < 0;
|
return Operand.QuadPart < 0;
|
||||||
#if 0
|
|
||||||
return Operand.HighPart < 0;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
LARGE_INTEGER RtlLargeIntegerNegate(LARGE_INTEGER Subtrahend)
|
LARGE_INTEGER
|
||||||
|
RtlLargeIntegerNegate(LARGE_INTEGER Subtrahend)
|
||||||
{
|
{
|
||||||
LARGE_INTEGER RC;
|
LARGE_INTEGER RC;
|
||||||
|
|
||||||
|
@ -285,28 +251,37 @@ RtlLargeIntegerNotEqualToZero(LARGE_INTEGER Operand)
|
||||||
return Operand.QuadPart != 0;
|
return Operand.QuadPart != 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
LARGE_INTEGER RtlLargeIntegerShiftLeft(LARGE_INTEGER LargeInteger,
|
LARGE_INTEGER
|
||||||
CCHAR ShiftCount)
|
RtlLargeIntegerShiftLeft(LARGE_INTEGER LargeInteger,
|
||||||
|
CCHAR ShiftCount)
|
||||||
{
|
{
|
||||||
LARGE_INTEGER RC;
|
LARGE_INTEGER RC;
|
||||||
|
CHAR Shift;
|
||||||
|
|
||||||
RC.QuadPart = LargeInteger.QuadPart << ShiftCount;
|
Shift = ShiftCount % 64;
|
||||||
|
|
||||||
|
RC.QuadPart = LargeInteger.QuadPart << Shift;
|
||||||
|
|
||||||
return RC;
|
return RC;
|
||||||
}
|
}
|
||||||
|
|
||||||
LARGE_INTEGER RtlLargeIntegerShiftRight(LARGE_INTEGER LargeInteger,
|
LARGE_INTEGER
|
||||||
CCHAR ShiftCount)
|
RtlLargeIntegerShiftRight(LARGE_INTEGER LargeInteger,
|
||||||
|
CCHAR ShiftCount)
|
||||||
{
|
{
|
||||||
LARGE_INTEGER RC;
|
LARGE_INTEGER RC;
|
||||||
|
CHAR Shift;
|
||||||
|
|
||||||
|
Shift = ShiftCount % 64;
|
||||||
|
|
||||||
RC.QuadPart = LargeInteger.QuadPart >> ShiftCount;
|
RC.QuadPart = LargeInteger.QuadPart >> ShiftCount;
|
||||||
|
|
||||||
return RC;
|
return RC;
|
||||||
}
|
}
|
||||||
|
|
||||||
LARGE_INTEGER RtlLargeIntegerSubtract(LARGE_INTEGER Minuend,
|
LARGE_INTEGER
|
||||||
LARGE_INTEGER Subtrahend)
|
RtlLargeIntegerSubtract(LARGE_INTEGER Minuend,
|
||||||
|
LARGE_INTEGER Subtrahend)
|
||||||
{
|
{
|
||||||
LARGE_INTEGER RC;
|
LARGE_INTEGER RC;
|
||||||
|
|
||||||
|
@ -315,3 +290,4 @@ LARGE_INTEGER RtlLargeIntegerSubtract(LARGE_INTEGER Minuend,
|
||||||
return RC;
|
return RC;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* EOF */
|
||||||
|
|
Loading…
Reference in a new issue