ddraw: Implement and test DirectDrawEnumerateExW.
This commit is contained in:
parent
3496fe5f43
commit
7211f7ce18
|
@ -8,7 +8,7 @@
|
||||||
@ stdcall DirectDrawCreateEx(ptr ptr ptr ptr)
|
@ stdcall DirectDrawCreateEx(ptr ptr ptr ptr)
|
||||||
@ stdcall DirectDrawEnumerateA(ptr ptr)
|
@ stdcall DirectDrawEnumerateA(ptr ptr)
|
||||||
@ stdcall DirectDrawEnumerateExA(ptr ptr long)
|
@ stdcall DirectDrawEnumerateExA(ptr ptr long)
|
||||||
@ stub DirectDrawEnumerateExW
|
@ stdcall DirectDrawEnumerateExW(ptr ptr long)
|
||||||
@ stdcall DirectDrawEnumerateW(ptr ptr)
|
@ stdcall DirectDrawEnumerateW(ptr ptr)
|
||||||
@ stdcall -private DllCanUnloadNow()
|
@ stdcall -private DllCanUnloadNow()
|
||||||
@ stdcall -private DllGetClassObject(ptr ptr ptr)
|
@ stdcall -private DllGetClassObject(ptr ptr ptr)
|
||||||
|
|
|
@ -456,12 +456,19 @@ DirectDrawEnumerateW(LPDDENUMCALLBACKW Callback,
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* DirectDrawEnumerateExW (DDRAW.@)
|
* DirectDrawEnumerateExW (DDRAW.@)
|
||||||
*
|
*
|
||||||
* Enumerates DirectDraw7 drivers, unicode version. See
|
* Enumerates DirectDraw7 drivers, unicode version.
|
||||||
* the comments above DirectDrawEnumerateA for more details.
|
* This function is not implemented on Windows.
|
||||||
*
|
|
||||||
* The Flag member is not supported right now.
|
|
||||||
*
|
*
|
||||||
***********************************************************************/
|
***********************************************************************/
|
||||||
|
HRESULT WINAPI
|
||||||
|
DirectDrawEnumerateExW(LPDDENUMCALLBACKEXW Callback,
|
||||||
|
LPVOID Context,
|
||||||
|
DWORD Flags)
|
||||||
|
{
|
||||||
|
TRACE("(%p, %p, 0x%x)\n", Callback, Context, Flags);
|
||||||
|
|
||||||
|
return DDERR_UNSUPPORTED;
|
||||||
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* Classfactory implementation.
|
* Classfactory implementation.
|
||||||
|
|
|
@ -41,6 +41,7 @@ static LPDDSURFACEDESC modes;
|
||||||
static HRESULT (WINAPI *pDirectDrawEnumerateA)(LPDDENUMCALLBACKA,LPVOID);
|
static HRESULT (WINAPI *pDirectDrawEnumerateA)(LPDDENUMCALLBACKA,LPVOID);
|
||||||
static HRESULT (WINAPI *pDirectDrawEnumerateW)(LPDDENUMCALLBACKW,LPVOID);
|
static HRESULT (WINAPI *pDirectDrawEnumerateW)(LPDDENUMCALLBACKW,LPVOID);
|
||||||
static HRESULT (WINAPI *pDirectDrawEnumerateExA)(LPDDENUMCALLBACKEXA,LPVOID,DWORD);
|
static HRESULT (WINAPI *pDirectDrawEnumerateExA)(LPDDENUMCALLBACKEXA,LPVOID,DWORD);
|
||||||
|
static HRESULT (WINAPI *pDirectDrawEnumerateExW)(LPDDENUMCALLBACKEXW,LPVOID,DWORD);
|
||||||
|
|
||||||
static void init_function_pointers(void)
|
static void init_function_pointers(void)
|
||||||
{
|
{
|
||||||
|
@ -48,6 +49,7 @@ static void init_function_pointers(void)
|
||||||
pDirectDrawEnumerateA = (void*)GetProcAddress(hmod, "DirectDrawEnumerateA");
|
pDirectDrawEnumerateA = (void*)GetProcAddress(hmod, "DirectDrawEnumerateA");
|
||||||
pDirectDrawEnumerateW = (void*)GetProcAddress(hmod, "DirectDrawEnumerateW");
|
pDirectDrawEnumerateW = (void*)GetProcAddress(hmod, "DirectDrawEnumerateW");
|
||||||
pDirectDrawEnumerateExA = (void*)GetProcAddress(hmod, "DirectDrawEnumerateExA");
|
pDirectDrawEnumerateExA = (void*)GetProcAddress(hmod, "DirectDrawEnumerateExA");
|
||||||
|
pDirectDrawEnumerateExW = (void*)GetProcAddress(hmod, "DirectDrawEnumerateExW");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void createwindow(void)
|
static void createwindow(void)
|
||||||
|
@ -273,6 +275,50 @@ static void test_DirectDrawEnumerateExA(void)
|
||||||
ok(ret == DD_OK, "Expected DD_OK, got %d\n", ret);
|
ok(ret == DD_OK, "Expected DD_OK, got %d\n", ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static BOOL WINAPI test_callbackExW(GUID *lpGUID, LPWSTR lpDriverDescription,
|
||||||
|
LPWSTR lpDriverName, LPVOID lpContext,
|
||||||
|
HMONITOR hm)
|
||||||
|
{
|
||||||
|
ok(0, "The callback should not be invoked by DirectDrawEnumerateExW.\n");
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void test_DirectDrawEnumerateExW(void)
|
||||||
|
{
|
||||||
|
HRESULT ret;
|
||||||
|
|
||||||
|
if (!pDirectDrawEnumerateExW)
|
||||||
|
{
|
||||||
|
win_skip("DirectDrawEnumerateExW is not available\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* DirectDrawEnumerateExW is not implemented on Windows. */
|
||||||
|
|
||||||
|
/* Test with NULL callback parameter. */
|
||||||
|
ret = pDirectDrawEnumerateExW(NULL, NULL, 0);
|
||||||
|
ok(ret == DDERR_UNSUPPORTED, "Expected DDERR_UNSUPPORTED, got %d\n", ret);
|
||||||
|
|
||||||
|
/* Test with invalid callback parameter. */
|
||||||
|
ret = pDirectDrawEnumerateExW((LPDDENUMCALLBACKEXW)0xdeadbeef, NULL, 0);
|
||||||
|
ok(ret == DDERR_UNSUPPORTED, "Expected DDERR_UNSUPPORTED, got %d\n", ret);
|
||||||
|
|
||||||
|
/* Test with valid callback parameter and invalid flags */
|
||||||
|
ret = pDirectDrawEnumerateExW(test_callbackExW, NULL, ~0);
|
||||||
|
ok(ret == DDERR_UNSUPPORTED, "Expected DDERR_UNSUPPORTED, got %d\n", ret);
|
||||||
|
|
||||||
|
/* Test with valid callback parameter and NULL context parameter. */
|
||||||
|
ret = pDirectDrawEnumerateExW(test_callbackExW, NULL, 0);
|
||||||
|
ok(ret == DDERR_UNSUPPORTED, "Expected DDERR_UNSUPPORTED, got %d\n", ret);
|
||||||
|
|
||||||
|
/* Test with valid callback parameter, NULL context parameter, and all flags set. */
|
||||||
|
ret = pDirectDrawEnumerateExW(test_callbackExW, NULL,
|
||||||
|
DDENUM_ATTACHEDSECONDARYDEVICES |
|
||||||
|
DDENUM_DETACHEDSECONDARYDEVICES |
|
||||||
|
DDENUM_NONDISPLAYDEVICES);
|
||||||
|
ok(ret == DDERR_UNSUPPORTED, "Expected DDERR_UNSUPPORTED, got %d\n", ret);
|
||||||
|
}
|
||||||
|
|
||||||
static void adddisplaymode(LPDDSURFACEDESC lpddsd)
|
static void adddisplaymode(LPDDSURFACEDESC lpddsd)
|
||||||
{
|
{
|
||||||
if (!modes)
|
if (!modes)
|
||||||
|
@ -603,6 +649,7 @@ START_TEST(ddrawmodes)
|
||||||
test_DirectDrawEnumerateA();
|
test_DirectDrawEnumerateA();
|
||||||
test_DirectDrawEnumerateW();
|
test_DirectDrawEnumerateW();
|
||||||
test_DirectDrawEnumerateExA();
|
test_DirectDrawEnumerateExA();
|
||||||
|
test_DirectDrawEnumerateExW();
|
||||||
|
|
||||||
enumdisplaymodes();
|
enumdisplaymodes();
|
||||||
if (winetest_interactive)
|
if (winetest_interactive)
|
||||||
|
|
Loading…
Reference in New Issue