2 * Implementation of some printer driver bits
4 * Copyright 1996 John Harvey
5 * Copyright 1998 Andreas Mohr
18 static char PrinterModel
[] = "Printer Model";
19 static char DefaultDevMode
[] = "Default DevMode";
20 static char PrinterDriverData
[] = "PrinterDriverData";
21 static char Printers
[] = "System\\CurrentControlSet\\Control\\Print\\Printers\\";
23 /******************************************************************
24 * StartDoc16 [GDI.377]
27 INT16 WINAPI
StartDoc16( HDC16 hdc
, const DOCINFO16
*lpdoc
)
30 TRACE(print
,"(%p)\n", lpdoc
);
31 TRACE(print
,"%d 0x%lx:0x%p 0x%lx:0x%p\n",lpdoc
->cbSize
,
32 lpdoc
->lpszDocName
,PTR_SEG_TO_LIN(lpdoc
->lpszDocName
),
33 lpdoc
->lpszOutput
,PTR_SEG_TO_LIN(lpdoc
->lpszOutput
));
34 TRACE(print
, "%d %s %s\n",lpdoc
->cbSize
,
35 (LPSTR
)PTR_SEG_TO_LIN(lpdoc
->lpszDocName
),
36 (LPSTR
)PTR_SEG_TO_LIN(lpdoc
->lpszOutput
));
37 retVal
= Escape16(hdc
, STARTDOC
,
38 strlen((LPSTR
)PTR_SEG_TO_LIN(lpdoc
->lpszDocName
)), lpdoc
->lpszDocName
, 0);
39 TRACE(print
,"Escape16 returned %d\n",retVal
);
43 /******************************************************************
47 INT16 WINAPI
EndPage16( HDC16 hdc
)
50 retVal
= Escape16(hdc
, NEWFRAME
, 0, 0, 0);
51 TRACE(print
,"Escape16 returned %d\n",retVal
);
55 /******************************************************************
56 * StartDoc32A [GDI32.347]
59 INT32 WINAPI
StartDoc32A(HDC32 hdc
,const DOCINFO32A
* doc
)
62 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
63 return 0; /* failure*/
66 /*************************************************************************
67 * StartDoc32W [GDI32.348]
70 INT32 WINAPI
StartDoc32W(HDC32 hdc
, const DOCINFO32W
* doc
) {
72 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
73 return 0; /* failure*/
76 /******************************************************************
77 * StartPage32 [GDI32.349]
80 INT32 WINAPI
StartPage32(HDC32 hdc
)
83 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
84 return 0; /* failure*/
87 /******************************************************************
88 * EndPage32 [GDI32.77]
91 INT32 WINAPI
EndPage32(HDC32 hdc
)
94 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
95 return 0; /* failure*/
98 /******************************************************************
102 INT16 WINAPI
EndDoc16(HDC16 hdc
)
104 return Escape16(hdc
, ENDDOC
, 0, 0, 0);
107 /******************************************************************
108 * EndDoc32 [GDI32.76]
111 INT32 WINAPI
EndDoc32(HDC32 hdc
)
114 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
115 return 0; /* failure*/
118 /******************************************************************************
119 * AbortDoc16 [GDI.382]
121 INT16 WINAPI
AbortDoc16(HDC16 hdc
)
123 return Escape16(hdc
, ABORTDOC
, 0, 0, 0);
126 /******************************************************************************
127 * AbortDoc32 [GDI32.0]
129 INT32 WINAPI
AbortDoc32(HDC32 hdc
)
131 FIXME(gdi
, "(%d): stub\n", hdc
);
135 /******************************************************************
136 * DrvGetPrinterDataInternal
138 * Helper for DrvGetPrinterData
140 static DWORD
DrvGetPrinterDataInternal(LPSTR RegStr_Printer
,
141 LPBYTE lpPrinterData
, int cbData
, int what
)
145 DWORD dwType
, cbQueryData
;
147 if (!(RegOpenKey32A(HKEY_LOCAL_MACHINE
, RegStr_Printer
, &hkey
))) {
148 if (what
== INT_PD_DEFAULT_DEVMODE
) { /* "Default DevMode" */
149 if (!(RegQueryValueEx32A(hkey
, DefaultDevMode
, 0, &dwType
, 0, &cbQueryData
))) {
152 else if ((cbQueryData
) && (cbQueryData
<= cbData
)) {
153 cbQueryData
= cbData
;
154 if (RegQueryValueEx32A(hkey
, DefaultDevMode
, 0,
155 &dwType
, lpPrinterData
, &cbQueryData
))
159 } else { /* "Printer Driver" */
161 RegQueryValueEx32A(hkey
, "Printer Driver", 0,
162 &dwType
, lpPrinterData
, &cbQueryData
);
166 if (hkey
) RegCloseKey(hkey
);
170 /******************************************************************
171 * DrvGetPrinterData [GDI.282]
174 DWORD WINAPI
DrvGetPrinterData(LPSTR lpPrinter
, LPSTR lpProfile
,
175 LPDWORD lpType
, LPBYTE lpPrinterData
,
176 int cbData
, LPDWORD lpNeeded
)
178 LPSTR RegStr_Printer
;
179 HKEY hkey
= 0, hkey2
= 0;
181 DWORD dwType
, PrinterAttr
, cbPrinterAttr
, SetData
, size
;
183 if (HIWORD(lpPrinter
))
184 TRACE(print
,"printer %s\n",lpPrinter
);
186 TRACE(print
,"printer %p\n",lpPrinter
);
187 if (HIWORD(lpProfile
))
188 TRACE(print
,"profile %s\n",lpProfile
);
190 TRACE(print
,"profile %p\n",lpProfile
);
191 TRACE(print
,"lpType %p\n",lpType
);
193 if ((!lpPrinter
) || (!lpProfile
) || (!lpNeeded
))
194 return ERROR_INVALID_PARAMETER
;
196 RegStr_Printer
= HeapAlloc(GetProcessHeap(), 0,
197 strlen(Printers
) + strlen(lpPrinter
) + 2);
198 strcpy(RegStr_Printer
, Printers
);
199 strcat(RegStr_Printer
, lpPrinter
);
201 if (((DWORD
)lpProfile
== INT_PD_DEFAULT_DEVMODE
) || (HIWORD(lpProfile
) &&
202 (!strcmp(lpProfile
, DefaultDevMode
)))) {
203 size
= DrvGetPrinterDataInternal(RegStr_Printer
, lpPrinterData
, cbData
,
204 INT_PD_DEFAULT_DEVMODE
);
207 if ((lpPrinterData
) && (*lpNeeded
> cbData
))
208 res
= ERROR_MORE_DATA
;
210 else res
= ERROR_INVALID_PRINTER_NAME
;
213 if (((DWORD
)lpProfile
== INT_PD_DEFAULT_MODEL
) || (HIWORD(lpProfile
) &&
214 (!strcmp(lpProfile
, PrinterModel
)))) {
216 if (!lpPrinterData
) goto failed
;
218 res
= ERROR_MORE_DATA
;
221 size
= DrvGetPrinterDataInternal(RegStr_Printer
, lpPrinterData
, cbData
,
222 INT_PD_DEFAULT_MODEL
);
223 if ((size
+1) && (lpType
))
226 res
= ERROR_INVALID_PRINTER_NAME
;
230 if ((res
= RegOpenKey32A(HKEY_LOCAL_MACHINE
, RegStr_Printer
, &hkey
)))
233 if ((res
= RegQueryValueEx32A(hkey
, "Attributes", 0,
234 &dwType
, (LPBYTE
)&PrinterAttr
, &cbPrinterAttr
)))
236 if ((res
= RegOpenKey32A(hkey
, PrinterDriverData
, &hkey2
)))
239 res
= RegQueryValueEx32A(hkey2
, lpProfile
, 0,
240 lpType
, lpPrinterData
, lpNeeded
);
241 if ((res
!= ERROR_CANTREAD
) &&
243 (PRINTER_ATTRIBUTE_ENABLE_BIDI
|PRINTER_ATTRIBUTE_NETWORK
))
244 == PRINTER_ATTRIBUTE_NETWORK
))
246 if (!(res
) && (*lpType
== REG_DWORD
) && (*(LPDWORD
)lpPrinterData
== -1))
247 res
= ERROR_INVALID_DATA
;
252 RegSetValueEx32A(hkey2
, lpProfile
, 0, REG_DWORD
, (LPBYTE
)&SetData
, 4); /* no result returned */
257 if (hkey2
) RegCloseKey(hkey2
);
258 if (hkey
) RegCloseKey(hkey
);
259 HeapFree(GetProcessHeap(), 0, RegStr_Printer
);
264 /******************************************************************
265 * DrvSetPrinterData [GDI.281]
268 DWORD WINAPI
DrvSetPrinterData(LPSTR lpPrinter
, LPSTR lpProfile
,
269 DWORD lpType
, LPBYTE lpPrinterData
,
272 LPSTR RegStr_Printer
;
276 if (HIWORD(lpPrinter
))
277 TRACE(print
,"printer %s\n",lpPrinter
);
279 TRACE(print
,"printer %p\n",lpPrinter
);
280 if (HIWORD(lpProfile
))
281 TRACE(print
,"profile %s\n",lpProfile
);
283 TRACE(print
,"profile %p\n",lpProfile
);
284 TRACE(print
,"lpType %08lx\n",lpType
);
286 if ((!lpPrinter
) || (!lpProfile
) ||
287 ((DWORD
)lpProfile
== INT_PD_DEFAULT_MODEL
) || (HIWORD(lpProfile
) &&
288 (!strcmp(lpProfile
, PrinterModel
))))
289 return ERROR_INVALID_PARAMETER
;
291 RegStr_Printer
= HeapAlloc(GetProcessHeap(), 0,
292 strlen(Printers
) + strlen(lpPrinter
) + 2);
293 strcpy(RegStr_Printer
, Printers
);
294 strcat(RegStr_Printer
, lpPrinter
);
296 if (((DWORD
)lpProfile
== INT_PD_DEFAULT_DEVMODE
) || (HIWORD(lpProfile
) &&
297 (!strcmp(lpProfile
, DefaultDevMode
)))) {
298 if ( RegOpenKey32A(HKEY_LOCAL_MACHINE
, RegStr_Printer
, &hkey
)
300 RegSetValueEx32A(hkey
, DefaultDevMode
, 0, REG_BINARY
,
301 lpPrinterData
, dwSize
) != ERROR_SUCCESS
)
302 res
= ERROR_INVALID_PRINTER_NAME
;
306 strcat(RegStr_Printer
, "\\");
308 if( (res
= RegOpenKey32A(HKEY_LOCAL_MACHINE
, RegStr_Printer
, &hkey
)) ==
312 res
= RegDeleteValue32A(hkey
, lpProfile
);
314 res
= RegSetValueEx32A(hkey
, lpProfile
, 0, lpType
,
315 lpPrinterData
, dwSize
);
319 if (hkey
) RegCloseKey(hkey
);
320 HeapFree(GetProcessHeap(), 0, RegStr_Printer
);
325 /******************************************************************
326 * DeviceCapabilities32A [WINSPOOL.151]
329 INT32 WINAPI
DeviceCapabilities32A(LPCSTR printer
,LPCSTR target
,WORD z
,
330 LPSTR a
,LPDEVMODE32A b
)
332 FIXME(print
,"(%s,%s,%d,%p,%p):stub.\n",printer
,target
,z
,a
,b
);
337 /*****************************************************************************
338 * DeviceCapabilities32W
340 INT32 WINAPI
DeviceCapabilities32W(LPCWSTR pDevice
, LPCWSTR pPort
,
341 WORD fwCapability
, LPWSTR pOutput
,
342 const DEVMODE32W
*pDevMode
)
344 FIXME(print
,"(%p,%p,%d,%p,%p): stub\n",
345 pDevice
, pPort
, fwCapability
, pOutput
, pDevMode
);
349 /******************************************************************
350 * DocumentProperties32A [WINSPOOL.155]
353 LONG WINAPI
DocumentProperties32A(HWND32 hWnd
,HANDLE32 hPrinter
,
354 LPSTR pDeviceName
, LPDEVMODE32A pDevModeOutput
,
355 LPDEVMODE32A pDevModeInput
,DWORD fMode
)
357 FIXME(print
,"(%d,%d,%s,%p,%p,%ld):stub.\n",
358 hWnd
,hPrinter
,pDeviceName
,pDevModeOutput
,pDevModeInput
,fMode
364 /*****************************************************************************
365 * DocumentProperties32W
367 LONG WINAPI
DocumentProperties32W(HWND32 hWnd
, HANDLE32 hPrinter
,
369 LPDEVMODE32W pDevModeOutput
,
370 LPDEVMODE32W pDevModeInput
, DWORD fMode
)
372 FIXME(print
,"(%d,%d,%s,%p,%p,%ld): stub\n",
373 hWnd
,hPrinter
,debugstr_w(pDeviceName
),pDevModeOutput
,pDevModeInput
,
379 /******************************************************************
380 * OpenPrinter32A [WINSPOOL.196]
383 BOOL32 WINAPI
OpenPrinter32A(LPSTR lpPrinterName
,HANDLE32
*phPrinter
,
384 LPPRINTER_DEFAULTS32A pDefault
)
386 FIXME(print
,"(%s,%p,%p):stub\n",debugstr_a(lpPrinterName
), phPrinter
,
388 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
392 /******************************************************************
393 * OpenPrinter32W [WINSPOOL.197]
396 BOOL32 WINAPI
OpenPrinter32W(LPWSTR lpPrinterName
,HANDLE32
*phPrinter
,
397 LPPRINTER_DEFAULTS32W pDefault
)
399 FIXME(print
,"(%s,%p,%p):stub\n",debugstr_w(lpPrinterName
), phPrinter
,
401 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
405 /******************************************************************
406 * EnumPrinters32A [WINSPOOL.174]
409 BOOL32 WINAPI
EnumPrinters32A(DWORD dwType
, LPSTR lpszName
,
410 DWORD dwLevel
, LPBYTE lpbPrinters
,
411 DWORD cbBuf
, LPDWORD lpdwNeeded
,
412 LPDWORD lpdwReturned
)
414 FIXME(print
,"Nearly empty stub\n");
420 /******************************************************************
421 * EnumPrinters32W [WINSPOOL.175]
424 BOOL32 WINAPI
EnumPrinters32W(DWORD dwType
, LPWSTR lpszName
,
425 DWORD dwLevel
, LPBYTE lpbPrinters
,
426 DWORD cbBuf
, LPDWORD lpdwNeeded
,
427 LPDWORD lpdwReturned
)
429 FIXME(print
,"Nearly empty stub\n");
435 /******************************************************************
436 * AddMonitor32A [WINSPOOL.107]
439 BOOL32 WINAPI
AddMonitor32A(LPCSTR pName
, DWORD Level
, LPBYTE pMonitors
)
441 FIXME(print
, "(%s,%lx,%p):stub!\n", pName
, Level
, pMonitors
);
442 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
446 /******************************************************************
447 * DeletePrinterDriver32A [WINSPOOL.146]
451 DeletePrinterDriver32A (LPSTR pName
, LPSTR pEnvironment
, LPSTR pDriverName
)
453 FIXME(print
,"(%s,%s,%s):stub\n",debugstr_a(pName
),debugstr_a(pEnvironment
),
454 debugstr_a(pDriverName
));
455 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
460 /******************************************************************
461 * DeleteMonitor32A [WINSPOOL.135]
465 DeleteMonitor32A (LPSTR pName
, LPSTR pEnvironment
, LPSTR pMonitorName
)
467 FIXME(print
,"(%s,%s,%s):stub\n",debugstr_a(pName
),debugstr_a(pEnvironment
),
468 debugstr_a(pMonitorName
));
469 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
474 /******************************************************************
475 * DeletePort32A [WINSPOOL.137]
479 DeletePort32A (LPSTR pName
, HWND32 hWnd
, LPSTR pPortName
)
481 FIXME(print
,"(%s,0x%08x,%s):stub\n",debugstr_a(pName
),hWnd
,
482 debugstr_a(pPortName
));
483 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
487 /******************************************************************************
488 * SetPrinter32W [WINSPOOL.214]
497 FIXME(print
,"():stub\n");
498 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
502 /******************************************************************************
503 * WritePrinter32 [WINSPOOL.223]
512 FIXME(print
,"():stub\n");
513 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
517 /*****************************************************************************
518 * AddForm32A [WINSPOOL.103]
520 BOOL32 WINAPI
AddForm32A(HANDLE32 hPrinter
, DWORD Level
, LPBYTE pForm
)
522 FIXME(print
, "(%d,%ld,%p): stub\n", hPrinter
, Level
, pForm
);
526 /*****************************************************************************
527 * AddForm32W [WINSPOOL.104]
529 BOOL32 WINAPI
AddForm32W(HANDLE32 hPrinter
, DWORD Level
, LPBYTE pForm
)
531 FIXME(print
, "(%d,%ld,%p): stub\n", hPrinter
, Level
, pForm
);
535 /*****************************************************************************
536 * AddJob32A [WINSPOOL.105]
538 BOOL32 WINAPI
AddJob32A(HANDLE32 hPrinter
, DWORD Level
, LPBYTE pData
,
539 DWORD cbBuf
, LPDWORD pcbNeeded
)
541 FIXME(print
, "(%d,%ld,%p,%ld,%p): stub\n", hPrinter
, Level
, pData
, cbBuf
,
546 /*****************************************************************************
547 * AddJob32W [WINSPOOL.106]
549 BOOL32 WINAPI
AddJob32W(HANDLE32 hPrinter
, DWORD Level
, LPBYTE pData
, DWORD cbBuf
,
552 FIXME(print
, "(%d,%ld,%p,%ld,%p): stub\n", hPrinter
, Level
, pData
, cbBuf
,
557 /*****************************************************************************
558 * AddPrinter32A [WINSPOOL.117]
560 HANDLE32 WINAPI
AddPrinter32A(LPSTR pName
, DWORD Level
, LPBYTE pPrinter
)
562 FIXME(print
, "(%s,%ld,%p): stub\n", pName
, Level
, pPrinter
);
566 /*****************************************************************************
567 * AddPrinter32W [WINSPOOL.122]
569 HANDLE32 WINAPI
AddPrinter32W(LPWSTR pName
, DWORD Level
, LPBYTE pPrinter
)
571 FIXME(print
, "(%p,%ld,%p): stub\n", pName
, Level
, pPrinter
);
576 /*****************************************************************************
577 * ClosePrinter32 [WINSPOOL.126]
579 BOOL32 WINAPI
ClosePrinter32(HANDLE32 hPrinter
)
581 FIXME(print
, "(%d): stub\n", hPrinter
);
585 /*****************************************************************************
586 * DeleteForm32A [WINSPOOL.133]
588 BOOL32 WINAPI
DeleteForm32A(HANDLE32 hPrinter
, LPSTR pFormName
)
590 FIXME(print
, "(%d,%s): stub\n", hPrinter
, pFormName
);
594 /*****************************************************************************
595 * DeleteForm32W [WINSPOOL.134]
597 BOOL32 WINAPI
DeleteForm32W(HANDLE32 hPrinter
, LPWSTR pFormName
)
599 FIXME(print
, "(%d,%s): stub\n", hPrinter
, debugstr_w(pFormName
));
603 /*****************************************************************************
604 * DeletePrinter32 [WINSPOOL.143]
606 BOOL32 WINAPI
DeletePrinter32(HANDLE32 hPrinter
)
608 FIXME(print
, "(%d): stub\n", hPrinter
);
612 /*****************************************************************************
613 * SetPrinter32A [WINSPOOL.211]
615 BOOL32 WINAPI
SetPrinter32A(HANDLE32 hPrinter
, DWORD Level
, LPBYTE pPrinter
,
618 FIXME(print
, "(%d,%ld,%p,%ld): stub\n",hPrinter
,Level
,pPrinter
,Command
);
622 /*****************************************************************************
623 * SetJob32A [WINSPOOL.209]
625 BOOL32 WINAPI
SetJob32A(HANDLE32 hPrinter
, DWORD JobId
, DWORD Level
,
626 LPBYTE pJob
, DWORD Command
)
628 FIXME(print
, "(%d,%ld,%ld,%p,%ld): stub\n",hPrinter
,JobId
,Level
,pJob
,
633 /*****************************************************************************
634 * SetJob32W [WINSPOOL.210]
636 BOOL32 WINAPI
SetJob32W(HANDLE32 hPrinter
, DWORD JobId
, DWORD Level
,
637 LPBYTE pJob
, DWORD Command
)
639 FIXME(print
, "(%d,%ld,%ld,%p,%ld): stub\n",hPrinter
,JobId
,Level
,pJob
,
644 /*****************************************************************************
645 * GetForm32A [WINSPOOL.181]
647 BOOL32 WINAPI
GetForm32A(HANDLE32 hPrinter
, LPSTR pFormName
, DWORD Level
,
648 LPBYTE pForm
, DWORD cbBuf
, LPDWORD pcbNeeded
)
650 FIXME(print
, "(%d,%s,%ld,%p,%ld,%p): stub\n",hPrinter
,pFormName
,
651 Level
,pForm
,cbBuf
,pcbNeeded
);
655 /*****************************************************************************
656 * GetForm32W [WINSPOOL.182]
658 BOOL32 WINAPI
GetForm32W(HANDLE32 hPrinter
, LPWSTR pFormName
, DWORD Level
,
659 LPBYTE pForm
, DWORD cbBuf
, LPDWORD pcbNeeded
)
661 FIXME(print
, "(%d,%s,%ld,%p,%ld,%p): stub\n",hPrinter
,
662 debugstr_w(pFormName
),Level
,pForm
,cbBuf
,pcbNeeded
);
666 /*****************************************************************************
667 * SetForm32A [WINSPOOL.207]
669 BOOL32 WINAPI
SetForm32A(HANDLE32 hPrinter
, LPSTR pFormName
, DWORD Level
,
672 FIXME(print
, "(%d,%s,%ld,%p): stub\n",hPrinter
,pFormName
,Level
,pForm
);
676 /*****************************************************************************
677 * SetForm32W [WINSPOOL.208]
679 BOOL32 WINAPI
SetForm32W(HANDLE32 hPrinter
, LPWSTR pFormName
, DWORD Level
,
682 FIXME(print
, "(%d,%p,%ld,%p): stub\n",hPrinter
,pFormName
,Level
,pForm
);
686 /*****************************************************************************
687 * ReadPrinter32 [WINSPOOL.202]
689 BOOL32 WINAPI
ReadPrinter32(HANDLE32 hPrinter
, LPVOID pBuf
, DWORD cbBuf
,
690 LPDWORD pNoBytesRead
)
692 FIXME(print
, "(%d,%p,%ld,%p): stub\n",hPrinter
,pBuf
,cbBuf
,pNoBytesRead
);
696 /*****************************************************************************
697 * ResetPrinter32A [WINSPOOL.203]
699 BOOL32 WINAPI
ResetPrinter32A(HANDLE32 hPrinter
, LPPRINTER_DEFAULTS32A pDefault
)
701 FIXME(print
, "(%d, %p): stub\n", hPrinter
, pDefault
);
705 /*****************************************************************************
706 * ResetPrinter32W [WINSPOOL.204]
708 BOOL32 WINAPI
ResetPrinter32W(HANDLE32 hPrinter
, LPPRINTER_DEFAULTS32W pDefault
)
710 FIXME(print
, "(%d, %p): stub\n", hPrinter
, pDefault
);
714 /*****************************************************************************
715 * GetPrinter32A [WINSPOOL.187]
717 BOOL32 WINAPI
GetPrinter32A(HANDLE32 hPrinter
, DWORD Level
, LPBYTE pPrinter
,
718 DWORD cbBuf
, LPDWORD pcbNeeded
)
720 FIXME(print
, "(%d,%ld,%p,%ld,%p): stub\n", hPrinter
, Level
, pPrinter
,
725 /*****************************************************************************
726 * GetPrinter32W [WINSPOOL.194]
728 BOOL32 WINAPI
GetPrinter32W(HANDLE32 hPrinter
, DWORD Level
, LPBYTE pPrinter
,
729 DWORD cbBuf
, LPDWORD pcbNeeded
)
731 FIXME(print
, "(%d,%ld,%p,%ld,%p): stub\n", hPrinter
, Level
, pPrinter
,
736 /*****************************************************************************
737 * GetPrinterDriver32A [WINSPOOL.190]
739 BOOL32 WINAPI
GetPrinterDriver32A(HANDLE32 hPrinter
, LPSTR pEnvironment
,
740 DWORD Level
, LPBYTE pDriverInfo
,
741 DWORD cbBuf
, LPDWORD pcbNeeded
)
743 FIXME(print
, "(%d,%s,%ld,%p,%ld,%p): stub\n",hPrinter
,pEnvironment
,
744 Level
,pDriverInfo
,cbBuf
, pcbNeeded
);
748 /*****************************************************************************
749 * GetPrinterDriver32W [WINSPOOL.193]
751 BOOL32 WINAPI
GetPrinterDriver32W(HANDLE32 hPrinter
, LPWSTR pEnvironment
,
752 DWORD Level
, LPBYTE pDriverInfo
,
753 DWORD cbBuf
, LPDWORD pcbNeeded
)
755 FIXME(print
, "(%d,%p,%ld,%p,%ld,%p): stub\n",hPrinter
,pEnvironment
,
756 Level
,pDriverInfo
,cbBuf
, pcbNeeded
);
759 /*****************************************************************************
760 * AddPrinterDriver32A [WINSPOOL.120]
762 BOOL32 WINAPI
AddPrinterDriver32A(LPSTR printerName
,DWORD level
,
765 FIXME(print
, "(%s,%ld,%p): stub\n",printerName
,level
,pDriverInfo
);
768 /*****************************************************************************
769 * AddPrinterDriver32W [WINSPOOL.121]
771 BOOL32 WINAPI
AddPrinterDriver32W(LPWSTR printerName
,DWORD level
,
774 FIXME(print
, "(%s,%ld,%p): stub\n",debugstr_w(printerName
),