⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 propset.c

📁 一个类似windows
💻 C
📖 第 1 页 / 共 3 页
字号:
        ok(rc==DS_OK, "Couldn't enumerate: 0x%lx\n",rc);    }    /* test DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A */    trace("*** Testing DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A ***\n");    rc = IKsPropertySet_QuerySupport(pps, &DSPROPSETID_DirectSoundDevice,                                   DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A,                                   &support);    ok(rc==DS_OK, "QuerySupport(DSPROPSETID_DirectSoundDevice, "       "DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A) failed: %s\n",       DXGetErrorString8(rc));    if (rc!=DS_OK)        goto error;    ok(support & KSPROPERTY_SUPPORT_GET,       "Couldn't get DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A: "       "support = 0x%lx\n",support);    ok(!(support & KSPROPERTY_SUPPORT_SET),"Shouldn't be able to set "       "DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A: support = 0x%lx\n",support);    if (support & KSPROPERTY_SUPPORT_GET) {        DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A_DATA data;        ULONG bytes;        data.Callback = callbackA;        data.Context = 0;        rc = IKsPropertySet_Get(pps, &DSPROPSETID_DirectSoundDevice,                              DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_A,                              NULL, 0, &data, sizeof(data), &bytes);        ok(rc==DS_OK, "Couldn't enumerate: 0x%lx\n",rc);    }    /* test DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W */    trace("*** Testing DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W ***\n");    rc = IKsPropertySet_QuerySupport(pps, &DSPROPSETID_DirectSoundDevice,                                   DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W,                                   &support);    ok(rc==DS_OK, "QuerySupport(DSPROPSETID_DirectSoundDevice, "       "DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W) failed: %s\n",       DXGetErrorString8(rc));    if (rc!=DS_OK)        goto error;    ok(support & KSPROPERTY_SUPPORT_GET,       "Couldn't get DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W: "       "support = 0x%lx\n",support);    ok(!(support & KSPROPERTY_SUPPORT_SET),"Shouldn't be able to set "       "DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W: support = 0x%lx\n",support);    if (support & KSPROPERTY_SUPPORT_GET) {        DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W_DATA data;        ULONG bytes;        data.Callback = callbackW;        data.Context = 0;        rc = IKsPropertySet_Get(pps, &DSPROPSETID_DirectSoundDevice,                              DSPROPERTY_DIRECTSOUNDDEVICE_ENUMERATE_W,                              NULL, 0, &data, sizeof(data), &bytes);        ok(rc==DS_OK, "Couldn't enumerate: 0x%lx\n",rc);    }error:    FreeLibrary(hDsound);}static BOOL WINAPI dsenum_callback(LPGUID lpGuid, LPCSTR lpcstrDescription,                                   LPCSTR lpcstrModule, LPVOID lpContext){    HRESULT rc;    LPDIRECTSOUND dso=NULL;    LPDIRECTSOUNDBUFFER primary=NULL,secondary=NULL;    DSBUFFERDESC bufdesc;    WAVEFORMATEX wfx;    int ref;    trace("*** Testing %s - %s ***\n",lpcstrDescription,lpcstrModule);    rc=DirectSoundCreate(lpGuid,&dso,NULL);    ok(rc==DS_OK||rc==DSERR_NODRIVER||rc==DSERR_ALLOCATED||rc==E_FAIL,       "DirectSoundCreate() failed: %s\n",DXGetErrorString8(rc));    if (rc!=DS_OK) {        if (rc==DSERR_NODRIVER)            trace("  No Driver\n");        else if (rc == DSERR_ALLOCATED)            trace("  Already In Use\n");        else if (rc == E_FAIL)            trace("  No Device\n");        goto EXIT;    }    /* We must call SetCooperativeLevel before calling CreateSoundBuffer */    /* DSOUND: Setting DirectSound cooperative level to DSSCL_PRIORITY */    rc=IDirectSound_SetCooperativeLevel(dso,get_hwnd(),DSSCL_PRIORITY);    ok(rc==DS_OK,"IDirectSound_SetCooperativeLevel() failed: %s\n",       DXGetErrorString8(rc));    if (rc!=DS_OK)        goto EXIT;    /* Testing 3D buffers */    primary=NULL;    ZeroMemory(&bufdesc, sizeof(bufdesc));    bufdesc.dwSize=sizeof(bufdesc);    bufdesc.dwFlags=DSBCAPS_PRIMARYBUFFER|DSBCAPS_LOCHARDWARE|DSBCAPS_CTRL3D;    rc=IDirectSound_CreateSoundBuffer(dso,&bufdesc,&primary,NULL);    ok(rc==DS_OK&&primary!=NULL,"IDirectSound_CreateSoundBuffer() failed to "       "create a hardware 3D primary buffer: %s\n",DXGetErrorString8(rc));    if (rc==DS_OK&&primary!=NULL) {        ZeroMemory(&wfx, sizeof(wfx));        wfx.wFormatTag=WAVE_FORMAT_PCM;        wfx.nChannels=1;        wfx.wBitsPerSample=16;        wfx.nSamplesPerSec=44100;        wfx.nBlockAlign=wfx.nChannels*wfx.wBitsPerSample/8;        wfx.nAvgBytesPerSec=wfx.nSamplesPerSec*wfx.nBlockAlign;        ZeroMemory(&bufdesc, sizeof(bufdesc));        bufdesc.dwSize=sizeof(bufdesc);        bufdesc.dwFlags=DSBCAPS_CTRLDEFAULT|DSBCAPS_GETCURRENTPOSITION2;        bufdesc.dwBufferBytes=wfx.nAvgBytesPerSec;        bufdesc.lpwfxFormat=&wfx;        trace("  Testing a secondary buffer at %ldx%dx%d\n",            wfx.nSamplesPerSec,wfx.wBitsPerSample,wfx.nChannels);        rc=IDirectSound_CreateSoundBuffer(dso,&bufdesc,&secondary,NULL);        ok(rc==DS_OK&&secondary!=NULL,"IDirectSound_CreateSoundBuffer() "           "failed to create a secondary buffer: %s\n",DXGetErrorString8(rc));        if (rc==DS_OK&&secondary!=NULL) {            IKsPropertySet * pPropertySet=NULL;            rc=IDirectSoundBuffer_QueryInterface(secondary,                                                 &IID_IKsPropertySet,                                                 (void **)&pPropertySet);            /* it's not an error for this to fail */            if(rc==DS_OK) {                ULONG ulTypeSupport;                trace("  Supports property sets\n");                /* it's not an error for these to fail */                rc=IKsPropertySet_QuerySupport(pPropertySet,                                               &DSPROPSETID_VoiceManager,                                               0,&ulTypeSupport);                if((rc==DS_OK)&&(ulTypeSupport&(KSPROPERTY_SUPPORT_GET|                                                KSPROPERTY_SUPPORT_SET)))                    trace("    DSPROPSETID_VoiceManager supported\n");                else                    trace("    DSPROPSETID_VoiceManager not supported\n");                rc=IKsPropertySet_QuerySupport(pPropertySet,                    &DSPROPSETID_EAX20_ListenerProperties,0,&ulTypeSupport);                if((rc==DS_OK)&&(ulTypeSupport&(KSPROPERTY_SUPPORT_GET|                    KSPROPERTY_SUPPORT_SET)))                    trace("    DSPROPSETID_EAX20_ListenerProperties "                          "supported\n");                else                    trace("    DSPROPSETID_EAX20_ListenerProperties not "                          "supported\n");                rc=IKsPropertySet_QuerySupport(pPropertySet,                    &DSPROPSETID_EAX20_BufferProperties,0,&ulTypeSupport);                if((rc==DS_OK)&&(ulTypeSupport&(KSPROPERTY_SUPPORT_GET|                    KSPROPERTY_SUPPORT_SET)))                    trace("    DSPROPSETID_EAX20_BufferProperties supported\n");                else                    trace("    DSPROPSETID_EAX20_BufferProperties not "                          "supported\n");                rc=IKsPropertySet_QuerySupport(pPropertySet,                    &DSPROPSETID_I3DL2_ListenerProperties,0,&ulTypeSupport);                if((rc==DS_OK)&&(ulTypeSupport&(KSPROPERTY_SUPPORT_GET|                    KSPROPERTY_SUPPORT_SET)))                    trace("    DSPROPSETID_I3DL2_ListenerProperties "                          "supported\n");                else                    trace("    DSPROPSETID_I3DL2_ListenerProperties not "                          "supported\n");                rc=IKsPropertySet_QuerySupport(pPropertySet,                    &DSPROPSETID_I3DL2_BufferProperties,0,&ulTypeSupport);                if((rc==DS_OK)&&(ulTypeSupport&(KSPROPERTY_SUPPORT_GET|                    KSPROPERTY_SUPPORT_SET)))                    trace("    DSPROPSETID_I3DL2_BufferProperties supported\n");                else                    trace("    DSPROPSETID_I3DL2_BufferProperties not "                          "supported\n");                rc=IKsPropertySet_QuerySupport(pPropertySet,                    &DSPROPSETID_ZOOMFX_BufferProperties,0,&ulTypeSupport);                if((rc==DS_OK)&&(ulTypeSupport&(KSPROPERTY_SUPPORT_GET|                    KSPROPERTY_SUPPORT_SET)))                    trace("    DSPROPSETID_ZOOMFX_BufferProperties "                          "supported\n");                else                    trace("    DSPROPSETID_ZOOMFX_BufferProperties not "                          "supported\n");                ref=IKsPropertySet_Release(pPropertySet);                /* try a few common ones */                ok(ref==0,"IKsPropertySet_Release() secondary has %d "                   "references, should have 0\n",ref);            } else                trace("  Doesn't support property sets\n");            ref=IDirectSoundBuffer_Release(secondary);            ok(ref==0,"IDirectSoundBuffer_Release() secondary has %d "               "references, should have 0\n",ref);        }        ref=IDirectSoundBuffer_Release(primary);        ok(ref==0,"IDirectSoundBuffer_Release() primary has %d references, "           "should have 0\n",ref);    }EXIT:    if (dso!=NULL) {        ref=IDirectSound_Release(dso);        ok(ref==0,"IDirectSound_Release() has %d references, should have 0\n",           ref);    }    return 1;}static void propset_buffer_tests(void){    HRESULT rc;    rc=DirectSoundEnumerateA(&dsenum_callback,NULL);    ok(rc==DS_OK,"DirectSoundEnumerateA() failed: %s\n",DXGetErrorString8(rc));}START_TEST(propset){    HMODULE hDsound;    CoInitialize(NULL);    hDsound = LoadLibraryA("dsound.dll");    if (!hDsound) {        trace("dsound.dll not found\n");        return;    }    trace("DLL Version: %s\n", get_file_version("dsound.dll"));    pDirectSoundCreate8 = (void*)GetProcAddress(hDsound, "DirectSoundCreate8");    pDirectSoundCaptureCreate=(void*)GetProcAddress(hDsound,"DirectSoundCaptureCreate");    pDirectSoundCaptureCreate8=(void*)GetProcAddress(hDsound,"DirectSoundCaptureCreate8");    pDirectSoundFullDuplexCreate=(void*)GetProcAddress(hDsound,"DirectSoundFullDuplexCreate");    propset_private_tests();    propset_buffer_tests();    CoUninitialize();}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -