Help with forwarding .spec and DLL overrides for a new DLL

Shachar Shemesh wine-devel at shemesh.biz
Thu Nov 6 11:23:07 CST 2003


Hi list,

I'm having trouble with my unicows.dll implementation. I can trace this 
problem down to forwarding entries not working, but I can't understand why.

I am attaching the diffs for my current unicows patch (not working 
though it is). I'm trying to run it with a program I wrote. This program 
is the plain "Hello world" Visual Studio 6 produces when you ask for a 
Win32 application, with two changes. I changed the link order according 
to the instructions for using MSLU 
(http://msdn.microsoft.com/msdnmag/issues/01/10/MSLU/default.aspx), so 
that the app will use unicows.dll on win98. The second is that I 
modified the LoadString and DrawText to specifically call LoadStringW 
and DrawTextW. The application is, otherwise, an ANSI application (only 
two Unicode functions called).

The resulting app works ok on Windows 2000 and on Windows 98 (the later 
only when unicows.dll is in the same directory as the application - as 
it should). When trying to run the app on Wine with os=nt4, or with 
os=win98 and the native unicows.dll in the same directory as the app, 
everything works. So far, so good.

Now comes the part things stop to work. First - I couldn't get my DLL 
overrides to take effect. I tried adding "UNICOWS.DLL"=b, but it 
wouldn't load my winelib dll over the standard one. I eventually created 
a symbolic link from a file called "unicows.dll" in the apps' dir to my 
unicows.dll.so file. That caused my dll to load.

The second had to do with the forwarding call. I generated (using a 
small perl script) the spec file for the DLL. It forwards all Unicode 
calls to the relevant Unicode call. Strangely, when the entries for 
LoadStringW and DrawTextW were pointing to the corresponding calls in 
user32, the program wouldn't run correctly. When I replaced them with 
explicit loading of user32.dll and GetProcAddress, everything works 
(that's the way it's currently in the diff). This suggests, to me, that 
the spec file is incorrectly set up. Can anyone please point me to my 
mistake?

             Shachar

-- 
Shachar Shemesh
Open Source integration consultant
Home page & resume - http://www.shemesh.biz/

-------------- next part --------------
Index: configure.ac
===================================================================
RCS file: /home/sun/sources/cvs/wine/configure.ac,v
retrieving revision 1.178
diff -u -r1.178 configure.ac
--- configure.ac	11 Sep 2003 21:27:58 -0000	1.178
+++ configure.ac	28 Oct 2003 13:40:18 -0000
@@ -1498,6 +1498,7 @@
 dlls/tapi32/Makefile
 dlls/ttydrv/Makefile
 dlls/twain/Makefile
+dlls/unicows/Makefile
 dlls/url/Makefile
 dlls/urlmon/Makefile
 dlls/urlmon/tests/Makefile
Index: dlls/Makefile.in
===================================================================
RCS file: /home/sun/sources/cvs/wine/dlls/Makefile.in,v
retrieving revision 1.184
diff -u -r1.184 Makefile.in
--- dlls/Makefile.in	8 Sep 2003 19:32:14 -0000	1.184
+++ dlls/Makefile.in	28 Oct 2003 13:47:11 -0000
@@ -96,6 +96,7 @@
 	tapi32 \
 	ttydrv \
 	twain \
+	unicows \
 	url \
 	urlmon \
 	user \
@@ -287,6 +288,7 @@
 	tapi32.dll$(DLLEXT) \
 	ttydrv.dll$(DLLEXT) \
 	twain_32.dll$(DLLEXT) \
+	unicows.dll$(DLLEXT) \
 	url.dll$(DLLEXT) \
 	urlmon.dll$(DLLEXT) \
 	user32.dll$(DLLEXT) \
@@ -605,6 +607,9 @@
 twain_32.dll$(DLLEXT): twain/twain_32.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) twain/twain_32.dll$(DLLEXT) $@
 
+unicows.dll$(DLLEXT): unicows/unicows.dll$(DLLEXT) $@
+	$(RM) $@ && $(LN_S) unicows/unicows.dll$(DLLEXT) $@
+
 url.dll$(DLLEXT): url/url.dll$(DLLEXT)
 	$(RM) $@ && $(LN_S) url/url.dll$(DLLEXT) $@
 
@@ -767,6 +772,7 @@
 	libtapi32 \
 	libttydrv \
 	libtwain_32 \
+	libunicows \
 	liburl \
 	liburlmon \
 	libuser32 \
@@ -1196,6 +1202,11 @@
 libtwain_32.a: twain/twain_32.spec.def
 	$(DLLTOOL) -k -l $@ -d twain/twain_32.spec.def
 
+libunicows.def: unicows/unicows.spec.def
+	$(RM) $@ && $(LN_S) unicows/unicows.spec.def $@
+libunicows.a: unicows/unicows.spec.def
+	$(DLLTOOL) -k -l $@ -d unicows/unicows.spec.def
+
 liburl.def: url/url.spec.def
 	$(RM) $@ && $(LN_S) url/url.spec.def $@
 liburl.a: url/url.spec.def
@@ -1368,6 +1379,7 @@
 tapi32/tapi32.spec.def: $(WINEBUILD)
 ttydrv/ttydrv.spec.def: $(WINEBUILD)
 twain/twain_32.spec.def: $(WINEBUILD)
+unicows/unicows.spec.def: $(WINEBUILD)
 url/url.spec.def: $(WINEBUILD)
 urlmon/urlmon.spec.def: $(WINEBUILD)
 user/user32.spec.def: $(WINEBUILD)
@@ -1487,6 +1499,7 @@
 tapi32/tapi32.dll$(DLLEXT): tapi32
 ttydrv/ttydrv.dll$(DLLEXT): ttydrv
 twain/twain_32.dll$(DLLEXT): twain
+unicows/unicows.dll$(DLLEXT): unicows
 url/url.dll$(DLLEXT): url
 urlmon/urlmon.dll$(DLLEXT): urlmon
 user/user32.dll$(DLLEXT): user
