[LOCALSPL_APITEST]

Put the calls that eventually give us the function pointers to localspl into a separate procedure GetLocalsplFuncs to enable further tests easily.

svn path=/branches/colins-printing-for-freedom/; revision=68194
This commit is contained in:
Colin Finck 2015-06-19 15:05:58 +00:00
parent 1793014ec3
commit a4d50f82ff
2 changed files with 35 additions and 23 deletions

View file

@ -18,40 +18,20 @@
#include "../localspl_apitest.h" #include "../localspl_apitest.h"
#include <spoolss.h> #include <spoolss.h>
extern BOOL GetLocalsplFuncs(LPPRINTPROVIDOR pp);
START_TEST(fpEnumPrinters) START_TEST(fpEnumPrinters)
{ {
DWORD cbNeeded; DWORD cbNeeded;
DWORD cbTemp; DWORD cbTemp;
DWORD dwReturned; DWORD dwReturned;
DWORD i; DWORD i;
HMODULE hLocalspl;
PInitializePrintProvidor pfnInitializePrintProvidor;
PRINTPROVIDOR pp; PRINTPROVIDOR pp;
PPRINTER_INFO_1W pPrinterInfo1; PPRINTER_INFO_1W pPrinterInfo1;
PVOID pMem; PVOID pMem;
// Get us a handle to the loaded localspl.dll. if (!GetLocalsplFuncs(&pp))
hLocalspl = GetModuleHandleW(L"localspl");
if (!hLocalspl)
{
skip("GetModuleHandleW failed with error %lu!\n", GetLastError());
return; return;
}
// Get a pointer to its InitializePrintProvidor function.
pfnInitializePrintProvidor = (PInitializePrintProvidor)GetProcAddress(hLocalspl, "InitializePrintProvidor");
if (!pfnInitializePrintProvidor)
{
skip("GetProcAddress failed with error %lu!\n", GetLastError());
return;
}
// Get localspl's function pointers.
if (!pfnInitializePrintProvidor(&pp, sizeof(pp), NULL))
{
skip("pfnInitializePrintProvidor failed with error %lu!\n", GetLastError());
return;
}
// Verify that localspl only returns information about a single print provider (namely itself). // Verify that localspl only returns information about a single print provider (namely itself).
cbNeeded = 0xDEADBEEF; cbNeeded = 0xDEADBEEF;

View file

@ -34,6 +34,38 @@ const struct test winetest_testlist[] =
{ 0, 0 } { 0, 0 }
}; };
BOOL
GetLocalsplFuncs(LPPRINTPROVIDOR pp)
{
HMODULE hLocalspl;
PInitializePrintProvidor pfnInitializePrintProvidor;
// Get us a handle to the loaded localspl.dll.
hLocalspl = GetModuleHandleW(L"localspl");
if (!hLocalspl)
{
skip("GetModuleHandleW failed with error %u!\n", GetLastError());
return FALSE;
}
// Get a pointer to its InitializePrintProvidor function.
pfnInitializePrintProvidor = (PInitializePrintProvidor)GetProcAddress(hLocalspl, "InitializePrintProvidor");
if (!pfnInitializePrintProvidor)
{
skip("GetProcAddress failed with error %u!\n", GetLastError());
return FALSE;
}
// Get localspl's function pointers.
if (!pfnInitializePrintProvidor(pp, sizeof(PRINTPROVIDOR), NULL))
{
skip("pfnInitializePrintProvidor failed with error %u!\n", GetLastError());
return FALSE;
}
return TRUE;
}
// Running the tests from the injected DLL and redirecting their output to the pipe. // Running the tests from the injected DLL and redirecting their output to the pipe.
BOOL WINAPI BOOL WINAPI
DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)