- Slightly better handling of external/internal names.
- Minor bug fixes.
- Minor API files update.

diff --git a/tools/winapi_check/winapi.pm b/tools/winapi_check/winapi.pm
index 7dd7cfc..c7302e9 100644
--- a/tools/winapi_check/winapi.pm
+++ b/tools/winapi_check/winapi.pm
@@ -228,14 +228,18 @@
 
     my $options = \${$self->{OPTIONS}};
     my $output = \${$self->{OUTPUT}};
-    my $function_arguments = \%{$self->{FUNCTION_ARGUMENTS}};
-    my $function_ordinal = \%{$self->{FUNCTION_ORDINAL}};
-    my $function_calling_convention = \%{$self->{FUNCTION_CALLING_CONVENTION}};
+    my $function_internal_arguments = \%{$self->{FUNCTION_INTERNAL_ARGUMENTS}};
+    my $function_external_arguments = \%{$self->{FUNCTION_EXTERNAL_ARGUMENTS}};
+    my $function_internal_ordinal = \%{$self->{FUNCTION_INTERNAL_ORDINAL}};
+    my $function_external_ordinal = \%{$self->{FUNCTION_EXTERNAL_ORDINAL}};
+    my $function_internal_calling_convention = \%{$self->{FUNCTION_INTERNAL_CALLING_CONVENTION}};
+    my $function_external_calling_convention = \%{$self->{FUNCTION_EXTERNAL_CALLING_CONVENTION}};
     my $function_internal_name = \%{$self->{FUNCTION_INTERNAL_NAME}};
     my $function_external_name = \%{$self->{FUNCTION_EXTERNAL_NAME}};
     my $function_stub = \%{$self->{FUNCTION_STUB}};
     my $function_forward = \%{$self->{FUNCTION_FORWARD}};
-    my $function_module = \%{$self->{FUNCTION_MODULE}};
+    my $function_internal_module = \%{$self->{FUNCTION_INTERNAL_MODULE}};
+    my $function_external_module = \%{$self->{FUNCTION_EXTERNAL_MODULE}};
     my $modules = \%{$self->{MODULES}};
     my $module_files = \%{$self->{MODULE_FILES}};
 
@@ -283,18 +287,29 @@
 	    # FIXME: Internal name existing more than once not handled properly
 	    $$function_internal_name{$external_name} = $internal_name;
 	    $$function_external_name{$internal_name} = $external_name;
