diff --git a/tools/winapi_check/win16/commdlg.api b/tools/winapi_check/win16/commdlg.api
new file mode 100644
index 0000000000000000000000000000000000000000..73f9173488cbda903b4333e55af08d97d350886f
--- /dev/null
+++ b/tools/winapi_check/win16/commdlg.api
@@ -0,0 +1,9 @@
+%ptr
+
+LPCHOOSECOLOR16
+LPCHOOSEFONT16
+LPPRINTDLG16
+
+%word
+
+short
diff --git a/tools/winapi_check/win16/compobj.api b/tools/winapi_check/win16/compobj.api
new file mode 100644
index 0000000000000000000000000000000000000000..364b0f05c72ca043031a40cbbaca93ba9a5a32cc
--- /dev/null
+++ b/tools/winapi_check/win16/compobj.api
@@ -0,0 +1,18 @@
+%ptr
+
+CLSID *
+FILETIME *
+GUID *
+HTASK16 *
+IMalloc16 *
+LPCLSID
+LPFILETIME
+LPMALLOC16 *
+LPMESSAGEFILTER
+LPMESSAGEFILTER *
+LPOLESTR16 *
+LPUNKNOWN
+
+%str # --forbidden
+
+LPOLESTR
\ No newline at end of file
diff --git a/tools/winapi_check/win16/ddeml.api b/tools/winapi_check/win16/ddeml.api
new file mode 100644
index 0000000000000000000000000000000000000000..43ca68b8d44b1588735320593b599533d4661f8b
--- /dev/null
+++ b/tools/winapi_check/win16/ddeml.api
@@ -0,0 +1,11 @@
+%long
+
+HCONV
+HCONVLIST
+HDDEDATA
+HSZ
+
+%ptr
+
+LPCONVCONTEXT16
+LPCONVINFO16
diff --git a/tools/winapi_check/win16/display.api b/tools/winapi_check/win16/display.api
index 3b0bf517542a5ba3e7579c0417815bee44a049fd..7b164c27df861f6e39fa3f82189e931443a9cd09 100644
--- a/tools/winapi_check/win16/display.api
+++ b/tools/winapi_check/win16/display.api
@@ -1,3 +1,7 @@
 %ptr
 
 LPCURSORINFO
+
+%ptr # --forbidden
+
+struct tagCURSORICONINFO *
diff --git a/tools/winapi_check/win16/gdi.api b/tools/winapi_check/win16/gdi.api
index e184c7e71b9fdb994b64621530bf3b8111ec8e79..f13b249ffe804984fef813eb9a337548a6061132 100644
--- a/tools/winapi_check/win16/gdi.api
+++ b/tools/winapi_check/win16/gdi.api
@@ -1,3 +1,54 @@
+%ptr
+
+BITMAP16 *
+BITMAPINFO *
+DEVMODEA *
+DOCINFO16 *
+FARPROC16 *
+HANDLETABLE16 *
+LOGBRUSH16 *
+LOGFONT16 *
+LOGPALETTE *
+LOGPEN16 *
+LPABC16
+LPENUMLOGFONT16
+LPFONTINFO16
+LPGLYPHMETRICS16
+LPKERNINGPAIR16
+LPLOGFONT16
+LPNEWTEXTMETRIC16
+LPOUTLINETEXTMETRIC16
+LPPALETTEENTRY
+LPPDEVICE
+LPRASTERIZER_STATUS
+LPRGNDATA
+LPSIZE16
+LPTEXTXFORM16
+MAT2 *
+METARECORD *
+PALETTEENTRY *
+TEXTMETRIC16 *
+VOID *
+
+%ptr # --forbidden
+
+LPDEVMODEA
+
+%segptr
+
+FONTENUMPROC16
+FONTENUMPROCEX16
+GOBJENUMPROC16
+LINEDDAPROC16
+MFENUMPROC16
+
 %word
 
 HDC16
+HFONT16
+HGDIOBJ16
+HMETAFILE16
+HPEN16
+HPJOB16
+HPQ16
+HRGN16
\ No newline at end of file
diff --git a/tools/winapi_check/win16/kernel.api b/tools/winapi_check/win16/kernel.api
new file mode 100644
index 0000000000000000000000000000000000000000..95274817b7fea3ed5d8ec943bc230aca0c3cf9ec
--- /dev/null
+++ b/tools/winapi_check/win16/kernel.api
@@ -0,0 +1,38 @@
+%long # --forbidden
+
+HKEY
+HMODULE
+
+%ptr
+
+BYTE *
+FARPROC16 *
+HANDLE *
+LPCATCHBUF
+OFSTRUCT *
+OSVERSIONINFO16 *
+SECURITY_ATTRIBUTES *
+SEGINFO *
+SYSLEVEL *
+THUNKLET *
+WIN32_FIND_DATAA *
+WINDEBUGINFO *
+struct ThunkDataCommon *
+
+%ptr # --forbidden
+
+FARPROC
+FARPROC *
+LPHKEY
+
+%word
+
+ATOM
+HLOCAL16
+HQUEUE16
+HRSRC16
+
+%wstr # --forbidden
+
+LPCWSTR
+
diff --git a/tools/winapi_check/win16/keyboard.api b/tools/winapi_check/win16/keyboard.api
new file mode 100644
index 0000000000000000000000000000000000000000..ade50265ead0e8145ff776b03214c51c79049b26
--- /dev/null
+++ b/tools/winapi_check/win16/keyboard.api
@@ -0,0 +1,3 @@
+%word
+
+CHAR
\ No newline at end of file
diff --git a/tools/winapi_check/win16/lzexpand.api b/tools/winapi_check/win16/lzexpand.api
new file mode 100644
index 0000000000000000000000000000000000000000..ce02810eaf342b87434762ec0b79c7a00c421f97
--- /dev/null
+++ b/tools/winapi_check/win16/lzexpand.api
@@ -0,0 +1,3 @@
+%ptr
+
+LPOFSTRUCT
diff --git a/tools/winapi_check/win16/mmsystem.api b/tools/winapi_check/win16/mmsystem.api
new file mode 100644
index 0000000000000000000000000000000000000000..9d14270a230e3bf8b8edd40763b6eac53d2411fc
--- /dev/null
+++ b/tools/winapi_check/win16/mmsystem.api
@@ -0,0 +1,69 @@
+%long
+
+FOURCC
+
+%long # --forbidden
+
+HWND
+
+%ptr
+
+DWORD *
+HINSTANCE16 *
+HMIDIIN16 *
+HMIDIOUT16 *
+HMIDISTRM16 *
+HPCSTR
+HPSTR
+HWAVEIN16 *
+HWAVEOUT16 *
+LPAUXCAPS16
+LPHANDLE
+LPHMIXER16
+LPJOYCAPS16
+LPJOYINFO16
+LPJOYINFOEX
+LPMIDIHDR16
+LPMIDIINCAPS16
+LPMIDIOUTCAPS16
+LPMIXERCAPS16
+LPMIXERCONTROLDETAILS16
+LPMIXERLINE16
+LPMIXERLINECONTROLS16
+LPMMCKINFO
+LPMMIOPROC16
+LPMMTIME16
+LPTIMECAPS16
+LPUINT16
+LPWAVEINCAPS16
+LPWAVEOUTCAPS16
+MIDIHDR16 *
+MMCKINFO *
+MMIOINFO16 *
+WAVEHDR *
+
+%ptr # --forbidden
+
+LPWAVEFORMATEX
+LPWAVEHDR
+
+%segptr
+
+LPTIMECALLBACK16
+
+%segptr # --forbidden
+
+YIELDPROC
+
+%word
+
+HDRVR16
+HMIDIIN16
+HMIDIOUT16
+HMIDISTRM16
+HMIXER16
+HMIXEROBJ16
+HMMIO16
+HWAVEIN16
+HWAVEOUT16
+
diff --git a/tools/winapi_check/win16/msacm.api b/tools/winapi_check/win16/msacm.api
new file mode 100644
index 0000000000000000000000000000000000000000..2446fdb4bb3599418bfd5e81faf7c13715992aa5
--- /dev/null
+++ b/tools/winapi_check/win16/msacm.api
@@ -0,0 +1,30 @@
+%ptr
+
+ACMDRIVERENUMCB16
+ACMFILTERENUMCB16
+ACMFILTERTAGENUMCB16
+ACMFORMATENUMCB16
+ACMFORMATTAGENUMCB16
+LPACMDRIVERDETAILS16
+LPACMFILTERCHOOSE16
+LPACMFILTERDETAILS16
+LPACMFILTERTAGDETAILS16
+LPACMFORMATCHOOSE16
+LPACMFORMATDETAILS16
+LPACMFORMATTAGDETAILS16
+LPACMSTREAMHEADER16
+LPHACMDRIVER16
+LPHACMDRIVERID16
+LPHACMSTREAM16
+
+%ptr # --forbidden
+
+LPWAVEFILTER
+LPWAVEFORMATEX
+
+%word
+
+HACMDRIVER16
+HACMDRIVERID16
+HACMOBJ16
+HACMSTREAM16
diff --git a/tools/winapi_check/win16/ole2.api b/tools/winapi_check/win16/ole2.api
new file mode 100644
index 0000000000000000000000000000000000000000..d6ab8631d1451d108c81ecf49c3a8c7109bf8ae9
--- /dev/null
+++ b/tools/winapi_check/win16/ole2.api
@@ -0,0 +1,5 @@
+%ptr
+
+LPDROPTARGET
+LPMONIKER *
+LPRUNNINGOBJECTTABLE *
diff --git a/tools/winapi_check/win16/ole2disp.api b/tools/winapi_check/win16/ole2disp.api
new file mode 100644
index 0000000000000000000000000000000000000000..7854e1e1bdcbfd83e01a8a39980e6d1b123c0ecb
--- /dev/null
+++ b/tools/winapi_check/win16/ole2disp.api
@@ -0,0 +1,15 @@
+%ptr
+
+BSTR16 *
+LPBSTR16
+INTERFACEDATA *
+ITypeInfo **
+IUnknown *
+
+%segstr
+
+BSTR16
+
+%word # --forbidden
+
+unsigned
diff --git a/tools/winapi_check/win16/ole2nls.api b/tools/winapi_check/win16/ole2nls.api
new file mode 100644
index 0000000000000000000000000000000000000000..34884e25a563bd2df66fdc297fc978fa0c7c98f9
--- /dev/null
+++ b/tools/winapi_check/win16/ole2nls.api
@@ -0,0 +1,7 @@
+%long
+
+LCTYPE
+
+%word
+
+LANGID
diff --git a/tools/winapi_check/win16/olecli.api b/tools/winapi_check/win16/olecli.api
index e184c7e71b9fdb994b64621530bf3b8111ec8e79..e0bd2f8af8f7f4ba21f95b3054d899ba7fc6e64f 100644
--- a/tools/winapi_check/win16/olecli.api
+++ b/tools/winapi_check/win16/olecli.api
@@ -1,3 +1,14 @@
+%long
+
+LHCLIENTDOC
+
+%ptr
+
+LHCLIENTDOC *
+LPOLECLIENT
+LPOLEOBJECT
+LPOLEOBJECT *
+
 %word
 
 HDC16
