Sorted out a few misplaced definitions.
Added some missing definitions related to file handling and virtual
memory manipulation.
Added IsTextUnicode.

diff --git a/include/winbase.h b/include/winbase.h
index f56ad7f..b61749d 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -600,6 +600,8 @@
         HANDLE hEvent;
 } OVERLAPPED, *LPOVERLAPPED;
 
+typedef VOID (CALLBACK *LPOVERLAPPED_COMPLETION_ROUTINE)(DWORD dwErrorCode, DWORD dwNumberOfBytesTransfered, LPOVERLAPPED lpOverlapped);
+
 /* Process startup information.
  */
 
@@ -758,17 +760,6 @@
   DWORD   BatteryFullLifeTime;
 } SYSTEM_POWER_STATUS, *LPSYSTEM_POWER_STATUS;
 
-typedef struct _MEMORY_BASIC_INFORMATION
-{
-    LPVOID   BaseAddress;
-    LPVOID   AllocationBase;
-    DWORD    AllocationProtect;
-    DWORD    RegionSize;
-    DWORD    State;
-    DWORD    Protect;
-    DWORD    Type;
-} MEMORY_BASIC_INFORMATION,*LPMEMORY_BASIC_INFORMATION;
-
 
 typedef BOOL (CALLBACK *CODEPAGE_ENUMPROCA)(LPSTR);
 typedef BOOL (CALLBACK *CODEPAGE_ENUMPROCW)(LPWSTR);
@@ -871,7 +862,7 @@
  * This one seems to be a Win32 only definition. It also is defined with
  * WINAPI instead of CALLBACK in the windows headers.
  */
-typedef DWORD (WINAPI *LPPROGRESS_ROUTINE)(LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER, 
+typedef DWORD (CALLBACK *LPPROGRESS_ROUTINE)(LARGE_INTEGER, LARGE_INTEGER, LARGE_INTEGER, 
                                            LARGE_INTEGER, DWORD, DWORD, HANDLE,
                                            HANDLE, LPVOID);
 
@@ -884,44 +875,10 @@
 #define WAIT_TIMEOUT		STATUS_TIMEOUT
 #define STILL_ACTIVE            STATUS_PENDING
 
-#define	PAGE_NOACCESS		0x01
-#define	PAGE_READONLY		0x02
-#define	PAGE_READWRITE		0x04
-#define	PAGE_WRITECOPY		0x08
-#define	PAGE_EXECUTE		0x10
-#define	PAGE_EXECUTE_READ	0x20
-#define	PAGE_EXECUTE_READWRITE	0x40
-#define	PAGE_EXECUTE_WRITECOPY	0x80
-#define	PAGE_GUARD		0x100
-#define	PAGE_NOCACHE		0x200
-
-#define MEM_COMMIT              0x00001000
-#define MEM_RESERVE             0x00002000
-#define MEM_DECOMMIT            0x00004000
-#define MEM_RELEASE             0x00008000
-#define MEM_FREE                0x00010000
-#define MEM_PRIVATE             0x00020000
-#define MEM_MAPPED              0x00040000
-#define MEM_TOP_DOWN            0x00100000
-#ifdef __WINE__
-#define MEM_SYSTEM              0x80000000
-#endif
-
-#define SEC_FILE                0x00800000
-#define SEC_IMAGE               0x01000000
-#define SEC_RESERVE             0x04000000
-#define SEC_COMMIT              0x08000000
-#define SEC_NOCACHE             0x10000000
-
 #define FILE_BEGIN              0
 #define FILE_CURRENT            1
 #define FILE_END                2
 
-#define FILE_CASE_SENSITIVE_SEARCH      0x00000001
-#define FILE_CASE_PRESERVED_NAMES       0x00000002
-#define FILE_UNICODE_ON_DISK            0x00000004
-#define FILE_PERSISTENT_ACLS            0x00000008
-
 #define FILE_MAP_COPY                   0x00000001
 #define FILE_MAP_WRITE                  0x00000002
 #define FILE_MAP_READ                   0x00000004
@@ -1354,6 +1311,7 @@
 BOOL      WINAPI HeapValidate(HANDLE,DWORD,LPCVOID);
 BOOL        WINAPI HeapWalk(HANDLE,LPPROCESS_HEAP_ENTRY);
 BOOL        WINAPI InitializeSid(PSID,PSID_IDENTIFIER_AUTHORITY,BYTE);
+BOOL        WINAPI IsTextUnicode(CONST LPVOID lpBuffer, int cb, LPINT lpi);
 BOOL        WINAPI IsValidSecurityDescriptor(PSECURITY_DESCRIPTOR);
 BOOL        WINAPI IsValidSid(PSID);
 BOOL        WINAPI ImpersonateSelf(SECURITY_IMPERSONATION_LEVEL);
diff --git a/include/winnt.h b/include/winnt.h
index f94bdf7..f8c0425 100644
--- a/include/winnt.h
+++ b/include/winnt.h
@@ -57,6 +57,49 @@
 #define PROCESSOR_ARM920         2336    /* 0x920 */
 #define PROCESSOR_ARM_7TDMI      70001
 
+typedef struct _MEMORY_BASIC_INFORMATION
+{
+    LPVOID   BaseAddress;
+    LPVOID   AllocationBase;
+    DWORD    AllocationProtect;
+    DWORD    RegionSize;
+    DWORD    State;
+    DWORD    Protect;
+    DWORD    Type;
+} MEMORY_BASIC_INFORMATION,*LPMEMORY_BASIC_INFORMATION,*PMEMORY_BASIC_INFORMATION;
+
+#define	PAGE_NOACCESS		0x01
+#define	PAGE_READONLY		0x02
+#define	PAGE_READWRITE		0x04
+#define	PAGE_WRITECOPY		0x08
+#define	PAGE_EXECUTE		0x10
+#define	PAGE_EXECUTE_READ	0x20
+#define	PAGE_EXECUTE_READWRITE	0x40
+#define	PAGE_EXECUTE_WRITECOPY	0x80
+#define	PAGE_GUARD		0x100
+#define	PAGE_NOCACHE		0x200
+
+#define MEM_COMMIT              0x00001000
+#define MEM_RESERVE             0x00002000
+#define MEM_DECOMMIT            0x00004000
+#define MEM_RELEASE             0x00008000
+#define MEM_FREE                0x00010000
+#define MEM_PRIVATE             0x00020000
+#define MEM_MAPPED              0x00040000
+#define MEM_RESET               0x00080000
+#define MEM_TOP_DOWN            0x00100000
+#ifdef __WINE__
+#define MEM_SYSTEM              0x80000000
+#endif
+
+#define SEC_FILE                0x00800000
+#define SEC_IMAGE               0x01000000
+#define SEC_RESERVE             0x04000000
+#define SEC_COMMIT              0x08000000
+#define SEC_NOCACHE             0x10000000
+#define MEM_IMAGE               SEC_IMAGE
+
+
 #define ANYSIZE_ARRAY 1
 
 #define MINCHAR       0x80
@@ -2575,8 +2618,7 @@
                                    FILE_READ_ATTRIBUTES | SYNCHRONIZE)
 
 