-	    $$function_arguments{$internal_name} = $arguments;
-	    $$function_ordinal{$internal_name} = $ordinal;
-	    $$function_calling_convention{$internal_name} = $calling_convention;
-	    if(!$$function_module{$internal_name}) {
-		$$function_module{$internal_name} = "$module";
-	    } elsif($$function_module{$internal_name} !~ /$module/) {
+	    $$function_internal_arguments{$internal_name} = $arguments;
+	    $$function_external_arguments{$external_name} = $arguments;
+	    $$function_internal_ordinal{$internal_name} = $ordinal;
+	    $$function_external_ordinal{$external_name} = $ordinal;
+	    $$function_internal_calling_convention{$internal_name} = $calling_convention;
+	    $$function_external_calling_convention{$external_name} = $calling_convention;
+	    if(!$$function_internal_module{$internal_name}) {
+		$$function_internal_module{$internal_name} = "$module";
+	    } elsif($$function_internal_module{$internal_name} !~ /$module/) {
 		if(0) {
 		    $$output->write("$file: $external_name: the internal function ($internal_name) " . 
-				    "already belongs to a module ($$function_module{$internal_name})\n");
+				    "already belongs to a module ($$function_internal_module{$internal_name})\n");
 		}
-		$$function_module{$internal_name} .= " & $module";
-
+		$$function_internal_module{$internal_name} .= " & $module";
+	    }
+	    if(!$$function_external_module{$external_name}) {
+		$$function_external_module{$external_name} = "$module";
+	    } elsif($$function_external_module{$external_name} !~ /$module/) {
+		if(0) {
+		    $$output->write("$file: $internal_name: the external function ($external_name) " . 
+				    "already belongs to a module ($$function_external_module{$external_name})\n");
+		}
+		$$function_external_module{$external_name} .= " & $module";
 	    }
 
 	    if(0 && $$options->spec_mismatch) {
@@ -346,10 +361,17 @@
 
 	    # FIXME: Internal name existing more than once not handled properly
 	    $$function_stub{$internal_name} = 1;
-	    if(!$$function_module{$internal_name}) {
-		$$function_module{$internal_name} = "$module";
-	    } elsif($$function_module{$internal_name} !~ /$module/) {
-		$$function_module{$internal_name} .= " & $module";
+	    $$function_internal_ordinal{$internal_name} = $ordinal;
+	    $$function_external_ordinal{$external_name} = $ordinal;
+	    if(!$$function_internal_module{$internal_name}) {
+		$$function_internal_module{$internal_name} = "$module";
+	    } elsif($$function_internal_module{$internal_name} !~ /$module/) {
+		$$function_internal_module{$internal_name} .= " & $module";
+	    }
+	    if(!$$function_external_module{$external_name}) {
+		$$function_external_module{$external_name} = "$module";
+	    } elsif($$function_external_module{$external_name} !~ /$module/) {
+		$$function_external_module{$external_name} .= " & $module";
 	    }
 	} elsif(/^(\d+|@)\s+forward(?:\s+(?:-noimport|-norelay|-i386|-ret64))?\s+(\S+)\s+(\S+)\.(\S+)$/) {
 	    $ordinal = $1;
@@ -381,11 +403,8 @@
     close(IN);
 
     $$modules{$module}++;
-    if(defined($module_file)) {
-	$$module_files{$module} = $module_file;
-    } else {
-	$$module_files{$module} = "$module.drv";
-    }
+
+    $$module_files{$module} = $file;
 }
 
 sub name {
@@ -584,23 +603,23 @@
     return $$module_files{$module};
 }
 
-sub all_functions {
+sub all_internal_functions {
     my $self = shift;
-    my $function_calling_convention = \%{$self->{FUNCTION_CALLING_CONVENTION}};
+    my $function_internal_calling_convention = \%{$self->{FUNCTION_INTERNAL_CALLING_CONVENTION}};
 
-    return sort(keys(%$function_calling_convention));
+    return sort(keys(%$function_internal_calling_convention));
 }
 
-sub all_functions_in_module {
+sub all_internal_functions_in_module {
     my $self = shift;
-    my $function_calling_convention = \%{$self->{FUNCTION_CALLING_CONVENTION}};
-    my $function_module = \%{$self->{FUNCTION_MODULE}};
+    my $function_internal_calling_convention = \%{$self->{FUNCTION_INTERNAL_CALLING_CONVENTION}};
+    my $function_internal_module = \%{$self->{FUNCTION_INTERNAL_MODULE}};
 
     my $module = shift;
 
     my @names;
-    foreach my $name (keys(%$function_calling_convention)) {
-	if($$function_module{$name} eq $module) {
+    foreach my $name (keys(%$function_internal_calling_convention)) {
+	if($$function_internal_module{$name} eq $module) {
 	    push @names, $name;
 	}
     }
@@ -615,29 +634,47 @@
     return sort(keys(%$function_stub));
 }
 
-sub all_functions_found {
+sub all_internal_functions_found {
     my $self = shift;
     my $function_found = \%{$self->{FUNCTION_FOUND}};
 
     return sort(keys(%$function_found));
 }
 
-sub function_ordinal {
+sub function_internal_ordinal {
     my $self = shift;
-    my $function_ordinal = \%{$self->{FUNCTION_ORDINAL}};
+    my $function_internal_ordinal = \%{$self->{FUNCTION_INTERNAL_ORDINAL}};
 
     my $name = shift;
 
-    return $$function_ordinal{$name};
+    return $$function_internal_ordinal{$name};
 }
 
-sub function_calling_convention {
+sub function_external_ordinal {
     my $self = shift;
-    my $function_calling_convention = \%{$self->{FUNCTION_CALLING_CONVENTION}};
+    my $function_external_ordinal = \%{$self->{FUNCTION_EXTERNAL_ORDINAL}};
 
     my $name = shift;
 
-    return $$function_calling_convention{$name};
+    return $$function_external_ordinal{$name};
+}
+
+sub function_internal_calling_convention {
+    my $self = shift;
+    my $function_internal_calling_convention = \%{$self->{FUNCTION_INTERNAL_CALLING_CONVENTION}};
+
+    my $name = shift;
+
+    return $$function_internal_calling_convention{$name};
+}
+
+sub function_external_calling_convention {
+    my $self = shift;
+    my $function_external_calling_convention = \%{$self->{FUNCTION_EXTERNAL_CALLING_CONVENTION}};
+
+    my $name = shift;
+
+    return $$function_external_calling_convention{$name};
 }
 
 sub function_external_name {
@@ -651,11 +688,11 @@
 
 sub is_function {
     my $self = shift;
-    my $function_calling_convention = \%{$self->{FUNCTION_CALLING_CONVENTION}};
+    my $function_internal_calling_convention = \%{$self->{FUNCTION_INTERNAL_CALLING_CONVENTION}};
 
     my $name = shift;
 
-    return $$function_calling_convention{$name};
+    return $$function_internal_calling_convention{$name};
 }
 
 sub is_shared_function {
@@ -676,22 +713,40 @@
     $$function_shared{$name} = 1;
 }
 
-sub function_arguments {
+sub function_internal_arguments {
     my $self = shift;
-    my $function_arguments = \%{$self->{FUNCTION_ARGUMENTS}};
+    my $function_internal_arguments = \%{$self->{FUNCTION_INTERNAL_ARGUMENTS}};
 
     my $name = shift;
 
-    return $$function_arguments{$name};
+    return $$function_internal_arguments{$name};
 }
 
-sub function_module {
+sub function_external_arguments {
     my $self = shift;
-    my $function_module = \%{$self->{FUNCTION_MODULE}};
+    my $function_external_arguments = \%{$self->{FUNCTION_EXTERNAL_ARGUMENTS}};
 
     my $name = shift;
 
-    return $$function_module{$name};
+    return $$function_external_arguments{$name};
+}
+
+sub function_internal_module {
+    my $self = shift;
+    my $function_internal_module = \%{$self->{FUNCTION_INTERNAL_MODULE}};
+
+    my $name = shift;
+
+    return $$function_internal_module{$name};
+}
+
+sub function_external_module {
+    my $self = shift;
+    my $function_external_module = \%{$self->{FUNCTION_EXTERNAL_MODULE}};
+
+    my $name = shift;
+
+    return $$function_external_module{$name};
 }
 
 sub function_stub {
@@ -703,7 +758,7 @@
     return $$function_stub{$name};
 }
 
-sub found_function {
+sub found_internal_function {
     my $self = shift;
     my $function_found = \%{$self->{FUNCTION_FOUND}};
 
@@ -712,7 +767,7 @@
     $$function_found{$name}++;
 }
 
-sub function_found {
+sub internal_function_found {
     my $self = shift;
     my $function_found = \%{$self->{FUNCTION_FOUND}};