diff --git a/tools/winapi_check/win16/olesvr.api b/tools/winapi_check/win16/olesvr.api
new file mode 100644
index 0000000000000000000000000000000000000000..149799b1dad1dc23e77206ea83e96432a8b79943
--- /dev/null
+++ b/tools/winapi_check/win16/olesvr.api
@@ -0,0 +1,11 @@
+%long
+
+LHSERVER
+LHSERVERDOC
+
+%ptr
+
+BOOL16 *
+LHSERVERDOC *
+LPOLESERVERDOC
+
diff --git a/tools/winapi_check/win16/shell.api b/tools/winapi_check/win16/shell.api
new file mode 100644
index 0000000000000000000000000000000000000000..e8a94c2ba145c9af1ed3ab58df8ab79e99b0bcff
--- /dev/null
+++ b/tools/winapi_check/win16/shell.api
@@ -0,0 +1,15 @@
+%long # --forbidden
+
+HKEY
+
+%ptr
+
+HICON16 *
+
+%ptr # --forbidden
+
+LPHKEY
+
+%word
+
+HDROP16
diff --git a/tools/winapi_check/win16/storage.api b/tools/winapi_check/win16/storage.api
new file mode 100644
index 0000000000000000000000000000000000000000..164a836fa3c142ac14f9e9f724a8e5ac78f07aa2
--- /dev/null
+++ b/tools/winapi_check/win16/storage.api
@@ -0,0 +1,17 @@
+%ptr
+
+LPSTORAGE16
+IID *
+IStorage16 *
+IStorage16 **
+IStream16 *
+IStream16 **
+SNB16
+STATSTG16 *
+ULARGE_INTEGER *
+
+%longlong
+
+LARGE_INTEGER
+
+
diff --git a/tools/winapi_check/win16/toolhelp.api b/tools/winapi_check/win16/toolhelp.api
new file mode 100644
index 0000000000000000000000000000000000000000..2ae509b1281299f2dccfaacc949db64075aa4e8f
--- /dev/null
+++ b/tools/winapi_check/win16/toolhelp.api
@@ -0,0 +1,20 @@
+%ptr
+
+CLASSENTRY *
+GLOBALENTRY *
+GLOBALINFO *
+LOCALENTRY *
+LOCALINFO *
+MEMMANINFO *
+MODULEENTRY *
+STACKTRACEENTRY *
+TASKENTRY *
+SYSHEAPINFO *
+TIMERINFO *
+
+%ptr # --forbidden
+
+FARPROC
+LOCAL32ENTRY *
+LOCAL32INFO *
+
diff --git a/tools/winapi_check/win16/typelib.api b/tools/winapi_check/win16/typelib.api
new file mode 100644
index 0000000000000000000000000000000000000000..1c1b56ea051029539b91283330612055d6221499
--- /dev/null
+++ b/tools/winapi_check/win16/typelib.api
@@ -0,0 +1,7 @@
+%ptr
+
+LPBSTR16
+
+%str # --forbidden
+
+LPOLESTR
diff --git a/tools/winapi_check/win16/user.api b/tools/winapi_check/win16/user.api
index e184c7e71b9fdb994b64621530bf3b8111ec8e79..3d77613fb953ec7968c8d3d5aff52ef64f9b9a36 100644
--- a/tools/winapi_check/win16/user.api
+++ b/tools/winapi_check/win16/user.api
@@ -1,3 +1,55 @@
+%long
+
+HHOOK
+POINT16
+
+%ptr
+
+BOOL16 *
+COLORREF *
+CURSORICONINFO *
+DWORD *
+HHOOK *
+LPCOMSTAT16
+LPDCB16
+LPDRIVERINFOSTRUCT16
+LPICONINFO16
+LPMSG16
+LPMSG16_32
+LPMSGBOXPARAMS16
+LPPAINTSTRUCT16
+LPQUEUESTRUCT16 *
+LPSCROLLINFO
+MENUITEMINFO16 *
+MSG16 *
+MSG32_16 *
+PAINTSTRUCT16 *
+SCROLLINFO *
+WINDOWPLACEMENT16 *
+WNDCLASS16 *
+WNDCLASSEX16 *
+
+%segptr
+
+DLGPROC16
+GRAYSTRINGPROC16
+HOOKPROC16
+PROPENUMPROC16
+TIMERPROC16
+WNDENUMPROC16
+WNDPROC16
+
 %word
 
+ATOM
+CHAR
+HACCEL16
+HCURSOR16
 HDC16
+HDRVR16
+HDWP16
+HFONT16
+HMENU16
+HQUEUE16
+HRGN16
+HRSRC16
diff --git a/tools/winapi_check/win16/w32sys.api b/tools/winapi_check/win16/w32sys.api
new file mode 100644
index 0000000000000000000000000000000000000000..a76245a6273a1a5edfc13740810f528009b04bf7
--- /dev/null
+++ b/tools/winapi_check/win16/w32sys.api
@@ -0,0 +1,3 @@
+%ptr
+
+LPWIN32SINFO
diff --git a/tools/winapi_check/win16/win32s16.api b/tools/winapi_check/win16/win32s16.api
new file mode 100644
index 0000000000000000000000000000000000000000..01097fa4aec876bcedcdb168f18b9c04c901cf0d
--- /dev/null
+++ b/tools/winapi_check/win16/win32s16.api
@@ -0,0 +1,3 @@
+%ptr
+
+LPMEMORY_BASIC_INFORMATION
\ No newline at end of file
diff --git a/tools/winapi_check/win16/win87em.api b/tools/winapi_check/win16/win87em.api
new file mode 100644
index 0000000000000000000000000000000000000000..34a289cf98f6487337c9d3c852da688182a15bf1
--- /dev/null
+++ b/tools/winapi_check/win16/win87em.api
@@ -0,0 +1,3 @@
+%ptr
+
+struct Win87EmInfoStruct *
\ No newline at end of file
diff --git a/tools/winapi_check/win16/wineps.api b/tools/winapi_check/win16/wineps.api
new file mode 100644
index 0000000000000000000000000000000000000000..777773a1854e6c002061a0e09fbed389261414d2
--- /dev/null
+++ b/tools/winapi_check/win16/wineps.api
@@ -0,0 +1,3 @@
+%ptr # --forbidden
+
+LPDEVMODEA
\ No newline at end of file
diff --git a/tools/winapi_check/win16/wing.api b/tools/winapi_check/win16/wing.api
index e184c7e71b9fdb994b64621530bf3b8111ec8e79..56954a270ecf26e69adcd4548a0a27673efa8359 100644
--- a/tools/winapi_check/win16/wing.api
+++ b/tools/winapi_check/win16/wing.api
@@ -1,3 +1,8 @@
+%ptr
+
+BITMAPINFO *
+
 %word
 
 HDC16
+WING_DITHER_TYPE
diff --git a/tools/winapi_check/win16/winsock.api b/tools/winapi_check/win16/winsock.api
new file mode 100644
index 0000000000000000000000000000000000000000..6309ee0a9e4b7654d089eb0a2ec1bdeef528c6a7
--- /dev/null
+++ b/tools/winapi_check/win16/winsock.api
@@ -0,0 +1,23 @@
+%long # --forbidden
+u_long
+
+%ptr
+
+LPWSADATA
+struct sockaddr *
+struct timeval *
+ws_fd_set16 *
+
+%unknown
+
+struct in_addr
+
+%word
+
+SOCKET16
+
+%word # --forbidden
+
+u_short
+
+
diff --git a/tools/winapi_check/win16api.dat b/tools/winapi_check/win16api.dat
index 07a503edda0019d36c11908a34f20efa1d783809..91c68465d61c6b65b91b2e13b7fab9fb76a44a42 100644
--- a/tools/winapi_check/win16api.dat
+++ b/tools/winapi_check/win16api.dat
@@ -2,237 +2,43 @@
 
 COLORREF
 DWORD
-FOURCC
-HCONV
-HCONVLIST
-HDDEDATA
-HHOOK
-HKEY
 HRESULT
-HSZ
 LCID
-LCTYPE
-LHCLIENTDOC
-LHSERVER
-LHSERVERDOC
 LONG
 LPARAM
 LRESULT
-POINT16
 ULONG
 
 %longlong
 
-LARGE_INTEGER
 ULARGE_INTEGER
 
 %ptr
 
-ACMDRIVERENUMCB16
-ACMFILTERENUMCB16
-ACMFILTERTAGENUMCB16
-ACMFORMATENUMCB16
-ACMFORMATTAGENUMCB16
-BITMAP16 *
-BITMAPINFO *
 BITMAPINFOHEADER *
-BOOL16 *
-BSTR16 *
-BYTE *
-CLASSENTRY *
-CLSID *
-COLORREF *
 CONTEXT86 *
-CURSORICONINFO *
-DEVMODEA *
-DOCINFO16 *
-DWORD *
-FARPROC *
-FARPROC16 *
-FILETIME *
-GLOBALENTRY *
-GLOBALINFO *
-GUID *
-HANDLE *
-HANDLETABLE16 *
-HHOOK *
-HICON16 *
-HINSTANCE16 *
-HMIDIIN16 *
-HMIDIOUT16 *
-HMIDISTRM16 *
-HPCSTR
-HPSTR
-HTASK16 *
-HWAVEIN16 *
-HWAVEOUT16 *
-IID *
-IMalloc16 *
 INT16 *
-INTERFACEDATA *
-IStorage16 *
-IStorage16 **
-IStream16 *
-IStream16 **
-ITypeInfo **
-IUnknown *
-LHCLIENTDOC *
-LHSERVERDOC *
-LOCAL32ENTRY *
-LOCAL32INFO *
-LOCALENTRY *
-LOCALINFO *
-LOGBRUSH16 *
-LOGFONT16 *
-LOGPALETTE *
-LOGPEN16 *
-LPABC16
-LPACMDRIVERDETAILS16
-LPACMFILTERCHOOSE16
-LPACMFILTERDETAILS16
-LPACMFILTERTAGDETAILS16
-LPACMFORMATCHOOSE16
-LPACMFORMATDETAILS16
-LPACMFORMATTAGDETAILS16
-LPACMSTREAMHEADER16
-LPAUXCAPS16
-LPBSTR16
 LPBYTE
-LPCATCHBUF
-LPCHOOSECOLOR16
-LPCHOOSEFONT16
-LPCLSID
-LPCOMSTAT16
-LPCONVCONTEXT16
-LPCONVINFO16
 LPCVOID
-LPDCB16
-LPDEVMODEA
-LPDRIVERINFOSTRUCT16
 LPDWORD
-LPENUMLOGFONT16
-LPFILETIME
-LPFONTINFO16
-LPGLYPHMETRICS16
-LPHACMDRIVER16
-LPHACMDRIVERID16
-LPHACMSTREAM16
-LPHANDLE
-LPHKEY
-LPHMIXER16
-LPICONINFO16
 LPINT16