-/* File attribute flags
- */
+/* File attribute flags */
 #define FILE_SHARE_READ			0x00000001L
 #define FILE_SHARE_WRITE		0x00000002L
 #define FILE_SHARE_DELETE		0x00000004L
@@ -2593,6 +2635,30 @@
 #define FILE_ATTRIBUTE_COMPRESSED       0x00000800L
 #define FILE_ATTRIBUTE_OFFLINE		0x00001000L
 
+/* File notification flags */
+#define FILE_NOTIFY_CHANGE_FILE_NAME    0x00000001
+#define FILE_NOTIFY_CHANGE_DIR_NAME     0x00000002
+#define FILE_NOTIFY_CHANGE_ATTRIBUTES   0x00000004
+#define FILE_NOTIFY_CHANGE_SIZE         0x00000008
+#define FILE_NOTIFY_CHANGE_LAST_WRITE   0x00000010
+#define FILE_NOTIFY_CHANGE_LAST_ACCESS  0x00000020
+#define FILE_NOTIFY_CHANGE_CREATION     0x00000040
+#define FILE_NOTIFY_CHANGE_SECURITY     0x00000100
+
+#define FILE_ACTION_ADDED               0x00000001
+#define FILE_ACTION_REMOVED             0x00000002
+#define FILE_ACTION_MODIFIED            0x00000003
+#define FILE_ACTION_RENAMED_OLD_NAME    0x00000004
+#define FILE_ACTION_RENAMED_NEW_NAME    0x00000005
+
+
+#define FILE_CASE_SENSITIVE_SEARCH      0x00000001
+#define FILE_CASE_PRESERVED_NAMES       0x00000002
+#define FILE_UNICODE_ON_DISK            0x00000004
+#define FILE_PERSISTENT_ACLS            0x00000008
+#define FILE_FILE_COMPRESSION           0x00000010
+#define FILE_VOLUME_IS_COMPRESSED       0x00008000
+
 /* File alignments (NT) */
 #define	FILE_BYTE_ALIGNMENT		0x00000000
 #define	FILE_WORD_ALIGNMENT		0x00000001
diff --git a/win32/file.c b/win32/file.c
index 17cc959..cc735c4 100644
--- a/win32/file.c
+++ b/win32/file.c
@@ -35,14 +35,6 @@
 /***********************************************************************
  *              ReadFileEx                (KERNEL32.)
  */
-typedef
-VOID
-(CALLBACK *LPOVERLAPPED_COMPLETION_ROUTINE)(
-    DWORD dwErrorCode,
-    DWORD dwNumberOfBytesTransfered,
-    LPOVERLAPPED lpOverlapped
-    );
-
 BOOL WINAPI ReadFileEx(HFILE hFile, LPVOID lpBuffer, DWORD numtoread,
 			 LPOVERLAPPED lpOverlapped, 
 			 LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine)