spoolss: Implement SplInitializeWinSpoolDrv.

This commit is contained in:
Detlef Riekenberg 2007-10-03 00:55:55 +02:00 committed by Alexandre Julliard
parent 3e6307f20a
commit a2b70095f6
2 changed files with 49 additions and 1 deletions

View File

@ -121,7 +121,7 @@
@ stub SplCommitSpoolData
@ stub SplDriverUnloadComplete
@ stub SplGetSpoolFileInfo
@ stub SplInitializeWinSpoolDrv
@ stdcall SplInitializeWinSpoolDrv(ptr)
@ stub SplIsUpgrade
@ stub SplProcessPnPEvent
@ stub SplReadPrinter

View File

@ -27,6 +27,10 @@
WINE_DEFAULT_DEBUG_CHANNEL(spoolss);
/* ################################ */
static HMODULE hwinspool;
static const WCHAR winspooldrvW[] = {'w','i','n','s','p','o','o','l','.','d','r','v',0};
/******************************************************************
*
@ -161,3 +165,47 @@ HANDLE WINAPI RevertToPrinterSelf(void)
FIXME("() stub\n");
return NULL;
}
/******************************************************************
* SplInitializeWinSpoolDrv [SPOOLSS.@]
*
* Dynamic load "winspool.drv" and fill an array with some function-pointer
*
* PARAMS
* table [I] array of function-pointer to fill
*
* RETURNS
* Success: TRUE
* Failure: FALSE
*
* NOTES
* Native "spoolss.dll" from w2k fill the table with 11 Function-Pointer.
* We implement the XP-Version (The table has only 9 Pointer)
*
*/
BOOL WINAPI SplInitializeWinSpoolDrv(LPVOID * table)
{
DWORD res;
TRACE("(%p)\n", table);
hwinspool = LoadLibraryW(winspooldrvW);
if (!hwinspool) return FALSE;
table[0] = (void *) GetProcAddress(hwinspool, "OpenPrinterW");
table[1] = (void *) GetProcAddress(hwinspool, "ClosePrinter");
table[2] = (void *) GetProcAddress(hwinspool, "SpoolerDevQueryPrintW");
table[3] = (void *) GetProcAddress(hwinspool, "SpoolerPrinterEvent");
table[4] = (void *) GetProcAddress(hwinspool, "DocumentPropertiesW");
table[5] = (void *) GetProcAddress(hwinspool, (LPSTR) 212); /* LoadPrinterDriver */
table[6] = (void *) GetProcAddress(hwinspool, (LPSTR) 213); /* RefCntLoadDriver */
table[7] = (void *) GetProcAddress(hwinspool, (LPSTR) 214); /* RefCntUnloadDriver */
table[8] = (void *) GetProcAddress(hwinspool, (LPSTR) 215); /* ForceUnloadDriver */
for (res = 0; res < 9; res++) {
if (table[res] == NULL) return FALSE;
}
return TRUE;
}