add SetPrinterDataExW.exe.
[gd/win32-spoolss/.git] / ResetPrinter.c
1 /******************************************************************
2  * SPOOLSS regression testing code for Samba print servers
3  *
4  *****************************************************************/
5
6 #include <windows.h>
7 #include <stdio.h>
8 #include "printlib.h"
9
10 int main (int argc, char* argv[])
11 {
12
13         HANDLE  printer;
14         PRINTER_DEFAULTS defaults;
15         PPRINTER_INFO_2 buffer2 = NULL;
16         DWORD needed, returned;
17
18         memset(&defaults, 0x0, sizeof(PRINTER_DEFAULTS));
19         defaults.pDatatype = _strdup("RAW");
20
21         if (argc < 2)
22         {
23                 fprintf (stderr, "useage: %s <printername>\n", argv[0]);
24                 exit (-1);
25         }
26
27         if (!OpenPrinter (argv[1], &printer, NULL))
28         {
29                 PrintLastError();
30                 exit (-1);
31         }
32         else
33                 printf ("Printer [%s] opened successfully.\n\n", argv[1]);
34
35         /* INFO LEVEL 2 */
36         needed = returned = 0;
37         GetPrinter(printer, 2, (LPBYTE)buffer2, 0, &needed);
38         if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
39         {
40                 if (needed != 0)
41                         fprintf (stderr, "Error GetPrinter Info Level 2 for [%s] using NULL buffer.\n", argv[1]);
42                 else
43                         printf ("Info level 2 returned no information\n");
44
45                 goto done;
46         }
47
48         if ((buffer2 = (PPRINTER_INFO_2)malloc(needed*2)) == NULL)
49         {
50                 fprintf (stderr, "Unable to malloc memory for buffer!\n");
51                 exit (-1);
52         }
53
54         if (!GetPrinter(printer, 2, (LPBYTE)buffer2, needed, &returned))
55         {
56                 fprintf (stderr, "Error getting printers Info Level 2 for [%s].\nSize of buffer = 0x%x [0x%x]\n",
57                                 argv[1], needed, returned);
58                 PrintLastError();
59         }
60
61
62
63         defaults.pDevMode = buffer2->pDevMode;
64         if (!ResetPrinter(printer, &defaults))
65                 PrintLastError();
66
67 done:
68         if (!ClosePrinter(printer))
69                 PrintLastError();
70         else
71                 printf ("Printer [%s] closed successfully.\n", argv[1]);
72
73         return 0;
74
75 }