-LPJOYCAPS16
-LPJOYINFO16
-LPJOYINFOEX
-LPKERNINGPAIR16
-LPLOGFONT16
-LPMALLOC16 *
-LPMEMORY_BASIC_INFORMATION
-LPMESSAGEFILTER
-LPMESSAGEFILTER *
-LPMIDIHDR16
-LPMIDIINCAPS16
-LPMIDIOUTCAPS16
-LPMIXERCAPS16
-LPMIXERCONTROLDETAILS16
-LPMIXERLINE16
-LPMIXERLINECONTROLS16
-LPMMCKINFO
-LPMMIOPROC16
-LPMMTIME16
-LPMONIKER *
-LPMSG16
-LPMSG16_32
-LPMSGBOXPARAMS16
-LPNEWTEXTMETRIC16
-LPOFSTRUCT
-LPOLECLIENT
-LPOLEOBJECT
-LPOLEOBJECT *
-LPOLESERVERDOC
-LPOLESTR16 *
-LPDROPTARGET
-LPOUTLINETEXTMETRIC16
-LPPAINTSTRUCT16
-LPPALETTEENTRY
-LPPDEVICE
 LPPOINT16
-LPPRINTDLG16
-LPQUEUESTRUCT16 *
-LPRASTERIZER_STATUS
 LPRECT16
-LPRGNDATA
-LPRUNNINGOBJECTTABLE *
-LPSCROLLINFO
-LPSIZE16
-LPSTORAGE16
-LPTEXTXFORM16
-LPTIMECAPS16
-LPUINT16
-LPUNKNOWN
 LPVOID
 LPVOID *
-LPWAVEFILTER
-LPWAVEFORMATEX
-LPWAVEHDR
-LPWAVEINCAPS16
-LPWAVEOUTCAPS16
-LPWIN32SINFO
 LPWORD
-LPWSADATA
-MAT2 *
-MEMMANINFO *
-MENUITEMINFO16 *
-METARECORD *
-MIDIHDR16 *
-MMCKINFO *
-MMIOINFO16 *
-MODULEENTRY *
-MSG16 *
-MSG32_16 *
-OFSTRUCT *
-OSVERSIONINFO16 *
-PAINTSTRUCT16 *
-PALETTEENTRY *
 POINT16 *
 RECT16 *
 REFCLSID
 REFGUID
 REFIID
 RGBQUAD *
-SCROLLINFO *
-SECURITY_ATTRIBUTES *
-SEGINFO *
 SEGPTR *
-SNB16
-STACKTRACEENTRY *
-STATSTG16 *
-SYSHEAPINFO *
-SYSLEVEL *
-TASKENTRY *
-TEXTMETRIC16 *
-THUNKLET *
-TIMERINFO *
 UINT16 *
-ULARGE_INTEGER *
 ULONG *
-VOID *
-WAVEHDR *
-WIN32_FIND_DATAA *
-WINDEBUGINFO *
-WINDOWPLACEMENT16 *
-WNDCLASS16 *
-WNDCLASSEX16 *
 WORD *
 char *
-struct ThunkDataCommon *
-struct Win87EmInfoStruct *
-struct sockaddr *
-struct tagCURSORICONINFO *
-struct timeval *
 void *
-ws_fd_set16 *
 
 %s_word
 
@@ -240,38 +46,16 @@ INT16
 
 %segptr
 
-DLGPROC16
 FARPROC16
-FONTENUMPROC16
-FONTENUMPROCEX16
-GOBJENUMPROC16
-GRAYSTRINGPROC16
-HOOKPROC16
-LINEDDAPROC16
-LPTIMECALLBACK16
-MFENUMPROC16
-PROPENUMPROC16
 SEGPTR
-TIMERPROC16
-WNDENUMPROC16
-WNDPROC16
-
-%segstr
-
-BSTR16
 
 %str
 
 LPCOLESTR16
 LPCSTR
-LPCWSTR
 LPSTR
 LPOLESTR16
 
-%unknown
-
-struct in_addr
-
 %void
 
 void
@@ -279,73 +63,32 @@ VOID
 
 %word
 
-ATOM
 BOOL16
 BYTE
-CHAR
-HACCEL16
-HACMDRIVER16
-HACMDRIVERID16
-HACMOBJ16
-HACMSTREAM16
 HANDLE16
 HBITMAP16
 HBRUSH16
-HCURSOR16
-HDROP16
-HDRVR16
-HDWP16
 HFILE16
-HFONT16
-HGDIOBJ16
 HGLOBAL16
 HICON16
 HINSTANCE16
-HLOCAL16
-HMENU16
-HMETAFILE16
-HMIDIIN16
-HMIDIOUT16
-HMIDISTRM16
-HMIXER16
-HMIXEROBJ16
-HMMIO16
 HMODULE16
 HPALETTE16
-HPEN16
-HPJOB16
-HPQ16
-HQUEUE16
-HRGN16
-HRSRC16
 HTASK16
-HWAVEIN16
-HWAVEOUT16
 HWND16
-LANGID
 MMRESULT16
 OLESTATUS
-SOCKET16
 UINT16
-WING_DITHER_TYPE
 WORD
 WPARAM16
 
 %unknown # --forbidden
 
 BOOL
-FARPROC
 HANDLE
 HINSTANCE
-HMODULE
-HWND
 INT
-LPOLESTR
 UINT
-YIELDPROC
 int
 long
-short
-u_long
-u_short
-unsigned
+
diff --git a/tools/winapi_check/win32/advapi32.api b/tools/winapi_check/win32/advapi32.api
index b2e2e48d8e004390759850aef8e6ca181a10ae2b..0cb4ccdfc7b28ab41523938d03dfecae2b152b36 100644
--- a/tools/winapi_check/win32/advapi32.api
+++ b/tools/winapi_check/win32/advapi32.api
@@ -1,7 +1,30 @@
 %long
 
+HCRYPTKEY
 POLICY_INFORMATION_CLASS
+REGSAM
+SC_HANDLE
+SERVICE_STATUS_HANDLE
+TOKEN_INFORMATION_CLASS
 
 %long --extension
 
-LSA_HANDLE
\ No newline at end of file
+LSA_HANDLE
+
+%ptr
+
+HCRYPTPROV *
+LPCWSTR *
+LPENUM_SERVICE_STATUSA
+LPHANDLER_FUNCTION
+LPSERVICE_STATUS
+LPSERVICE_TABLE_ENTRYA
+LPSERVICE_TABLE_ENTRYW
+PLSA_HANDLE
+PLSA_OBJECT_ATTRIBUTES
+PLSA_REFERENCED_DOMAIN_LIST *
+PLSA_TRANSLATED_NAME *
+PLSA_UNICODE_STRING
+PSID_NAME_USE
+PUCHAR
+SECURITY_DESCRIPTOR *
diff --git a/tools/winapi_check/win32/avifil32.api b/tools/winapi_check/win32/avifil32.api
index 6558fd261db2f55cef222767affee8a481b26f93..03f4b0655bb57e7ce5e64db0125cc30193ab3919 100644
--- a/tools/winapi_check/win32/avifil32.api
+++ b/tools/winapi_check/win32/avifil32.api
@@ -10,3 +10,4 @@ PAVIFILE
 PAVIFILE *
 PAVISTREAM
 PAVISTREAM *
+PGETFRAME
\ No newline at end of file
diff --git a/tools/winapi_check/win32/comctl32.api b/tools/winapi_check/win32/comctl32.api
index 9446a0450824cbe06cc05bae80c3c33191514415..1cd82de75b081caa2e6052d4544c5747bd387044 100644
--- a/tools/winapi_check/win32/comctl32.api
+++ b/tools/winapi_check/win32/comctl32.api
@@ -3,9 +3,32 @@
 COLORREF
 HBITMAP
 HDC
+HDPA
+HDSA
 HICON
+HIMAGELIST
+HPROPSHEETPAGE
 HWND
 
 %ptr
 
-TRACKMOUSEEVENT *
\ No newline at end of file
+DPAENUMPROC
+DPALOADPROC
+DSAENUMPROC
+HDPA *
+IMAGEINFO *
+IMAGELISTDRAWPARAMS *
+LPCOLDTBBUTTON
+LPCOLORMAP
+LPCPROPSHEETHEADERA
+LPCPROPSHEETHEADERW
+LPCPROPSHEETPAGEA
+LPCPROPSHEETPAGEW
+LPCREATEMRULIST
+LPCTBBUTTON
+LPINITCOMMONCONTROLSEX
+LPNMHDR
+LPSTREAM
+PFNDPACOMPARE
+PFNDPAMERGE
+TRACKMOUSEEVENT *
diff --git a/tools/winapi_check/win32/comdlg32.api b/tools/winapi_check/win32/comdlg32.api
index c2835fac5197f4aaafed262e72ed9fa3b56d5416..7ecc20808e4c6319df993f7ecaa53c8e3cec47c3 100644
--- a/tools/winapi_check/win32/comdlg32.api
+++ b/tools/winapi_check/win32/comdlg32.api
@@ -1,3 +1,17 @@
 %long
 
-HWND
\ No newline at end of file
+HWND
+
+%ptr
+
+LPCHOOSECOLORA
+LPCHOOSECOLORW
+LPCHOOSEFONTA
+LPCHOOSEFONTW
+LPFINDREPLACEA
+LPFINDREPLACEW
+LPOPENFILENAMEA
+LPOPENFILENAMEW
+LPPAGESETUPDLGA
+LPPRINTDLGA
+LPPRINTDLGW
diff --git a/tools/winapi_check/win32/crtdll.api b/tools/winapi_check/win32/crtdll.api
new file mode 100644
index 0000000000000000000000000000000000000000..1531c1f262f5aed42234a10f839e768192b34161
--- /dev/null
+++ b/tools/winapi_check/win32/crtdll.api
@@ -0,0 +1,24 @@
+%long
+
+clock_t
+time_t
+
+%ptr
+
+CRTDLL_FILE *
+LPDWORD *
+LPSTR **
+PCONTEXT
+PEXCEPTION_FRAME *
+VOID *
+_INITTERMFUN *
+jmp_buf
+struct find_t *
+struct stat *
+struct win_stat *
+time_t *
+
+%unknown
+
+new_handler_type
+sig_handler_type
diff --git a/tools/winapi_check/win32/ddraw.api b/tools/winapi_check/win32/ddraw.api
new file mode 100644
index 0000000000000000000000000000000000000000..d2879f0d0fc189366cd51eec74a90afada20f17b
--- /dev/null
+++ b/tools/winapi_check/win32/ddraw.api
@@ -0,0 +1,8 @@
+%ptr
+
+LPDDENUMCALLBACKA
+LPDDENUMCALLBACKEXA
+LPDDENUMCALLBACKEXW
+LPDDENUMCALLBACKW
+LPDIRECTDRAW *
+LPDIRECTDRAWCLIPPER *
diff --git a/tools/winapi_check/win32/dplayx.api b/tools/winapi_check/win32/dplayx.api
new file mode 100644
index 0000000000000000000000000000000000000000..cfd958a0bce9c71324fe299e37d1378f10414925
--- /dev/null
+++ b/tools/winapi_check/win32/dplayx.api
@@ -0,0 +1,6 @@
+%ptr
+
+LPDIRECTPLAYLOBBY *
+LPDIRECTPLAYLOBBYA *
+LPDPENUMDPCALLBACKA
+LPDPENUMDPCALLBACKW
diff --git a/tools/winapi_check/win32/dsound.api b/tools/winapi_check/win32/dsound.api
new file mode 100644
index 0000000000000000000000000000000000000000..0826df9d4d624bb882de9d46f324d0edc6a5a48b
--- /dev/null
+++ b/tools/winapi_check/win32/dsound.api
@@ -0,0 +1,4 @@
+%ptr
+
+LPDIRECTSOUND *
+LPDSENUMCALLBACKA
\ No newline at end of file
diff --git a/tools/winapi_check/win32/gdi32.api b/tools/winapi_check/win32/gdi32.api
index 745416739e681211450b87ae120fcd68f5f7347f..52cac500b31401590f94067dd6970c5c3f23f808 100644
--- a/tools/winapi_check/win32/gdi32.api
+++ b/tools/winapi_check/win32/gdi32.api
@@ -16,7 +16,60 @@ HWND
 
 %ptr
 
