diff --git a/dlls/winspool.drv/info.c b/dlls/winspool.drv/info.c index 6d81f52cbab..5201e30451a 100644 --- a/dlls/winspool.drv/info.c +++ b/dlls/winspool.drv/info.c @@ -1775,6 +1775,38 @@ LONG WINAPI DocumentPropertiesW(HWND hWnd, HANDLE hPrinter, return ret; } +/***************************************************************************** + * IsValidDevmodeA [WINSPOOL.@] + * + * Validate a DEVMODE structure and fix errors if possible. + * + */ +BOOL WINAPI IsValidDevmodeA(PDEVMODEA *pDevMode, SIZE_T size) +{ + FIXME("(%p,%ld): stub\n", pDevMode, size); + + if(!pDevMode) + return FALSE; + + return TRUE; +} + +/***************************************************************************** + * IsValidDevmodeW [WINSPOOL.@] + * + * Validate a DEVMODE structure and fix errors if possible. + * + */ +BOOL WINAPI IsValidDevmodeW(PDEVMODEW *pDevMode, SIZE_T size) +{ + FIXME("(%p,%ld): stub\n", pDevMode, size); + + if(!pDevMode) + return FALSE; + + return TRUE; +} + /****************************************************************** * OpenPrinterA [WINSPOOL.@] * diff --git a/dlls/winspool.drv/tests/info.c b/dlls/winspool.drv/tests/info.c index da4fc386fac..2ef049f562d 100644 --- a/dlls/winspool.drv/tests/info.c +++ b/dlls/winspool.drv/tests/info.c @@ -75,6 +75,7 @@ static BOOL (WINAPI * pGetPrinterDriverW)(HANDLE, LPWSTR, DWORD, LPBYTE, DWORD, static BOOL (WINAPI * pGetPrinterW)(HANDLE, DWORD, LPBYTE, DWORD, LPDWORD); static BOOL (WINAPI * pSetDefaultPrinterA)(LPCSTR); static DWORD (WINAPI * pXcvDataW)(HANDLE, LPCWSTR, PBYTE, DWORD, PBYTE, DWORD, PDWORD, PDWORD); +static BOOL (WINAPI * pIsValidDevmodeW)(PDEVMODEW, SIZE_T); /* ################################ */ @@ -2852,6 +2853,26 @@ static void test_DeviceCapabilities(void) GlobalFree(prn_dlg.hDevNames); } +static void test_IsValidDevmodeW(void) +{ + BOOL br; + + if (!pIsValidDevmodeW) + { + win_skip("IsValidDevmodeW not implemented.\n"); + return; + } + + br = pIsValidDevmodeW(NULL, 0); + ok(br == FALSE, "Got %d\n", br); + + br = pIsValidDevmodeW(NULL, 1); + ok(br == FALSE, "Got %d\n", br); + + br = pIsValidDevmodeW(NULL, sizeof(DEVMODEW)); + ok(br == FALSE, "Got %d\n", br); +} + START_TEST(info) { hwinspool = GetModuleHandleA("winspool.drv"); @@ -2863,6 +2884,7 @@ START_TEST(info) pGetPrinterW = (void *) GetProcAddress(hwinspool, "GetPrinterW"); pSetDefaultPrinterA = (void *) GetProcAddress(hwinspool, "SetDefaultPrinterA"); pXcvDataW = (void *) GetProcAddress(hwinspool, "XcvDataW"); + pIsValidDevmodeW = (void *) GetProcAddress(hwinspool, "IsValidDevmodeW"); on_win9x = check_win9x(); if (on_win9x) @@ -2898,6 +2920,7 @@ START_TEST(info) test_SetDefaultPrinter(); test_XcvDataW_MonitorUI(); test_XcvDataW_PortIsValid(); + test_IsValidDevmodeW(); /* Cleanup our temporary file */ DeleteFileA(tempfileA); diff --git a/dlls/winspool.drv/winspool.drv.spec b/dlls/winspool.drv/winspool.drv.spec index 9151b11cd86..bdf346ccf43 100644 --- a/dlls/winspool.drv/winspool.drv.spec +++ b/dlls/winspool.drv/winspool.drv.spec @@ -145,6 +145,8 @@ @ stdcall GetPrinterDriverDirectoryW(wstr wstr long ptr long ptr) @ stdcall GetPrinterDriverW(long wstr long ptr long ptr) @ stdcall GetPrinterW(long long ptr long ptr) +@ stdcall IsValidDevmodeA(ptr long) +@ stdcall IsValidDevmodeW(ptr long) @ stdcall OpenPrinterA(str ptr ptr) @ stdcall OpenPrinterW(wstr ptr ptr) @ stub PlayGdiScriptOnPrinterIC