API file update.

diff --git a/tools/winapi/win32.api b/tools/winapi/win32.api
index 655f9a9..027c0f9 100644
--- a/tools/winapi/win32.api
+++ b/tools/winapi/win32.api
@@ -284,6 +284,8 @@
 %long
 
 int
+size_t
+unsigned int
 
 %ptr
 
@@ -1187,6 +1189,8 @@
 
 %ptr
 
+EXCEPTION_FRAME *
+EXCEPTION_FRAME **
 MSVCRT_EXCEPTION_FRAME *
 MSVCRT_FILE *
 MSVCRT_compar_fn_t
@@ -1220,11 +1224,10 @@
 char *
 char **
 char ***
+cxx_exception_type *
 exception *
 int *
 struct MSVCRT_tm *
-struct __EXCEPTION_FRAME *
-struct __EXCEPTION_FRAME **
 struct _diskfree_t *
 struct _finddata_t *
 struct _stat *
@@ -1429,6 +1432,7 @@
 struct _TEB *
 union cptable *
 void *
+wine_signal_handler
 
 %ptr --extension
 
@@ -1541,6 +1545,7 @@
 LPGUID
 LPLOCKBYTES *
 LPMALLOC *
+LPMALLOCSPY
 LPMARSHAL *
 LPMESSAGEFILTER
 LPMESSAGEFILTER *
@@ -2220,7 +2225,6 @@
 LPBROWSEINFOW
 LPBYTE
 LPCITEMIDLIST
-LPCLSID
 LPCSHLWAPI_CLIST
 LPCSTR *
 LPCVOID
@@ -2233,17 +2237,17 @@
 LPOPENFILENAMEW
 LPPAGESETUPDLGW
 LPPRINTDLGW
+LPSECURITY_ATTRIBUTES
 LPSHELLEXECUTEINFOW
 LPSHFILEOPSTRUCTW
 LPSHLWAPI_CLIST
 LPSHLWAPI_CLIST *
 LPSTRRET
-LPUNKNOWN *
+LPTHREAD_START_ROUTINE
 LPVOID
 LPVOID *
 LPWORD
 LPWSTR *
-PACL
 PHUSKEY
 PLONG
 PSECURITY_DESCRIPTOR
@@ -2253,6 +2257,7 @@
 SHFILEINFOW *
 UINT *
 ULARGE_INTEGER *
+VOID *
 WNDCLASSA *
 unsigned char *
 va_list
@@ -2671,6 +2676,16 @@
 UINT
 WORD
 
+%%wineaudioio.drv
+
+%long
+
+DWORD
+HDRVR
+LONG
+UINT
+WORD
+
 %%winedos.dll
 
 %long
@@ -2703,6 +2718,16 @@
 LRESULT
 UINT
 
+%%winenas.drv
+
+%long
+
+DWORD
+HDRVR
+LONG
+WORD
+UINT
+
 %%wineoss.drv
 
 %long
@@ -2777,6 +2802,7 @@
 HANDLE
 HINTERNET
 HRESULT
+HWND
 INTERNET_PORT
 
 %ptr
diff --git a/tools/winapi/winapi.pm b/tools/winapi/winapi.pm
index 20c7347..77731ea 100644
--- a/tools/winapi/winapi.pm
+++ b/tools/winapi/winapi.pm
@@ -250,7 +250,7 @@
 	my $ordinal;
 	if(/^(\d+|@)\s+
 	   (pascal|pascal16|stdcall|cdecl|varargs)\s+
-	   ((?:(?:-noimport|-norelay|-i386|-ret64|-register|-interrupt)\s+)*)(\S+)\s*\(\s*(.*?)\s*\)\s*(\S+)$/x)
+	   ((?:(?:-noimport|-noname|-norelay|-i386|-ret64|-register|-interrupt)\s+)*)(\S+)\s*\(\s*(.*?)\s*\)\s*(\S+)$/x)
 	{
 	    my $calling_convention = $2;
 	    my $flags = $3;
@@ -262,6 +262,10 @@
 
 	    $flags =~ s/\s+/ /g;
 
+	    if($flags =~ /-noname/) {
+		# $external_name = "@";
+	    }
+
 	    if($flags =~ /(?:-register|-interrupt)/) {
 		if($arguments) { $arguments .= " "; }
 		$arguments .= "ptr";
@@ -338,11 +342,18 @@
 		    }
 		}
 	    }
-	} elsif(/^(\d+|@)\s+stub(?:\s+(?:-noimport|-norelay|-i386|-ret64))?\s+(\S+)$/) {
-	    my $external_name = $2;
-
+	} elsif(/^(\d+|@)\s+stub(?:\s+(-noimport|-noname|-norelay|-i386|-ret64))?\s+(\S+)$/) {
 	    $ordinal = $1;
 
+	    my $flags = $2;
+	    my $external_name = $3;
+
+	    $flags = "" if !defined($flags);
+
+	    if($flags =~ /-noname/) {
+		# $external_name = "@";
+	    }
+
 	    my $internal_name = $external_name;
 
             if ($external_name ne "@") {