add SetPrinterDataExW.exe.
[gd/win32-spoolss/.git] / EnumForms.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         DWORD                   returned, needed, i;
15         PFORM_INFO_1    buffer1 = NULL;
16
17         if (argc < 2)
18         {
19                 fprintf (stderr, "useage: %s <printername>\n", argv[0]);
20                 exit (-1);
21         }
22
23         /* open the printer */
24         if (!OpenPrinter (argv[1], &printer, NULL))
25         {
26                 fprintf (stderr, "Unable to open %s!\n", argv[1]);
27                 exit (-1);
28         }
29         else
30         {
31                 printf ("Printer [%s] opened successfully.\n\n", argv[1]);
32         }
33
34         /* INFO LEVEL 1 */
35         EnumForms(printer, 1, (LPBYTE)buffer1, 0, &needed, &returned);
36         if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
37         {
38                 fprintf (stderr, "Error getting form information for [%s] using NULL buffer.\n", argv[1]);
39                 exit (-1);
40         }
41
42         if ((buffer1 = (PFORM_INFO_1)malloc(needed)) == NULL)
43         {
44                 fprintf (stderr, "Unable to malloc memory for FORM_INFO_1 buffer!\n");
45                 exit (-1);
46         }
47         if (!EnumForms(printer, 1, (LPBYTE)buffer1, needed, &needed, &returned))
48         {
49                 fprintf (stderr, "Error getting form information for [%s].\nSize of buffer = %d\n",
50                              argv[1], needed);
51                 exit (-1);
52         }
53
54         printf ("Form Info Level 1:\n");
55         for (i=0; i<returned; i++)
56         {
57                 print_form_info_1 (&buffer1[i]);
58                 printf ("\n");
59         }
60         free (buffer1);
61
62
63         /* close the printer */
64         if (!ClosePrinter(printer))
65         {
66                 fprintf (stderr, "Error closing printer!\n");
67                 exit (-1);
68         }
69         else
70         {
71                 printf ("Printer [%s] closed successfully.\n", argv[1]);
72         }
73
74         return 0;
75
76 }