//
LARGE_INTEGER
-WINAPI
LargeIntegerAdd (
LARGE_INTEGER Addend1,
LARGE_INTEGER Addend2
//
LARGE_INTEGER
-WINAPI
EnlargedIntegerMultiply (
LONG Multiplicand,
LONG Multiplier
//
LARGE_INTEGER
-WINAPI
EnlargedUnsignedMultiply (
ULONG Multiplicand,
ULONG Multiplier
//
ULONG
-WINAPI
EnlargedUnsignedDivide (
IN ULARGE_INTEGER Dividend,
IN ULONG Divisor,
//
LARGE_INTEGER
-WINAPI
ExtendedMagicDivide (
LARGE_INTEGER Dividend,
LARGE_INTEGER MagicDivisor,
//
LARGE_INTEGER
-WINAPI
ExtendedLargeIntegerDivide (
LARGE_INTEGER Dividend,
ULONG Divisor,
//
LARGE_INTEGER
-WINAPI
LargeIntegerDivide (
LARGE_INTEGER Dividend,
LARGE_INTEGER Divisor,
//
LARGE_INTEGER
-WINAPI
ExtendedIntegerMultiply (
LARGE_INTEGER Multiplicand,
LONG Multiplier
//
LARGE_INTEGER
-WINAPI
LargeIntegerNegate (
LARGE_INTEGER Subtrahend
);
//
LARGE_INTEGER
-WINAPI
LargeIntegerSubtract (
LARGE_INTEGER Minuend,
LARGE_INTEGER Subtrahend
//
LARGE_INTEGER
-WINAPI
ConvertLongToLargeInteger (
LONG SignedInteger
);
//
LARGE_INTEGER
-WINAPI
ConvertUlongToLargeInteger (
ULONG UnsignedInteger
);
//
LARGE_INTEGER
-WINAPI
LargeIntegerShiftLeft (
LARGE_INTEGER LargeInteger,
CCHAR ShiftCount
);
LARGE_INTEGER
-WINAPI
LargeIntegerShiftRight (
LARGE_INTEGER LargeInteger,
CCHAR ShiftCount
);
LARGE_INTEGER
-WINAPI
LargeIntegerArithmeticShift (
LARGE_INTEGER LargeInteger,
CCHAR ShiftCount
#define LargeIntegerEqualTo(a, b) \
((a).HighPart == (b).HighPart && (a).LowPart == (b).LowPart)
+#define LargeIntegerGreaterThanZero(a) \
+ ((a).HighPart > 0 || ((a).HighPart == 0 && (a).LowPart != 0))
+
#define LargeIntegerGreaterOrEqualToZero(a) ((a).HighPart >= 0)
#define LargeIntegerLessThanZero(a) ((a).HighPart < 0)
}
#if (_MSC_VER >= 1300)
-LARGE_INTEGER LargeIntegerAdd(LARGE_INTEGER a, LARGE_INTEGER b)
+LARGE_INTEGER /* WINAPI */ LargeIntegerAdd(LARGE_INTEGER a, LARGE_INTEGER b)
{
LARGE_INTEGER result;
int carry;
result.HighPart=a.HighPart+b.HighPart+ carry;
return result;
}
-LARGE_INTEGER LargeIntegerSubtract(LARGE_INTEGER a, LARGE_INTEGER b)
+LARGE_INTEGER /* WINAPI */ LargeIntegerSubtract(LARGE_INTEGER a, LARGE_INTEGER b)
{
LARGE_INTEGER result;
int borrow;
result.HighPart=a.HighPart-b.HighPart- borrow;
return result;
}
-LARGE_INTEGER ExtendedLargeIntegerDivide(LARGE_INTEGER a, unsigned long b, unsigned long *remainder)
+LARGE_INTEGER /* WINAPI */ ExtendedLargeIntegerDivide(LARGE_INTEGER a, unsigned long b, unsigned long *remainder)
{
LARGE_INTEGER result;
ULONGLONG a1,q1,r1;
*remainder=(unsigned long)(r1 & 0xffffffff);
return result;
}
-LARGE_INTEGER LargeIntegerDivide(LARGE_INTEGER a, LARGE_INTEGER b, LARGE_INTEGER *remainder)
+LARGE_INTEGER /* WINAPI */ LargeIntegerDivide(LARGE_INTEGER a, LARGE_INTEGER b, LARGE_INTEGER *remainder)
{
LARGE_INTEGER result;
ULONGLONG a1,b1,q1,r1;
return result;
}
-LARGE_INTEGER ConvertLongToLargeInteger(unsigned long a)
+LARGE_INTEGER /* WINAPI */ ConvertLongToLargeInteger(unsigned long a)
{
LARGE_INTEGER result;
result.HighPart=0;