Implemented a bunch of large integer functions in ntdll.
diff --git a/include/ntddk.h b/include/ntddk.h
index 620a4af..8aef5cb 100644
--- a/include/ntddk.h
+++ b/include/ntddk.h
@@ -694,16 +694,12 @@
PLARGE_INTEGER liTime,
PTIME_FIELDS TimeFields);
-BOOLEAN WINAPI RtlTimeToSecondsSince1980(
- LPFILETIME ft,
- LPDWORD timeret);
+void WINAPI NtQuerySystemTime( LARGE_INTEGER *time );
-BOOLEAN WINAPI RtlTimeToSecondsSince1970(
- LPFILETIME ft,
- LPDWORD timeret);
-
-void WINAPI RtlSecondsSince1970ToTime( DWORD time, LPFILETIME ft );
-void WINAPI RtlSecondsSince1980ToTime( DWORD time, LPFILETIME ft );
+BOOLEAN WINAPI RtlTimeToSecondsSince1980( const FILETIME *time, LPDWORD res );
+BOOLEAN WINAPI RtlTimeToSecondsSince1970( const FILETIME *time, LPDWORD res );
+void WINAPI RtlSecondsSince1970ToTime( DWORD time, FILETIME *res );
+void WINAPI RtlSecondsSince1980ToTime( DWORD time, FILETIME *res );
/* heap functions */
@@ -756,14 +752,21 @@
VOID WINAPI RtlReleasePebLock(void);
/* mathematics */
-INT WINAPI RtlExtendedLargeIntegerDivide(
- LARGE_INTEGER dividend,
- DWORD divisor,
- LPDWORD rest);
-
-LARGE_INTEGER WINAPI RtlExtendedIntegerMultiply(
- LARGE_INTEGER factor1,
- INT factor2);
+LONGLONG WINAPI RtlConvertLongToLargeInteger( LONG a );
+LONGLONG WINAPI RtlEnlargedIntegerMultiply( INT a, INT b );
+LONGLONG WINAPI RtlEnlargedUnsignedMultiply( UINT a, UINT b );
+LONGLONG WINAPI RtlExtendedMagicDivide( LONGLONG a, LONGLONG b, INT shift );
+LONGLONG WINAPI RtlExtendedIntegerMultiply( LONGLONG a, INT b );
+LONGLONG WINAPI RtlExtendedLargeIntegerDivide( LONGLONG a, INT b, INT *rem );
+LONGLONG WINAPI RtlLargeIntegerAdd( LONGLONG a, LONGLONG b );
+LONGLONG WINAPI RtlLargeIntegerArithmeticShift( LONGLONG a, INT count );
+LONGLONG WINAPI RtlLargeIntegerNegate( LONGLONG a );
+LONGLONG WINAPI RtlLargeIntegerShiftLeft( LONGLONG a, INT count );
+LONGLONG WINAPI RtlLargeIntegerShiftRight( LONGLONG a, INT count );
+LONGLONG WINAPI RtlLargeIntegerSubtract( LONGLONG a, LONGLONG b );
+UINT WINAPI RtlEnlargedUnsignedDivide( ULONGLONG a, UINT b, UINT *remptr );
+ULONGLONG WINAPI RtlConvertUlongToLargeInteger( ULONG a );
+ULONGLONG WINAPI RtlLargeIntegerDivide( ULONGLONG a, ULONGLONG b, ULONGLONG *rem );
/* environment */
DWORD WINAPI RtlCreateEnvironment(
@@ -817,6 +820,10 @@
NTSTATUS WINAPI NtDeleteKey(HANDLE);
NTSTATUS WINAPI NtDeleteValueKey(HANDLE,const UNICODE_STRING*);
NTSTATUS WINAPI NtOpenKey(PHANDLE,ACCESS_MASK,const OBJECT_ATTRIBUTES*);
+NTSTATUS WINAPI NtSetValueKey(HANDLE,const UNICODE_STRING*,ULONG,ULONG,const void*,ULONG);
+NTSTATUS WINAPI NtQueryValueKey(HANDLE,const UNICODE_STRING*,KEY_VALUE_INFORMATION_CLASS,
+ void*,DWORD,DWORD*);
+
NTSTATUS WINAPI NtEnumerateKey(
HANDLE KeyHandle,
@@ -867,14 +874,6 @@
ULONG Length,
PULONG ReturnLength);
-NTSTATUS WINAPI NtQueryValueKey(
- IN HANDLE KeyHandle,
- IN PUNICODE_STRING ValueName,
- IN KEY_VALUE_INFORMATION_CLASS KeyValueInformationClass,
- OUT PVOID KeyValueInformation,
- IN ULONG Length,
- OUT PULONG ResultLength);
-
NTSTATUS WINAPI NtReplaceKey(
IN POBJECT_ATTRIBUTES ObjectAttributes,
IN HANDLE Key,
@@ -895,14 +894,6 @@
IN PVOID KeyInformation,
IN ULONG KeyInformationLength);
-NTSTATUS WINAPI NtSetValueKey(
- HANDLE KeyHandle,
- PUNICODE_STRING ValueName,
- ULONG TitleIndex,
- ULONG Type,
- PVOID Data,
- ULONG DataSize);
-
NTSTATUS WINAPI NtUnloadKey(
IN HANDLE KeyHandle);
diff --git a/include/winnt.h b/include/winnt.h
index aead055..c678cc1 100644
--- a/include/winnt.h
+++ b/include/winnt.h
@@ -2326,9 +2326,9 @@
typedef union _ULARGE_INTEGER {
struct {
DWORD LowPart;
- LONG HighPart;
+ DWORD HighPart;
} DUMMYSTRUCTNAME;
- LONGLONG QuadPart;
+ ULONGLONG QuadPart;
} ULARGE_INTEGER, *LPULARGE_INTEGER, *PULARGE_INTEGER;
/*