diff --git a/dlls/dxdiagn/dxdiag_main.c b/dlls/dxdiagn/dxdiag_main.c
index 6a8eecb6cddf95b4335dbdefb22c9cbb6c888368..2d8b0ea2a038e60285f9f89ae7a59daf58fe9c89 100644
--- a/dlls/dxdiagn/dxdiag_main.c
+++ b/dlls/dxdiagn/dxdiag_main.c
@@ -34,7 +34,7 @@
 
 WINE_DEFAULT_DEBUG_CHANNEL(dxdiag);
 
-static HINSTANCE instance;
+HINSTANCE dxdiagn_instance = 0;
 
 LONG DXDIAGN_refCount = 0;
 
@@ -43,7 +43,7 @@ BOOL WINAPI DllMain(HINSTANCE hInstDLL, DWORD fdwReason, LPVOID lpvReserved)
 {
   TRACE("%p,%x,%p\n", hInstDLL, fdwReason, lpvReserved);
   if (fdwReason == DLL_PROCESS_ATTACH) {
-      instance = hInstDLL;
+      dxdiagn_instance = hInstDLL;
       DisableThreadLibraryCalls(hInstDLL);
   }
   return TRUE;
@@ -143,7 +143,7 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
  */
 HRESULT WINAPI DllRegisterServer(void)
 {
-    return __wine_register_resources( instance, NULL );
+    return __wine_register_resources( dxdiagn_instance, NULL );
 }
 
 /***********************************************************************
@@ -151,5 +151,5 @@ HRESULT WINAPI DllRegisterServer(void)
  */
 HRESULT WINAPI DllUnregisterServer(void)
 {
-    return __wine_unregister_resources( instance, NULL );
+    return __wine_unregister_resources( dxdiagn_instance, NULL );
 }
diff --git a/dlls/dxdiagn/dxdiag_private.h b/dlls/dxdiagn/dxdiag_private.h
index 76d6058a72162000fb892b4b78d777accd4d356c..a670c3c7bb98d3ab7ec98966604292647dd138d3 100644
--- a/dlls/dxdiagn/dxdiag_private.h
+++ b/dlls/dxdiagn/dxdiag_private.h
@@ -100,4 +100,6 @@ extern LONG DXDIAGN_refCount;
 static inline void DXDIAGN_LockModule(void) { InterlockedIncrement( &DXDIAGN_refCount ); }
 static inline void DXDIAGN_UnlockModule(void) { InterlockedDecrement( &DXDIAGN_refCount ); }
 
+extern HINSTANCE dxdiagn_instance;
+
 #endif