From 2feb43f57301ebbee7929a82ebf69a3c7df5e49e Mon Sep 17 00:00:00 2001 From: Jeremy White Date: Tue, 24 Nov 2009 07:31:21 -0600 Subject: [PATCH] winspool: Add a test showing Windows behavior wrt size and GetPrinterDriverA. This behavior was discovered by Huw Davies. --- dlls/winspool.drv/tests/info.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/dlls/winspool.drv/tests/info.c b/dlls/winspool.drv/tests/info.c index c6c00662eca..2fb09f3ad92 100644 --- a/dlls/winspool.drv/tests/info.c +++ b/dlls/winspool.drv/tests/info.c @@ -70,6 +70,7 @@ static BOOL (WINAPI * pGetDefaultPrinterA)(LPSTR, LPDWORD); static BOOL (WINAPI * pSetDefaultPrinterA)(LPCSTR); static DWORD (WINAPI * pXcvDataW)(HANDLE, LPCWSTR, PBYTE, DWORD, PBYTE, DWORD, PDWORD, PDWORD); static BOOL (WINAPI * pAddPortExA)(LPSTR, DWORD, LPBYTE, LPSTR); +static BOOL (WINAPI * pGetPrinterDriverW)(HANDLE, LPWSTR, DWORD, LPBYTE, DWORD, LPDWORD); /* ################################ */ @@ -2260,6 +2261,15 @@ static void test_GetPrinterDriver(void) continue; } + /* GetPrinterDriverA returns the same number of bytes as GetPrinterDriverW */ + if (! ret && pGetPrinterDriverW) + { + DWORD double_needed; + ret = pGetPrinterDriverW(hprn, NULL, level, NULL, 0, &double_needed); + todo_wine + ok(double_needed == needed, "GetPrinterDriverA returned different size %d than GetPrinterDriverW (%d)\n", needed, double_needed); + } + buf = HeapAlloc(GetProcessHeap(), 0, needed); SetLastError(0xdeadbeef); @@ -2536,6 +2546,7 @@ START_TEST(info) hwinspool = GetModuleHandleA("winspool.drv"); pGetDefaultPrinterA = (void *) GetProcAddress(hwinspool, "GetDefaultPrinterA"); pSetDefaultPrinterA = (void *) GetProcAddress(hwinspool, "SetDefaultPrinterA"); + pGetPrinterDriverW = (void *) GetProcAddress(hwinspool, "GetPrinterDriverW"); pXcvDataW = (void *) GetProcAddress(hwinspool, "XcvDataW"); pAddPortExA = (void *) GetProcAddress(hwinspool, "AddPortExA");