+ABORTPROC
 BITMAP *
 BITMAPINFO *
 BITMAPINFOHEADER *
-
+COLORADJUSTMENT *
+DEVMODEA *
+DEVMODEW *
+DOCINFOA *
+DOCINFOW *
+ENHMETARECORD *
+ENHMFENUMPROC
+FONTENUMPROCA
+FONTENUMPROCEXA
+FONTENUMPROCEXW
+FONTENUMPROCW
+GCP_RESULTSA *
+GCP_RESULTSW *
+GOBJENUMPROC
+HANDLETABLE *
+LINEDDAPROC
+LOGBRUSH *
+LOGFONTA *
+LOGFONTW *
+LOGPALETTE *
+LOGPEN *
+LPABC
+LPABCFLOAT
+LPCOLORADJUSTMENT
+LPENHMETAHEADER
+LPFONTSIGNATURE
+LPGLYPHMETRICS
+LPHANDLETABLE
+LPKERNINGPAIR
+LPLOGCOLORSPACEA
+LPLOGCOLORSPACEW
+LPOUTLINETEXTMETRICA
+LPOUTLINETEXTMETRICW
+LPPALETTEENTRY
+LPPIXELFORMATDESCRIPTOR
+LPRASTERIZER_STATUS
+LPRGNDATA
+LPSIZE
+LPXFORM
+MAT2 *
+METAFILEPICT *
+METARECORD *
+MFENUMPROC
+PALETTEENTRY *
+PFLOAT
+PIXELFORMATDESCRIPTOR *
+PPOLYTEXTA
+PPOLYTEXTW
+RGBQUAD *
+RGNDATA *
+TEXTMETRICA *
+TEXTMETRICW *
+XFORM *
diff --git a/tools/winapi_check/win32/icmp.api b/tools/winapi_check/win32/icmp.api
new file mode 100644
index 0000000000000000000000000000000000000000..e26843771929f966b636870a19fd62cb534f611b
--- /dev/null
+++ b/tools/winapi_check/win32/icmp.api
@@ -0,0 +1,7 @@
+%long
+
+IPAddr
+
+%ptr
+
+PIP_OPTION_INFORMATION
\ No newline at end of file
diff --git a/tools/winapi_check/win32/imagehlp.api b/tools/winapi_check/win32/imagehlp.api
new file mode 100644
index 0000000000000000000000000000000000000000..712e1724ae8ad092c97720d5a97569823bd38381
--- /dev/null
+++ b/tools/winapi_check/win32/imagehlp.api
@@ -0,0 +1,29 @@
+%long
+
+DIGEST_HANDLE
+USHORT
+
+%ptr
+
+DIGEST_FUNCTION
+PAPI_VERSION
+PCHAR *
+PENUMLOADED_MODULES_CALLBACK
+PFUNCTION_TABLE_ACCESS_ROUTINE
+PGET_MODULE_BASE_ROUTINE
+PIMAGEHLP_MODULE
+PIMAGEHLP_STATUS_ROUTINE
+PIMAGEHLP_SYMBOL
+PIMAGE_DEBUG_INFORMATION
+PIMAGE_LOAD_CONFIG_DIRECTORY
+PIMAGE_NT_HEADERS
+PIMAGE_SECTION_HEADER
+PIMAGE_SECTION_HEADER *
+PLOADED_IMAGE
+PREAD_PROCESS_MEMORY_ROUTINE
+PSTACKFRAME
+PSYMBOL_REGISTERED_CALLBACK
+PSYM_ENUMMODULES_CALLBACK
+PSYM_ENUMSYMBOLS_CALLBACK
+PTRANSLATE_ADDRESS_ROUTINE
+PWIN_CERTIFICATE
diff --git a/tools/winapi_check/win32/imm32.api b/tools/winapi_check/win32/imm32.api
index 3f41c3af496d156b721e0e6d1b372995788750e9..071e3eb7fe172d495df348cd18bf0c3550e453b4 100644
--- a/tools/winapi_check/win32/imm32.api
+++ b/tools/winapi_check/win32/imm32.api
@@ -2,3 +2,13 @@
 
 HWND
 HIMC
+
+%ptr
+
+LPCANDIDATEFORM
+LPCANDIDATELIST
+LPCOMPOSITIONFORM
+LPSTYLEBUFA
+LPSTYLEBUFW
+REGISTERWORDENUMPROCA
+REGISTERWORDENUMPROCW
diff --git a/tools/winapi_check/win32/kernel32.api b/tools/winapi_check/win32/kernel32.api
new file mode 100644
index 0000000000000000000000000000000000000000..1a247274e96149bce3f6fefa59ddc97cd5590b10
--- /dev/null
+++ b/tools/winapi_check/win32/kernel32.api
@@ -0,0 +1,93 @@
+%long
+
+CALID
+CALTYPE
+COORD
+LCTYPE
+HLOCAL
+HRSRC
+ULONG_PTR
+
+%long # --forbidden
+
+BOOL16
+
+%ptr
+
+BY_HANDLE_FILE_INFORMATION *
+CALINFO_ENUMPROCA
+CODEPAGE_ENUMPROCA
+CODEPAGE_ENUMPROCW
+DATEFMT_ENUMPROCA
+DATEFMT_ENUMPROCW
+ENUMRESLANGPROCA
+ENUMRESLANGPROCW
+ENUMRESNAMEPROCA
+ENUMRESNAMEPROCW
+ENUMRESTYPEPROCA
+ENUMRESTYPEPROCW
+FARPROC
+FARPROC *
+GET_FILEEX_INFO_LEVELS
+HANDLER_ROUTINE *
+INPUT_RECORD *
+LARGE_INTEGER *
+LOCALE_ENUMPROCA
+LOCALE_ENUMPROCW
+LPCHAR_INFO
+LPCOMMTIMEOUTS
+LPCOMSTAT
+LPCONSOLE_CURSOR_INFO
+LPCONSOLE_SCREEN_BUFFER_INFO
+LPCPINFO
+LPDCB
+LPDCB *
+LPDEBUG_EVENT
+LPINPUT_RECORD
+LPLDT_ENTRY
+LPMEMORYSTATUS
+LPMEMORY_BASIC_INFORMATION
+LPMODULEENTRY
+LPOVERLAPPED
+LPOVERLAPPED_COMPLETION_ROUTINE
+LPPROCESSENTRY
+LPPROCESS_HEAP_ENTRY *
+LPPROCESS_INFORMATION
+LPPROGRESS_ROUTINE
+LPSMALL_RECT
+LPSTARTUPINFOA
+LPSTARTUPINFOW
+LPSYSTEM_INFO
+LPSYSTEM_POWER_STATUS
+LPTHREAD_START_ROUTINE
+LPTHREADENTRY
+LPTIME_ZONE_INFORMATION
+LPTOP_LEVEL_EXCEPTION_FILTER
+NUMBERFMTA *
+NUMBERFMTW *
+OFSTRUCT *
+OSVERSIONINFOA *
+OSVERSIONINFOW *
+PAPCFUNC
+PEXCEPTION_POINTERS
+PLONG
+PULARGE_INTEGER
+SYSLEVEL *
+SYSLEVEL **
+SYSTEMTIME *
+TIMEFMT_ENUMPROCA
+TIMEFMT_ENUMPROCW
+WIN32_FIND_DATAA *
+WIN32_FIND_DATAW *
+struct ThunkDataCommon *
+
+%longlong
+
+LARGE_INTEGER
+
+%ptr # --forbidden
+
+FARPROC16
+HGLOBAL16
+HINSTANCE16
+SEGPTR
\ No newline at end of file
diff --git a/tools/winapi_check/win32/lz32.api b/tools/winapi_check/win32/lz32.api
new file mode 100644
index 0000000000000000000000000000000000000000..0b1051ba374e585ed41268f6a6d52564e1dc89d4
--- /dev/null
+++ b/tools/winapi_check/win32/lz32.api
@@ -0,0 +1,3 @@
+%ptr
+
+LPOFSTRUCT
\ No newline at end of file
diff --git a/tools/winapi_check/win32/mpr.api b/tools/winapi_check/win32/mpr.api
index c2835fac5197f4aaafed262e72ed9fa3b56d5416..2b9df12cc7d424ea2770dbc1295c8f9e0eb8de29 100644
--- a/tools/winapi_check/win32/mpr.api
+++ b/tools/winapi_check/win32/mpr.api
@@ -1,3 +1,21 @@
 %long
 
-HWND
\ No newline at end of file
+HPROVIDER
+HWND
+enum NOTIFYTYPE
+
+%ptr
+
+ENUMPASSWORDPROC
+LPAUTHDLGSTRUCTA
+LPCONNECTDLGSTRUCTA
+LPCONNECTDLGSTRUCTW
+LPDISCDLGSTRUCTA
+LPDISCDLGSTRUCTW
+LPHANDLE
+LPNETCONNECTINFOSTRUCT
+LPNETINFOSTRUCT
+LPNETRESOURCEA
+LPNETRESOURCEW
+NOTIFYCALLBACK
+PHPROVIDER
diff --git a/tools/winapi_check/win32/msacm32.api b/tools/winapi_check/win32/msacm32.api
index 98fe080c9d452f5da8e02c2aa6de96bc3391fd68..771ac6decd82375e93c600e5a52fbc77b4b8cacf 100644
--- a/tools/winapi_check/win32/msacm32.api
+++ b/tools/winapi_check/win32/msacm32.api
@@ -34,3 +34,5 @@ PACMSTREAMHEADER
 PHACMDRIVER
 PHACMDRIVERID
 PHACMSTREAM
+PWAVEFILTER
+PWAVEFORMATEX
diff --git a/tools/winapi_check/win32/msvfw32.api b/tools/winapi_check/win32/msvfw32.api
index 05c8b15d90034882fcb9a62e01c6ac52c6c329da..94f7a3f4b4be51006375d7f54f3ae72dd2ffff3e 100644
--- a/tools/winapi_check/win32/msvfw32.api
+++ b/tools/winapi_check/win32/msvfw32.api
@@ -5,3 +5,7 @@ HIC
 HPALETTE
 HWND
 
