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 /******************************************************************
44 * StartDoc32A [GDI32.347]
47 INT32 WINAPI
StartDoc32A(HDC32 hdc
,const DOCINFO32A
* doc
)
50 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
51 return 0; /* failure*/
54 /*************************************************************************
55 * StartDoc32W [GDI32.348]
58 INT32 WINAPI
StartDoc32W(HDC32 hdc
, const DOCINFO32W
* doc
) {
60 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
61 return 0; /* failure*/
64 /******************************************************************
65 * StartPage32 [GDI32.349]
68 INT32 WINAPI
StartPage32(HDC32 hdc
)
71 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
72 return 0; /* failure*/
75 /******************************************************************
76 * EndPage32 [GDI32.77]
79 INT32 WINAPI
EndPage32(HDC32 hdc
)
82 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
83 return 0; /* failure*/
86 /******************************************************************
90 INT16 WINAPI
EndDoc16(HDC16 hdc
)
92 return Escape16(hdc
, ENDDOC
, 0, 0, 0);
95 /******************************************************************
99 INT32 WINAPI
EndDoc32(HDC32 hdc
)
102 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
103 return 0; /* failure*/
106 /******************************************************************************
107 * AbortDoc16 [GDI.382]
109 INT16 WINAPI
AbortDoc16(HDC16 hdc
)
111 return Escape16(hdc
, ABORTDOC
, 0, 0, 0);
114 /******************************************************************************
115 * AbortDoc32 [GDI32.0]
117 INT32 WINAPI
AbortDoc32(HDC32 hdc
)
119 FIXME(gdi
, "(%d): stub\n", hdc
);
123 /******************************************************************
124 * DrvGetPrinterDataInternal
126 * Helper for DrvGetPrinterData
128 static DWORD
DrvGetPrinterDataInternal(LPSTR RegStr_Printer
,
129 LPBYTE lpPrinterData
, int cbData
)
133 DWORD dwType
, cbQueryData
;
135 if (!(RegOpenKey32A(HKEY_LOCAL_MACHINE
, RegStr_Printer
, &hkey
))) {
136 if (cbData
> 1) { /* "Default DevMode" */
137 if (!(RegQueryValueEx32A(hkey
, DefaultDevMode
, 0, &dwType
, 0, &cbQueryData
))) {
140 else if ((cbQueryData
) && (cbQueryData
<= cbData
)) {
141 cbQueryData
= cbData
;
142 if (RegQueryValueEx32A(hkey
, DefaultDevMode
, 0,
143 &dwType
, lpPrinterData
, &cbQueryData
))
147 } else { /* "Printer Driver" */
149 RegQueryValueEx32A(hkey
, "Printer Driver", 0,
150 &dwType
, lpPrinterData
, &cbQueryData
);
154 if (hkey
) RegCloseKey(hkey
);
158 /******************************************************************
159 * DrvGetPrinterData [GDI.282]
162 DWORD WINAPI
DrvGetPrinterData(LPSTR lpPrinter
, LPSTR lpProfile
,
163 LPDWORD lpType
, LPBYTE lpPrinterData
,
164 int cbData
, LPDWORD lpNeeded
)
166 LPSTR RegStr_Printer
;
167 HKEY hkey
= 0, hkey2
= 0;
169 DWORD dwType
, PrinterAttr
, cbPrinterAttr
, SetData
, size
;
171 if (HIWORD(lpPrinter
))
172 TRACE(print
,"printer %s\n",lpPrinter
);
174 TRACE(print
,"printer %p\n",lpPrinter
);
175 if (HIWORD(lpProfile
))
176 TRACE(print
,"profile %s\n",lpProfile
);
178 TRACE(print
,"profile %p\n",lpProfile
);
179 TRACE(print
,"lpType %p\n",lpType
);
181 if ((!lpPrinter
) || (!lpProfile
) || (!lpNeeded
))
182 return ERROR_INVALID_PARAMETER
;
184 RegStr_Printer
= HeapAlloc(GetProcessHeap(), 0,
185 strlen(Printers
) + strlen(lpPrinter
) + 2);
186 strcpy(RegStr_Printer
, Printers
);
187 strcat(RegStr_Printer
, lpPrinter
);
189 if (((DWORD
)lpProfile
== INT_PD_DEFAULT_DEVMODE
) || (HIWORD(lpProfile
) &&
190 (!strcmp(lpProfile
, DefaultDevMode
)))) {
191 size
= DrvGetPrinterDataInternal(RegStr_Printer
, lpPrinterData
, cbData
);
194 if ((lpPrinterData
) && (*lpNeeded
> cbData
))
195 res
= ERROR_MORE_DATA
;
197 else res
= ERROR_INVALID_PRINTER_NAME
;
200 if (((DWORD
)lpProfile
== INT_PD_DEFAULT_MODEL
) || (HIWORD(lpProfile
) &&
201 (!strcmp(lpProfile
, PrinterModel
)))) {
203 if (!lpPrinterData
) goto failed
;
205 res
= ERROR_MORE_DATA
;
208 size
= DrvGetPrinterDataInternal(RegStr_Printer
, lpPrinterData
, 1);
209 if ((size
+1) && (lpType
))
212 res
= ERROR_INVALID_PRINTER_NAME
;
216 if ((res
= RegOpenKey32A(HKEY_LOCAL_MACHINE
, RegStr_Printer
, &hkey
)))
219 if ((res
= RegQueryValueEx32A(hkey
, "Attributes", 0,
220 &dwType
, (LPBYTE
)&PrinterAttr
, &cbPrinterAttr
)))
222 if ((res
= RegOpenKey32A(hkey
, PrinterDriverData
, &hkey2
)))
225 res
= RegQueryValueEx32A(hkey2
, lpProfile
, 0,
226 lpType
, lpPrinterData
, lpNeeded
);
227 if ((res
!= ERROR_CANTREAD
) &&
229 (PRINTER_ATTRIBUTE_ENABLE_BIDI
|PRINTER_ATTRIBUTE_NETWORK
))
230 == PRINTER_ATTRIBUTE_NETWORK
))
232 if (!(res
) && (*lpType
== REG_DWORD
) && (*(LPDWORD
)lpPrinterData
== -1))
233 res
= ERROR_INVALID_DATA
;
238 RegSetValueEx32A(hkey2
, lpProfile
, 0, REG_DWORD
, (LPBYTE
)&SetData
, 4); /* no result returned */
243 if (hkey2
) RegCloseKey(hkey2
);
244 if (hkey
) RegCloseKey(hkey
);
245 HeapFree(GetProcessHeap(), 0, RegStr_Printer
);
250 /******************************************************************
251 * DrvSetPrinterData [GDI.281]
254 DWORD WINAPI
DrvSetPrinterData(LPSTR lpPrinter
, LPSTR lpProfile
,
255 DWORD lpType
, LPBYTE lpPrinterData
,
258 LPSTR RegStr_Printer
;
262 if (HIWORD(lpPrinter
))
263 TRACE(print
,"printer %s\n",lpPrinter
);
265 TRACE(print
,"printer %p\n",lpPrinter
);
266 if (HIWORD(lpProfile
))
267 TRACE(print
,"profile %s\n",lpProfile
);
269 TRACE(print
,"profile %p\n",lpProfile
);
270 TRACE(print
,"lpType %08lx\n",lpType
);
272 if ((!lpPrinter
) || (!lpProfile
) ||
273 ((DWORD
)lpProfile
== INT_PD_DEFAULT_MODEL
) || (HIWORD(lpProfile
) &&
274 (!strcmp(lpProfile
, PrinterModel
))))
275 return ERROR_INVALID_PARAMETER
;
277 RegStr_Printer
= HeapAlloc(GetProcessHeap(), 0,
278 strlen(Printers
) + strlen(lpPrinter
) + 2);
279 strcpy(RegStr_Printer
, Printers
);
280 strcat(RegStr_Printer
, lpPrinter
);
282 if (((DWORD
)lpProfile
== INT_PD_DEFAULT_DEVMODE
) || (HIWORD(lpProfile
) &&
283 (!strcmp(lpProfile
, DefaultDevMode
)))) {
284 if ( RegOpenKey32A(HKEY_LOCAL_MACHINE
, RegStr_Printer
, &hkey
)
286 RegSetValueEx32A(hkey
, DefaultDevMode
, 0, REG_BINARY
,
287 lpPrinterData
, dwSize
) != ERROR_SUCCESS
)
288 res
= ERROR_INVALID_PRINTER_NAME
;
292 strcat(RegStr_Printer
, "\\");
294 if( (res
= RegOpenKey32A(HKEY_LOCAL_MACHINE
, RegStr_Printer
, &hkey
)) ==
298 res
= RegDeleteValue32A(hkey
, lpProfile
);
300 res
= RegSetValueEx32A(hkey
, lpProfile
, 0, lpType
,
301 lpPrinterData
, dwSize
);
305 if (hkey
) RegCloseKey(hkey
);
306 HeapFree(GetProcessHeap(), 0, RegStr_Printer
);
311 /******************************************************************
312 * DeviceCapabilities32A [WINSPOOL.151]
315 INT32 WINAPI
DeviceCapabilities32A(LPCSTR printer
,LPCSTR target
,WORD z
,
316 LPSTR a
,LPDEVMODE32A b
)
318 FIXME(print
,"(%s,%s,%d,%p,%p):stub.\n",printer
,target
,z
,a
,b
);
323 /*****************************************************************************
324 * DeviceCapabilities32W
326 INT32 WINAPI
DeviceCapabilities32W(LPCWSTR pDevice
, LPCWSTR pPort
,
327 WORD fwCapability
, LPWSTR pOutput
,
328 const DEVMODE32W
*pDevMode
)
330 FIXME(print
,"(%p,%p,%d,%p,%p): stub\n",
331 pDevice
, pPort
, fwCapability
, pOutput
, pDevMode
);
335 /******************************************************************
336 * DocumentProperties32A [WINSPOOL.155]
339 LONG WINAPI
DocumentProperties32A(HWND32 hWnd
,HANDLE32 hPrinter
,
340 LPSTR pDeviceName
, LPDEVMODE32A pDevModeOutput
,
341 LPDEVMODE32A pDevModeInput
,DWORD fMode
)
343 FIXME(print
,"(%d,%d,%s,%p,%p,%ld):stub.\n",
344 hWnd
,hPrinter
,pDeviceName
,pDevModeOutput
,pDevModeInput
,fMode
350 /*****************************************************************************
351 * DocumentProperties32W
353 LONG WINAPI
DocumentProperties32W(HWND32 hWnd
, HANDLE32 hPrinter
,
355 LPDEVMODE32W pDevModeOutput
,
356 LPDEVMODE32W pDevModeInput
, DWORD fMode
)
358 FIXME(print
,"(%d,%d,%s,%p,%p,%ld): stub\n",
359 hWnd
,hPrinter
,debugstr_w(pDeviceName
),pDevModeOutput
,pDevModeInput
,
365 /******************************************************************
366 * OpenPrinter32A [WINSPOOL.196]
369 BOOL32 WINAPI
OpenPrinter32A(LPSTR lpPrinterName
,HANDLE32
*phPrinter
,
370 LPPRINTER_DEFAULTS32A pDefault
)
372 FIXME(print
,"(%s,%p,%p):stub\n",debugstr_a(lpPrinterName
), phPrinter
,
374 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
378 /******************************************************************
379 * OpenPrinter32W [WINSPOOL.197]
382 BOOL32 WINAPI
OpenPrinter32W(LPWSTR lpPrinterName
,HANDLE32
*phPrinter
,
383 LPPRINTER_DEFAULTS32W pDefault
)
385 FIXME(print
,"(%s,%p,%p):stub\n",debugstr_w(lpPrinterName
), phPrinter
,
387 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
391 /******************************************************************
392 * EnumPrinters32A [WINSPOOL.174]
395 BOOL32 WINAPI
EnumPrinters32A(DWORD dwType
, LPSTR lpszName
,
396 DWORD dwLevel
, LPBYTE lpbPrinters
,
397 DWORD cbBuf
, LPDWORD lpdwNeeded
,
398 LPDWORD lpdwReturned
)
400 FIXME(print
,"Nearly empty stub\n");
405 /******************************************************************
406 * EnumPrinters32W [WINSPOOL.175]
409 BOOL32 WINAPI
EnumPrinters32W(DWORD dwType
, LPWSTR lpszName
,
410 DWORD dwLevel
, LPBYTE lpbPrinters
,
411 DWORD cbBuf
, LPDWORD lpdwNeeded
,
412 LPDWORD lpdwReturned
)
414 FIXME(print
,"Nearly empty stub\n");
419 /******************************************************************
420 * AddMonitor32A [WINSPOOL.107]
423 BOOL32 WINAPI
AddMonitor32A(LPCSTR pName
, DWORD Level
, LPBYTE pMonitors
)
425 FIXME(print
, "(%s,%lx,%p):stub!\n", pName
, Level
, pMonitors
);
426 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
430 /******************************************************************
431 * DeletePrinterDriver32A [WINSPOOL.146]
435 DeletePrinterDriver32A (LPSTR pName
, LPSTR pEnvironment
, LPSTR pDriverName
)
437 FIXME(print
,"(%s,%s,%s):stub\n",debugstr_a(pName
),debugstr_a(pEnvironment
),
438 debugstr_a(pDriverName
));
439 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
444 /******************************************************************
445 * DeleteMonitor32A [WINSPOOL.135]
449 DeleteMonitor32A (LPSTR pName
, LPSTR pEnvironment
, LPSTR pMonitorName
)
451 FIXME(print
,"(%s,%s,%s):stub\n",debugstr_a(pName
),debugstr_a(pEnvironment
),
452 debugstr_a(pMonitorName
));
453 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
458 /******************************************************************
459 * DeletePort32A [WINSPOOL.137]
463 DeletePort32A (LPSTR pName
, HWND32 hWnd
, LPSTR pPortName
)
465 FIXME(print
,"(%s,0x%08x,%s):stub\n",debugstr_a(pName
),hWnd
,
466 debugstr_a(pPortName
));
467 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
471 /******************************************************************************
472 * SetPrinter32W [WINSPOOL.214]
481 FIXME(print
,"():stub\n");
482 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
486 /******************************************************************************
487 * WritePrinter32 [WINSPOOL.223]
496 FIXME(print
,"():stub\n");
497 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
501 /*****************************************************************************
502 * AddForm32A [WINSPOOL.103]
504 BOOL32 WINAPI
AddForm32A(HANDLE32 hPrinter
, DWORD Level
, LPBYTE pForm
)
506 FIXME(print
, "(%d,%ld,%p): stub\n", hPrinter
, Level
, pForm
);
510 /*****************************************************************************
511 * AddForm32W [WINSPOOL.104]
513 BOOL32 WINAPI
AddForm32W(HANDLE32 hPrinter
, DWORD Level
, LPBYTE pForm
)
515 FIXME(print
, "(%d,%ld,%p): stub\n", hPrinter
, Level
, pForm
);
519 /*****************************************************************************
520 * AddJob32A [WINSPOOL.105]
522 BOOL32 WINAPI
AddJob32A(HANDLE32 hPrinter
, DWORD Level
, LPBYTE pData
,
523 DWORD cbBuf
, LPDWORD pcbNeeded
)
525 FIXME(print
, "(%d,%ld,%p,%ld,%p): stub\n", hPrinter
, Level
, pData
, cbBuf
,
530 /*****************************************************************************
531 * AddJob32W [WINSPOOL.106]
533 BOOL32 WINAPI
AddJob32W(HANDLE32 hPrinter
, DWORD Level
, LPBYTE pData
, DWORD cbBuf
,
536 FIXME(print
, "(%d,%ld,%p,%ld,%p): stub\n", hPrinter
, Level
, pData
, cbBuf
,
541 /*****************************************************************************
542 * AddPrinter32A [WINSPOOL.117]
544 HANDLE32 WINAPI
AddPrinter32A(LPSTR pName
, DWORD Level
, LPBYTE pPrinter
)
546 FIXME(print
, "(%s,%ld,%p): stub\n", pName
, Level
, pPrinter
);
550 /*****************************************************************************
551 * AddPrinter32W [WINSPOOL.122]
553 HANDLE32 WINAPI
AddPrinter32W(LPWSTR pName
, DWORD Level
, LPBYTE pPrinter
)
555 FIXME(print
, "(%p,%ld,%p): stub\n", pName
, Level
, pPrinter
);
560 /*****************************************************************************
561 * ClosePrinter32 [WINSPOOL.126]
563 BOOL32 WINAPI
ClosePrinter32(HANDLE32 hPrinter
)
565 FIXME(print
, "(%d): stub\n", hPrinter
);
569 /*****************************************************************************
570 * DeleteForm32A [WINSPOOL.133]
572 BOOL32 WINAPI
DeleteForm32A(HANDLE32 hPrinter
, LPSTR pFormName
)
574 FIXME(print
, "(%d,%s): stub\n", hPrinter
, pFormName
);
578 /*****************************************************************************
579 * DeleteForm32W [WINSPOOL.134]
581 BOOL32 WINAPI
DeleteForm32W(HANDLE32 hPrinter
, LPWSTR pFormName
)
583 FIXME(print
, "(%d,%s): stub\n", hPrinter
, debugstr_w(pFormName
));
587 /*****************************************************************************
588 * DeletePrinter32 [WINSPOOL.143]
590 BOOL32
DeletePrinter32(HANDLE32 hPrinter
)
592 FIXME(print
, "(%d): stub\n", hPrinter
);
596 /*****************************************************************************
597 * SetPrinter32A [WINSPOOL.211]
599 BOOL32 WINAPI
SetPrinter32A(HANDLE32 hPrinter
, DWORD Level
, LPBYTE pPrinter
,
602 FIXME(print
, "(%d,%ld,%p,%ld): stub\n",hPrinter
,Level
,pPrinter
,Command
);
606 /*****************************************************************************
607 * SetJob32A [WINSPOOL.209]
609 BOOL32 WINAPI
SetJob32A(HANDLE32 hPrinter
, DWORD JobId
, DWORD Level
,
610 LPBYTE pJob
, DWORD Command
)
612 FIXME(print
, "(%d,%ld,%ld,%p,%ld): stub\n",hPrinter
,JobId
,Level
,pJob
,
617 /*****************************************************************************
618 * SetJob32W [WINSPOOL.210]
620 BOOL32 WINAPI
SetJob32W(HANDLE32 hPrinter
, DWORD JobId
, DWORD Level
,
621 LPBYTE pJob
, DWORD Command
)
623 FIXME(print
, "(%d,%ld,%ld,%p,%ld): stub\n",hPrinter
,JobId
,Level
,pJob
,
628 /*****************************************************************************
629 * GetForm32A [WINSPOOL.181]
631 BOOL32 WINAPI
GetForm32A(HANDLE32 hPrinter
, LPSTR pFormName
, DWORD Level
,
632 LPBYTE pForm
, DWORD cbBuf
, LPDWORD pcbNeeded
)
634 FIXME(print
, "(%d,%s,%ld,%p,%ld,%p): stub\n",hPrinter
,pFormName
,
635 Level
,pForm
,cbBuf
,pcbNeeded
);
639 /*****************************************************************************
640 * GetForm32W [WINSPOOL.182]
642 BOOL32 WINAPI
GetForm32W(HANDLE32 hPrinter
, LPWSTR pFormName
, DWORD Level
,
643 LPBYTE pForm
, DWORD cbBuf
, LPDWORD pcbNeeded
)
645 FIXME(print
, "(%d,%s,%ld,%p,%ld,%p): stub\n",hPrinter
,
646 debugstr_w(pFormName
),Level
,pForm
,cbBuf
,pcbNeeded
);
650 /*****************************************************************************
651 * SetForm32A [WINSPOOL.207]
653 BOOL32 WINAPI
SetForm32A(HANDLE32 hPrinter
, LPSTR pFormName
, DWORD Level
,
656 FIXME(print
, "(%d,%s,%ld,%p): stub\n",hPrinter
,pFormName
,Level
,pForm
);
660 /*****************************************************************************
661 * SetForm32W [WINSPOOL.208]
663 BOOL32 WINAPI
SetForm32W(HANDLE32 hPrinter
, LPWSTR pFormName
, DWORD Level
,
666 FIXME(print
, "(%d,%p,%ld,%p): stub\n",hPrinter
,pFormName
,Level
,pForm
);
670 /*****************************************************************************
671 * ReadPrinter32 [WINSPOOL.202]
673 BOOL32 WINAPI
ReadPrinter32(HANDLE32 hPrinter
, LPVOID pBuf
, DWORD cbBuf
,
674 LPDWORD pNoBytesRead
)
676 FIXME(print
, "(%d,%p,%ld,%p): stub\n",hPrinter
,pBuf
,cbBuf
,pNoBytesRead
);
680 /*****************************************************************************
681 * ResetPrinter32A [WINSPOOL.203]
683 BOOL32 WINAPI
ResetPrinter32A(HANDLE32 hPrinter
, LPPRINTER_DEFAULTS32A pDefault
)
685 FIXME(print
, "(%d, %p): stub\n", hPrinter
, pDefault
);
689 /*****************************************************************************
690 * ResetPrinter32W [WINSPOOL.204]
692 BOOL32 WINAPI
ResetPrinter32W(HANDLE32 hPrinter
, LPPRINTER_DEFAULTS32W pDefault
)
694 FIXME(print
, "(%d, %p): stub\n", hPrinter
, pDefault
);
698 /*****************************************************************************
699 * GetPrinter32A [WINSPOOL.187]
701 BOOL32 WINAPI
GetPrinter32A(HANDLE32 hPrinter
, DWORD Level
, LPBYTE pPrinter
,
702 DWORD cbBuf
, LPDWORD pcbNeeded
)
704 FIXME(print
, "(%d,%ld,%p,%ld,%p): stub\n", hPrinter
, Level
, pPrinter
,
709 /*****************************************************************************
710 * GetPrinter32W [WINSPOOL.194]
712 BOOL32 WINAPI
GetPrinter32W(HANDLE32 hPrinter
, DWORD Level
, LPBYTE pPrinter
,
713 DWORD cbBuf
, LPDWORD pcbNeeded
)
715 FIXME(print
, "(%d,%ld,%p,%ld,%p): stub\n", hPrinter
, Level
, pPrinter
,
720 /*****************************************************************************
721 * GetPrinterDriver32A [WINSPOOL.190]
723 BOOL32 WINAPI
GetPrinterDriver32A(HANDLE32 hPrinter
, LPSTR pEnvironment
,
724 DWORD Level
, LPBYTE pDriverInfo
,
725 DWORD cbBuf
, LPDWORD pcbNeeded
)
727 FIXME(print
, "(%d,%s,%ld,%p,%ld,%p): stub\n",hPrinter
,pEnvironment
,
728 Level
,pDriverInfo
,cbBuf
, pcbNeeded
);
732 /*****************************************************************************
733 * GetPrinterDriver32W [WINSPOOL.193]
735 BOOL32 WINAPI
GetPrinterDriver32W(HANDLE32 hPrinter
, LPWSTR pEnvironment
,
736 DWORD Level
, LPBYTE pDriverInfo
,
737 DWORD cbBuf
, LPDWORD pcbNeeded
)
739 FIXME(print
, "(%d,%p,%ld,%p,%ld,%p): stub\n",hPrinter
,pEnvironment
,
740 Level
,pDriverInfo
,cbBuf
, pcbNeeded
);