add SetPrinterDataExW.exe.
[gd/win32-spoolss/.git] / GetPrinterData.c
1 /******************************************************************
2  * SPOOLSS regression testing code for Samba print servers
3  *
4  *****************************************************************/
5
6 #include <windows.h>
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include "printlib.h"
10
11 int main (int argc, char* argv[])
12 {
13
14         HANDLE                  printer;
15         DWORD                   type, pcbData;
16         LPBYTE                  pData = NULL;
17         DWORD                   i, status;
18
19
20         if (argc < 3)
21         {
22                 fprintf (stderr, "useage: %s <printername> <value name>\n", argv[0]);
23                 exit (-1);
24         }
25
26         /* open the printer */
27         if (!OpenPrinter (argv[1], &printer, NULL))
28         {
29                 fprintf (stderr, "Unable to open %s!\n", argv[1]);
30                 exit (-1);
31         }
32         else
33         {
34                 printf ("Printer [%s] opened successfully.\n\n", argv[1]);
35         }
36
37         status=GetPrinterData(printer, argv[2], &type, pData, 0, &pcbData);
38         if ((status != ERROR_SUCCESS) && (status != ERROR_MORE_DATA))
39         {
40                 PrintLastError();
41                 ClosePrinter (printer);
42                 exit (-1);
43         }
44
45         if ((pData = (LPBYTE)malloc(pcbData)) == NULL)
46         {
47                 fprintf (stderr, "Unable to malloc memory for Value Data!\n");
48                 exit (-1);
49         }
50
51         status = GetPrinterData(printer, argv[2], &type, pData, pcbData, &pcbData);
52         if (status == ERROR_SUCCESS)
53         {
54                 printf ("\tValue Name = %s\n", argv[2]);
55                 printf ("\tType = %d\n", type);
56                 printf ("\tData = 0x%x bytes\n", pcbData);
57                 i = 0;
58                 while (i < pcbData)
59                 {
60                         printf ("\t0x%x", *(pData++));
61                         if (i%4 == 3)
62                                 printf ("\n");
63                         i++;
64                 }
65                 printf ("\n");
66         }
67
68         printf ("\n");
69
70
71
72         /* close the printer */
73         if (!ClosePrinter(printer))
74         {
75                 fprintf (stderr, "Error closing printer!\n");
76                 exit (-1);
77         }
78         else
79         {
80                 printf ("Printer [%s] closed successfully.\n", argv[1]);
81         }
82
83         return 0;
84
85 }