+%ptr
+
+FARPROC
+ICINFO *
diff --git a/tools/winapi_check/win32/ntdll.api b/tools/winapi_check/win32/ntdll.api
new file mode 100644
index 0000000000000000000000000000000000000000..508f644dee2a187c4382a8fd5ca1378c7a0cb4a9
--- /dev/null
+++ b/tools/winapi_check/win32/ntdll.api
@@ -0,0 +1,38 @@
+%long
+
+FILE_INFORMATION_CLASS
+FS_INFORMATION_CLASS
+KEY_INFORMATION_CLASS
+KEY_VALUE_INFORMATION_CLASS
+OBJECT_INFORMATION_CLASS
+PROCESSINFOCLASS
+SECTION_INHERIT
+SYSTEM_INFORMATION_CLASS
+THREADINFOCLASS
+TIMER_TYPE
+TOKEN_TYPE
+
+%longlong
+
+LARGE_INTEGER
+
+%ptr
+
+EXCEPTION_RECORD *
+LPRTL_RWLOCK
+PACE_HEADER
+PACE_HEADER *
+PANSI_STRING
+PBOOLEAN
+PIMAGE_NT_HEADERS
+PIO_APC_ROUTINE
+PIO_STATUS_BLOCK
+POBJDIR_INFORMATION
+POBJECT_ATTRIBUTES
+PRTL_HEAP_DEFINITION
+PSTRING
+PTIME_FIELDS
+PTOKEN_PRIVILEGES
+PUNICODE_STRING
+PWCHAR
+struct _TEB *
diff --git a/tools/winapi_check/win32/ole32.api b/tools/winapi_check/win32/ole32.api
index 41888d90dcb6a35d405d0b1bdc28eb3f1aaaaa32..2f3b2a261558ff223e1797b539a09dea72ccc8d0 100644
--- a/tools/winapi_check/win32/ole32.api
+++ b/tools/winapi_check/win32/ole32.api
@@ -3,8 +3,50 @@
 CLIPFORMAT
 HACCEL
 HMENU
+HOLEMENU
 HWND
 
 %ptr
+
 CLIPFORMAT *
+COSERVERINFO *
+GUID *
+HGLOBAL *
+IDataObject *
+IDataObject **
+IDropSource *
+IErrorInfo *
+ILockBytes *
+IMoniker *
+IMoniker **
+IPersistStream *
+IStorage *
+IStorage **
+LPBC *
+LPDATAADVISEHOLDER *
+LPDATAOBJECT
+LPDROPTARGET
+LPENUMFORMATETC *
+LPENUMOLEVERB *
+LPLOCKBYTES *
+LPMESSAGEFILTER
+LPMESSAGEFILTER *
+LPMONIKER
+LPMONIKER *
+LPOLEADVISEHOLDER *
+LPOLEINPLACEACTIVEOBJECT
+LPOLEINPLACEFRAME
+LPOLEINPLACEFRAMEINFO
+LPOLEMENUGROUPWIDTHS
+LPOLESTR
+LPOLESTR *
+LPPERSISTSTORAGE
+LPRUNNINGOBJECTTABLE *
+LPSTREAM *
+MULTI_QI *
+SNB
+STGMEDIUM *
+
+%ptr # --forbidden
 
+LPOLESTR16
\ No newline at end of file
diff --git a/tools/winapi_check/win32/oleaut32.api b/tools/winapi_check/win32/oleaut32.api
index 60895c755378686cfb683360987277b82eb92ceb..161806f60b86fbd40e5c9b60e0fff965c9031937 100644
--- a/tools/winapi_check/win32/oleaut32.api
+++ b/tools/winapi_check/win32/oleaut32.api
@@ -1,7 +1,44 @@
+%double
+
+CY
+double
+
+
 %long
 
+DATE
 HPALETTE
+REGKIND
+SYSKIND
+USHORT
+VARIANT_BOOL
+VARTYPE
+VOID **
 
 %ptr
 
+BSTR *
+CY *
 COLORREF *
+DATE *
+FLOAT *
+IErrorInfo *
+ITypeLib *
+ITypeLib **
+LPBSTR
+LPFONTDESC
+LPOLESTR
+SAFEARRAY *
+SAFEARRAY **
+SAFEARRAYBOUND *
+USHORT *
+VARIANT *
+VARIANTARG *
+VARIANT_BOOL *
+double *
+short *
+
+%wstr
+
+BSTR
+
diff --git a/tools/winapi_check/win32/olecli32.api b/tools/winapi_check/win32/olecli32.api
index 8c76d1c26300b83fb3296ef8e15d93e805ecd60c..b9b0f0f19178f652feca11e279328d1550c6f8da 100644
--- a/tools/winapi_check/win32/olecli32.api
+++ b/tools/winapi_check/win32/olecli32.api
@@ -1,3 +1,13 @@
 %long
 
-HDC
\ No newline at end of file
+HDC
+LHCLIENTDOC
+OLECLIPFORMAT
+OLEOPT_RENDER
+
+%ptr
+
+IPersistStream *
+LPOLECLIENT
+LHCLIENTDOC *
+LPOLEOBJECT *
diff --git a/tools/winapi_check/win32/oledlg.api b/tools/winapi_check/win32/oledlg.api
index 2a948b028982df30a6a29334db7b8e504558a656..54d441926e5ac20d652984283023a7c53645a14b 100644
--- a/tools/winapi_check/win32/oledlg.api
+++ b/tools/winapi_check/win32/oledlg.api
@@ -2,3 +2,24 @@
 
 HMENU
 HWND
+
+%ptr
+
+HMENU *
+LPOLEUIBUSYA
+LPOLEUIBUSYW
+LPOLEUICHANGEICONA
+LPOLEUICHANGEICONW
+LPOLEUICHANGESOURCEA
+LPOLEUICHANGESOURCEW
+LPOLEUICONVERTA
+LPOLEUICONVERTW
+LPOLEUIEDITLINKSA
+LPOLEUIEDITLINKSW
+LPOLEUIINSERTOBJECTA
+LPOLEUIINSERTOBJECTW
+LPOLEUILINKCONTAINERA
+LPOLEUIOBJECTPROPSA
+LPOLEUIOBJECTPROPSW
+LPOLEUIPASTESPECIALA
+LPOLEUIPASTESPECIALW
diff --git a/tools/winapi_check/win32/olesvr32.api b/tools/winapi_check/win32/olesvr32.api
new file mode 100644
index 0000000000000000000000000000000000000000..00469011a67cc2308d5da4d0a48b05c9e9a7cbbd
--- /dev/null
+++ b/tools/winapi_check/win32/olesvr32.api
@@ -0,0 +1,12 @@
+%long
+
+LHSERVER
+LHSERVERDOC
+OLE_SERVER_USE
+
+%ptr
+
+LHSERVER *
+LHSERVERDOC *
+LPOLESERVER
+LPOLESERVERDOC
diff --git a/tools/winapi_check/win32/psapi.api b/tools/winapi_check/win32/psapi.api
new file mode 100644
index 0000000000000000000000000000000000000000..0e47a859f4d5ee0555bef844b3f185810bf39db5
--- /dev/null
+++ b/tools/winapi_check/win32/psapi.api
@@ -0,0 +1,7 @@
+%ptr
+
+HMODULE *
+LPMODULEINFO
+PPROCESS_MEMORY_COUNTERS
+PPSAPI_WS_WATCH_INFORMATION
+
diff --git a/tools/winapi_check/win32/rasapi32.api b/tools/winapi_check/win32/rasapi32.api
new file mode 100644
index 0000000000000000000000000000000000000000..b1b6c6a4e0c78f6fa7e0080d8a9e59f10bc7d490
--- /dev/null
+++ b/tools/winapi_check/win32/rasapi32.api
@@ -0,0 +1,5 @@
+%ptr
+
+LPRASCONNA
+LPRASDIALPARAMS
+LPRASENTRYNAME
diff --git a/tools/winapi_check/win32/shell32.api b/tools/winapi_check/win32/shell32.api
index f072099f802559e4fa550ca027adc48f21f5cead..b6b42a3940d634710cd4d26a4b2d90473874ee0a 100644
--- a/tools/winapi_check/win32/shell32.api
+++ b/tools/winapi_check/win32/shell32.api
@@ -2,10 +2,34 @@
 
 COLORREF
 HBITMAP
+HDROP
 HMENU
 HICON
 HWND
 
 %ptr
 
+HIMAGELIST *
+IDSTRUCT *
+IDropTarget *
+IShellFolder **
+LPBROWSEINFOA
+LPCITEMIDLIST
+LPCITEMIDLIST *
+LPDRAWITEMSTRUCT
+LPFNCREATEINSTANCE
+LPFNFMCALLBACK
+LPITEMIDLIST *
+LPMEASUREITEMSTRUCT
+LPSHELLEXECUTEINFOA
+LPSHELLEXECUTEINFOW
+LPSHELLFLAGSTATE
+LPSHELLFOLDER
+LPSHELLVIEWDATA
+LPSHFILEOPSTRUCTA
+LPSHFILEOPSTRUCTW
+PAPPBARDATA
+PNOTIFYICONDATAA
 PNOTIFYICONDATAW
+SHFILEINFOA *
+SHFILEINFOW *
diff --git a/tools/winapi_check/win32/tapi32.api b/tools/winapi_check/win32/tapi32.api
index 41c08660c6d38251805a886443dc6558af8a5ae0..c1768e2b38826398ab27ac8b85882f90724798d8 100644
--- a/tools/winapi_check/win32/tapi32.api
+++ b/tools/winapi_check/win32/tapi32.api
@@ -1,3 +1,44 @@
 %long
 
+HCALL
+HLINE
+HLINEAPP
+HPHONE
+HPHONEAPP
 HWND
+
+%ptr
+
+LINECALLBACK
+LPHCALL
+LPHLINE
+LPHLINEAPP
+LPHPHONE
+LPHPHONEAPP
+LPLINEADDRESSCAPS
+LPLINEADDRESSSTATUS
+LPLINECALLINFO
+LPLINECALLLIST
+LPLINECALLPARAMS
+LPLINECALLSTATUS
+LPLINECOUNTRYLIST
+LPLINEDEVCAPS
+LPLINEDEVSTATUS
+LPLINEDIALPARAMS
+LPLINEEXTENSIONID
+LPLINEFORWARDLIST
+LPLINEGENERATETONE
+LPLINEMEDIACONTROLCALLSTATE
+LPLINEMEDIACONTROLDIGIT
+LPLINEMEDIACONTROLMEDIA
+LPLINEMEDIACONTROLTONE
+LPLINEMONITORTONE
+LPLINEPROVIDERLIST
+LPLINETRANSLATECAPS
+LPLINETRANSLATEOUTPUT
+LPPHONEBUTTONINFO
+LPPHONECAPS
+LPPHONEEXTENSIONID
+LPPHONESTATUS
+LPVARSTRING
+PHONECALLBACK
diff --git a/tools/winapi_check/win32/user32.api b/tools/winapi_check/win32/user32.api
index a392bb30e329dd6dec81e83958b264ff3bd41c50..1876f31815f6a4169361ed977b7223785872e1e1 100644
--- a/tools/winapi_check/win32/user32.api
+++ b/tools/winapi_check/win32/user32.api
@@ -4,16 +4,69 @@ COLORREF
 HACCEL
 HBITMAP
 HBRUSH
