diff --git a/dlls/avifil32/factory.c b/dlls/avifil32/factory.c
index 1f03a8b..da96165 100644
--- a/dlls/avifil32/factory.c
+++ b/dlls/avifil32/factory.c
@@ -204,15 +204,11 @@
 
   switch (fdwReason) {
   case DLL_PROCESS_ATTACH:
-    if (AVIFILE_hModule == NULL)
-      AVIFILE_hModule = (HMODULE)hInstDll;
+    DisableThreadLibraryCalls(hInstDll);
+    AVIFILE_hModule = (HMODULE)hInstDll;
     break;
   case DLL_PROCESS_DETACH:
     break;
-  case DLL_THREAD_ATTACH:
-    break;
-  case DLL_THREAD_DETACH:
-    break;
   };
 
   return TRUE;
diff --git a/dlls/comctl32/commctrl.c b/dlls/comctl32/commctrl.c
index 43db9d5..b2acdb7 100644
--- a/dlls/comctl32/commctrl.c
+++ b/dlls/comctl32/commctrl.c
@@ -145,6 +145,8 @@
 
     switch (fdwReason) {
 	case DLL_PROCESS_ATTACH:
+            DisableThreadLibraryCalls(hinstDLL);
+
             COMCTL32_hModule = (HMODULE)hinstDLL;
 
             /* create private heap */
diff --git a/dlls/crtdll/crtdll_main.c b/dlls/crtdll/crtdll_main.c
index f461459..f2506b6 100644
--- a/dlls/crtdll/crtdll_main.c
+++ b/dlls/crtdll/crtdll_main.c
@@ -88,6 +88,9 @@
   if (fdwReason == DLL_PROCESS_ATTACH)
   {
     DWORD version = GetVersion();
+
+    DisableThreadLibraryCalls(hinstDLL);
+
     CRTDLL__basemajor_dll   = (version >> 24) & 0xFF;
     CRTDLL__baseminor_dll   = (version >> 16) & 0xFF;
     CRTDLL__baseversion_dll = (version >> 16);
diff --git a/dlls/d3d8/d3d8_main.c b/dlls/d3d8/d3d8_main.c
index 704cf06..293acb4 100644
--- a/dlls/d3d8/d3d8_main.c
+++ b/dlls/d3d8/d3d8_main.c
@@ -63,7 +63,11 @@
     TRACE("fdwReason=%ld\n", fdwReason);
        if (fdwReason == DLL_PROCESS_ATTACH)
        {
-           HMODULE mod = GetModuleHandleA( "x11drv.dll" );
+           HMODULE mod;
+
+           DisableThreadLibraryCalls(hInstDLL);
+
+           mod = GetModuleHandleA( "x11drv.dll" );
            if (mod)
            {
                wine_tsx11_lock_ptr   = (void *)GetProcAddress( mod, "wine_tsx11_lock" );
diff --git a/dlls/ddraw/main.c b/dlls/ddraw/main.c
index a3b39ca..74e272b 100644
--- a/dlls/ddraw/main.c
+++ b/dlls/ddraw/main.c
@@ -579,7 +579,11 @@
 
     if (fdwReason == DLL_PROCESS_ATTACH)
     {
-        HMODULE mod = GetModuleHandleA( "x11drv.dll" );
+        HMODULE mod;
+
+        DisableThreadLibraryCalls(hInstDLL);
+
+        mod = GetModuleHandleA( "x11drv.dll" );
         if (mod)
         {
             wine_tsx11_lock_ptr   = (void *)GetProcAddress( mod, "wine_tsx11_lock" );
diff --git a/dlls/dinput/dinput_main.c b/dlls/dinput/dinput_main.c
index 20b62f2..a8ba4e4 100644
--- a/dlls/dinput/dinput_main.c
+++ b/dlls/dinput/dinput_main.c
@@ -60,6 +60,7 @@
     switch(reason)
     {
       case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(inst);
         DINPUT_instance = inst;
         break;
       case DLL_PROCESS_DETACH:
diff --git a/dlls/dmusic/dmusic_main.c b/dlls/dmusic/dmusic_main.c
index cf12613..345b062 100644
--- a/dlls/dmusic/dmusic_main.c
+++ b/dlls/dmusic/dmusic_main.c
@@ -107,6 +107,7 @@
 {
 	if (fdwReason == DLL_PROCESS_ATTACH)
 	{
+            DisableThreadLibraryCalls(hinstDLL);
 		/* FIXME: Initialisation */
 	}
 	else if (fdwReason == DLL_PROCESS_DETACH)
diff --git a/dlls/dplayx/dplayx_main.c b/dlls/dplayx/dplayx_main.c
index d2227fe..650fdc8 100644
--- a/dlls/dplayx/dplayx_main.c
+++ b/dlls/dplayx/dplayx_main.c
@@ -38,6 +38,7 @@
   switch ( fdwReason )
   {
     case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(hinstDLL);
         /* First instance perform construction of global processor data */
         return DPLAYX_ConstructData();
 
@@ -45,9 +46,6 @@
         /* Last instance performs destruction of global processor data */
         return DPLAYX_DestructData();
 
-    case DLL_THREAD_ATTACH: /* Do nothing */
-    case DLL_THREAD_DETACH: /* Do nothing */
-      break;
     default:
       break;
 
diff --git a/dlls/dpnhpast/main.c b/dlls/dpnhpast/main.c
index c77a4ca..6aa05b1 100644
--- a/dlls/dpnhpast/main.c
+++ b/dlls/dpnhpast/main.c
@@ -35,6 +35,7 @@
 
 	if (fdwReason == DLL_PROCESS_ATTACH)
 	{
+            DisableThreadLibraryCalls(hinstDLL);
 		/* FIXME: Initialisation */
 	}
 	else if (fdwReason == DLL_PROCESS_DETACH)
diff --git a/dlls/gdi/gdi_main.c b/dlls/gdi/gdi_main.c
index 14b637b..99c49c4 100644
--- a/dlls/gdi/gdi_main.c
+++ b/dlls/gdi/gdi_main.c
@@ -32,6 +32,7 @@
 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD reason, LPVOID lpvReserved)
 {
     if (reason != DLL_PROCESS_ATTACH) return TRUE;
+    DisableThreadLibraryCalls(hinstDLL);
     return GDI_Init();
 }
 
diff --git a/dlls/imagehlp/imagehlp_main.c b/dlls/imagehlp/imagehlp_main.c
index 7645f43..fa6b882 100644
--- a/dlls/imagehlp/imagehlp_main.c
+++ b/dlls/imagehlp/imagehlp_main.c
@@ -40,16 +40,13 @@
   switch(fdwReason)
     {
     case DLL_PROCESS_ATTACH:
+      DisableThreadLibraryCalls(hinstDLL);
       IMAGEHLP_hHeap = HeapCreate(0, 0x10000, 0);
       break;
     case DLL_PROCESS_DETACH:
       HeapDestroy(IMAGEHLP_hHeap);
       IMAGEHLP_hHeap = NULL;
       break;
-    case DLL_THREAD_ATTACH:
-      break;
-    case DLL_THREAD_DETACH:
-      break;
     default:
       break;
     }
diff --git a/dlls/imm32/imm.c b/dlls/imm32/imm.c
index dee6893..d1b70a5 100644
--- a/dlls/imm32/imm.c
+++ b/dlls/imm32/imm.c
@@ -86,6 +86,7 @@
     switch (fdwReason)
     {
         case DLL_PROCESS_ATTACH:
+            DisableThreadLibraryCalls(hInstDLL);
             hImeInst = hInstDLL;
             break;
         case DLL_PROCESS_DETACH:
diff --git a/dlls/msacm/msacm32_main.c b/dlls/msacm/msacm32_main.c
index 82317dc7..71a94f3 100644
--- a/dlls/msacm/msacm32_main.c
+++ b/dlls/msacm/msacm32_main.c
@@ -44,6 +44,7 @@
 
     switch (fdwReason) {
     case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(hInstDLL);
         MSACM_hHeap = HeapCreate(0, 0x10000, 0);
         MSACM_hInstance32 = hInstDLL;
         MSACM_RegisterAllDrivers();
@@ -54,10 +55,6 @@
         MSACM_hHeap = NULL;
         MSACM_hInstance32 = NULL;
 	break;
-    case DLL_THREAD_ATTACH:
-	break;
-    case DLL_THREAD_DETACH:
-	break;
     default:
 	break;
     }
diff --git a/dlls/msisys/Makefile.in b/dlls/msisys/Makefile.in
index 2433508..bafddc1 100644
--- a/dlls/msisys/Makefile.in
+++ b/dlls/msisys/Makefile.in
@@ -3,6 +3,7 @@
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 MODULE    = msisys.ocx
+IMPORTS   = kernel32
 EXTRALIBS = $(LIBUUID)
 
 LDDLLFLAGS = @LDDLLFLAGS@
diff --git a/dlls/msisys/msisys.c b/dlls/msisys/msisys.c
index e88dc65..85e2755 100644
--- a/dlls/msisys/msisys.c
+++ b/dlls/msisys/msisys.c
@@ -62,16 +62,13 @@
 	switch ( fdwReason )
 	{
 	case DLL_PROCESS_ATTACH:
+                DisableThreadLibraryCalls(hInstDLL);
 		if ( !MSISYS_InitProcess() )
 			return FALSE;
 		break;
 	case DLL_PROCESS_DETACH:
 		MSISYS_UninitProcess();
 		break;
-	case DLL_THREAD_ATTACH:
-		break;
-	case DLL_THREAD_DETACH:
-		break;
 	}
 
 	return TRUE;
diff --git a/dlls/msvideo/msrle32/msrle32.c b/dlls/msvideo/msrle32/msrle32.c
index 6d12127..f7a6b8e 100644
--- a/dlls/msvideo/msrle32/msrle32.c
+++ b/dlls/msvideo/msrle32/msrle32.c
@@ -1902,13 +1902,10 @@
 
   switch (dwReason) {
   case DLL_PROCESS_ATTACH:
-    if (MSRLE32_hModule == 0)
-      MSRLE32_hModule = hModule;
+    DisableThreadLibraryCalls(hModule);
+    MSRLE32_hModule = hModule;
     break;
-  case DLL_THREAD_ATTACH:
-    break;
-  case DLL_THREAD_DETACH:
-    break;
+
   case DLL_PROCESS_DETACH:
     break;
   };
diff --git a/dlls/netapi32/netapi32.c b/dlls/netapi32/netapi32.c
index 8d1f192..06b0ec2 100644
--- a/dlls/netapi32/netapi32.c
+++ b/dlls/netapi32/netapi32.c
@@ -110,6 +110,7 @@
 
     switch (fdwReason) {
 	case DLL_PROCESS_ATTACH:
+            DisableThreadLibraryCalls(hinstDLL);
             NETAPI32_hModule = hinstDLL;
 	    break;
 	case DLL_PROCESS_DETACH:
diff --git a/dlls/odbc32/Makefile.in b/dlls/odbc32/Makefile.in
index 62a9184..6864e39 100644
--- a/dlls/odbc32/Makefile.in
+++ b/dlls/odbc32/Makefile.in
@@ -3,6 +3,7 @@
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 MODULE    = odbc32.dll
+IMPORTS   = kernel32
 
 LDDLLFLAGS = @LDDLLFLAGS@
 SYMBOLFILE = $(MODULE).tmp.o
diff --git a/dlls/odbc32/proxyodbc.c b/dlls/odbc32/proxyodbc.c
index a762ca4..f1d0cb2 100644
--- a/dlls/odbc32/proxyodbc.c
+++ b/dlls/odbc32/proxyodbc.c
@@ -176,6 +176,7 @@
     if (fdwReason == DLL_PROCESS_ATTACH)
     {
        TRACE("Loading ODBC...\n");
+       DisableThreadLibraryCalls(hinstDLL);
        if (ODBC_LoadDriverManager())
           ODBC_LoadDMFunctions();
     }
diff --git a/dlls/ole32/ole32_main.c b/dlls/ole32/ole32_main.c
index 1e2a985..f5f7905 100644
--- a/dlls/ole32/ole32_main.c
+++ b/dlls/ole32/ole32_main.c
@@ -97,6 +97,7 @@
 
     switch(fdwReason) {
     case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(hinstDLL);
         OLE32_hInstance = hinstDLL;
         COMPOBJ_InitProcess();
 	if (TRACE_ON(ole)) CoRegisterMallocSpy((LPVOID)-1);
diff --git a/dlls/opengl32/wgl.c b/dlls/opengl32/wgl.c
index 03e85c0..3faef4f 100644
--- a/dlls/opengl32/wgl.c
+++ b/dlls/opengl32/wgl.c
@@ -683,6 +683,7 @@
     switch(reason)
     {
     case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(hinst);
         return process_attach();
     case DLL_PROCESS_DETACH:
         process_detach();
diff --git a/dlls/quartz/main.c b/dlls/quartz/main.c
index b1151e9..68e63b7 100644
--- a/dlls/quartz/main.c
+++ b/dlls/quartz/main.c
@@ -34,6 +34,7 @@
 {
     switch(fdwReason) {
         case DLL_PROCESS_ATTACH:
+            DisableThreadLibraryCalls(hInstDLL);
 	    break;
 	case DLL_PROCESS_DETACH:
 	    break;
diff --git a/dlls/richedit/richedit.c b/dlls/richedit/richedit.c
index 38bdaa1..e3525d1 100644
--- a/dlls/richedit/richedit.c
+++ b/dlls/richedit/richedit.c
@@ -71,6 +71,7 @@
     switch (fdwReason)
     {
     case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(hinstDLL);
         /* create private heap */
         RICHED32_hHeap = HeapCreate (0, 0x10000, 0);
         /* register the Rich Edit class */
diff --git a/dlls/rpcrt4/rpcrt4_main.c b/dlls/rpcrt4/rpcrt4_main.c
index c743224..b10e1fd 100644
--- a/dlls/rpcrt4/rpcrt4_main.c
+++ b/dlls/rpcrt4/rpcrt4_main.c
@@ -167,6 +167,7 @@
 {
     switch (fdwReason) {
     case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(hinstDLL);
         master_mutex = CreateMutexA( NULL, FALSE, RPCSS_MASTER_MUTEX_NAME);
         if (!master_mutex)
           ERR("Failed to create master mutex\n");
diff --git a/dlls/serialui/confdlg.c b/dlls/serialui/confdlg.c
index b097bf1..a4e241e 100644
--- a/dlls/serialui/confdlg.c
+++ b/dlls/serialui/confdlg.c
@@ -65,6 +65,7 @@
 
     switch (fdwReason) {
 	case DLL_PROCESS_ATTACH:
+            DisableThreadLibraryCalls(hinstDLL);
             SERIALUI_hModule = hinstDLL;
 	    break;
 	case DLL_PROCESS_DETACH:
diff --git a/dlls/shlwapi/shlwapi_main.c b/dlls/shlwapi/shlwapi_main.c
index 9041fb1..8dea829 100644
--- a/dlls/shlwapi/shlwapi_main.c
+++ b/dlls/shlwapi/shlwapi_main.c
@@ -65,6 +65,7 @@
 	switch (fdwReason)
 	{
 	  case DLL_PROCESS_ATTACH:
+            DisableThreadLibraryCalls(hinstDLL);
 	    shlwapi_hInstance = hinstDLL;
 	    SHLWAPI_ThreadRef_index = TlsAlloc();
 	    break;
diff --git a/dlls/snmpapi/Makefile.in b/dlls/snmpapi/Makefile.in
index 4c6dee2..afc7054 100644
--- a/dlls/snmpapi/Makefile.in
+++ b/dlls/snmpapi/Makefile.in
@@ -3,6 +3,7 @@
 SRCDIR    = @srcdir@
 VPATH     = @srcdir@
 MODULE    = snmpapi.dll
+IMPORTS   = kernel32
 
 LDDLLFLAGS = @LDDLLFLAGS@
 SYMBOLFILE = $(MODULE).tmp.o
diff --git a/dlls/snmpapi/main.c b/dlls/snmpapi/main.c
index cc8c1fe..bf20c2d 100644
--- a/dlls/snmpapi/main.c
+++ b/dlls/snmpapi/main.c
@@ -20,8 +20,7 @@
 
 #include "config.h"
 
-#include "windef.h"
-
+#include "winbase.h"
 #include "wine/debug.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(snmpapi);
@@ -38,13 +37,10 @@
 
     switch(fdwReason) {
     case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(hInstDLL);
         break;
     case DLL_PROCESS_DETACH:
         break;
-    case DLL_THREAD_ATTACH:
-        break;
-    case DLL_THREAD_DETACH:
-        break;
     }
 
     return TRUE;
diff --git a/dlls/ttydrv/ttydrv_main.c b/dlls/ttydrv/ttydrv_main.c
index b46b64d..6800ba1 100644
--- a/dlls/ttydrv/ttydrv_main.c
+++ b/dlls/ttydrv/ttydrv_main.c
@@ -76,6 +76,7 @@
     switch(reason)
     {
     case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(hinst);
         process_attach();
         break;
 
diff --git a/dlls/twain/twain32_main.c b/dlls/twain/twain32_main.c
index 4771a82..56a5a32 100644
--- a/dlls/twain/twain32_main.c
+++ b/dlls/twain/twain32_main.c
@@ -33,15 +33,10 @@
     switch (fdwReason)
     {
         case DLL_PROCESS_ATTACH:
+            DisableThreadLibraryCalls(hinstDLL);
             DSM_currentState = 2;
             break;
 
-        case DLL_THREAD_ATTACH:
-            break;
-
-        case DLL_THREAD_DETACH:
-            break;
-
         case DLL_PROCESS_DETACH:
             DSM_currentState = 1;
             break;
diff --git a/dlls/urlmon/urlmon_main.c b/dlls/urlmon/urlmon_main.c
index 2689bfb..8f88361 100644
--- a/dlls/urlmon/urlmon_main.c
+++ b/dlls/urlmon/urlmon_main.c
@@ -18,7 +18,7 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
-#include "windef.h"
+#include "winbase.h"
 #include "winerror.h"
 #include "wtypes.h"
 
@@ -39,6 +39,7 @@
 
     switch(fdwReason) {
     case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(hinstDLL);
         URLMON_hInstance = hinstDLL;
 	break;
 
diff --git a/dlls/winaspi/winaspi32.c b/dlls/winaspi/winaspi32.c
index 9d311bb..bc9095e 100644
--- a/dlls/winaspi/winaspi32.c
+++ b/dlls/winaspi/winaspi32.c
@@ -62,14 +62,12 @@
 	switch( fdwReason )
 	{
 	case DLL_PROCESS_ATTACH:
+            DisableThreadLibraryCalls(hInstDLL);
             SCSI_Init();
             break;
 	case DLL_PROCESS_DETACH:
             DeleteCriticalSection( &ASPI_CritSection );
             break;
-	case DLL_THREAD_ATTACH:
-	case DLL_THREAD_DETACH:
-		break;
 	}
 #endif /* defined(linux) */
 	return TRUE;
diff --git a/dlls/winedos/dosvm.c b/dlls/winedos/dosvm.c
index cfd8921..3295b19 100644
--- a/dlls/winedos/dosvm.c
+++ b/dlls/winedos/dosvm.c
@@ -688,6 +688,7 @@
 
     if (fdwReason == DLL_PROCESS_ATTACH)
     {
+        DisableThreadLibraryCalls(hinstDLL);
         DOSVM_InitSegments();
 
         event_notifier = CreateEventA(NULL, FALSE, FALSE, NULL);
diff --git a/dlls/wineps/init.c b/dlls/wineps/init.c
index a317623..ac6d747 100644
--- a/dlls/wineps/init.c
+++ b/dlls/wineps/init.c
@@ -121,6 +121,7 @@
     switch(reason) {
 
 	case DLL_PROCESS_ATTACH:
+            DisableThreadLibraryCalls(hinst);
 
 	    PSDRV_Heap = HeapCreate(0, 0x10000, 0);
 	    if (PSDRV_Heap == NULL)
diff --git a/dlls/winmm/mciavi/mciavi.c b/dlls/winmm/mciavi/mciavi.c
index e2684d8..f96cac9 100644
--- a/dlls/winmm/mciavi/mciavi.c
+++ b/dlls/winmm/mciavi/mciavi.c
@@ -122,6 +122,7 @@
 {
     switch (fdwReason) {
     case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(hInstDLL);
 	MCIAVI_hInstance = hInstDLL;
 	break;
     }
diff --git a/dlls/winmm/winmm.c b/dlls/winmm/winmm.c
index 5f5cdd4..b770164 100644
--- a/dlls/winmm/winmm.c
+++ b/dlls/winmm/winmm.c
@@ -125,6 +125,8 @@
 
     switch (fdwReason) {
     case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(hInstDLL);
+
 	if (!WINMM_CreateIData(hInstDLL))
 	    return FALSE;
         if (!MCI_Init() || !MMDRV_Init()) {
@@ -141,9 +143,6 @@
 
 	WINMM_DeleteIData();
 	break;
-    case DLL_THREAD_ATTACH:
-    case DLL_THREAD_DETACH:
-	break;
     }
     return TRUE;
 }
diff --git a/dlls/winsock/socket.c b/dlls/winsock/socket.c
index 38dfd87..8e87775 100644
--- a/dlls/winsock/socket.c
+++ b/dlls/winsock/socket.c
@@ -444,6 +444,7 @@
     TRACE("%p 0x%lx %p\n", hInstDLL, fdwReason, fImpLoad);
     switch (fdwReason) {
     case DLL_PROCESS_ATTACH:
+        DisableThreadLibraryCalls(hInstDLL);
         opentype_tls_index = TlsAlloc();
         break;
     case DLL_PROCESS_DETACH:
diff --git a/dlls/winspool/wspool.c b/dlls/winspool/wspool.c
index d49cdb6..1db2854 100644
--- a/dlls/winspool/wspool.c
+++ b/dlls/winspool/wspool.c
@@ -41,6 +41,8 @@
   {
     case DLL_PROCESS_ATTACH: {
       extern void WINSPOOL_LoadSystemPrinters();
+
+      DisableThreadLibraryCalls(hInstance);
       WINSPOOL_LoadSystemPrinters();
       break;
     }
