diff --git a/include/file.h b/include/file.h
index 10d786d..6e9ebc3 100644
--- a/include/file.h
+++ b/include/file.h
@@ -35,7 +35,7 @@
 extern HFILE FILE_DupUnixHandle( int fd, DWORD access );
 extern BOOL FILE_Stat( LPCSTR unixName, BY_HANDLE_FILE_INFORMATION *info );
 extern HFILE16 FILE_Dup2( HFILE16 hFile1, HFILE16 hFile2 );
-extern HFILE FILE_CreateFile( LPCSTR filename, DWORD access, DWORD sharing,
+extern HANDLE FILE_CreateFile( LPCSTR filename, DWORD access, DWORD sharing,
                                 LPSECURITY_ATTRIBUTES sa, DWORD creation,
                                 DWORD attributes, HANDLE template );
 extern HFILE FILE_CreateDevice( int client_id, DWORD access,
diff --git a/include/winbase.h b/include/winbase.h
index e07ef4a..af6677b 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -1171,9 +1171,9 @@
 HANDLE    WINAPI CreateEventA(LPSECURITY_ATTRIBUTES,BOOL,BOOL,LPCSTR);
 HANDLE    WINAPI CreateEventW(LPSECURITY_ATTRIBUTES,BOOL,BOOL,LPCWSTR);
 #define     CreateEvent WINELIB_NAME_AW(CreateEvent)
-HFILE     WINAPI CreateFileA(LPCSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,
+HANDLE     WINAPI CreateFileA(LPCSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,
                                  DWORD,DWORD,HANDLE);
-HFILE     WINAPI CreateFileW(LPCWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,
+HANDLE     WINAPI CreateFileW(LPCWSTR,DWORD,DWORD,LPSECURITY_ATTRIBUTES,
                                  DWORD,DWORD,HANDLE);
 #define     CreateFile WINELIB_NAME_AW(CreateFile)
 HANDLE    WINAPI CreateFileMappingA(HANDLE,LPSECURITY_ATTRIBUTES,DWORD,
@@ -1246,7 +1246,7 @@
 HRSRC     WINAPI FindResourceExW(HMODULE,LPCWSTR,LPCWSTR,WORD);
 #define     FindResourceEx WINELIB_NAME_AW(FindResourceEx)
 BOOL      WINAPI FlushConsoleInputBuffer(HANDLE);
-BOOL      WINAPI FlushFileBuffers(HFILE);
+BOOL      WINAPI FlushFileBuffers(HANDLE);
 BOOL      WINAPI FlushViewOfFile(LPCVOID, DWORD);
 DWORD       WINAPI FormatMessageA(DWORD,LPCVOID,DWORD,DWORD,LPSTR,
 				    DWORD,LPDWORD);
@@ -1289,13 +1289,13 @@
 BOOL      WINAPI GetFileAttributesExA(LPCSTR,GET_FILEEX_INFO_LEVELS,LPVOID);
 BOOL      WINAPI GetFileAttributesExW(LPCWSTR,GET_FILEEX_INFO_LEVELS,LPVOID);
 #define     GetFileattributesEx WINELIB_NAME_AW(GetFileAttributesEx)
-DWORD       WINAPI GetFileInformationByHandle(HFILE,BY_HANDLE_FILE_INFORMATION*);
+DWORD       WINAPI GetFileInformationByHandle(HANDLE,BY_HANDLE_FILE_INFORMATION*);
 BOOL        WINAPI GetFileSecurityA(LPCSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,LPDWORD);
 BOOL        WINAPI GetFileSecurityW(LPCWSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR,DWORD,LPDWORD);
 #define     GetFileSecurity WINELIB_NAME_AW(GetFileSecurity)
-DWORD       WINAPI GetFileSize(HFILE,LPDWORD);
-BOOL      WINAPI GetFileTime(HFILE,LPFILETIME,LPFILETIME,LPFILETIME);
-DWORD       WINAPI GetFileType(HFILE);
+DWORD       WINAPI GetFileSize(HANDLE,LPDWORD);
+BOOL        WINAPI GetFileTime(HANDLE,LPFILETIME,LPFILETIME,LPFILETIME);
+DWORD       WINAPI GetFileType(HANDLE);
 DWORD       WINAPI GetFullPathNameA(LPCSTR,DWORD,LPSTR,LPSTR*);
 DWORD       WINAPI GetFullPathNameW(LPCWSTR,DWORD,LPWSTR,LPWSTR*);
 #define     GetFullPathName WINELIB_NAME_AW(GetFullPathName)
@@ -1369,7 +1369,7 @@
 BOOL      WINAPI IsProcessorFeaturePresent(DWORD);
 BOOL      WINAPI IsValidLocale(DWORD,DWORD);
 BOOL      WINAPI LocalFileTimeToFileTime(const FILETIME*,LPFILETIME);
-BOOL      WINAPI LockFile(HFILE,DWORD,DWORD,DWORD,DWORD);
+BOOL      WINAPI LockFile(HANDLE,DWORD,DWORD,DWORD,DWORD);
 BOOL      WINAPI LockFileEx(HANDLE, DWORD, DWORD, DWORD, DWORD, LPOVERLAPPED);    
 BOOL        WINAPI LookupPrivilegeValueA(LPCSTR,LPCSTR,LPVOID);
 BOOL        WINAPI LookupPrivilegeValueW(LPCWSTR,LPCWSTR,LPVOID);
@@ -1458,21 +1458,21 @@
 BOOL      WINAPI SetConsoleTitleA(LPCSTR);
 BOOL      WINAPI SetConsoleTitleW(LPCWSTR);
 #define     SetConsoleTitle WINELIB_NAME_AW(SetConsoleTitle)
-BOOL      WINAPI SetEndOfFile(HFILE);
+BOOL      WINAPI SetEndOfFile(HANDLE);
 BOOL      WINAPI SetEnvironmentVariableA(LPCSTR,LPCSTR);
 BOOL      WINAPI SetEnvironmentVariableW(LPCWSTR,LPCWSTR);
 #define     SetEnvironmentVariable WINELIB_NAME_AW(SetEnvironmentVariable)
 BOOL      WINAPI SetEvent(HANDLE);
 VOID        WINAPI SetFileApisToANSI(void);
 VOID        WINAPI SetFileApisToOEM(void);
-DWORD       WINAPI SetFilePointer(HFILE,LONG,LPLONG,DWORD);
+DWORD       WINAPI SetFilePointer(HANDLE,LONG,LPLONG,DWORD);
 BOOL        WINAPI SetFileSecurityA(LPCSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
 BOOL        WINAPI SetFileSecurityW(LPCWSTR,SECURITY_INFORMATION,PSECURITY_DESCRIPTOR);
 #define     SetFileSecurity WINELIB_NAME_AW(SetFileSecurity)
-BOOL        WINAPI SetFileTime(HFILE,const FILETIME*,const FILETIME*,const FILETIME*);
+BOOL        WINAPI SetFileTime(HANDLE,const FILETIME*,const FILETIME*,const FILETIME*);
 BOOL        WINAPI SetHandleInformation(HANDLE,DWORD,DWORD);
-BOOL        WINAPI SetLocalTime(const SYSTEMTIME*);
 BOOL        WINAPI SetPriorityClass(HANDLE,DWORD);
+BOOL        WINAPI SetLocalTime(const SYSTEMTIME*);
 BOOL        WINAPI SetSecurityDescriptorDacl(PSECURITY_DESCRIPTOR,BOOL,PACL,BOOL);
 BOOL        WINAPI SetSecurityDescriptorGroup(PSECURITY_DESCRIPTOR,PSID,BOOL);
 BOOL        WINAPI SetSecurityDescriptorOwner(PSECURITY_DESCRIPTOR,PSID,BOOL);
@@ -1494,7 +1494,7 @@
 LPVOID      WINAPI TlsGetValue(DWORD);
 BOOL      WINAPI TlsSetValue(DWORD,LPVOID);
 VOID        WINAPI UnMapLS(SEGPTR);
-BOOL      WINAPI UnlockFile(HFILE,DWORD,DWORD,DWORD,DWORD);
+BOOL      WINAPI UnlockFile(HANDLE,DWORD,DWORD,DWORD,DWORD);
 BOOL      WINAPI UnmapViewOfFile(LPVOID);
 LPVOID      WINAPI VirtualAlloc(LPVOID,DWORD,DWORD,DWORD);
 BOOL      WINAPI VirtualFree(LPVOID,DWORD,DWORD);
@@ -1675,8 +1675,8 @@
 HMODULE   WINAPI LoadLibraryA(LPCSTR);
 HMODULE   WINAPI LoadLibraryW(LPCWSTR);
 #define     LoadLibrary WINELIB_NAME_AW(LoadLibrary)
-HMODULE   WINAPI LoadLibraryExA(LPCSTR,HFILE,DWORD);
-HMODULE   WINAPI LoadLibraryExW(LPCWSTR,HFILE,DWORD);
+HMODULE   WINAPI LoadLibraryExA(LPCSTR,HANDLE,DWORD);
+HMODULE   WINAPI LoadLibraryExW(LPCWSTR,HANDLE,DWORD);
 #define     LoadLibraryEx WINELIB_NAME_AW(LoadLibraryEx)
 HINSTANCE16 WINAPI LoadModule16(LPCSTR,LPVOID);
 HINSTANCE WINAPI LoadModule(LPCSTR,LPVOID);