+HCONV
+HCONVLIST
 HCURSOR
 HDC
+HDDEDATA
 HDESK
+HDWP
 HFONT
+HHOOK
 HICON
 HMENU
 HMONITOR
 HRGN
+HSZ
+HWINSTA
 HWND
+SHORT
 
 %ptr
 
 COLORREF *
+DLGPROC
+DRAWSTATEPROC
+FARPROC
+GRAYSTRINGPROC
+HKL *
+HWND *
+HOOKPROC
+LPACCEL
+LPCHARSETINFO
+LPCMENUINFO
+LPCONVCONTEXT
+LPCONVINFO
+LPDISPLAY_DEVICEA
+LPDISPLAY_DEVICEW
+LPDRAWTEXTPARAMS
+LPICONINFO
+LPMENUINFO
+LPMENUITEMINFOA
+LPMENUITEMINFOW
+LPMONITORINFO
+LPMSGBOXPARAMSA
+LPMSGBOXPARAMSW
+MENUITEMINFOA *
+MENUITEMINFOW *
+MONITORENUMPROC
+MSG *
+PAINTSTRUCT *
+PBYTE
+PFNCALLBACK
+PROPENUMPROCA
+PROPENUMPROCEXA
+PROPENUMPROCEXW
+PROPENUMPROCW
+PSECURITY_QUALITY_OF_SERVICE
+SCROLLINFO *
+SECURITY_INFORMATION *
+SECURITY_QUALITY_OF_SERVICE *
+TIMERPROC
+WINDOWPLACEMENT *
+WNDCLASSA *
+WNDCLASSEXA *
+WNDCLASSEXW *
+WNDCLASSW *
+WNDENUMPROC
+WNDPROC
diff --git a/tools/winapi_check/win32/w32skrnl.api b/tools/winapi_check/win32/w32skrnl.api
new file mode 100644
index 0000000000000000000000000000000000000000..627d308fd3d35b1768057afc80aaec33fed29a04
--- /dev/null
+++ b/tools/winapi_check/win32/w32skrnl.api
@@ -0,0 +1,3 @@
+%long # --forbidden
+
+HTASK16
\ No newline at end of file
diff --git a/tools/winapi_check/win32/winmm.api b/tools/winapi_check/win32/winmm.api
index c2835fac5197f4aaafed262e72ed9fa3b56d5416..f3b0309e53b496ee9d8ebe19e6011878bc472440 100644
--- a/tools/winapi_check/win32/winmm.api
+++ b/tools/winapi_check/win32/winmm.api
@@ -1,3 +1,63 @@
 %long
 
-HWND
\ No newline at end of file
+FOURCC
+HDRVR
+HMIDIIN
+HMIDIOUT
+HMIDISTRM
+HMIXER
+HMIXEROBJ
+HMMIO
+HWAVEIN
+HWAVEOUT
+HWND
+
+%ptr
+
+HMIDIIN *
+HMIDIOUT *
+HMIDISTRM *
+HPCSTR
+HPSTR
+HWAVEIN *
+HWAVEOUT *
+LPAUXCAPSA
+LPAUXCAPSW
+LPHMIXER
+LPJOYCAPSA
+LPJOYCAPSW
+LPJOYINFO
+LPJOYINFOEX
+LPMIDIHDR
+LPMIDIINCAPSA
+LPMIDIINCAPSW
+LPMIDIOUTCAPSA
+LPMIDIOUTCAPSW
+LPMIXERCAPSA
+LPMIXERCAPSW
+LPMIXERCONTROLDETAILS
+LPMIXERLINEA
+LPMIXERLINECONTROLSA
+LPMIXERLINECONTROLSW
+LPMIXERLINEW
+LPMMCKINFO
+LPMMIOPROC
+LPMMTIME
+LPTIMECALLBACK
+LPTIMECAPS
+LPUINT
+LPWAVEFORMATEX
+LPWAVEHDR
+LPWAVEINCAPSA
+LPWAVEINCAPSW
+LPWAVEOUTCAPSA
+LPWAVEOUTCAPSW
+MIDIHDR *
+MMCKINFO *
+MMIOINFO *
+WAVEHDR *
+YIELDPROC
+
+%long # --forbidden
+
+HMMIO16
diff --git a/tools/winapi_check/win32/winspool.api b/tools/winapi_check/win32/winspool.api
index c2835fac5197f4aaafed262e72ed9fa3b56d5416..da5aae2350fa3845809506c0725b45fcc5cf01b4 100644
--- a/tools/winapi_check/win32/winspool.api
+++ b/tools/winapi_check/win32/winspool.api
@@ -1,3 +1,9 @@
 %long
 
-HWND
\ No newline at end of file
+HWND
+
+%ptr
+
+DEVMODEW *
+LPPRINTER_DEFAULTSA
+LPPRINTER_DEFAULTSW
diff --git a/tools/winapi_check/win32/wnaspi32.api b/tools/winapi_check/win32/wnaspi32.api
new file mode 100644
index 0000000000000000000000000000000000000000..723db003313ed0ddd13b1aee4e1fa932385500a2
--- /dev/null
+++ b/tools/winapi_check/win32/wnaspi32.api
@@ -0,0 +1,3 @@
+%ptr
+
+LPSRB
\ No newline at end of file
diff --git a/tools/winapi_check/win32/wow32.api b/tools/winapi_check/win32/wow32.api
new file mode 100644
index 0000000000000000000000000000000000000000..75c757459ea2ab2506ac6ce89c9f6e22904a2e33
--- /dev/null
+++ b/tools/winapi_check/win32/wow32.api
@@ -0,0 +1,3 @@
+%long
+
+WOW_HANDLE_TYPE
\ No newline at end of file
diff --git a/tools/winapi_check/win32/wsock32.api b/tools/winapi_check/win32/wsock32.api
index 41c08660c6d38251805a886443dc6558af8a5ae0..34232114d20aa9bac0b1431aca760143f48b7bc1 100644
--- a/tools/winapi_check/win32/wsock32.api
+++ b/tools/winapi_check/win32/wsock32.api
@@ -1,3 +1,26 @@
 %long
 
 HWND
+SOCKET
+u_long
+u_short
+
+%long # --forbidden
+
+SOCKET16
+
+%ptr
+
+FARPROC
+LPWSADATA
+struct WIN_hostent *
+struct WIN_protoent *
+struct WIN_servent *
+struct netent *
+struct sockaddr *
+struct timeval *
+ws_fd_set32 *
+
+%unknown
+
+struct in_addr
\ No newline at end of file
diff --git a/tools/winapi_check/win32api.dat b/tools/winapi_check/win32api.dat
index 5016f1a57a3a92d53b8198e1a0babeaa9a1de9b7..35ab1abd6640712880406f3714afd2a88a758f3e 100644
--- a/tools/winapi_check/win32api.dat
+++ b/tools/winapi_check/win32api.dat
@@ -1,8 +1,3 @@
-%double
-
-CY
-double
-
 %long
 
 ACCESS_MASK
@@ -10,694 +5,129 @@ ATOM
 BOOL
 BOOLEAN
 BYTE
-CALID
-CALTYPE
 CHAR
-COORD
-DATE
-DIGEST_HANDLE
-DPAENUMPROC
 DWORD
-FILE_INFORMATION_CLASS
 FLOAT
-FOURCC
-FS_INFORMATION_CLASS
-GET_FILEEX_INFO_LEVELS
 HANDLE
-HCALL
-HCONV
-HCONVLIST
-HCRYPTKEY
-HDDEDATA
-HDROP
-HDRVR
-HDSA
-HDWP
 HFILE
 HGLOBAL
-HHOOK
 HINSTANCE
 HKEY
 HKL
-HLINE
-HLINEAPP
-HLOCAL
-HMIDIIN
-HMIDIOUT
-HMIDISTRM
-HMIXER
-HMIXEROBJ
-HMMIO
 HMODULE
-HOLEMENU
-HPHONE
-HPHONEAPP
-HPROPSHEETPAGE
-HPROVIDER
 HRESULT
-HRSRC
-HSZ
 HTASK
-HWAVEIN
-HWAVEOUT
-HWINSTA
 INT
-IPAddr
-KEY_INFORMATION_CLASS
-KEY_VALUE_INFORMATION_CLASS
 LANGID
 LCID
-LCTYPE
-LHCLIENTDOC
-LHSERVER
-LHSERVERDOC
 LONG
 LPARAM
 LRESULT
 MMRESULT
 NTSTATUS
-OBJECT_INFORMATION_CLASS
-OLECLIPFORMAT
-OLEOPT_RENDER
 OLESTATUS
-OLE_SERVER_USE
 PHANDLE
-PHPROVIDER
-PIO_APC_ROUTINE
-PIP_OPTION_INFORMATION
-PLSA_HANDLE
-PLSA_OBJECT_ATTRIBUTES
-PLSA_UNICODE_STRING
-POBJDIR_INFORMATION
-PROCESSINFOCLASS
-PTIME_FIELDS
-PTOKEN_PRIVILEGES
-REGKIND
-REGSAM
-SC_HANDLE
-SECTION_INHERIT
 SECURITY_IMPERSONATION_LEVEL
 SECURITY_INFORMATION
-SEGPTR
-SERVICE_STATUS_HANDLE
-SHORT
-SOCKET
-SYSKIND
-SYSTEM_INFORMATION_CLASS
-THREADINFOCLASS
-TIMER_TYPE
-TOKEN_INFORMATION_CLASS
-TOKEN_TYPE
 UINT
 ULONG
-ULONG_PTR
-USHORT
-VARIANT_BOOL
-VARTYPE
 WCHAR
 WORD
-WOW_HANDLE_TYPE
 WPARAM
-clock_t
-enum NOTIFYTYPE
-time_t
 
 %longlong
 
-LARGE_INTEGER
 POINT
 ULARGE_INTEGER
 
 %ptr
 
-ABORTPROC
 BOOL *
-BSTR *
 BYTE *
-BY_HANDLE_FILE_INFORMATION *
-CALINFO_ENUMPROCA
 CHAR *
 CLSID *
-CODEPAGE_ENUMPROCA
-CODEPAGE_ENUMPROCW
-COLORADJUSTMENT *
 CONTEXT *
 CONTEXT86 *
-COSERVERINFO *
 CRITICAL_SECTION *
-CRTDLL_FILE *
-CY *
-DATE *
-DATEFMT_ENUMPROCA
-DATEFMT_ENUMPROCW
-DEVMODEA *
-DEVMODEW *
-DIGEST_FUNCTION
-DLGPROC
 DLLVERSIONINFO *