--- /dev/null	2003-08-25 19:02:45.000000000 +0300
+++ dlls/unicows/Makefile.in	2003-11-04 18:24:26.000000000 +0200
@@ -0,0 +1,17 @@
+EXTRADEFS = -D_UNICOWS_
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR    = @srcdir@
+VPATH     = @srcdir@
+MODULE    = unicows.dll
+IMPORTS   = advapi32 avicap32 comdlg32 gdi32 kernel32 mpr msvfw32 oledlg rasapi32 shell32 user32 winmm winspool
+
+LDDLLFLAGS = @LDDLLFLAGS@
+SYMBOLFILE = $(MODULE).tmp.o
+
+C_SRCS = \
+	main.c
+
+ at MAKE_DLL_RULES@
+
+### Dependencies:
--- /dev/null	2003-08-25 19:02:45.000000000 +0300
+++ dlls/unicows/main.c	2003-11-06 19:20:03.000000000 +0200
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2003 Shachar Shemesh
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+/* The "Microsoft Layer for Unicode on Win9x Systems (MSLU)" library is
+ * an attempt to bring NT Unicode support to the Unicodeless Win 9x systems.
+ * This works very poorly with Wine, as the library scrambles to translate
+ * to ANSI things that are actually better handled by Wine's internal
+ * Unicode support. Just because wine claims to be a version that does not
+ * support something does not mean Wine really doesn't support it.
+ *
+ * As such, this library is a pretty straightforward affair - catch the system
+ * call, forward it to the standard Wine system call of the same name - end of
+ * story.
+ *
+ * As of 28-Oct-2003, 63 functions exported by Unicows.dll version 1.0.4018.0 are
+ * not implemented by Wine.
+ *
+ * If your application stumbles upon a stub while linking with unicows.dll, check
+ * whether the relevant function is available in Wine. If it is, just follow my lead
+ * as I did for the other functions. If not - leave as a stub.
+ *
+ * In order to add a new function, you need to change the following locations:
+ * unicows.spec - change from "stub" to the real prototype.
+ */
+
+#include <stdarg.h>
+
+#include "windef.h"
+#include "winbase.h"
+
+#include "wine/debug.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(unicows);
+
+HMODULE hGdi;
+INT WINAPI (*pDrawTextW)( HDC hdc, LPCWSTR str, INT count, LPRECT rect, UINT flags );
+INT WINAPI (*pLoadStringW)( HINSTANCE instance, UINT resource_id,
+                            LPWSTR buffer, INT buflen );
+
+INT WINAPI DrawTextW( HDC hdc, LPCWSTR str, INT count, LPRECT rect, UINT flags )
+{
+    TRACE("Called\n");
+    return pDrawTextW(hdc, str, count, rect, flags );
+}
+
+INT WINAPI LoadStringW( HINSTANCE instance, UINT resource_id,
+                            LPWSTR buffer, INT buflen )
+{
+    TRACE("Called\n");
+    return pLoadStringW(instance, resource_id, buffer, buflen );
+}
+
+BOOL APIENTRY DllMain( HINSTANCE hModule,
+                       DWORD  ul_reason_for_call,
+                       LPVOID lpReserved
+                                         )
+{
+   switch( ul_reason_for_call )
+   {
+   case DLL_PROCESS_ATTACH:
+      TRACE("Attach\n");
+      hGdi=LoadLibraryA("USER32.DLL");
+      if( hGdi!=NULL ) {
+          TRACE("GDI loaded\n");
+          if( (pDrawTextW=GetProcAddress(hGdi, "DrawTextW"))!=NULL ) {
+              TRACE("DrawTextW loaded %p %p\n", pDrawTextW, DrawTextW);
+          }
+          if( (pLoadStringW=GetProcAddress(hGdi, "LoadStringW"))!=NULL ) {
+              TRACE("LoadStringW loaded %p\n", pLoadStringW);
+          }
+      }
+      break;
+   case DLL_PROCESS_DETACH:
+      TRACE("Detach\n");
+      break;
+   }
+
+   return TRUE;
+}
+
--- /dev/null	2003-08-25 19:02:45.000000000 +0300
+++ dlls/unicows/unicows.spec	2003-11-06 15:28:47.000000000 +0200
@@ -0,0 +1,509 @@
+@ stub AcquireCredentialsHandleW
+@ stdcall AddAtomW(wstr) kernel32.AddAtomW
+@ stdcall AddFontResourceW(wstr) gdi32.AddFontResourceW
+@ stdcall AddJobW(long long ptr long ptr) winspool.drv.AddJobW
+@ stub AddMonitorW
+@ stub AddPortW
+@ stub AddPrintProcessorW
+@ stub AddPrintProvidorW
+@ stdcall AddPrinterDriverW(wstr long ptr) winspool.drv.AddPrinterDriverW
+@ stdcall AddPrinterW(wstr long ptr) winspool.drv.AddPrinterW
+@ stub AdvancedDocumentPropertiesW
+@ stdcall AppendMenuW(long long long ptr) user32.AppendMenuW
+@ stdcall BeginUpdateResourceA(str long) kernel32.BeginUpdateResourceA
+@ stdcall BeginUpdateResourceW(wstr long) kernel32.BeginUpdateResourceW
+@ stdcall BroadcastSystemMessageW(long ptr long long long) user32.BroadcastSystemMessageW
+@ stdcall BuildCommDCBAndTimeoutsW(wstr ptr ptr) kernel32.BuildCommDCBAndTimeoutsW
+@ stdcall BuildCommDCBW(wstr ptr) kernel32.BuildCommDCBW
+@ stdcall CallMsgFilterW(ptr long) user32.CallMsgFilterW
+@ stdcall CallNamedPipeW(wstr ptr long ptr long ptr long) kernel32.CallNamedPipeW
+@ stdcall CallWindowProcA(ptr long long long long) user32.CallWindowProcA
+@ stdcall CallWindowProcW(ptr long long long long) user32.CallWindowProcW
+@ stdcall ChangeDisplaySettingsExW(wstr ptr long long ptr) user32.ChangeDisplaySettingsExW
+@ stdcall ChangeDisplaySettingsW(ptr long) user32.ChangeDisplaySettingsW
+@ stdcall ChangeMenuW(long long ptr long long) user32.ChangeMenuW
+@ stdcall CharLowerBuffW(wstr long) user32.CharLowerBuffW
+@ stdcall CharLowerW(wstr) user32.CharLowerW
+@ stdcall CharNextW(wstr) user32.CharNextW
+@ stdcall CharPrevW(wstr wstr) user32.CharPrevW
+@ stdcall CharToOemBuffW(wstr ptr long) user32.CharToOemBuffW
+@ stdcall CharToOemW(wstr ptr) user32.CharToOemW
+@ stdcall CharUpperBuffW(wstr long) user32.CharUpperBuffW
+@ stdcall CharUpperW(wstr) user32.CharUpperW
+@ stdcall ChooseColorW(ptr) comdlg32.ChooseColorW
+@ stdcall ChooseFontW(ptr) comdlg32.ChooseFontW
+@ stdcall CommConfigDialogW(wstr long ptr) kernel32.CommConfigDialogW
+@ stdcall CompareStringW(long long wstr long wstr long) kernel32.CompareStringW
+@ stub ConfigurePortW
+@ stdcall CopyAcceleratorTableW(long ptr long) user32.CopyAcceleratorTableW
+@ stub CopyEnhMetaFileW
+@ stdcall CopyFileExW (wstr wstr ptr ptr ptr long) kernel32.CopyFileExW
+@ stdcall CopyFileW(wstr wstr long) kernel32.CopyFileW
+@ stdcall CopyMetaFileW(long wstr) gdi32.CopyMetaFileW
+@ stdcall CreateAcceleratorTableW(ptr long) user32.CreateAcceleratorTableW
+@ stdcall CreateColorSpaceW(ptr) gdi32.CreateColorSpaceW
+@ stdcall CreateDCW(wstr wstr wstr ptr) gdi32.CreateDCW
+@ stdcall CreateDialogIndirectParamW(long ptr long ptr long) user32.CreateDialogIndirectParamW
+@ stdcall CreateDialogParamW(long ptr long ptr long) user32.CreateDialogParamW
+@ stdcall CreateDirectoryExW(wstr wstr ptr) kernel32.CreateDirectoryExW
+@ stdcall CreateDirectoryW(wstr ptr) kernel32.CreateDirectoryW
+@ stdcall CreateEnhMetaFileW(long wstr ptr wstr) gdi32.CreateEnhMetaFileW
+@ stdcall CreateEventW(ptr long long wstr) kernel32.CreateEventW
+@ stdcall CreateFileMappingW(long ptr long long long wstr) kernel32.CreateFileMappingW
+@ stdcall CreateFileW(wstr long long ptr long long long) kernel32.CreateFileW
+@ stdcall CreateFontIndirectW(ptr) gdi32.CreateFontIndirectW
+@ stdcall CreateFontW(long long long long long long long long long long long long long wstr) gdi32.CreateFontW
+@ stdcall CreateICW(wstr wstr wstr ptr) gdi32.CreateICW
+@ stdcall CreateMDIWindowW(ptr ptr long long long long long long long long) user32.CreateMDIWindowW
+@ stdcall CreateMailslotW(ptr long long ptr) kernel32.CreateMailslotW
+@ stdcall CreateMetaFileW(wstr) gdi32.CreateMetaFileW
+@ stdcall CreateMutexW(ptr long wstr) kernel32.CreateMutexW
+@ stdcall CreateNamedPipeW(wstr long long long long long long ptr) kernel32.CreateNamedPipeW
+@ stdcall CreateProcessW(wstr wstr ptr ptr long long ptr wstr ptr ptr) kernel32.CreateProcessW
+@ stdcall CreateScalableFontResourceW(long wstr wstr wstr) gdi32.CreateScalableFontResourceW
+@ stdcall CreateSemaphoreW(ptr long long wstr) kernel32.CreateSemaphoreW
+@ stub CreateStdAccessibleProxyW
+@ stdcall CreateWaitableTimerW(ptr long wstr) kernel32.CreateWaitableTimerW
+@ stdcall CreateWindowExW(long wstr wstr long long long long long long long long ptr) user32.CreateWindowExW
+@ stdcall CryptAcquireContextW(ptr wstr wstr long long) advapi32.CryptAcquireContextW
+@ stdcall CryptEnumProviderTypesW(long ptr long ptr ptr ptr) advapi32.CryptEnumProviderTypesW
+@ stdcall CryptEnumProvidersW(long ptr long ptr ptr ptr) advapi32.CryptEnumProvidersW
+@ stdcall CryptGetDefaultProviderW(long ptr long ptr ptr) advapi32.CryptGetDefaultProviderW
+@ stdcall CryptSetProviderExW(wstr long ptr long) advapi32.CryptSetProviderExW
+@ stdcall CryptSetProviderW(wstr long) advapi32.CryptSetProviderW
+@ stdcall CryptSignHashW(long long ptr long ptr ptr) advapi32.CryptSignHashW
+@ stdcall CryptVerifySignatureW(long ptr long long ptr long) advapi32.CryptVerifySignatureW
+@ stdcall DdeConnect(long long long ptr) user32.DdeConnect
+@ stdcall DdeConnectList(long long long long ptr) user32.DdeConnectList
+@ stdcall DdeCreateStringHandleW(long ptr long) user32.DdeCreateStringHandleW
+@ stdcall DdeInitializeW(ptr ptr long long) user32.DdeInitializeW
+@ stdcall DdeQueryConvInfo(long long ptr) user32.DdeQueryConvInfo
+@ stdcall DdeQueryStringW(long long ptr long long) user32.DdeQueryStringW
+@ stdcall DefDlgProcW(long long long long) user32.DefDlgProcW
+@ stdcall DefFrameProcW(long long long long long) user32.DefFrameProcW
+@ stdcall DefMDIChildProcW(long long long long) user32.DefMDIChildProcW
+@ stdcall DefWindowProcW(long long long long) user32.DefWindowProcW
+@ stdcall DeleteFileW(wstr) kernel32.DeleteFileW
+@ stub DeleteMonitorW
+@ stub DeletePortW
+@ stub DeletePrintProcessorW
+@ stub DeletePrintProvidorW
+@ stub DeletePrinterDriverW
+@ stdcall DeviceCapabilitiesW(wstr wstr long wstr ptr) winspool.drv.DeviceCapabilitiesW
+@ stdcall DialogBoxIndirectParamW(long ptr long ptr long) user32.DialogBoxIndirectParamW
+@ stdcall DialogBoxParamW(long wstr long ptr long) user32.DialogBoxParamW
+@ stdcall DispatchMessageW(ptr) user32.DispatchMessageW
+@ stdcall DlgDirListComboBoxW(long ptr long long long) user32.DlgDirListComboBoxW
+@ stdcall DlgDirListW(long wstr long long long) user32.DlgDirListW
+@ stdcall DlgDirSelectComboBoxExW(long ptr long long) user32.DlgDirSelectComboBoxExW
+@ stdcall DlgDirSelectExW(long ptr long long) user32.DlgDirSelectExW
+@ stdcall DocumentPropertiesW(long long ptr ptr ptr long) winspool.drv.DocumentPropertiesW
+@ stdcall DragQueryFileW(long long ptr long) shell32.DragQueryFileW
+@ stdcall DrawStateW(long long ptr long long long long long long long) user32.DrawStateW
+@ stdcall DrawTextExW(long wstr long ptr long ptr) user32.DrawTextExW
+@ stdcall DrawTextW(long wstr long ptr long)
+#@ stdcall DrawTextW(long wstr long ptr long) user32.DrawTextW
+@ stdcall EnableWindow(long long) user32.EnableWindow
+@ stdcall EndUpdateResourceA(long long) kernel32.EndUpdateResourceA
+@ stdcall EndUpdateResourceW(long long) kernel32.EndUpdateResourceW
+@ stub EnumCalendarInfoExW
+@ stub EnumCalendarInfoW
+@ stdcall EnumClipboardFormats(long) user32.EnumClipboardFormats
+@ stub EnumDateFormatsExW
+@ stdcall EnumDateFormatsW(ptr long long) kernel32.EnumDateFormatsW
+@ stdcall EnumDisplayDevicesW(ptr long ptr long) user32.EnumDisplayDevicesW
+@ stdcall EnumDisplaySettingsExW(wstr long ptr long) user32.EnumDisplaySettingsExW
+@ stdcall EnumDisplaySettingsW(wstr long ptr ) user32.EnumDisplaySettingsW
+@ stdcall EnumFontFamiliesExW(long ptr ptr long long) gdi32.EnumFontFamiliesExW
+@ stdcall EnumFontFamiliesW(long wstr ptr long) gdi32.EnumFontFamiliesW
+@ stdcall EnumFontsW(long wstr ptr long) gdi32.EnumFontsW
+@ stub EnumICMProfilesW
+@ stub EnumMonitorsW
+@ stub EnumPortsW
+@ stub EnumPrintProcessorDatatypesW
+@ stub EnumPrintProcessorsW
+@ stdcall EnumPrinterDriversW(wstr wstr long ptr long ptr ptr) winspool.drv.EnumPrinterDriversW
+@ stdcall EnumPrintersW(long ptr long ptr long ptr ptr) winspool.drv.EnumPrintersW
+@ stdcall EnumPropsA(long ptr) user32.EnumPropsA
+@ stdcall EnumPropsExA(long ptr long) user32.EnumPropsExA
+@ stdcall EnumPropsExW(long ptr long) user32.EnumPropsExW
+@ stdcall EnumPropsW(long ptr) user32.EnumPropsW
+@ stdcall EnumSystemCodePagesW(ptr long) kernel32.EnumSystemCodePagesW
+@ stdcall EnumSystemLocalesW(ptr long) kernel32.EnumSystemLocalesW
+@ stdcall EnumTimeFormatsW(ptr long long) kernel32.EnumTimeFormatsW
+@ stub EnumerateSecurityPackagesW
+@ stdcall ExpandEnvironmentStringsW(wstr ptr long) kernel32.ExpandEnvironmentStringsW
+@ stdcall ExtTextOutW(long long long long ptr wstr long ptr) gdi32.ExtTextOutW
+@ stdcall ExtractIconExW(wstr long ptr ptr long) shell32.ExtractIconExW
+@ stdcall ExtractIconW(long wstr long) shell32.ExtractIconW
+@ stdcall FatalAppExitW(long wstr) kernel32.FatalAppExitW
+@ stdcall FillConsoleOutputCharacterW(long long long long ptr) kernel32.FillConsoleOutputCharacterW
+@ stdcall FindAtomW(wstr) kernel32.FindAtomW
+@ stdcall FindExecutableW(wstr wstr wstr) shell32.FindExecutableW
+@ stdcall FindFirstChangeNotificationW(wstr long long) kernel32.FindFirstChangeNotificationW
+@ stdcall FindFirstFileW(wstr ptr) kernel32.FindFirstFileW
+@ stdcall FindNextFileW(long ptr) kernel32.FindNextFileW
+@ stdcall FindResourceExW(long wstr wstr long) kernel32.FindResourceExW
+@ stdcall FindResourceW(long wstr wstr) kernel32.FindResourceW
+@ stdcall FindTextW(ptr) comdlg32.FindTextW
+@ stdcall FindWindowExW(long long wstr wstr) user32.FindWindowExW
+@ stdcall FindWindowW(wstr wstr) user32.FindWindowW
+@ stdcall FormatMessageW(long ptr long long ptr long ptr) kernel32.FormatMessageW
+@ stub FreeContextBuffer
+@ stdcall FreeEnvironmentStringsW(ptr) kernel32.FreeEnvironmentStringsW
+@ stub GetAltTabInfoW
+@ stdcall GetAtomNameW(long ptr long) kernel32.GetAtomNameW
+@ stdcall GetCPInfo(long ptr) kernel32.GetCPInfo
+@ stdcall GetCPInfoExW(long long ptr) kernel32.GetCPInfoExW
+@ stdcall GetCalendarInfoW(long long long ptr long ptr) kernel32.GetCalendarInfoW
+@ stdcall GetCharABCWidthsFloatW(long long long ptr) gdi32.GetCharABCWidthsFloatW
+@ stdcall GetCharABCWidthsW(long long long ptr) gdi32.GetCharABCWidthsW
+@ stdcall GetCharWidth32W(long long long long) gdi32.GetCharWidth32W
+@ stdcall GetCharWidthFloatW(long long long ptr) gdi32.GetCharWidthFloatW
+@ stdcall GetCharWidthW(long long long long) gdi32.GetCharWidthW
+@ stdcall GetCharacterPlacementW(long wstr long long ptr long) gdi32.GetCharacterPlacementW
+@ stdcall GetClassInfoExW(long wstr ptr) user32.GetClassInfoExW
+@ stdcall GetClassInfoW(long wstr ptr) user32.GetClassInfoW
+@ stdcall GetClassLongW(long long) user32.GetClassLongW
+@ stdcall GetClassNameW(long ptr long) user32.GetClassNameW
+@ stdcall GetClipboardData(long) user32.GetClipboardData
+@ stdcall GetClipboardFormatNameW(long ptr long) user32.GetClipboardFormatNameW
+@ stdcall GetComputerNameW(ptr ptr) kernel32.GetComputerNameW
+@ stdcall GetConsoleTitleW(ptr long) kernel32.GetConsoleTitleW
+@ stdcall GetCurrencyFormatW(long long str ptr str long) kernel32.GetCurrencyFormatW
+@ stdcall GetCurrentDirectoryW(long ptr) kernel32.GetCurrentDirectoryW
+@ stub GetCurrentHwProfileW
+@ stdcall GetDateFormatW(long long ptr wstr ptr long) kernel32.GetDateFormatW
+@ stdcall GetDefaultCommConfigW(wstr ptr long) kernel32.GetDefaultCommConfigW
+@ stdcall GetDiskFreeSpaceExW (wstr ptr ptr ptr) kernel32.GetDiskFreeSpaceExW
+@ stdcall GetDiskFreeSpaceW(wstr ptr ptr ptr ptr) kernel32.GetDiskFreeSpaceW
+@ stdcall GetDlgItemTextW(long long ptr long) user32.GetDlgItemTextW
+@ stdcall GetDriveTypeW(wstr) kernel32.GetDriveTypeW
+@ stdcall GetEnhMetaFileDescriptionW(long long ptr) gdi32.GetEnhMetaFileDescriptionW
+@ stdcall GetEnhMetaFileW(wstr) gdi32.GetEnhMetaFileW
+@ stdcall GetEnvironmentStringsW() kernel32.GetEnvironmentStringsW
+@ stdcall GetEnvironmentVariableW(wstr ptr long) kernel32.GetEnvironmentVariableW
+@ stdcall GetFileAttributesExW(wstr long ptr) kernel32.GetFileAttributesExW
+@ stdcall GetFileAttributesW(wstr) kernel32.GetFileAttributesW
+@ stdcall GetFileTitleW(wstr ptr long) comdlg32.GetFileTitleW
+@ stub GetFileVersionInfoSizeW
+@ stub GetFileVersionInfoW
+@ stdcall GetFullPathNameW(wstr long ptr ptr) kernel32.GetFullPathNameW
+@ stdcall GetGlyphOutlineW(long long long ptr long ptr ptr) gdi32.GetGlyphOutlineW
+@ stub GetICMProfileW
+@ stub GetJobW
+@ stdcall GetKerningPairsW(long long ptr) gdi32.GetKerningPairsW
+@ stdcall GetKeyNameTextW(long ptr long) user32.GetKeyNameTextW
+@ stdcall GetKeyboardLayoutNameW(ptr) user32.GetKeyboardLayoutNameW
+@ stdcall GetLocaleInfoW(long long ptr long) kernel32.GetLocaleInfoW
+@ stub GetLogColorSpaceW
+@ stdcall GetLogicalDriveStringsW(long ptr) kernel32.GetLogicalDriveStringsW
+@ stdcall GetLongPathNameW (wstr long long) kernel32.GetLongPathNameW
+@ stdcall GetMenuItemInfoW(long long long ptr) user32.GetMenuItemInfoW
+@ stdcall GetMenuStringW(long long ptr long long) user32.GetMenuStringW
+@ stdcall GetMessageW(ptr long long long) user32.GetMessageW
+@ stdcall GetMetaFileW(wstr) gdi32.GetMetaFileW
+@ stdcall GetModuleFileNameW(long ptr long) kernel32.GetModuleFileNameW
+@ stdcall GetModuleHandleW(wstr) kernel32.GetModuleHandleW
+@ stdcall GetMonitorInfoW(long ptr) user32.GetMonitorInfoW
+@ stdcall GetNamedPipeHandleStateW(long ptr ptr ptr ptr wstr long) kernel32.GetNamedPipeHandleStateW
+@ stdcall GetNumberFormatW(long long wstr ptr ptr long) kernel32.GetNumberFormatW
+@ stdcall GetObjectW(long long ptr) gdi32.GetObjectW
+@ stdcall GetOpenFileNamePreviewW(ptr) msvfw32.GetOpenFileNamePreviewW
+@ stdcall GetOpenFileNameW(ptr) comdlg32.GetOpenFileNameW
+@ stdcall GetOutlineTextMetricsW(long long ptr) gdi32.GetOutlineTextMetricsW
+@ stub GetPrintProcessorDirectoryW
+@ stdcall GetPrinterDataW(long wstr ptr ptr long ptr) winspool.drv.GetPrinterDataW
+@ stdcall GetPrinterDriverDirectoryW(wstr wstr long ptr long ptr) winspool.drv.GetPrinterDriverDirectoryW
+@ stdcall GetPrinterDriverW(long str long ptr long ptr) winspool.drv.GetPrinterDriverW
+@ stdcall GetPrinterW(long long ptr long ptr) winspool.drv.GetPrinterW
+@ stdcall GetPrivateProfileIntW(wstr wstr long wstr) kernel32.GetPrivateProfileIntW
+@ stdcall GetPrivateProfileSectionNamesW(ptr long wstr) kernel32.GetPrivateProfileSectionNamesW
+@ stdcall GetPrivateProfileSectionW(wstr ptr long wstr) kernel32.GetPrivateProfileSectionW
+@ stdcall GetPrivateProfileStringW(wstr wstr wstr ptr long wstr) kernel32.GetPrivateProfileStringW
+@ stdcall GetPrivateProfileStructW(wstr wstr ptr long wstr) kernel32.GetPrivateProfileStructW
+@ stdcall GetProcAddress(long str) kernel32.GetProcAddress
+@ stdcall GetProfileIntW(wstr wstr long) kernel32.GetProfileIntW
+@ stdcall GetProfileSectionW(wstr ptr long) kernel32.GetProfileSectionW
+@ stdcall GetProfileStringW(wstr wstr wstr ptr long) kernel32.GetProfileStringW
+@ stdcall GetPropA(long str) user32.GetPropA
+@ stdcall GetPropW(long wstr) user32.GetPropW
+@ stub GetRoleTextW
+@ stdcall GetSaveFileNamePreviewW(ptr) msvfw32.GetSaveFileNamePreviewW
+@ stdcall GetSaveFileNameW(ptr) comdlg32.GetSaveFileNameW
+@ stdcall GetShortPathNameW(wstr ptr long) kernel32.GetShortPathNameW
+@ stdcall GetStartupInfoW(ptr) kernel32.GetStartupInfoW
+@ stub GetStateTextW
+@ stdcall GetStringTypeExW(long long wstr long ptr) kernel32.GetStringTypeExW
+@ stdcall GetStringTypeW(long wstr long ptr) kernel32.GetStringTypeW
+@ stdcall GetSystemDirectoryW(ptr long) kernel32.GetSystemDirectoryW
+@ stdcall GetSystemWindowsDirectoryW(ptr long) kernel32.GetSystemWindowsDirectoryW
+@ stdcall GetTabbedTextExtentW(long wstr long long ptr) user32.GetTabbedTextExtentW
+@ stdcall GetTempFileNameW(wstr wstr long ptr) kernel32.GetTempFileNameW
+@ stdcall GetTempPathW(long ptr) kernel32.GetTempPathW
+@ stdcall GetTextExtentExPointW(long wstr long long ptr ptr ptr) gdi32.GetTextExtentExPointW
+@ stdcall GetTextExtentPoint32W(long wstr long ptr) gdi32.GetTextExtentPoint32W
+@ stdcall GetTextExtentPointW(long wstr long ptr) gdi32.GetTextExtentPointW
+@ stdcall GetTextFaceW(long long ptr) gdi32.GetTextFaceW
+@ stdcall GetTextMetricsW(long ptr) gdi32.GetTextMetricsW
+@ stdcall GetTimeFormatW(long long ptr wstr ptr long) kernel32.GetTimeFormatW
+@ stdcall GetUserNameW(ptr ptr) advapi32.GetUserNameW
+@ stdcall GetVersionExW(ptr) kernel32.GetVersionExW
+@ stdcall GetVolumeInformationW(wstr ptr long ptr ptr ptr ptr long) kernel32.GetVolumeInformationW
+@ stdcall GetWindowLongA(long long) user32.GetWindowLongA
+@ stdcall GetWindowLongW(long long) user32.GetWindowLongW
+@ stdcall GetWindowModuleFileNameW(long ptr long) user32.GetWindowModuleFileNameW
+@ stdcall GetWindowTextLengthW(long) user32.GetWindowTextLengthW
+@ stdcall GetWindowTextW(long ptr long) user32.GetWindowTextW
+@ stdcall GetWindowsDirectoryW(ptr long) kernel32.GetWindowsDirectoryW
+@ stdcall GlobalAddAtomW(wstr) kernel32.GlobalAddAtomW
+@ stdcall GlobalFindAtomW(wstr) kernel32.GlobalFindAtomW
+@ stdcall GlobalGetAtomNameW(long ptr long) kernel32.GlobalGetAtomNameW
+@ stdcall GrayStringW(long long ptr long long long long long long) user32.GrayStringW
+@ stub InitSecurityInterfaceW
+@ stub InitializeSecurityContextW
+@ stdcall InsertMenuItemW(long long long ptr) user32.InsertMenuItemW
+@ stdcall InsertMenuW(long long long long ptr) user32.InsertMenuW
+@ stdcall IsBadStringPtrW(ptr long) kernel32.IsBadStringPtrW
+@ stdcall IsCharAlphaNumericW(long) user32.IsCharAlphaNumericW
+@ stdcall IsCharAlphaW(long) user32.IsCharAlphaW
+@ stdcall IsCharLowerW(long) user32.IsCharLowerW
+@ stdcall IsCharUpperW(long) user32.IsCharUpperW
+@ stdcall IsClipboardFormatAvailable(long) user32.IsClipboardFormatAvailable
+@ stub IsDestinationReachableW
+@ stdcall IsDialogMessageW(long ptr) user32.IsDialogMessageW
+@ stdcall IsTextUnicode(ptr long ptr) advapi32.IsTextUnicode
+@ stdcall IsValidCodePage(long) kernel32.IsValidCodePage
+@ stdcall IsWindowUnicode(long) user32.IsWindowUnicode
+@ stdcall LCMapStringW(long long wstr long ptr long) kernel32.LCMapStringW
+@ stdcall LoadAcceleratorsW(long wstr) user32.LoadAcceleratorsW
+@ stdcall LoadBitmapW(long wstr) user32.LoadBitmapW
+@ stdcall LoadCursorFromFileW(wstr) user32.LoadCursorFromFileW
+@ stdcall LoadCursorW(long wstr) user32.LoadCursorW
+@ stdcall LoadIconW(long wstr) user32.LoadIconW
+@ stdcall LoadImageW(long wstr long long long long) user32.LoadImageW
+@ stdcall LoadKeyboardLayoutW(wstr long) user32.LoadKeyboardLayoutW
+@ stdcall LoadLibraryExW(wstr long long) kernel32.LoadLibraryExW
+@ stdcall LoadLibraryW(wstr) kernel32.LoadLibraryW
+@ stdcall LoadMenuIndirectW(ptr) user32.LoadMenuIndirectW
+@ stdcall LoadMenuW(long wstr) user32.LoadMenuW
+#@ stdcall LoadStringW(long long ptr long) user32.LoadStringW
+@ stdcall LoadStringW(long long ptr long)
+@ cdecl   MCIWndCreateW (long long long wstr) msvfw32.MCIWndCreateW
+@ stdcall MapVirtualKeyExW(long long long) user32.MapVirtualKeyExW
+@ stdcall MapVirtualKeyW(long long) user32.MapVirtualKeyW
+@ stdcall MessageBoxExW(long wstr wstr long long) user32.MessageBoxExW
+@ stdcall MessageBoxIndirectW(ptr) user32.MessageBoxIndirectW
+@ stdcall MessageBoxW(long wstr wstr long) user32.MessageBoxW
+@ stdcall ModifyMenuW(long long long long ptr) user32.ModifyMenuW
+@ stdcall MoveFileW(wstr wstr) kernel32.MoveFileW
+@ stdcall MultiByteToWideChar(long long str long ptr long) kernel32.MultiByteToWideChar
+@ stdcall MultinetGetConnectionPerformanceW(ptr ptr) mpr.MultinetGetConnectionPerformanceW
+@ stdcall OemToCharBuffW(ptr ptr long) user32.OemToCharBuffW
+@ stdcall OemToCharW(ptr ptr) user32.OemToCharW
+@ stdcall OleUIAddVerbMenuW(ptr wstr long long long long long long ptr) oledlg.OleUIAddVerbMenuW
+@ stdcall OleUIBusyW(ptr) oledlg.OleUIBusyW
+@ stdcall OleUIChangeIconW(ptr) oledlg.OleUIChangeIconW
+@ stdcall OleUIChangeSourceW(ptr) oledlg.OleUIChangeSourceW
+@ stdcall OleUIConvertW(ptr) oledlg.OleUIConvertW
+@ stdcall OleUIEditLinksW(ptr) oledlg.OleUIEditLinksW
+@ stdcall OleUIInsertObjectW(ptr) oledlg.OleUIInsertObjectW
+@ stdcall OleUIObjectPropertiesW(ptr) oledlg.OleUIObjectPropertiesW
+@ stdcall OleUIPasteSpecialW(ptr) oledlg.OleUIPasteSpecialW
+@ varargs OleUIPromptUserW(long long) oledlg.OleUIPromptUserW
+@ stdcall OleUIUpdateLinksW(ptr long wstr long) oledlg.OleUIUpdateLinksW
+@ stdcall OpenEventW(long long wstr) kernel32.OpenEventW
+@ stdcall OpenFileMappingW(long long wstr) kernel32.OpenFileMappingW
+@ stdcall OpenMutexW(long long wstr) kernel32.OpenMutexW
+@ stdcall OpenPrinterW(wstr ptr ptr) winspool.drv.OpenPrinterW
+@ stdcall OpenSemaphoreW(long long wstr) kernel32.OpenSemaphoreW
+@ stdcall OpenWaitableTimerW(long long wstr) kernel32.OpenWaitableTimerW
+@ stdcall OutputDebugStringW(wstr) kernel32.OutputDebugStringW
+@ stdcall PageSetupDlgW(ptr) comdlg32.PageSetupDlgW
+@ stdcall PeekConsoleInputW(ptr ptr long ptr) kernel32.PeekConsoleInputW
+@ stdcall PeekMessageW(ptr long long long long) user32.PeekMessageW
+@ stdcall PlaySoundW(ptr long long) winmm.PlaySoundW
+@ stdcall PolyTextOutW(long ptr long) gdi32.PolyTextOutW
+@ stdcall PostMessageW(long long long long) user32.PostMessageW
+@ stdcall PostThreadMessageW(long long long long) user32.PostThreadMessageW
+@ stdcall PrintDlgW(ptr) comdlg32.PrintDlgW
+@ stub QueryContextAttributesW
+@ stub QueryCredentialsAttributesW
+@ stdcall QueryDosDeviceW(wstr ptr long) kernel32.QueryDosDeviceW
+@ stub QuerySecurityPackageInfoW
+@ stub RasConnectionNotificationW
+@ stub RasCreatePhonebookEntryW
+@ stdcall RasDeleteEntryW(wstr wstr) rasapi32.RasDeleteEntryW
+@ stub RasDeleteSubEntryW
+@ stub RasDialW
+@ stub RasEditPhonebookEntryW
+@ stdcall RasEnumConnectionsW(ptr ptr ptr) rasapi32.RasEnumConnectionsW
+@ stdcall RasEnumDevicesW(ptr ptr ptr) rasapi32.RasEnumDevicesW
+@ stdcall RasEnumEntriesW(str str ptr ptr ptr) rasapi32.RasEnumEntriesW
+@ stub RasGetConnectStatusW
+@ stub RasGetEntryDialParamsW
+@ stub RasGetEntryPropertiesW
+@ stub RasGetErrorStringW
+@ stub RasGetProjectionInfoW
+@ stub RasHangUpW
+@ stub RasRenameEntryW
+@ stub RasSetEntryDialParamsW
+@ stdcall RasSetEntryPropertiesW(wstr wstr ptr long ptr long) rasapi32.RasSetEntryPropertiesW
+@ stub RasSetSubEntryPropertiesW
+@ stub RasValidateEntryNameW
+@ stdcall ReadConsoleInputW(long ptr long ptr) kernel32.ReadConsoleInputW
+@ stdcall ReadConsoleOutputCharacterW(long ptr long long ptr) kernel32.ReadConsoleOutputCharacterW
+@ stdcall ReadConsoleOutputW(long ptr long long ptr) kernel32.ReadConsoleOutputW
+@ stdcall ReadConsoleW(long ptr long ptr ptr) kernel32.ReadConsoleW
+@ stdcall RegConnectRegistryW(wstr long ptr) advapi32.RegConnectRegistryW
+@ stdcall RegCreateKeyExW(long wstr long ptr long long ptr ptr ptr) advapi32.RegCreateKeyExW
+@ stdcall RegCreateKeyW(long wstr ptr) advapi32.RegCreateKeyW
+@ stdcall RegDeleteKeyW(long wstr) advapi32.RegDeleteKeyW
+@ stdcall RegDeleteValueW(long wstr) advapi32.RegDeleteValueW
+@ stdcall RegEnumKeyExW(long long ptr ptr ptr ptr ptr ptr) advapi32.RegEnumKeyExW
+@ stdcall RegEnumKeyW(long long ptr long) advapi32.RegEnumKeyW
+@ stdcall RegEnumValueW(long long ptr ptr ptr ptr ptr ptr) advapi32.RegEnumValueW
+@ stdcall RegLoadKeyW(long wstr wstr) advapi32.RegLoadKeyW
+@ stdcall RegOpenKeyExW(long wstr long long ptr) advapi32.RegOpenKeyExW
+@ stdcall RegOpenKeyW(long wstr ptr) advapi32.RegOpenKeyW
+@ stdcall RegQueryInfoKeyW(long ptr ptr ptr ptr ptr ptr ptr ptr ptr ptr ptr) advapi32.RegQueryInfoKeyW
+@ stdcall RegQueryMultipleValuesW(long ptr long ptr ptr) advapi32.RegQueryMultipleValuesW
+@ stdcall RegQueryValueExW(long wstr ptr ptr ptr ptr) advapi32.RegQueryValueExW
+@ stdcall RegQueryValueW(long wstr ptr ptr) advapi32.RegQueryValueW
+@ stdcall RegReplaceKeyW(long wstr wstr wstr) advapi32.RegReplaceKeyW
+@ stdcall RegSaveKeyW(long ptr ptr) advapi32.RegSaveKeyW
+@ stdcall RegSetValueExW(long wstr long long ptr long) advapi32.RegSetValueExW
+@ stdcall RegSetValueW(long wstr long ptr long) advapi32.RegSetValueW
+@ stdcall RegUnLoadKeyW(long wstr) advapi32.RegUnLoadKeyW
+@ stdcall RegisterClassExW(ptr) user32.RegisterClassExW
+@ stdcall RegisterClassW(ptr) user32.RegisterClassW
+@ stdcall RegisterClipboardFormatW(wstr) user32.RegisterClipboardFormatW
+@ stub RegisterDeviceNotificationW
+@ stdcall RegisterWindowMessageW(wstr) user32.RegisterWindowMessageW
+@ stdcall RemoveDirectoryW(wstr) kernel32.RemoveDirectoryW
+@ stdcall RemoveFontResourceW(wstr) gdi32.RemoveFontResourceW
+@ stdcall RemovePropA(long str) user32.RemovePropA
+@ stdcall RemovePropW(long wstr) user32.RemovePropW
+@ stdcall ReplaceTextW(ptr) comdlg32.ReplaceTextW
+@ stdcall ResetDCW(long ptr) gdi32.ResetDCW
+@ stdcall ResetPrinterW(long ptr) winspool.drv.ResetPrinterW
+@ stdcall SHBrowseForFolderW(ptr) shell32.SHBrowseForFolderW
+@ stdcall SHChangeNotify (long long ptr ptr) shell32.SHChangeNotify
+@ stdcall SHFileOperationW(ptr) shell32.SHFileOperationW
+@ stdcall SHGetFileInfoW(ptr long ptr long long) shell32.SHGetFileInfoW
+@ stub SHGetNewLinkInfoW
+@ stdcall SHGetPathFromIDListW(ptr ptr) shell32.SHGetPathFromIDListW
+@ stdcall ScrollConsoleScreenBufferW(long ptr ptr ptr ptr) kernel32.ScrollConsoleScreenBufferW
+@ stdcall SearchPathW(wstr wstr wstr long ptr ptr) kernel32.SearchPathW
+@ stdcall SendDlgItemMessageW(long long long long long) user32.SendDlgItemMessageW
+@ stdcall SendMessageCallbackW(long long long long ptr long) user32.SendMessageCallbackW
+@ stdcall SendMessageTimeoutW(long long long long long long ptr) user32.SendMessageTimeoutW
+@ stdcall SendMessageW(long long long long) user32.SendMessageW
+@ stdcall SendNotifyMessageW(long long long long) user32.SendNotifyMessageW
+@ stdcall SetCalendarInfoW(long long long wstr) kernel32.SetCalendarInfoW
+@ stdcall SetClassLongW(long long long) user32.SetClassLongW
+@ stdcall SetComputerNameW(wstr) kernel32.SetComputerNameW
+@ stdcall SetConsoleTitleW(wstr) kernel32.SetConsoleTitleW
+@ stdcall SetCurrentDirectoryW(wstr) kernel32.SetCurrentDirectoryW
+@ stdcall SetDefaultCommConfigW(wstr ptr long) kernel32.SetDefaultCommConfigW
+@ stdcall SetDlgItemTextW(long long wstr) user32.SetDlgItemTextW
+@ stdcall SetEnvironmentVariableW(wstr wstr) kernel32.SetEnvironmentVariableW
+@ stdcall SetFileAttributesW(wstr long) kernel32.SetFileAttributesW
+@ stub SetICMProfileW
+@ stdcall SetJobW(long long long ptr long) winspool.drv.SetJobW
+@ stdcall SetLocaleInfoW(long long wstr) kernel32.SetLocaleInfoW
+@ stdcall SetMenuItemInfoW(long long long ptr) user32.SetMenuItemInfoW
+@ stdcall SetPrinterDataW(long wstr long ptr long) winspool.drv.SetPrinterDataW
+@ stdcall SetPrinterW(long long ptr long) winspool.drv.SetPrinterW
+@ stdcall SetPropA(long str long) user32.SetPropA
+@ stdcall SetPropW(long wstr long) user32.SetPropW
+@ stdcall SetVolumeLabelW(wstr wstr) kernel32.SetVolumeLabelW
+@ stdcall SetWindowLongA(long long long) user32.SetWindowLongA
+@ stdcall SetWindowLongW(long long long) user32.SetWindowLongW
+@ stdcall SetWindowTextW(long wstr) user32.SetWindowTextW
+@ stdcall SetWindowsHookExW(long long long long) user32.SetWindowsHookExW
+@ stdcall SetWindowsHookW(long ptr) user32.SetWindowsHookW
+@ stdcall ShellAboutW(long wstr wstr long) shell32.ShellAboutW
+@ stdcall ShellExecuteExW (long) shell32.ShellExecuteExW
+@ stdcall ShellExecuteW (long wstr wstr wstr wstr long) shell32.ShellExecuteW
+@ stdcall Shell_NotifyIconW(long ptr) shell32.Shell_NotifyIconW
+@ stdcall StartDocPrinterW(long long ptr) winspool.drv.StartDocPrinterW
+@ stdcall StartDocW(long ptr) gdi32.StartDocW
+@ stdcall SystemParametersInfoW(long long ptr long) user32.SystemParametersInfoW
+@ stdcall TabbedTextOutW(long long long wstr long long ptr long) user32.TabbedTextOutW
+@ stdcall TextOutW(long long long wstr long) gdi32.TextOutW
+@ stdcall TranslateAcceleratorW(long long ptr) user32.TranslateAcceleratorW
+@ stdcall UnregisterClassW(wstr long) user32.UnregisterClassW
+@ stub UpdateICMRegKeyW
+@ stdcall UpdateResourceA(long str str long ptr long) kernel32.UpdateResourceA
+@ stdcall UpdateResourceW(long wstr wstr long ptr long) kernel32.UpdateResourceW
+@ stub VerFindFileW
+@ stub VerInstallFileW
+@ stdcall VerLanguageNameW(long wstr long) kernel32.VerLanguageNameW
+@ stub VerQueryValueW
+@ stdcall VkKeyScanExW(long long) user32.VkKeyScanExW
+@ stdcall VkKeyScanW(long) user32.VkKeyScanW
+@ stdcall WNetAddConnection2W(ptr wstr wstr long) mpr.WNetAddConnection2W
+@ stdcall WNetAddConnection3W(long ptr wstr wstr long) mpr.WNetAddConnection3W
+@ stdcall WNetAddConnectionW(wstr wstr wstr) mpr.WNetAddConnectionW
+@ stdcall WNetCancelConnection2W(wstr long long) mpr.WNetCancelConnection2W
+@ stdcall WNetCancelConnectionW(wstr long) mpr.WNetCancelConnectionW
+@ stdcall WNetConnectionDialog1W(ptr) mpr.WNetConnectionDialog1W
+@ stdcall WNetDisconnectDialog1W(ptr) mpr.WNetDisconnectDialog1W
+@ stdcall WNetEnumResourceW(long ptr ptr ptr) mpr.WNetEnumResourceW
+@ stdcall WNetGetConnectionW(wstr ptr ptr) mpr.WNetGetConnectionW
+@ stdcall WNetGetLastErrorW(ptr ptr long ptr long) mpr.WNetGetLastErrorW
+@ stdcall WNetGetNetworkInformationW(wstr ptr) mpr.WNetGetNetworkInformationW
+@ stdcall WNetGetProviderNameW(long ptr ptr) mpr.WNetGetProviderNameW
+@ stdcall WNetGetResourceInformationW(ptr ptr ptr ptr) mpr.WNetGetResourceInformationW
+@ stdcall WNetGetResourceParentW(ptr ptr ptr) mpr.WNetGetResourceParentW
+@ stdcall WNetGetUniversalNameW (wstr long ptr ptr) mpr.WNetGetUniversalNameW
+@ stdcall WNetGetUserW(wstr wstr ptr) mpr.WNetGetUserW
+@ stdcall WNetOpenEnumW(long long long ptr ptr) mpr.WNetOpenEnumW
+@ stdcall WNetUseConnectionW(long ptr wstr wstr long wstr ptr ptr) mpr.WNetUseConnectionW
+@ stdcall WaitNamedPipeW (wstr long) kernel32.WaitNamedPipeW
+@ stdcall WideCharToMultiByte(long long wstr long ptr long ptr ptr) kernel32.WideCharToMultiByte
+@ stdcall WinHelpW(long wstr long long) user32.WinHelpW
+@ stdcall WriteConsoleInputW(long ptr long ptr) kernel32.WriteConsoleInputW
+@ stdcall WriteConsoleOutputCharacterW(long ptr long long ptr) kernel32.WriteConsoleOutputCharacterW
+@ stdcall WriteConsoleOutputW(long ptr long long ptr) kernel32.WriteConsoleOutputW
+@ stdcall WriteConsoleW(long ptr long ptr ptr) kernel32.WriteConsoleW
+@ stdcall WritePrivateProfileSectionW(wstr wstr wstr) kernel32.WritePrivateProfileSectionW
+@ stdcall WritePrivateProfileStringW(wstr wstr wstr wstr) kernel32.WritePrivateProfileStringW
+@ stdcall WritePrivateProfileStructW(wstr wstr ptr long wstr) kernel32.WritePrivateProfileStructW
+@ stdcall WriteProfileSectionW(str str) kernel32.WriteProfileSectionW
+@ stdcall WriteProfileStringW(wstr wstr wstr) kernel32.WriteProfileStringW
+@ stub __FreeAllLibrariesInMsluDll
+@ stdcall auxGetDevCapsW(long ptr long) winmm.auxGetDevCapsW
+@ stdcall capCreateCaptureWindowW(wstr long long long long long long long) avicap32.capCreateCaptureWindowW
+@ stdcall capGetDriverDescriptionW(long ptr long ptr long) avicap32.capGetDriverDescriptionW
+@ stdcall joyGetDevCapsW(long ptr long) winmm.joyGetDevCapsW
+@ stdcall lstrcatW(wstr wstr) kernel32.lstrcatW
+@ stdcall lstrcmpW(wstr wstr) kernel32.lstrcmpW
+@ stdcall lstrcmpiW(wstr wstr) kernel32.lstrcmpiW
+@ stdcall lstrcpyW(ptr wstr) kernel32.lstrcpyW
+@ stdcall lstrcpynW(ptr wstr long) kernel32.lstrcpynW
+@ stdcall lstrlenW(wstr) kernel32.lstrlenW
+@ stdcall mciGetDeviceIDW(str) winmm.mciGetDeviceIDW
+@ stdcall mciGetErrorStringW(long ptr long) winmm.mciGetErrorStringW
+@ stdcall mciSendCommandW(long long long long) winmm.mciSendCommandW
+@ stdcall mciSendStringW(wstr ptr long long) winmm.mciSendStringW
+@ stdcall midiInGetDevCapsW(long ptr long) winmm.midiInGetDevCapsW
+@ stdcall midiInGetErrorTextW(long ptr long) winmm.midiInGetErrorTextW
+@ stdcall midiOutGetDevCapsW(long ptr long) winmm.midiOutGetDevCapsW
+@ stdcall midiOutGetErrorTextW(long ptr long) winmm.midiOutGetErrorTextW
+@ stdcall mixerGetControlDetailsW(long ptr long) winmm.mixerGetControlDetailsW
+@ stdcall mixerGetDevCapsW(long ptr long) winmm.mixerGetDevCapsW
+@ stdcall mixerGetLineControlsW(long ptr long) winmm.mixerGetLineControlsW
+@ stdcall mixerGetLineInfoW(long ptr long) winmm.mixerGetLineInfoW
+@ stdcall mmioInstallIOProcW(long ptr long) winmm.mmioInstallIOProcW
+@ stdcall mmioOpenW(wstr ptr long) winmm.mmioOpenW
+@ stdcall mmioRenameW(wstr wstr ptr long) winmm.mmioRenameW
+@ stdcall mmioStringToFOURCCW(wstr long) winmm.mmioStringToFOURCCW
+@ stdcall sndPlaySoundW(ptr long) winmm.sndPlaySoundW
+@ stdcall waveInGetDevCapsW(long ptr long) winmm.waveInGetDevCapsW
+@ stdcall waveInGetErrorTextW(long ptr long) winmm.waveInGetErrorTextW
+@ stdcall waveOutGetDevCapsW(long ptr long) winmm.waveOutGetDevCapsW
+@ stdcall waveOutGetErrorTextW(long ptr long) winmm.waveOutGetErrorTextW
+@ varargs wsprintfW(wstr wstr) user32.wsprintfW
+@ stdcall wvsprintfW(ptr wstr ptr) user32.wvsprintfW


More information about the wine-devel mailing list