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");
406 /******************************************************************
407 * EnumPrinters32W [WINSPOOL.175]
410 BOOL32 WINAPI
EnumPrinters32W(DWORD dwType
, LPWSTR lpszName
,
411 DWORD dwLevel
, LPBYTE lpbPrinters
,
412 DWORD cbBuf
, LPDWORD lpdwNeeded
,
413 LPDWORD lpdwReturned
)
415 FIXME(print
,"Nearly empty stub\n");
421 /******************************************************************
422 * AddMonitor32A [WINSPOOL.107]
425 BOOL32 WINAPI
AddMonitor32A(LPCSTR pName
, DWORD Level
, LPBYTE pMonitors
)
427 FIXME(print
, "(%s,%lx,%p):stub!\n", pName
, Level
, pMonitors
);
428 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
432 /******************************************************************
433 * DeletePrinterDriver32A [WINSPOOL.146]
437 DeletePrinterDriver32A (LPSTR pName
, LPSTR pEnvironment
, LPSTR pDriverName
)
439 FIXME(print
,"(%s,%s,%s):stub\n",debugstr_a(pName
),debugstr_a(pEnvironment
),
440 debugstr_a(pDriverName
));
441 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
446 /******************************************************************
447 * DeleteMonitor32A [WINSPOOL.135]
451 DeleteMonitor32A (LPSTR pName
, LPSTR pEnvironment
, LPSTR pMonitorName
)
453 FIXME(print
,"(%s,%s,%s):stub\n",debugstr_a(pName
),debugstr_a(pEnvironment
),
454 debugstr_a(pMonitorName
));
455 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
460 /******************************************************************
461 * DeletePort32A [WINSPOOL.137]
465 DeletePort32A (LPSTR pName
, HWND32 hWnd
, LPSTR pPortName
)
467 FIXME(print
,"(%s,0x%08x,%s):stub\n",debugstr_a(pName
),hWnd
,
468 debugstr_a(pPortName
));
469 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
473 /******************************************************************************
474 * SetPrinter32W [WINSPOOL.214]
483 FIXME(print
,"():stub\n");
484 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
488 /******************************************************************************
489 * WritePrinter32 [WINSPOOL.223]
498 FIXME(print
,"():stub\n");
499 SetLastError(ERROR_CALL_NOT_IMPLEMENTED
);
503 /*****************************************************************************
504 * AddForm32A [WINSPOOL.103]
506 BOOL32 WINAPI
AddForm32A(HANDLE32 hPrinter
, DWORD Level
, LPBYTE pForm
)
508 FIXME(print
, "(%d,%ld,%p): stub\n", hPrinter
, Level
, pForm
);
512 /*****************************************************************************
513 * AddForm32W [WINSPOOL.104]
515 BOOL32 WINAPI
AddForm32W(HANDLE32 hPrinter
, DWORD Level
, LPBYTE pForm
)
517 FIXME(print
, "(%d,%ld,%p): stub\n", hPrinter
, Level
, pForm
);
521 /*****************************************************************************
522 * AddJob32A [WINSPOOL.105]
524 BOOL32 WINAPI
AddJob32A(HANDLE32 hPrinter
, DWORD Level
, LPBYTE pData
,
525 DWORD cbBuf
, LPDWORD pcbNeeded
)
527 FIXME(print
, "(%d,%ld,%p,%ld,%p): stub\n", hPrinter
, Level
, pData
, cbBuf
,
532 /*****************************************************************************
533 * AddJob32W [WINSPOOL.106]
535 BOOL32 WINAPI
AddJob32W(HANDLE32 hPrinter
, DWORD Level
, LPBYTE pData
, DWORD cbBuf
,
538 FIXME(print
, "(%d,%ld,%p,%ld,%p): stub\n", hPrinter
, Level
, pData
, cbBuf
,
543 /*****************************************************************************
544 * AddPrinter32A [WINSPOOL.117]
546 HANDLE32 WINAPI
AddPrinter32A(LPSTR pName
, DWORD Level
, LPBYTE pPrinter
)
548 FIXME(print
, "(%s,%ld,%p): stub\n", pName
, Level
, pPrinter
);
552 /*****************************************************************************
553 * AddPrinter32W [WINSPOOL.122]
555 HANDLE32 WINAPI
AddPrinter32W(LPWSTR pName
, DWORD Level
, LPBYTE pPrinter
)
557 FIXME(print
, "(%p,%ld,%p): stub\n", pName
, Level
, pPrinter
);
562 /*****************************************************************************
563 * ClosePrinter32 [WINSPOOL.126]
565 BOOL32 WINAPI
ClosePrinter32(HANDLE32 hPrinter
)
567 FIXME(print
, "(%d): stub\n", hPrinter
);
571 /*****************************************************************************
572 * DeleteForm32A [WINSPOOL.133]
574 BOOL32 WINAPI
DeleteForm32A(HANDLE32 hPrinter
, LPSTR pFormName
)
576 FIXME(print
, "(%d,%s): stub\n", hPrinter
, pFormName
);
580 /*****************************************************************************
581 * DeleteForm32W [WINSPOOL.134]
583 BOOL32 WINAPI
DeleteForm32W(HANDLE32 hPrinter
, LPWSTR pFormName
)
585 FIXME(print
, "(%d,%s): stub\n", hPrinter
, debugstr_w(pFormName
));
589 /*****************************************************************************
590 * DeletePrinter32 [WINSPOOL.143]
592 BOOL32
DeletePrinter32(HANDLE32 hPrinter
)
594 FIXME(print
, "(%d): stub\n", hPrinter
);
598 /*****************************************************************************
599 * SetPrinter32A [WINSPOOL.211]
601 BOOL32 WINAPI
SetPrinter32A(HANDLE32 hPrinter
, DWORD Level
, LPBYTE pPrinter
,
604 FIXME(print
, "(%d,%ld,%p,%ld): stub\n",hPrinter
,Level
,pPrinter
,Command
);
608 /*****************************************************************************
609 * SetJob32A [WINSPOOL.209]
611 BOOL32 WINAPI
SetJob32A(HANDLE32 hPrinter
, DWORD JobId
, DWORD Level
,
612 LPBYTE pJob
, DWORD Command
)
614 FIXME(print
, "(%d,%ld,%ld,%p,%ld): stub\n",hPrinter
,JobId
,Level
,pJob
,
619 /*****************************************************************************
620 * SetJob32W [WINSPOOL.210]
622 BOOL32 WINAPI
SetJob32W(HANDLE32 hPrinter
, DWORD JobId
, DWORD Level
,
623 LPBYTE pJob
, DWORD Command
)
625 FIXME(print
, "(%d,%ld,%ld,%p,%ld): stub\n",hPrinter
,JobId
,Level
,pJob
,
630 /*****************************************************************************
631 * GetForm32A [WINSPOOL.181]
633 BOOL32 WINAPI
GetForm32A(HANDLE32 hPrinter
, LPSTR pFormName
, DWORD Level
,
634 LPBYTE pForm
, DWORD cbBuf
, LPDWORD pcbNeeded
)
636 FIXME(print
, "(%d,%s,%ld,%p,%ld,%p): stub\n",hPrinter
,pFormName
,
637 Level
,pForm
,cbBuf
,pcbNeeded
);
641 /*****************************************************************************
642 * GetForm32W [WINSPOOL.182]
644 BOOL32 WINAPI
GetForm32W(HANDLE32 hPrinter
, LPWSTR pFormName
, DWORD Level
,
645 LPBYTE pForm
, DWORD cbBuf
, LPDWORD pcbNeeded
)
647 FIXME(print
, "(%d,%s,%ld,%p,%ld,%p): stub\n",hPrinter
,
648 debugstr_w(pFormName
),Level
,pForm
,cbBuf
,pcbNeeded
);
652 /*****************************************************************************
653 * SetForm32A [WINSPOOL.207]
655 BOOL32 WINAPI
SetForm32A(HANDLE32 hPrinter
, LPSTR pFormName
, DWORD Level
,
658 FIXME(print
, "(%d,%s,%ld,%p): stub\n",hPrinter
,pFormName
,Level
,pForm
);
662 /*****************************************************************************
663 * SetForm32W [WINSPOOL.208]
665 BOOL32 WINAPI
SetForm32W(HANDLE32 hPrinter
, LPWSTR pFormName
, DWORD Level
,
668 FIXME(print
, "(%d,%p,%ld,%p): stub\n",hPrinter
,pFormName
,Level
,pForm
);
672 /*****************************************************************************
673 * ReadPrinter32 [WINSPOOL.202]
675 BOOL32 WINAPI
ReadPrinter32(HANDLE32 hPrinter
, LPVOID pBuf
, DWORD cbBuf
,
676 LPDWORD pNoBytesRead
)
678 FIXME(print
, "(%d,%p,%ld,%p): stub\n",hPrinter
,pBuf
,cbBuf
,pNoBytesRead
);
682 /*****************************************************************************
683 * ResetPrinter32A [WINSPOOL.203]
685 BOOL32 WINAPI
ResetPrinter32A(HANDLE32 hPrinter
, LPPRINTER_DEFAULTS32A pDefault
)
687 FIXME(print
, "(%d, %p): stub\n", hPrinter
, pDefault
);
691 /*****************************************************************************
692 * ResetPrinter32W [WINSPOOL.204]
694 BOOL32 WINAPI
ResetPrinter32W(HANDLE32 hPrinter
, LPPRINTER_DEFAULTS32W pDefault
)
696 FIXME(print
, "(%d, %p): stub\n", hPrinter
, pDefault
);
700 /*****************************************************************************
701 * GetPrinter32A [WINSPOOL.187]
703 BOOL32 WINAPI
GetPrinter32A(HANDLE32 hPrinter
, DWORD Level
, LPBYTE pPrinter
,
704 DWORD cbBuf
, LPDWORD pcbNeeded
)
706 FIXME(print
, "(%d,%ld,%p,%ld,%p): stub\n", hPrinter
, Level
, pPrinter
,
711 /*****************************************************************************
712 * GetPrinter32W [WINSPOOL.194]
714 BOOL32 WINAPI
GetPrinter32W(HANDLE32 hPrinter
, DWORD Level
, LPBYTE pPrinter
,
715 DWORD cbBuf
, LPDWORD pcbNeeded
)
717 FIXME(print
, "(%d,%ld,%p,%ld,%p): stub\n", hPrinter
, Level
, pPrinter
,
722 /*****************************************************************************
723 * GetPrinterDriver32A [WINSPOOL.190]
725 BOOL32 WINAPI
GetPrinterDriver32A(HANDLE32 hPrinter
, LPSTR pEnvironment
,
726 DWORD Level
, LPBYTE pDriverInfo
,
727 DWORD cbBuf
, LPDWORD pcbNeeded
)
729 FIXME(print
, "(%d,%s,%ld,%p,%ld,%p): stub\n",hPrinter
,pEnvironment
,
730 Level
,pDriverInfo
,cbBuf
, pcbNeeded
);
734 /*****************************************************************************
735 * GetPrinterDriver32W [WINSPOOL.193]
737 BOOL32 WINAPI
GetPrinterDriver32W(HANDLE32 hPrinter
, LPWSTR pEnvironment
,
738 DWORD Level
, LPBYTE pDriverInfo
,
739 DWORD cbBuf
, LPDWORD pcbNeeded
)
741 FIXME(print
, "(%d,%p,%ld,%p,%ld,%p): stub\n",hPrinter
,pEnvironment
,
742 Level
,pDriverInfo
,cbBuf
, pcbNeeded
);