Changed DOS extended error handling to be based on SetLastError;
[wine/multimedia.git] / misc / printdrv.c
blob76ae0f962e2e7d45e53a52c1b76233743d02debe
1 /*
2 * Implementation of some printer driver bits
3 *
4 * Copyright 1996 John Harvey
5 * Copyright 1998 Andreas Mohr
6 */
8 #include <stdlib.h>
9 #include <string.h>
10 #include <ctype.h>
11 #include "windows.h"
12 #include "win.h"
13 #include "winerror.h"
14 #include "winreg.h"
15 #include "debug.h"
16 #include "print.h"
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 )
29 INT16 retVal;
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);
40 return retVal;
43 /******************************************************************
44 * EndPage16 [GDI.380]
47 INT16 WINAPI EndPage16( HDC16 hdc )
49 INT16 retVal;
50 retVal = Escape16(hdc, NEWFRAME, 0, 0, 0);
51 TRACE(print,"Escape16 returned %d\n",retVal);
52 return retVal;
55 /******************************************************************
56 * StartDoc32A [GDI32.347]
59 INT32 WINAPI StartDoc32A(HDC32 hdc ,const DOCINFO32A* doc)
61 FIXME(gdi,"stub\n");
62 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
63 return 0; /* failure*/
66 /*************************************************************************
67 * StartDoc32W [GDI32.348]
70 INT32 WINAPI StartDoc32W(HDC32 hdc, const DOCINFO32W* doc) {
71 FIXME(gdi,"stub\n");
72 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
73 return 0; /* failure*/
76 /******************************************************************
77 * StartPage32 [GDI32.349]
80 INT32 WINAPI StartPage32(HDC32 hdc)
82 FIXME(gdi,"stub\n");
83 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
84 return 0; /* failure*/
87 /******************************************************************
88 * EndPage32 [GDI32.77]
91 INT32 WINAPI EndPage32(HDC32 hdc)
93 FIXME(gdi,"stub\n");
94 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
95 return 0; /* failure*/
98 /******************************************************************
99 * EndDoc16 [GDI.378]
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)
113 FIXME(gdi,"stub\n");
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);
132 return 1;
135 /******************************************************************
136 * DrvGetPrinterDataInternal
138 * Helper for DrvGetPrinterData
140 static DWORD DrvGetPrinterDataInternal(LPSTR RegStr_Printer,
141 LPBYTE lpPrinterData, int cbData, int what)
143 DWORD res = -1;
144 HKEY hkey;
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))) {
150 if (!lpPrinterData)
151 res = cbQueryData;
152 else if ((cbQueryData) && (cbQueryData <= cbData)) {
153 cbQueryData = cbData;
154 if (RegQueryValueEx32A(hkey, DefaultDevMode, 0,
155 &dwType, lpPrinterData, &cbQueryData))
156 res = cbQueryData;
159 } else { /* "Printer Driver" */
160 cbQueryData = 32;
161 RegQueryValueEx32A(hkey, "Printer Driver", 0,
162 &dwType, lpPrinterData, &cbQueryData);
163 res = cbQueryData;
166 if (hkey) RegCloseKey(hkey);
167 return res;
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;
180 DWORD res = 0;
181 DWORD dwType, PrinterAttr, cbPrinterAttr, SetData, size;
183 if (HIWORD(lpPrinter))
184 TRACE(print,"printer %s\n",lpPrinter);
185 else
186 TRACE(print,"printer %p\n",lpPrinter);
187 if (HIWORD(lpProfile))
188 TRACE(print,"profile %s\n",lpProfile);
189 else
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);
205 if (size+1) {
206 *lpNeeded = size;
207 if ((lpPrinterData) && (*lpNeeded > cbData))
208 res = ERROR_MORE_DATA;
210 else res = ERROR_INVALID_PRINTER_NAME;
212 else
213 if (((DWORD)lpProfile == INT_PD_DEFAULT_MODEL) || (HIWORD(lpProfile) &&
214 (!strcmp(lpProfile, PrinterModel)))) {
215 *lpNeeded = 32;
216 if (!lpPrinterData) goto failed;
217 if (cbData < 32) {
218 res = ERROR_MORE_DATA;
219 goto failed;
221 size = DrvGetPrinterDataInternal(RegStr_Printer, lpPrinterData, cbData,
222 INT_PD_DEFAULT_MODEL);
223 if ((size+1) && (lpType))
224 *lpType = REG_SZ;
225 else
226 res = ERROR_INVALID_PRINTER_NAME;
228 else
230 if ((res = RegOpenKey32A(HKEY_LOCAL_MACHINE, RegStr_Printer, &hkey)))
231 goto failed;
232 cbPrinterAttr = 4;
233 if ((res = RegQueryValueEx32A(hkey, "Attributes", 0,
234 &dwType, (LPBYTE)&PrinterAttr, &cbPrinterAttr)))
235 goto failed;
236 if ((res = RegOpenKey32A(hkey, PrinterDriverData, &hkey2)))
237 goto failed;
238 *lpNeeded = cbData;
239 res = RegQueryValueEx32A(hkey2, lpProfile, 0,
240 lpType, lpPrinterData, lpNeeded);
241 if ((res != ERROR_CANTREAD) &&
242 ((PrinterAttr &
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;
249 else
251 SetData = -1;
252 RegSetValueEx32A(hkey2, lpProfile, 0, REG_DWORD, (LPBYTE)&SetData, 4); /* no result returned */
256 failed:
257 if (hkey2) RegCloseKey(hkey2);
258 if (hkey) RegCloseKey(hkey);
259 HeapFree(GetProcessHeap(), 0, RegStr_Printer);
260 return res;
264 /******************************************************************
265 * DrvSetPrinterData [GDI.281]
268 DWORD WINAPI DrvSetPrinterData(LPSTR lpPrinter, LPSTR lpProfile,
269 DWORD lpType, LPBYTE lpPrinterData,
270 DWORD dwSize)
272 LPSTR RegStr_Printer;
273 HKEY hkey = 0;
274 DWORD res = 0;
276 if (HIWORD(lpPrinter))
277 TRACE(print,"printer %s\n",lpPrinter);
278 else
279 TRACE(print,"printer %p\n",lpPrinter);
280 if (HIWORD(lpProfile))
281 TRACE(print,"profile %s\n",lpProfile);
282 else
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)
299 != ERROR_SUCCESS ||
300 RegSetValueEx32A(hkey, DefaultDevMode, 0, REG_BINARY,
301 lpPrinterData, dwSize) != ERROR_SUCCESS )
302 res = ERROR_INVALID_PRINTER_NAME;
304 else
306 strcat(RegStr_Printer, "\\");
308 if( (res = RegOpenKey32A(HKEY_LOCAL_MACHINE, RegStr_Printer, &hkey)) ==
309 ERROR_SUCCESS ) {
311 if (!lpPrinterData)
312 res = RegDeleteValue32A(hkey, lpProfile);
313 else
314 res = RegSetValueEx32A(hkey, lpProfile, 0, lpType,
315 lpPrinterData, dwSize);
319 if (hkey) RegCloseKey(hkey);
320 HeapFree(GetProcessHeap(), 0, RegStr_Printer);
321 return res;
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);
333 return 1;
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);
346 return -1;
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
360 return 1;
364 /*****************************************************************************
365 * DocumentProperties32W
367 LONG WINAPI DocumentProperties32W(HWND32 hWnd, HANDLE32 hPrinter,
368 LPWSTR pDeviceName,
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,
374 fMode);
375 return -1;
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,
387 pDefault);
388 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
389 return FALSE;
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,
400 pDefault);
401 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
402 return FALSE;
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");
415 *lpdwReturned=0;
416 *lpdwNeeded = 0;
417 return TRUE;
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");
430 *lpdwReturned=0;
431 *lpdwNeeded = 0;
432 return TRUE;
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);
443 return FALSE;
446 /******************************************************************
447 * DeletePrinterDriver32A [WINSPOOL.146]
450 BOOL32 WINAPI
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);
456 return FALSE;
460 /******************************************************************
461 * DeleteMonitor32A [WINSPOOL.135]
464 BOOL32 WINAPI
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);
470 return FALSE;
474 /******************************************************************
475 * DeletePort32A [WINSPOOL.137]
478 BOOL32 WINAPI
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);
484 return FALSE;
487 /******************************************************************************
488 * SetPrinter32W [WINSPOOL.214]
490 BOOL32 WINAPI
491 SetPrinter32W(
492 HANDLE32 hPrinter,
493 DWORD Level,
494 LPBYTE pPrinter,
495 DWORD Command) {
497 FIXME(print,"():stub\n");
498 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
499 return FALSE;
502 /******************************************************************************
503 * WritePrinter32 [WINSPOOL.223]
505 BOOL32 WINAPI
506 WritePrinter32(
507 HANDLE32 hPrinter,
508 LPVOID pBuf,
509 DWORD cbBuf,
510 LPDWORD pcWritten) {
512 FIXME(print,"():stub\n");
513 SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
514 return FALSE;
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);
523 return 1;
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);
532 return 1;
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,
542 pcbNeeded);
543 return 1;
546 /*****************************************************************************
547 * AddJob32W [WINSPOOL.106]
549 BOOL32 WINAPI AddJob32W(HANDLE32 hPrinter, DWORD Level, LPBYTE pData, DWORD cbBuf,
550 LPDWORD pcbNeeded)
552 FIXME(print, "(%d,%ld,%p,%ld,%p): stub\n", hPrinter, Level, pData, cbBuf,
553 pcbNeeded);
554 return 1;
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);
563 return 0;
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);
572 return 0;
576 /*****************************************************************************
577 * ClosePrinter32 [WINSPOOL.126]
579 BOOL32 WINAPI ClosePrinter32(HANDLE32 hPrinter)
581 FIXME(print, "(%d): stub\n", hPrinter);
582 return 1;
585 /*****************************************************************************
586 * DeleteForm32A [WINSPOOL.133]
588 BOOL32 WINAPI DeleteForm32A(HANDLE32 hPrinter, LPSTR pFormName)
590 FIXME(print, "(%d,%s): stub\n", hPrinter, pFormName);
591 return 1;
594 /*****************************************************************************
595 * DeleteForm32W [WINSPOOL.134]
597 BOOL32 WINAPI DeleteForm32W(HANDLE32 hPrinter, LPWSTR pFormName)
599 FIXME(print, "(%d,%s): stub\n", hPrinter, debugstr_w(pFormName));
600 return 1;
603 /*****************************************************************************
604 * DeletePrinter32 [WINSPOOL.143]
606 BOOL32 WINAPI DeletePrinter32(HANDLE32 hPrinter)
608 FIXME(print, "(%d): stub\n", hPrinter);
609 return 1;
612 /*****************************************************************************
613 * SetPrinter32A [WINSPOOL.211]
615 BOOL32 WINAPI SetPrinter32A(HANDLE32 hPrinter, DWORD Level, LPBYTE pPrinter,
616 DWORD Command)
618 FIXME(print, "(%d,%ld,%p,%ld): stub\n",hPrinter,Level,pPrinter,Command);
619 return FALSE;
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,
629 Command);
630 return FALSE;
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,
640 Command);
641 return FALSE;
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);
652 return FALSE;
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);
663 return FALSE;
666 /*****************************************************************************
667 * SetForm32A [WINSPOOL.207]
669 BOOL32 WINAPI SetForm32A(HANDLE32 hPrinter, LPSTR pFormName, DWORD Level,
670 LPBYTE pForm)
672 FIXME(print, "(%d,%s,%ld,%p): stub\n",hPrinter,pFormName,Level,pForm);
673 return FALSE;
676 /*****************************************************************************
677 * SetForm32W [WINSPOOL.208]
679 BOOL32 WINAPI SetForm32W(HANDLE32 hPrinter, LPWSTR pFormName, DWORD Level,
680 LPBYTE pForm)
682 FIXME(print, "(%d,%p,%ld,%p): stub\n",hPrinter,pFormName,Level,pForm);
683 return FALSE;
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);
693 return FALSE;
696 /*****************************************************************************
697 * ResetPrinter32A [WINSPOOL.203]
699 BOOL32 WINAPI ResetPrinter32A(HANDLE32 hPrinter, LPPRINTER_DEFAULTS32A pDefault)
701 FIXME(print, "(%d, %p): stub\n", hPrinter, pDefault);
702 return FALSE;
705 /*****************************************************************************
706 * ResetPrinter32W [WINSPOOL.204]
708 BOOL32 WINAPI ResetPrinter32W(HANDLE32 hPrinter, LPPRINTER_DEFAULTS32W pDefault)
710 FIXME(print, "(%d, %p): stub\n", hPrinter, pDefault);
711 return FALSE;
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,
721 cbBuf, pcbNeeded);
722 return FALSE;
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,
732 cbBuf, pcbNeeded);
733 return FALSE;
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);
745 return FALSE;
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);
757 return FALSE;
759 /*****************************************************************************
760 * AddPrinterDriver32A [WINSPOOL.120]
762 BOOL32 WINAPI AddPrinterDriver32A(LPSTR printerName,DWORD level,
763 LPBYTE pDriverInfo)
765 FIXME(print, "(%s,%ld,%p): stub\n",printerName,level,pDriverInfo);
766 return FALSE;
768 /*****************************************************************************
769 * AddPrinterDriver32W [WINSPOOL.121]
771 BOOL32 WINAPI AddPrinterDriver32W(LPWSTR printerName,DWORD level,
772 LPBYTE pDriverInfo)
774 FIXME(print, "(%s,%ld,%p): stub\n",debugstr_w(printerName),
775 level,pDriverInfo);
776 return FALSE;