-DOCINFOA *
-DOCINFOW *
-DPALOADPROC
-DRAWSTATEPROC
-DSAENUMPROC
 DWORD *
-ENHMETARECORD *
-ENHMFENUMPROC
-ENUMRESLANGPROCA
-ENUMRESLANGPROCW
-ENUMRESNAMEPROCA
-ENUMRESNAMEPROCW
-ENUMRESTYPEPROCA
-ENUMRESTYPEPROCW
-ENUMPASSWORDPROC
-EXCEPTION_RECORD *
-FARPROC
-FARPROC *
 FILETIME *
-FLOAT *
-FONTENUMPROCA
-FONTENUMPROCEXA
-FONTENUMPROCEXW
-FONTENUMPROCW
-GCP_RESULTSA *
-GCP_RESULTSW *
-GOBJENUMPROC
-GRAYSTRINGPROC
-GUID *
 HANDLE *
-HANDLER_ROUTINE *
-HANDLETABLE *
-HCRYPTPROV *
-HDPA
-HDPA *
-HGLOBAL *
 HICON *
-HIMAGELIST
-HIMAGELIST *
-HKL *
-HMENU *
-HMIDIIN *
-HMIDIOUT *
-HMIDISTRM *
-HMODULE *
-HOOKPROC
-HPCSTR
-HPSTR
-HWAVEIN *
-HWAVEOUT *
-HWND *
-ICINFO *
-IDSTRUCT *
-IDataObject *
-IDataObject **
-IDropSource *
-IDropTarget *
-IErrorInfo *
-ILockBytes *
-IMAGEINFO *
-IMAGELISTDRAWPARAMS *
-IMoniker *
-IMoniker **
-INPUT_RECORD *
 INT *
-IPersistStream *
-IShellFolder **
-IStorage *
-IStorage **
 IStream *
-ITypeLib *
-ITypeLib **
 IUnknown *
-LARGE_INTEGER *
-LHCLIENTDOC *
-LHSERVER *
-LHSERVERDOC *
-LINECALLBACK
-LINEDDAPROC
-LOCALE_ENUMPROCA
-LOCALE_ENUMPROCW
-LOGBRUSH *
-LOGFONTA *
-LOGFONTW *
-LOGPALETTE *
-LOGPEN *
 LONG *
-LPABC
-LPABCFLOAT
-LPACCEL
-LPAUTHDLGSTRUCTA
-LPAUXCAPSA
-LPAUXCAPSW
-LPBC *
 LPBITMAPINFOHEADER
 LPBOOL
-LPBROWSEINFOA
-LPBSTR
 LPBYTE
-LPCANDIDATEFORM
-LPCANDIDATELIST
-LPCHARSETINFO
-LPCHAR_INFO
-LPCHOOSECOLORA
-LPCHOOSECOLORW
-LPCHOOSEFONTA
-LPCHOOSEFONTW
-LPCITEMIDLIST
-LPCITEMIDLIST *
 LPCLSID
-LPCMENUINFO
-LPCOLDTBBUTTON
-LPCOLORADJUSTMENT
-LPCOLORMAP
-LPCOMMTIMEOUTS
-LPCOMPOSITIONFORM
-LPCOMSTAT
-LPCONNECTDLGSTRUCTA
-LPCONNECTDLGSTRUCTW
-LPCONSOLE_CURSOR_INFO
-LPCONSOLE_SCREEN_BUFFER_INFO
-LPCONVCONTEXT
-LPCONVINFO
-LPCPINFO
-LPCPROPSHEETHEADERA
-LPCPROPSHEETHEADERW
-LPCPROPSHEETPAGEA
-LPCPROPSHEETPAGEW
-LPCREATEMRULIST
 LPCSTR *
-LPCTBBUTTON
 LPCVOID
-LPCWSTR *
-LPDATAADVISEHOLDER *
-LPDATAOBJECT
-LPDCB
-LPDCB *
-LPDDENUMCALLBACKA
-LPDDENUMCALLBACKEXA
-LPDDENUMCALLBACKEXW
-LPDDENUMCALLBACKW
-LPDEBUG_EVENT
 LPDEVMODEA
 LPDEVMODEW
-LPDIRECTDRAW *
-LPDIRECTDRAWCLIPPER *
-LPDIRECTPLAYLOBBY *
-LPDIRECTPLAYLOBBYA *
-LPDIRECTSOUND *
-LPDISCDLGSTRUCTA
-LPDISCDLGSTRUCTW
-LPDISPLAY_DEVICEA
-LPDISPLAY_DEVICEW
-LPDPENUMDPCALLBACKA
-LPDPENUMDPCALLBACKW
-LPDRAWITEMSTRUCT
-LPDRAWTEXTPARAMS
-LPDROPTARGET
-LPDSENUMCALLBACKA
 LPDWORD
-LPDWORD *
-LPENHMETAHEADER
-LPENUMFORMATETC *
-LPENUMOLEVERB *
-LPENUM_SERVICE_STATUSA
 LPFILETIME
-LPFINDREPLACEA
-LPFINDREPLACEW
-LPFNCREATEINSTANCE
-LPFNFMCALLBACK
-LPFONTDESC
-LPFONTSIGNATURE
 LPFORMATETC
-LPGLYPHMETRICS
 LPGUID
-LPHANDLE
-LPHANDLER_FUNCTION
-LPHANDLETABLE
-LPHCALL
 LPHKEY
-LPHLINE
-LPHLINEAPP
-LPHMIXER
-LPHPHONE
-LPHPHONEAPP
-LPICONINFO
-LPINITCOMMONCONTROLSEX
-LPINPUT_RECORD
 LPINT
-LPITEMIDLIST *
 LPITEMIDLIST
-LPJOYCAPSA
-LPJOYCAPSW
-LPJOYINFO
-LPJOYINFOEX
-LPKERNINGPAIR
-LPLDT_ENTRY
-LPLINEADDRESSCAPS
-LPLINEADDRESSSTATUS
-LPLINECALLINFO
-LPLINECALLLIST
-LPLINECALLPARAMS
-LPLINECALLSTATUS
-LPLINECOUNTRYLIST
-LPLINEDEVCAPS
-LPLINEDEVSTATUS
-LPLINEDIALPARAMS
-LPLINEEXTENSIONID
-LPLINEFORWARDLIST
-LPLINEGENERATETONE
-LPLINEMEDIACONTROLCALLSTATE
-LPLINEMEDIACONTROLDIGIT
-LPLINEMEDIACONTROLMEDIA
-LPLINEMEDIACONTROLTONE
-LPLINEMONITORTONE
-LPLINEPROVIDERLIST
-LPLINETRANSLATECAPS
-LPLINETRANSLATEOUTPUT
-LPLOCKBYTES *
 LPLOGFONTA
 LPLOGFONTW
 LPLONG
 LPMALLOC *
-LPMEASUREITEMSTRUCT
-LPMEMORYSTATUS
-LPMEMORY_BASIC_INFORMATION
-LPMENUINFO
-LPMENUITEMINFOA
-LPMENUITEMINFOW
-LPMESSAGEFILTER
-LPMESSAGEFILTER *
-LPMIDIHDR
-LPMIDIINCAPSA
-LPMIDIINCAPSW
-LPMIDIOUTCAPSA
-LPMIDIOUTCAPSW
-LPMIXERCAPSA
-LPMIXERCAPSW
-LPMIXERCONTROLDETAILS
-LPMIXERLINEA
-LPMIXERLINECONTROLSA
-LPMIXERLINECONTROLSW
-LPMIXERLINEW
-LPMMCKINFO
-LPMMIOPROC
-LPMMIOPROC16
-LPMMTIME
-LPMODULEENTRY
-LPMODULEINFO
-LPMONIKER
-LPMONIKER *
-LPMONITORINFO
 LPMSG
-LPMSGBOXPARAMSA
-LPMSGBOXPARAMSW
-LPNETCONNECTINFOSTRUCT
-LPNETINFOSTRUCT
-LPNETRESOURCEA
-LPNETRESOURCEW
-LPNMHDR
-LPOFSTRUCT
-LPOLEADVISEHOLDER *
-LPOLECLIENT
 LPOLECLIENTSITE
-LPOLEINPLACEACTIVEOBJECT
-LPOLEINPLACEFRAME
-LPOLEINPLACEFRAMEINFO
-LPOLEMENUGROUPWIDTHS
 LPOLEOBJECT
-LPOLEOBJECT *
-LPOLESERVER
-LPOLESERVERDOC
-LPOLESTR
-LPOLESTR *
-LPOLEUIBUSYA
-LPOLEUIBUSYW
-LPOLEUICHANGEICONA
-LPOLEUICHANGEICONW
-LPOLEUICHANGESOURCEA
-LPOLEUICHANGESOURCEW
-LPOLEUICONVERTA
-LPOLEUICONVERTW
-LPOLEUIEDITLINKSA
-LPOLEUIEDITLINKSW
-LPOLEUIINSERTOBJECTA
-LPOLEUIINSERTOBJECTW
-LPOLEUILINKCONTAINERA
-LPOLEUIOBJECTPROPSA
-LPOLEUIOBJECTPROPSW
-LPOLEUIPASTESPECIALA
-LPOLEUIPASTESPECIALW
-LPOPENFILENAMEA
-LPOPENFILENAMEW
-LPOUTLINETEXTMETRICA
-LPOUTLINETEXTMETRICW
-LPOVERLAPPED
-LPOVERLAPPED_COMPLETION_ROUTINE
-LPPAGESETUPDLGA
-LPPALETTEENTRY
-LPPERSISTSTORAGE
-LPPHONEBUTTONINFO
-LPPHONECAPS
-LPPHONEEXTENSIONID
-LPPHONESTATUS
-LPPIXELFORMATDESCRIPTOR
 LPPOINT
-LPPRINTDLGA
-LPPRINTDLGW
-LPPRINTER_DEFAULTSA
-LPPRINTER_DEFAULTSW
-LPPROCESSENTRY
-LPPROCESS_HEAP_ENTRY *
-LPPROCESS_INFORMATION
-LPPROGRESS_ROUTINE
-LPRASCONNA
-LPRASDIALPARAMS
-LPRASENTRYNAME
-LPRASTERIZER_STATUS
 LPRECT
-LPRGNDATA
-LPRTL_RWLOCK
-LPRUNNINGOBJECTTABLE *
 LPSCROLLINFO
 LPSECURITY_ATTRIBUTES
-LPSERVICE_STATUS
-LPSERVICE_TABLE_ENTRYA
-LPSERVICE_TABLE_ENTRYW
-LPSHELLEXECUTEINFOA
-LPSHELLEXECUTEINFOW
-LPSHELLFLAGSTATE
-LPSHELLFOLDER
-LPSHELLVIEWDATA
-LPSHFILEOPSTRUCTA
-LPSHFILEOPSTRUCTW
-LPSIZE
-LPSMALL_RECT
-LPSRB
-LPSTARTUPINFOA
-LPSTARTUPINFOW
 LPSTORAGE
 LPSTR *
-LPSTR **
-LPSTREAM
-LPSTREAM *
 LPSTRRET
