add SetPrinterDataExW.exe.
[gd/win32-spoolss/.git] / EnumMonitors.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
11 int main (int argc, char* argv[])
12 {
13
14         DWORD                   returned, needed, i;
15         PMONITOR_INFO_1 buffer1 = NULL;
16         PMONITOR_INFO_2 buffer2 = NULL;
17
18         if (argc < 2)
19         {
20                 fprintf (stderr, "useage: %s <servername>\n", argv[0]);
21                 exit (-1);
22         }
23
24         /* INFO LEVEL 1 */
25         needed = returned = 0;
26         EnumMonitors(argv[1], 1, (LPBYTE)buffer1, 0, &needed, &returned);
27         if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
28         {
29                 fprintf (stderr, "Error getting monitor information for [%s] using NULL buffer.\n", argv[1]);
30                 exit (-1);
31         }
32
33         if ((buffer1 = (PMONITOR_INFO_1)malloc(needed)) == NULL)
34         {
35                 fprintf (stderr, "Unable to malloc memory for MONITOR_INFO_1 buffer!\n");
36                 exit (-1);
37         }
38         if (!EnumMonitors(argv[1], 1, (LPBYTE)buffer1, needed, &needed, &returned))
39         {
40                 fprintf (stderr, "Error getting monitor information for [%s].\nSize of buffer = %d\n",
41                              argv[1], needed);
42                 exit (-1);
43         }
44
45         printf ("Monitor Info Level 1:\n");
46         for (i=0; i<returned; i++)
47         {
48                 print_monitor_info_1(&buffer1[i]);
49         }
50         free (buffer1);
51
52         /* INFO LEVEL 2 */
53         needed = returned = 0;
54         EnumMonitors(argv[1], 2, (LPBYTE)buffer2, 0, &needed, &returned);
55         if (GetLastError() != ERROR_INSUFFICIENT_BUFFER)
56         {
57                 fprintf (stderr, "Error getting monitor information for [%s] using NULL buffer.\n", argv[1], argv[2]);
58                 exit (-1);
59         }
60
61         if ((buffer2 = (PMONITOR_INFO_2)malloc(needed)) == NULL)
62         {
63                 fprintf (stderr, "Unable to malloc memory for MONITOR_INFO_2 buffer!\n");
64                 exit (-1);
65         }
66         if (!EnumMonitors(argv[1], 2, (LPBYTE)buffer2, needed, &needed, &returned))
67         {
68                 fprintf (stderr, "Error getting monitor information for [%s].\nSize of buffer = %d\n",
69                              argv[1], needed);
70                 exit (-1);
71         }
72
73         printf ("Monitor Info Level 2:\n");
74         for (i=0; i<returned; i++)
75         {
76                 print_monitor_info_2(&buffer2[i]);
77         }
78         free (buffer2);
79
80
81         return 0;
82
83 }