Added a few more large integer functions.

diff --git a/files/drive.c b/files/drive.c
index f11f119..ac3da73 100644
--- a/files/drive.c
+++ b/files/drive.c
@@ -39,6 +39,7 @@
 #endif
 
 #include "winbase.h"
+#include "ntddk.h"
 #include "wine/winbase16.h"   /* for GetCurrentTask */
 #include "wine/winestring.h"  /* for lstrcpyAtoW */
 #include "winerror.h"
@@ -860,7 +861,6 @@
 			       PULARGE_INTEGER available )
 {
     struct statfs info;
-    unsigned long long  bigsize,bigavail=0;
 
     if (!DRIVE_IsValid(drive))
     {
@@ -880,30 +880,19 @@
         return 0;
     }
 
-    bigsize = (unsigned long long)info.f_bsize 
-      * (unsigned long long)info.f_blocks;
+    size->QuadPart = RtlEnlargedUnsignedMultiply( info.f_bsize, info.f_blocks );
 #ifdef STATFS_HAS_BAVAIL
-    bigavail = (unsigned long long)info.f_bavail 
-      * (unsigned long long)info.f_bsize;
+    available->QuadPart = RtlEnlargedUnsignedMultiply( info.f_bavail, info.f_bsize );
 #else
 # ifdef STATFS_HAS_BFREE
-    bigavail = (unsigned long long)info.f_bfree 
-      * (unsigned long long)info.f_bsize;
+    available->QuadPart = RtlEnlargedUnsignedMultiply( info.f_bfree, info.f_bsize );
 # else
 #  error "statfs has no bfree/bavail member!"
 # endif
 #endif
-    size->s.LowPart = (DWORD)bigsize;
-    size->s.HighPart = (DWORD)(bigsize>>32);
     if (DRIVE_GetType(drive) == TYPE_CDROM)
     { /* ALWAYS 0, even if no real CD-ROM mounted there !! */
-	available->s.LowPart = 0;
-	available->s.HighPart = 0;
-    }
-    else
-    {
-	available->s.LowPart = (DWORD)bigavail;
-	available->s.HighPart = (DWORD)(bigavail>>32);
+        available->QuadPart = 0;
     }
     return 1;
 }