-LPSTYLEBUFA
-LPSTYLEBUFW
 LPSYSTEMTIME
-LPSYSTEM_INFO
-LPSYSTEM_POWER_STATUS
-LPTHREAD_START_ROUTINE
-LPTHREADENTRY
-LPTIMECALLBACK
-LPTIMECAPS
-LPTIME_ZONE_INFORMATION
-LPTOP_LEVEL_EXCEPTION_FILTER
 LPTPMPARAMS
-LPUINT
 LPUNKNOWN
 LPUNKNOWN *
-LPVARSTRING
 LPVOID
 LPVOID *
-LPWAVEFORMATEX
-LPWAVEHDR
-LPWAVEINCAPSA
-LPWAVEINCAPSW
-LPWAVEOUTCAPSA
-LPWAVEOUTCAPSW
 LPWORD
-LPWSADATA
 LPWSTR *
-LPXFORM
-MAT2 *
-MENUITEMINFOA *
-MENUITEMINFOW *
-METAFILEPICT *
-METARECORD *
-MFENUMPROC
-MIDIHDR *
-MMCKINFO *
-MMIOINFO *
-MONITORENUMPROC
-MSG *
-MULTI_QI *
-NOTIFYCALLBACK
-NUMBERFMTA *
-NUMBERFMTW *
-OFSTRUCT *
-OSVERSIONINFOA *
-OSVERSIONINFOW *
-PACE_HEADER
-PACE_HEADER *
 PACL
 PACL *
-PAINTSTRUCT *
-PALETTEENTRY *
-PANSI_STRING
-PAPCFUNC
-PAPI_VERSION
-PAPPBARDATA
-PBOOLEAN
-PBYTE
 PCHAR
-PCHAR *
-PCONTEXT
 PDWORD
-PENUMLOADED_MODULES_CALLBACK
 PEXCEPTION_FRAME
-PEXCEPTION_FRAME *
-PEXCEPTION_POINTERS
 PEXCEPTION_RECORD
-PFLOAT
-PFNCALLBACK
-PFNDPACOMPARE
-PFNDPAMERGE
-PFUNCTION_TABLE_ACCESS_ROUTINE
 PGENERIC_MAPPING
-PGETFRAME
-PGET_MODULE_BASE_ROUTINE
-PHONECALLBACK
-PIMAGEHLP_MODULE
-PIMAGEHLP_STATUS_ROUTINE
-PIMAGEHLP_SYMBOL
-PIMAGE_DEBUG_INFORMATION
-PIMAGE_LOAD_CONFIG_DIRECTORY
-PIMAGE_NT_HEADERS
-PIMAGE_SECTION_HEADER
-PIMAGE_SECTION_HEADER *
-PIO_STATUS_BLOCK
-PIXELFORMATDESCRIPTOR *
 PLARGE_INTEGER
-PLOADED_IMAGE
-PLONG
 PLUID
-PNOTIFYICONDATAA
-POBJECT_ATTRIBUTES
 POINT *
-PPOLYTEXTA
-PPOLYTEXTW
-PPSAPI_WS_WATCH_INFORMATION
 PPRIVILEGE_SET
-PPROCESS_MEMORY_COUNTERS
-PREAD_PROCESS_MEMORY_ROUTINE
-PRTL_HEAP_DEFINITION
-PROPENUMPROCA
-PROPENUMPROCEXA
-PROPENUMPROCEXW
-PROPENUMPROCW
 PSECURITY_DESCRIPTOR
 PSECURITY_DESCRIPTOR_CONTROL
-PSECURITY_QUALITY_OF_SERVICE
 PSID
 PSID *
 PSID_IDENTIFIER_AUTHORITY
-PSID_NAME_USE
-PSTACKFRAME
-PSTRING
-PSYMBOL_REGISTERED_CALLBACK
-PSYM_ENUMMODULES_CALLBACK
-PSYM_ENUMSYMBOLS_CALLBACK
 PTIMERAPCROUTINE
-PTRANSLATE_ADDRESS_ROUTINE
-PUCHAR
-PULARGE_INTEGER
 PULONG
-PUNICODE_STRING
 PVOID
 PVOID *
-PWAVEFILTER
-PWAVEFORMATEX
-PWIN_CERTIFICATE
 RECT *
 REFCLSID
 REFGUID
 REFIID
-REGISTERWORDENUMPROCA
-REGISTERWORDENUMPROCW
-RGBQUAD *
-RGNDATA *
-SAFEARRAY *
-SAFEARRAY **
-SAFEARRAYBOUND *
-SCROLLINFO *
 SECURITY_ATTRIBUTES *
-SECURITY_DESCRIPTOR *
-SECURITY_INFORMATION *
-SECURITY_QUALITY_OF_SERVICE *
-SHFILEINFOA *
-SHFILEINFOW *
-SNB
-STGMEDIUM *
-SYSLEVEL *
-SYSLEVEL **
-SYSTEMTIME *
-TEXTMETRICA *
-TEXTMETRICW *
-TIMEFMT_ENUMPROCA
-TIMEFMT_ENUMPROCW
-TIMERPROC
 UINT *
 ULONG *
-USHORT *
-VARIANT *
-VARIANTARG *
-VARIANT_BOOL *
-VOID *
-VOID **
-WAVEHDR *
 WCHAR *
-WIN32_FIND_DATAA *
-WIN32_FIND_DATAW *
-WINDOWPLACEMENT *
-WNDCLASSA *
-WNDCLASSEXA *
-WNDCLASSEXW *
-WNDCLASSW *
-WNDENUMPROC
-WNDPROC
 WORD *
-XFORM *
-YIELDPROC
-_INITTERMFUN *
 char *
-double *
-jmp_buf
-short *
-struct _TEB *
-struct ThunkDataCommon *
-struct find_t *
-struct netent *
-struct sockaddr *
-struct stat *
-struct timeval *
-struct win_stat *
-struct WIN_hostent *
-struct WIN_protoent *
-struct WIN_servent *
-time_t *
 va_list
 void *
 void **
-ws_fd_set32 *
 
 %str
 
@@ -705,12 +135,6 @@ LPCSTR
 LPSTR
 OLECHAR *
 
-%unknown
-
-new_handler_type
-sig_handler_type
-struct in_addr
-
 %void
 
 void
@@ -718,26 +142,15 @@ VOID
 
 %wstr
 
-BSTR
 LPCOLESTR
 LPCWSTR
 LPWSTR
 
 %long # --forbidden
 
-BOOL16
-FARPROC16
-HTASK16
-HGLOBAL16
-HINSTANCE16
-HMMIO16
 HMODULE16
-LPOLESTR16
 UINT16
-SOCKET16
 int
 long
 short
-u_long
-u_short
 unsigned
diff --git a/tools/winapi_check/winapi.pm b/tools/winapi_check/winapi.pm
index f7a6a88f76574e266efe8355f146011511073fd7..9bcae115a5465ef11672fe8295730e3965f11b4f 100644
--- a/tools/winapi_check/winapi.pm
+++ b/tools/winapi_check/winapi.pm
@@ -271,9 +271,15 @@ sub allowed_type_in_module {
     my $allowed_modules_limited = \%{$self->{ALLOWED_MODULES_LIMITED}};
 
     my $type = shift;
-    my $module = shift;
+    my @modules = split(/ \& /, shift);
+
+    if(!$$allowed_modules_limited{$type}) { return 1; }
 
-    return !$$allowed_modules_limited{$type} || $$allowed_modules{$type}{$module};
+    foreach my $module (@modules) {
+	if($$allowed_modules{$type}{$module}) { return 1; }
+    }
+
+    return 0;
 }
 
 sub type_used_in_module {
@@ -281,10 +287,12 @@ sub type_used_in_module {
     my $used_modules = \%{$self->{USED_MODULES}};
 
     my $type = shift;
-    my $module = shift;
+    my @modules = split(/ \& /, shift);
+
+    foreach my $module (@modules) {
+	$$used_modules{$type}{$module} = 1;
+    }
 
-    $$used_modules{$type}{$module} = 1;
-    
     return ();
 }
 
@@ -304,6 +312,31 @@ sub types_not_used {
     return $not_used;
 }
 
+sub types_unlimited_used_in_modules {
+    my $self = shift;
+
+    my $output = \${$self->{OUTPUT}};
+    my $used_modules = \%{$self->{USED_MODULES}};
+    my $allowed_modules = \%{$self->{ALLOWED_MODULES}};
+    my $allowed_modules_unlimited = \%{$self->{ALLOWED_MODULES_UNLIMITED}};
+
+    my $used_types;
+    foreach my $type (sort(keys(%$allowed_modules_unlimited))) {
+	my $count = 0;
+	my @modules = ();
+	foreach my $module (sort(keys(%{$$used_modules{$type}}))) {
+	    $count++;
+	    push @modules, $module;
+	}
+        if($count <= 1) {
+	    foreach my $module (@modules) {
+	      $$used_types{$type}{$module} = 1;
+	    }
+	}
+    }
+    return $used_types;
+}
+
 sub translate_argument {
     my $self = shift;
     my $translate_argument = \%{$self->{TRANSLATE_ARGUMENT}};
diff --git a/tools/winapi_check/winapi_check b/tools/winapi_check/winapi_check
index 171d1de0bf5c6a2a6dce7553c4d31fdd8f1d1873..ed223456480103eb84d1f8c323ad66d6167fa74b 100755
--- a/tools/winapi_check/winapi_check
+++ b/tools/winapi_check/winapi_check
@@ -275,7 +275,7 @@ foreach my $file ($options->files) {
 	   if(!$nativeapi->is_conditional($_)) {
 	       if(/^HAVE_/ && !/^HAVE_(IPX|MESAGL|BUGGY_MESAGL|WINE_CONSTRUCTOR)$/)
 	       {
-		   $output->write("$file: $_ is not a declared as a conditional\n");
+		   $output->write("$file: $_ is not declared as a conditional\n");
 	       }
 	   } else {
 	       $conditional++;
diff --git a/tools/winapi_check/winapi_global.pm b/tools/winapi_check/winapi_global.pm
index 685c43b5b8033775fd6d0d22cc3bf567a202d97a..b13807a167f971d160fd2ea05729fb6e9de2205b 100644
--- a/tools/winapi_check/winapi_global.pm
+++ b/tools/winapi_check/winapi_global.pm
@@ -34,9 +34,21 @@ sub check {
 
 	foreach my $module (sort(keys(%$not_used))) {
 	    foreach my $type (sort(keys(%{$$not_used{$module}}))) {
-		$output->write("*.c: $module: type $type not used\n");
+		$output->write("*.c: $module: type ($type) not used\n");
 	    }
-	}	
+	}
+
+	my $types_used = $winapi->types_unlimited_used_in_modules;
+
+	foreach my $type (sort(keys(%$types_used))) {
+	    $output->write("*.c: type ($type) only used in module[s] (");
+	    my $count = 0;
+	    foreach my $module (sort(keys(%{$$types_used{$type}}))) {
+		if($count++) { $output->write(", "); }
+		$output->write("$module");
+	    }
+	    $output->write(")\n");
+	}
     }
 }