diff --git a/dlls/dsound/tests/dsound.c b/dlls/dsound/tests/dsound.c
index a4f59efaad9..9bb525d36a7 100644
--- a/dlls/dsound/tests/dsound.c
+++ b/dlls/dsound/tests/dsound.c
@@ -1037,12 +1037,21 @@ EXIT:
     return rc;
 }
 
+static DWORD WINAPI other_thread(void *user)
+{
+    return WaitForMultipleObjects(2, (LPHANDLE)user, FALSE, 3000);
+}
+
 static HRESULT test_notify(LPDIRECTSOUNDBUFFER dsb,
                            DWORD count, LPHANDLE event,
-                           DWORD expected)
+                           DWORD expected, BOOL close_events)
 {
     HRESULT rc;
-    DWORD ret, status;
+    DWORD ret, status, thread_code;
+    HANDLE t;
+
+    t = CreateThread(NULL, 0, other_thread, event, 0, NULL);
+    Sleep(100);
 
     rc=IDirectSoundBuffer_SetCurrentPosition(dsb,0);
     ok(rc==DS_OK,
@@ -1058,8 +1067,15 @@ static HRESULT test_notify(LPDIRECTSOUNDBUFFER dsb,
     rc = IDirectSoundBuffer_GetStatus(dsb, &status);
     ok(rc == DS_OK,"Failed %08x\n",rc);
     ok(status == DSBSTATUS_PLAYING,"got %08x\n", status);
+    Sleep(10);
 
     rc=IDirectSoundBuffer_Stop(dsb);
+    if(close_events){
+        DWORD i;
+        for(i = 0; i < count; ++i){
+            CloseHandle(event[i]);
+        }
+    }
     ok(rc==DS_OK,"IDirectSoundBuffer_Stop failed %08x\n",rc);
     if(rc!=DS_OK)
         return rc;
@@ -1068,8 +1084,11 @@ static HRESULT test_notify(LPDIRECTSOUNDBUFFER dsb,
     ok(rc == DS_OK,"Failed %08x\n",rc);
     ok(status == 0 /* Stopped */,"got %08x\n", status);
 
-    ret = WaitForMultipleObjects(count, event, FALSE, 3000);
-    ok(ret==expected,"expected %d. got %d\n",expected,ret);
+    WaitForMultipleObjects(1, &t, FALSE, INFINITE);
+    GetExitCodeThread(t, &thread_code);
+    ok(thread_code==expected,"expected %d. got %d\n",expected,thread_code);
+
+    CloseHandle(t);
 
     return rc;
 }
@@ -1111,7 +1130,7 @@ static HRESULT test_duplicate(LPGUID lpGuid)
         ZeroMemory(&bufdesc, sizeof(bufdesc));
         bufdesc.dwSize=sizeof(bufdesc);
         bufdesc.dwFlags=DSBCAPS_GETCURRENTPOSITION2|DSBCAPS_CTRLPOSITIONNOTIFY;
-        bufdesc.dwBufferBytes=wfx.nAvgBytesPerSec/100; /* very short buffer */
+        bufdesc.dwBufferBytes=wfx.nAvgBytesPerSec;///100; /* very short buffer */
         bufdesc.lpwfxFormat=&wfx;
         rc=IDirectSound_CreateSoundBuffer(dso,&bufdesc,&original,NULL);
         ok(rc==DS_OK && original!=NULL,
@@ -1172,7 +1191,7 @@ static HRESULT test_duplicate(LPGUID lpGuid)
                    "IDirectSound_DuplicateSoundBuffer failed %08x\n",rc);
 
                 trace("testing duplicated buffer without notifications.\n");
-                test_notify(duplicated, ARRAY_SIZE(event), event, WAIT_TIMEOUT);
+                test_notify(duplicated, ARRAY_SIZE(event), event, WAIT_TIMEOUT, FALSE);
 
                 rc=IDirectSoundBuffer_QueryInterface(duplicated,
                                                      &IID_IDirectSoundNotify,
@@ -1189,7 +1208,7 @@ static HRESULT test_duplicate(LPGUID lpGuid)
                        "failed %08x\n",rc);
 
                     trace("testing duplicated buffer with a notification.\n");
-                    test_notify(duplicated, ARRAY_SIZE(event), event, WAIT_OBJECT_0 + 1);
+                    test_notify(duplicated, ARRAY_SIZE(event), event, WAIT_OBJECT_0 + 1, FALSE);
 
                     ref=IDirectSoundNotify_Release(dup_notify);
                     ok(ref==0,"IDirectSoundNotify_Release() has %d references, "
@@ -1200,7 +1219,7 @@ static HRESULT test_duplicate(LPGUID lpGuid)
                    "should have 0\n",ref);
 
                 trace("testing original buffer with a notification.\n");
-                test_notify(original, ARRAY_SIZE(event), event, WAIT_OBJECT_0);
+                test_notify(original, ARRAY_SIZE(event), event, WAIT_OBJECT_0, TRUE);
 
                 ref=IDirectSoundBuffer_Release(duplicated);
                 ok(ref==0,"IDirectSoundBuffer_Release() has %d references, "
@@ -1641,14 +1660,18 @@ static BOOL WINAPI dsenum_callback(LPGUID lpGuid, LPCSTR lpcstrDescription,
     else if (rc == E_FAIL)
         trace("  No Device\n");
     else {
+#if 0
         test_block_align(lpGuid);
         test_primary(lpGuid);
         test_primary_secondary(lpGuid);
         test_secondary(lpGuid);
         test_frequency(lpGuid);
+#endif
         test_duplicate(lpGuid);
+#if 0
         test_invalid_fmts(lpGuid);
         test_notifications(lpGuid);
+#endif
     }
 
     return TRUE;
