shell32/shellview: Implemented IFolderView::GetFocusedItem.
[wine] / include / wine / winbase16.h
index ad37c02..aaa3336 100644 (file)
@@ -1,8 +1,120 @@
+/*
+ * Copyright (C) the Wine project
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
 #ifndef __WINE_WINE_WINBASE16_H
 #define __WINE_WINE_WINBASE16_H
 
-#include "windef.h"
-#include "pshpack1.h"
+#include <stdarg.h>
+#include <windef.h>
+#include <winbase.h>
+#include <winnls.h>
+#include <wine/windef16.h>
+#include <wine/library.h>
+
+#include <pshpack1.h>
+
+/* Process database (i.e. a normal DOS PSP) */
+typedef struct
+{
+    WORD      int20;            /* 00 int 20h instruction */
+    WORD      nextParagraph;    /* 02 Segment of next paragraph */
+    BYTE      reserved1;
+    BYTE      dispatcher[5];    /* 05 Long call to DOS */
+    FARPROC16 savedint22;       /* 0a Saved int 22h handler */
+    FARPROC16 savedint23;       /* 0e Saved int 23h handler */
+    FARPROC16 savedint24;       /* 12 Saved int 24h handler */
+    WORD      parentPSP;        /* 16 Selector of parent PSP */
+    BYTE      fileHandles[20];  /* 18 Open file handles */
+    HANDLE16  environment;      /* 2c Selector of environment */
+    DWORD     saveStack;        /* 2e SS:SP on last int21 call */
+    WORD      nbFiles;          /* 32 Number of file handles */
+    SEGPTR    fileHandlesPtr;   /* 34 Pointer to file handle table */
+    HANDLE16  hFileHandles;     /* 38 Handle to fileHandlesPtr */
+    WORD      reserved3[17];
+    BYTE      fcb1[16];         /* 5c First FCB */
+    BYTE      fcb2[20];         /* 6c Second FCB */
+    BYTE      cmdLine[128];     /* 80 Command-line (first byte is len)*/
+    BYTE      padding[16];      /* Some apps access beyond the end of the cmd line */
+} PDB16;
+
+/* Task database. See 'Windows Internals' p. 226.
+ * Note that 16-bit OLE 2 libs like to read it directly
+ * so we have to keep entry offsets as they are.
+ */
+typedef struct _TDB
+{
+    HTASK16   hNext;              /* 00 Selector of next TDB */
+    DWORD     ss_sp;              /* 02 Stack pointer of task */
+    WORD      nEvents;            /* 06 Events for this task */
+    INT16     priority;           /* 08 Task priority, -32..15 */
+    WORD      unused1;            /* 0a */
+    HTASK16   hSelf;              /* 0c Selector of this TDB */
+    HANDLE16  hPrevInstance;      /* 0e Previous instance of module */
+    DWORD     unused2;            /* 10 */
+    WORD      ctrlword8087;       /* 14 80x87 control word */
+    WORD      flags;              /* 16 Task flags */
+    UINT16    error_mode;         /* 18 Error mode (see SetErrorMode)*/
+    WORD      version;            /* 1a Expected Windows version */
+    HANDLE16  hInstance;          /* 1c Instance handle for task */
+    HMODULE16 hModule;            /* 1e Module handle */
+    HQUEUE16  hQueue;             /* 20 Selector of task queue */
+    HTASK16   hParent;            /* 22 Selector of TDB of parent */
+    WORD      signal_flags;       /* 24 Flags for signal handler */
+    FARPROC16 sighandler;         /* 26 Signal handler */
+    FARPROC16 userhandler;        /* 2a USER signal handler */
+    FARPROC16 discardhandler;     /* 2e Handler for GlobalNotify() */
+    FARPROC16 int0;               /* 32 int 0 (divide by 0) handler */
+    FARPROC16 int2;               /* 36 int 2 (NMI) handler */
+    FARPROC16 int4;               /* 3a int 4 (INTO) handler */
+    FARPROC16 int6;               /* 3e int 6 (invalid opc) handler */
+    FARPROC16 int7;               /* 42 int 7 (coprocessor) handler */
+    FARPROC16 int3e;              /* 46 int 3e (80x87 emu) handler */
+    FARPROC16 int75;              /* 4a int 75 (80x87 error) handler */
+    DWORD     compat_flags;       /* 4e Compatibility flags */
+    BYTE      unused4[2];         /* 52 */
+    struct _TEB *teb;             /* 54 Pointer to thread database */
+    BYTE      unused5[8];         /* 58 */
+    HANDLE16  hPDB;               /* 60 Selector of PDB (i.e. PSP) */
+    SEGPTR    dta;                /* 62 Current DTA */
+    BYTE      curdrive;           /* 66 Current drive */
+    CHAR      curdir[65];         /* 67 Current directory */
+    WORD      nCmdShow;           /* a8 cmdShow parameter to WinMain */
+    HTASK16   hYieldTo;           /* aa Next task to schedule */
+    DWORD     dlls_to_init;       /* ac Ptr to DLLs to initialize */
+    HANDLE16  hCSAlias;           /* b0 Code segment for this TDB */
+    WORD      thunks[8*4];        /* b2 Make proc instance thunks */
+    CHAR      module_name[8];     /* f2 Module name for task */
+    WORD      magic;              /* fa TDB signature */
+    HANDLE    hEvent;             /* fc scheduler event handle */
+    PDB16     pdb;                /* 100 PDB for this task */
+} TDB;
+
+/* TDB flags */
+#define TDBF_WINOLDAP   0x0001
+#define TDBF_OS2APP     0x0008
+#define TDBF_WIN32      0x0010
+
+/* Windows 3.1 USER signals */
+#define USIG16_TERMINATION      0x0020
+#define USIG16_DLL_LOAD         0x0040
+#define USIG16_DLL_UNLOAD       0x0080
+#define USIG16_GPF              0x0666
+
 typedef struct _SEGINFO {
     UINT16    offSegment;
     UINT16    cbSegment;
@@ -13,7 +125,6 @@ typedef struct _SEGINFO {
     UINT16    reserved[2];
 } SEGINFO;
 
-
 /* GetWinFlags */
 
 #define WF_PMODE       0x0001
@@ -34,13 +145,205 @@ typedef struct _SEGINFO {
 #define        WF_WIN32WOW     0x4000  /* undoc */
 #define        WF_WLO          0x8000
 
-#include "poppack.h"
+/* Parameters for LoadModule() */
+typedef struct
+{
+    HGLOBAL16 hEnvironment; /* Environment segment */
+    SEGPTR    cmdLine;      /* Command-line */
+    SEGPTR    showCmd;      /* Code for ShowWindow() */
+    SEGPTR    reserved;
+} LOADPARAMS16;
 
-HMODULE16   WINAPI GetModuleHandle16(LPCSTR);
-HLOCAL16    WINAPI LocalAlloc16(UINT16,WORD);
-LPVOID      WINAPI LockResource16(HGLOBAL16);
+/* Debugging support (DEBUG SYSTEM ONLY) */
+typedef struct
+{
+    WORD    flags;
+    DWORD   dwOptions;
+    DWORD   dwFilter;
+    CHAR    achAllocModule[8];
+    DWORD   dwAllocBreak;
+    DWORD   dwAllocCount;
+} WINDEBUGINFO16, *LPWINDEBUGINFO16;
+
+/* definitions specific to Wine 16-bit relaying support */
+
+/* 32-bit stack layout after __wine_call_to_16() */
+typedef struct _STACK32FRAME
+{
+    DWORD   restore_addr;   /* 00 return address for restoring code selector */
+    DWORD   codeselector;   /* 04 code selector to restore */
+    EXCEPTION_REGISTRATION_RECORD frame;  /* 08 Exception frame */
+    SEGPTR  frame16;        /* 10 16-bit frame from last CallFrom16() */
+    DWORD   edi;            /* 14 saved registers */
+    DWORD   esi;            /* 18 */
+    DWORD   ebx;            /* 1c */
+    DWORD   ebp;            /* 20 saved 32-bit frame pointer */
+    DWORD   retaddr;        /* 24 return address */
+    DWORD   target;         /* 28 target address / CONTEXT86 pointer */
+    DWORD   nb_args;        /* 2c number of 16-bit argument bytes */
+} STACK32FRAME;
+
+/* 16-bit stack layout after __wine_call_from_16() */
+typedef struct _STACK16FRAME
+{
+    STACK32FRAME *frame32;        /* 00 32-bit frame from last CallTo16() */
+    DWORD         edx;            /* 04 saved registers */
+    DWORD         ecx;            /* 08 */
+    DWORD         ebp;            /* 0c */
+    WORD          ds;             /* 10 */
+    WORD          es;             /* 12 */
+    WORD          fs;             /* 14 */
+    WORD          gs;             /* 16 */
+    DWORD         callfrom_ip;    /* 18 callfrom tail IP */
+    DWORD         module_cs;      /* 1c module code segment */
+    DWORD         relay;          /* 20 relay function address */
+    WORD          entry_ip;       /* 22 entry point IP */
+    DWORD         entry_point;    /* 26 API entry point to call, reused as mutex count */
+    WORD          bp;             /* 2a 16-bit stack frame chain */
+    WORD          ip;             /* 2c return address */
+    WORD          cs;             /* 2e */
+} STACK16FRAME;
+
+/* argument type flags for relay debugging */
+enum arg_types
+{
+    ARG_NONE = 0, /* indicates end of arg list */
+    ARG_WORD,     /* unsigned word */
+    ARG_SWORD,    /* signed word */
+    ARG_LONG,     /* long or segmented pointer */
+    ARG_PTR,      /* linear pointer */
+    ARG_STR,      /* linear pointer to null-terminated string */
+    ARG_SEGSTR,   /* segmented pointer to null-terminated string */
+    ARG_VARARG    /* start of varargs */
+};
+
+#include <poppack.h>
+
+#define INVALID_HANDLE_VALUE16  ((HANDLE16) -1)
+#define INFINITE16      0xFFFF
+
+typedef struct {
+        DWORD dwOSVersionInfoSize;
+        DWORD dwMajorVersion;
+        DWORD dwMinorVersion;
+        DWORD dwBuildNumber;
+        DWORD dwPlatformId;
+        CHAR szCSDVersion[128];
+} OSVERSIONINFO16;
+
+
+/*
+ * NE Header FORMAT FLAGS
+ */
+#define NE_FFLAGS_SINGLEDATA    0x0001
+#define NE_FFLAGS_MULTIPLEDATA  0x0002
+#define NE_FFLAGS_WIN32         0x0010
+#define NE_FFLAGS_BUILTIN       0x0020  /* Wine built-in module */
+#define NE_FFLAGS_FRAMEBUF      0x0100  /* OS/2 fullscreen app */
+#define NE_FFLAGS_CONSOLE       0x0200  /* OS/2 console app */
+#define NE_FFLAGS_GUI           0x0300  /* right, (NE_FFLAGS_FRAMEBUF | NE_FFLAGS_CONSOLE) */
+#define NE_FFLAGS_SELFLOAD      0x0800
+#define NE_FFLAGS_LINKERROR     0x2000
+#define NE_FFLAGS_CALLWEP       0x4000
+#define NE_FFLAGS_LIBMODULE     0x8000
+
+/*
+ * NE Header OPERATING SYSTEM
+ */
+#define NE_OSFLAGS_UNKNOWN      0x00
+#define NE_OSFLAGS_OS2          0x01
+#define NE_OSFLAGS_WINDOWS      0x02
+
+/*
+ * NE Header ADDITIONAL FLAGS
+ */
+#define NE_AFLAGS_WIN2_PROTMODE 0x02
+#define NE_AFLAGS_WIN2_PROFONTS 0x04
+#define NE_AFLAGS_FASTLOAD      0x08
+
+/*
+ * Segment Flags
+ */
+#define NE_SEGFLAGS_DATA        0x0001
+#define NE_SEGFLAGS_ALLOCATED   0x0002
+#define NE_SEGFLAGS_LOADED      0x0004
+#define NE_SEGFLAGS_ITERATED    0x0008
+#define NE_SEGFLAGS_MOVEABLE    0x0010
+#define NE_SEGFLAGS_SHAREABLE   0x0020
+#define NE_SEGFLAGS_PRELOAD     0x0040
+#define NE_SEGFLAGS_EXECUTEONLY 0x0080
+#define NE_SEGFLAGS_READONLY    0x0080
+#define NE_SEGFLAGS_RELOC_DATA  0x0100
+#define NE_SEGFLAGS_SELFLOAD    0x0800
+#define NE_SEGFLAGS_DISCARDABLE 0x1000
+#define NE_SEGFLAGS_32BIT       0x2000
+
+/*
+ * Resource table structures.
+ */
+typedef struct
+{
+    WORD     offset;
+    WORD     length;
+    WORD     flags;
+    WORD     id;
+    HANDLE16 handle;
+    WORD     usage;
+} NE_NAMEINFO;
+
+typedef struct
+{
+    WORD        type_id;   /* Type identifier */
+    WORD        count;     /* Number of resources of this type */
+    FARPROC16   resloader; /* SetResourceHandler() */
+    /*
+     * Name info array.
+     */
+} NE_TYPEINFO;
+
+#define NE_RSCTYPE_CURSOR             0x8001
+#define NE_RSCTYPE_BITMAP             0x8002
+#define NE_RSCTYPE_ICON               0x8003
+#define NE_RSCTYPE_MENU               0x8004
+#define NE_RSCTYPE_DIALOG             0x8005
+#define NE_RSCTYPE_STRING             0x8006
+#define NE_RSCTYPE_FONTDIR            0x8007
+#define NE_RSCTYPE_FONT               0x8008
+#define NE_RSCTYPE_ACCELERATOR        0x8009
+#define NE_RSCTYPE_RCDATA             0x800a
+#define NE_RSCTYPE_GROUP_CURSOR       0x800c
+#define NE_RSCTYPE_GROUP_ICON         0x800e
+#define NE_RSCTYPE_SCALABLE_FONTPATH  0x80cc   /* Resource found in .fot files */
+
+
+#define __AHSHIFT  3  /* don't change! */
+#define __AHINCR   (1 << __AHSHIFT)
+
+/* undocumented functions */
+
+typedef struct tagSYSLEVEL
+{
+    CRITICAL_SECTION crst;
+    INT              level;
+} SYSLEVEL;
+
+/* [GS]etProcessDword offsets */
+#define  GPD_APP_COMPAT_FLAGS    (-56)
+#define  GPD_LOAD_DONE_EVENT     (-52)
+#define  GPD_HINSTANCE16         (-48)
+#define  GPD_WINDOWS_VERSION     (-44)
+#define  GPD_THDB                (-40)
+#define  GPD_PDB                 (-36)
+#define  GPD_STARTF_SHELLDATA    (-32)
+#define  GPD_STARTF_HOTKEY       (-28)
+#define  GPD_STARTF_SHOWWINDOW   (-24)
+#define  GPD_STARTF_SIZE         (-20)
+#define  GPD_STARTF_POSITION     (-16)
+#define  GPD_STARTF_FLAGS        (-12)
+#define  GPD_PARENT              (- 8)
+#define  GPD_FLAGS               (- 4)
+#define  GPD_USERDATA            (  0)
 
-#ifdef __WINE__
 WORD        WINAPI AllocCStoDSAlias16(WORD);
 WORD        WINAPI AllocDStoCSAlias16(WORD);
 HGLOBAL16   WINAPI AllocResource16(HINSTANCE16,HRSRC16,DWORD);
@@ -48,38 +351,47 @@ WORD        WINAPI AllocSelector16(WORD);
 WORD        WINAPI AllocSelectorArray16(WORD);
 VOID        WINAPI DirectedYield16(HTASK16);
 HGLOBAL16   WINAPI DirectResAlloc16(HINSTANCE16,WORD,UINT16);
+void        WINAPI DisposeLZ32Handle(HANDLE);
+HANDLE      WINAPI DosFileHandleToWin32Handle(HFILE);
 HANDLE16    WINAPI FarGetOwner16(HGLOBAL16);
 VOID        WINAPI FarSetOwner16(HGLOBAL16,HANDLE16);
 FARPROC16   WINAPI FileCDR16(FARPROC16);
 WORD        WINAPI FreeSelector16(WORD);
 HANDLE16    WINAPI GetAtomHandle16(ATOM);
 HANDLE16    WINAPI GetCodeHandle16(FARPROC16);
-VOID        WINAPI GetCodeInfo16(FARPROC16,SEGINFO*);
+BOOL16      WINAPI GetCodeInfo16(FARPROC16,SEGINFO*);
 DWORD       WINAPI GetCurrentPDB16(void);
 HTASK16     WINAPI GetCurrentTask(void);
 SEGPTR      WINAPI GetDOSEnvironment16(void);
 HMODULE16   WINAPI GetExePtr(HANDLE16);
 WORD        WINAPI GetExeVersion16(void);
 WORD        WINAPI GetExpWinVer16(HMODULE16);
+HQUEUE16    WINAPI GetFastQueue16(void);
 DWORD       WINAPI GetHeapSpaces16(HMODULE16);
 INT16       WINAPI GetInstanceData16(HINSTANCE16,WORD,INT16);
 BOOL16      WINAPI GetModuleName16(HINSTANCE16,LPSTR,INT16);
 INT16       WINAPI GetModuleUsage16(HINSTANCE16);
 UINT16      WINAPI GetNumTasks16(void);
+VOID        WINAPI GetpWin16Lock(SYSLEVEL**);
+SEGPTR      WINAPI GetpWin16Lock16(void);
+DWORD       WINAPI GetProcessDword(DWORD,INT);
 DWORD       WINAPI GetSelectorLimit16(WORD);
 FARPROC16   WINAPI GetSetKernelDOSProc16(FARPROC16 DosProc);
 HINSTANCE16 WINAPI GetTaskDS16(void);
 HQUEUE16    WINAPI GetTaskQueue16(HTASK16);
+HQUEUE16    WINAPI GetThreadQueue16(DWORD);
 DWORD       WINAPI GetWinFlags16(void);
 DWORD       WINAPI GlobalDOSAlloc16(DWORD);
 WORD        WINAPI GlobalDOSFree16(WORD);
 void        WINAPI GlobalFreeAll16(HGLOBAL16);
 DWORD       WINAPI GlobalHandleNoRIP16(WORD);
+WORD        WINAPI GlobalHandleToSel16(HGLOBAL16);
 HGLOBAL16   WINAPI GlobalLRUNewest16(HGLOBAL16);
 HGLOBAL16   WINAPI GlobalLRUOldest16(HGLOBAL16);
 VOID        WINAPI GlobalNotify16(FARPROC16);
 WORD        WINAPI GlobalPageLock16(HGLOBAL16);
 WORD        WINAPI GlobalPageUnlock16(HGLOBAL16);
+SEGPTR      WINAPI HasGPHandler16(SEGPTR);
 BOOL16      WINAPI IsSharedSelector16(HANDLE16);
 BOOL16      WINAPI IsTask16(HTASK16);
 HTASK16     WINAPI IsTaskLocked16(void);
@@ -89,34 +401,54 @@ WORD        WINAPI LocalCountFree16(void);
 WORD        WINAPI LocalHandleDelta16(WORD);
 WORD        WINAPI LocalHeapSize16(void);
 BOOL16      WINAPI LocalInit16(HANDLE16,WORD,WORD);
-HMODULE   WINAPI LoadLibraryEx32W16(LPCSTR,HANDLE16,DWORD);
 FARPROC16   WINAPI LocalNotify16(FARPROC16);
 HTASK16     WINAPI LockCurrentTask16(BOOL16);
+DWORD       WINAPI MapLS(LPCVOID);
+LPVOID      WINAPI MapSL(DWORD);
 VOID        WINAPI OldYield16(void);
+VOID        WINAPI WIN32_OldYield16(void);
 VOID        WINAPI PostEvent16(HTASK16);
 WORD        WINAPI PrestoChangoSelector16(WORD,WORD);
+VOID        WINAPI ReleaseThunkLock(DWORD*);
+VOID        WINAPI RestoreThunkLock(DWORD);
 WORD        WINAPI SelectorAccessRights16(WORD,WORD,WORD);
+void        WINAPI SetFastQueue16(DWORD,HQUEUE16);
 VOID        WINAPI SetPriority16(HTASK16,INT16);
-FARPROC16   WINAPI SetResourceHandler16(HINSTANCE16,SEGPTR,FARPROC16);
+FARPROC16   WINAPI SetResourceHandler16(HINSTANCE16,LPCSTR,FARPROC16);
 WORD        WINAPI SetSelectorLimit16(WORD,DWORD);
 HQUEUE16    WINAPI SetTaskQueue16(HTASK16,HQUEUE16);
+HQUEUE16    WINAPI SetThreadQueue16(DWORD,HQUEUE16);
 VOID        WINAPI SwitchStackTo16(WORD,WORD,WORD);
+VOID        WINAPI UnMapLS(DWORD);
 BOOL16      WINAPI WaitEvent16(HTASK16);
+HFILE       WINAPI Win32HandleToDosFileHandle(HANDLE);
 VOID        WINAPI WriteOutProfiles16(void);
 VOID        WINAPI hmemcpy16(LPVOID,LPCVOID,LONG);
-#endif  /* __WINE__ */
+VOID        WINAPI _CheckNotSysLevel(SYSLEVEL *lock);
+DWORD       WINAPI _ConfirmSysLevel(SYSLEVEL*);
+DWORD       WINAPI _ConfirmWin16Lock(void);
+VOID        WINAPI _CreateSysLevel(SYSLEVEL*,INT);
+VOID        WINAPI _EnterSysLevel(SYSLEVEL*);
+VOID        WINAPI _EnterWin16Lock(void);
+VOID        WINAPI _LeaveSysLevel(SYSLEVEL*);
+VOID        WINAPI _LeaveWin16Lock(void);
+
 
 INT16       WINAPI AccessResource16(HINSTANCE16,HRSRC16);
-ATOM        WINAPI AddAtom16(SEGPTR);
+ATOM        WINAPI AddAtom16(LPCSTR);
+UINT16      WINAPI CompareString16(DWORD,DWORD,LPCSTR,DWORD,LPCSTR,DWORD);
 BOOL16      WINAPI CreateDirectory16(LPCSTR,LPVOID);
 BOOL16      WINAPI DefineHandleTable16(WORD);
 ATOM        WINAPI DeleteAtom16(ATOM);
 BOOL16      WINAPI DeleteFile16(LPCSTR);
 void        WINAPI ExitKernel16(void);
 void        WINAPI FatalAppExit16(UINT16,LPCSTR);
-ATOM        WINAPI FindAtom16(SEGPTR);
+ATOM        WINAPI FindAtom16(LPCSTR);
 BOOL16      WINAPI FindClose16(HANDLE16);
-HRSRC16     WINAPI FindResource16(HINSTANCE16,SEGPTR,SEGPTR);
+VOID        WINAPI FreeLibrary16(HINSTANCE16);
+HANDLE16    WINAPI FindFirstFile16(LPCSTR,LPWIN32_FIND_DATAA);
+BOOL16      WINAPI FindNextFile16(HANDLE16,LPWIN32_FIND_DATAA);
+HRSRC16     WINAPI FindResource16(HINSTANCE16,LPCSTR,LPCSTR);
 BOOL16      WINAPI FreeModule16(HMODULE16);
 void        WINAPI FreeProcInstance16(FARPROC16);
 BOOL16      WINAPI FreeResource16(HGLOBAL16);
@@ -124,28 +456,44 @@ UINT16      WINAPI GetAtomName16(ATOM,LPSTR,INT16);
 UINT16      WINAPI GetCurrentDirectory16(UINT16,LPSTR);
 BOOL16      WINAPI GetDiskFreeSpace16(LPCSTR,LPDWORD,LPDWORD,LPDWORD,LPDWORD);
 UINT16      WINAPI GetDriveType16(UINT16); /* yes, the arguments differ */
+INT16       WINAPI GetLocaleInfo16(LCID,LCTYPE,LPSTR,INT16);
 DWORD       WINAPI GetFileAttributes16(LPCSTR);
 DWORD       WINAPI GetFreeSpace16(UINT16);
 INT16       WINAPI GetModuleFileName16(HINSTANCE16,LPSTR,INT16);
+HMODULE16   WINAPI GetModuleHandle16(LPCSTR);
 UINT16      WINAPI GetPrivateProfileInt16(LPCSTR,LPCSTR,INT16,LPCSTR);
 INT16       WINAPI GetPrivateProfileSection16(LPCSTR,LPSTR,UINT16,LPCSTR);
 WORD        WINAPI GetPrivateProfileSectionNames16(LPSTR,UINT16,LPCSTR);
 INT16       WINAPI GetPrivateProfileString16(LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT16,LPCSTR);
 BOOL16      WINAPI GetPrivateProfileStruct16(LPCSTR,LPCSTR,LPVOID,UINT16,LPCSTR);
-FARPROC16   WINAPI GetProcAddress16(HMODULE16,SEGPTR);
+FARPROC16   WINAPI GetProcAddress16(HMODULE16,LPCSTR);
 UINT16      WINAPI GetProfileInt16(LPCSTR,LPCSTR,INT16);
 INT16       WINAPI GetProfileSection16(LPCSTR,LPSTR,UINT16);
 WORD        WINAPI GetProfileSectionNames16(LPSTR,WORD);
 INT16       WINAPI GetProfileString16(LPCSTR,LPCSTR,LPCSTR,LPSTR,UINT16);
+DWORD       WINAPI GetSelectorBase(WORD);
+BOOL16      WINAPI GetStringType16(LCID,DWORD,LPCSTR,INT16,LPWORD);
 UINT16      WINAPI GetSystemDirectory16(LPSTR,UINT16);
 UINT16      WINAPI GetTempFileName16(BYTE,LPCSTR,UINT16,LPSTR);
-LONG        WINAPI GetVersion16(void);
+DWORD       WINAPI GetVersion16(void);
+BOOL16      WINAPI GetVersionEx16(OSVERSIONINFO16*);
+BOOL16      WINAPI GetWinDebugInfo16(LPWINDEBUGINFO16,UINT16);
 UINT16      WINAPI GetWindowsDirectory16(LPSTR,UINT16);
+HGLOBAL16   WINAPI GlobalAlloc16(UINT16,DWORD);
 DWORD       WINAPI GlobalCompact16(DWORD);
+LPVOID      WINAPI GlobalLock16(HGLOBAL16);
+WORD        WINAPI GlobalFix16(HGLOBAL16);
 UINT16      WINAPI GlobalFlags16(HGLOBAL16);
+HGLOBAL16   WINAPI GlobalFree16(HGLOBAL16);
 DWORD       WINAPI GlobalHandle16(WORD);
 HGLOBAL16   WINAPI GlobalReAlloc16(HGLOBAL16,DWORD,UINT16);
+DWORD       WINAPI GlobalSize16(HGLOBAL16);
+VOID        WINAPI GlobalUnfix16(HGLOBAL16);
+BOOL16      WINAPI GlobalUnlock16(HGLOBAL16);
+BOOL16      WINAPI GlobalUnWire16(HGLOBAL16);
+SEGPTR      WINAPI GlobalWire16(HGLOBAL16);
 WORD        WINAPI InitAtomTable16(WORD);
+void        WINAPI InitTask16(CONTEXT86*);
 BOOL16      WINAPI IsBadCodePtr16(SEGPTR);
 BOOL16      WINAPI IsBadHugeReadPtr16(SEGPTR,DWORD);
 BOOL16      WINAPI IsBadHugeWritePtr16(SEGPTR,DWORD);
@@ -153,7 +501,10 @@ BOOL16      WINAPI IsBadReadPtr16(SEGPTR,UINT16);
 BOOL16      WINAPI IsBadStringPtr16(SEGPTR,UINT16);
 BOOL16      WINAPI IsBadWritePtr16(SEGPTR,UINT16);
 BOOL16      WINAPI IsDBCSLeadByte16(BYTE);
+HINSTANCE16 WINAPI LoadLibrary16(LPCSTR);
+HINSTANCE16 WINAPI LoadModule16(LPCSTR,LPVOID);
 HGLOBAL16   WINAPI LoadResource16(HINSTANCE16,HRSRC16);
+HLOCAL16    WINAPI LocalAlloc16(UINT16,WORD);
 UINT16      WINAPI LocalCompact16(UINT16);
 UINT16      WINAPI LocalFlags16(HLOCAL16);
 HLOCAL16    WINAPI LocalFree16(HLOCAL16);
@@ -163,29 +514,34 @@ HLOCAL16    WINAPI LocalReAlloc16(HLOCAL16,WORD,UINT16);
 UINT16      WINAPI LocalShrink16(HGLOBAL16,UINT16);
 UINT16      WINAPI LocalSize16(HLOCAL16);
 BOOL16      WINAPI LocalUnlock16(HLOCAL16);
+LPVOID      WINAPI LockResource16(HGLOBAL16);
 HGLOBAL16   WINAPI LockSegment16(HGLOBAL16);
 FARPROC16   WINAPI MakeProcInstance16(FARPROC16,HANDLE16);
-VOID        WINAPI OutputDebugString16(LPCSTR);
-DWORD       WINAPI RegCreateKey16(HKEY,LPCSTR,LPHKEY);
+HFILE16     WINAPI OpenFile16(LPCSTR,OFSTRUCT*,UINT16);
+DWORD       WINAPI RegCloseKey16(HKEY);
+DWORD       WINAPI RegCreateKey16(HKEY,LPCSTR,PHKEY);
 DWORD       WINAPI RegDeleteKey16(HKEY,LPCSTR);
 DWORD       WINAPI RegDeleteValue16(HKEY,LPSTR);
 DWORD       WINAPI RegEnumKey16(HKEY,DWORD,LPSTR,DWORD);
 DWORD       WINAPI RegEnumValue16(HKEY,DWORD,LPSTR,LPDWORD,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
-DWORD       WINAPI RegOpenKey16(HKEY,LPCSTR,LPHKEY);
-DWORD       WINAPI RegQueryValue16(HKEY,LPSTR,LPSTR,LPDWORD);
-DWORD       WINAPI RegQueryValueEx16(HKEY,LPSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
+DWORD       WINAPI RegOpenKey16(HKEY,LPCSTR,PHKEY);
+DWORD       WINAPI RegQueryValue16(HKEY,LPCSTR,LPSTR,LPDWORD);
+DWORD       WINAPI RegQueryValueEx16(HKEY,LPCSTR,LPDWORD,LPDWORD,LPBYTE,LPDWORD);
 DWORD       WINAPI RegSetValue16(HKEY,LPCSTR,DWORD,LPCSTR,DWORD);
-DWORD       WINAPI RegSetValueEx16(HKEY,LPSTR,DWORD,DWORD,LPBYTE,DWORD);
+DWORD       WINAPI RegSetValueEx16(HKEY,LPCSTR,DWORD,DWORD,CONST BYTE*,DWORD);
 BOOL16      WINAPI RemoveDirectory16(LPCSTR);
 BOOL16      WINAPI SetCurrentDirectory16(LPCSTR);
 UINT16      WINAPI SetErrorMode16(UINT16);
 BOOL16      WINAPI SetFileAttributes16(LPCSTR,DWORD);
 UINT16      WINAPI SetHandleCount16(UINT16);
+WORD        WINAPI SetSelectorBase(WORD,DWORD);
 LONG        WINAPI SetSwapAreaSize16(WORD);
+BOOL16      WINAPI SetWinDebugInfo16(LPWINDEBUGINFO16);
 DWORD       WINAPI SizeofResource16(HMODULE16,HRSRC16);
 void        WINAPI UnlockSegment16(HGLOBAL16);
 BOOL16      WINAPI WritePrivateProfileString16(LPCSTR,LPCSTR,LPCSTR,LPCSTR);
 BOOL16      WINAPI WriteProfileString16(LPCSTR,LPCSTR,LPCSTR);
+/* Yield16 will only be available from kernel module, use WOWYield instead */
 VOID        WINAPI Yield16(void);
 SEGPTR      WINAPI lstrcat16(SEGPTR,LPCSTR);
 SEGPTR      WINAPI lstrcatn16(SEGPTR,LPCSTR,INT16);
@@ -204,15 +560,5 @@ UINT16      WINAPI _lwrite16(HFILE16,LPCSTR,UINT16);
 BOOL16      WINAPI WritePrivateProfileSection16(LPCSTR,LPCSTR,LPCSTR);
 BOOL16      WINAPI WritePrivateProfileStruct16(LPCSTR,LPCSTR,LPVOID,UINT16,LPCSTR);
 BOOL16      WINAPI WriteProfileSection16(LPCSTR,LPCSTR);
-DWORD       WINAPI GetSelectorBase(WORD);
-WORD        WINAPI SetSelectorBase(WORD,DWORD);
-
-/* Extra functions that don't exist in the Windows API */
-
-HPEN16      WINAPI GetSysColorPen16(INT16);
-UINT      WINAPI WIN16_GetTempDrive(BYTE);
-SEGPTR      WINAPI WIN16_LockResource16(HGLOBAL16);
-LONG        WINAPI WIN16_hread(HFILE16,SEGPTR,LONG);
-UINT16      WINAPI WIN16_lread(HFILE16,SEGPTR,UINT16);
 
 #endif /* __WINE_WINE_WINBASE16_H */