add SetPrinterDataExW.exe.
[gd/win32-spoolss/.git] / GetPrinterDataEx.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                  server;
15         DWORD                   type, pcbData;
16         LPBYTE                  pData = NULL;
17         DWORD                   i, status;
18
19
20         if (argc < 3)
21         {
22                 fprintf (stderr, "useage: %s <servername> <value name>\n", argv[0]);
23                 exit (-1);
24         }
25
26         /* open the server */
27         if (!OpenPrinter (argv[1], &server, NULL))
28                 PrintLastError();
29         else
30                 printf ("Server [%s] opened successfully.\n\n", argv[1]);
31
32         status=GetPrinterDataEx(server, "PrinterDriverData", argv[2], &type, pData, 0, &pcbData);
33         if ((status != ERROR_SUCCESS) && (status != ERROR_MORE_DATA))
34         {
35                 PrintLastError();
36         }
37         else
38         {
39                 if ((pData = (LPBYTE)malloc(pcbData)) == NULL)
40                 {
41                         fprintf (stderr, "Unable to malloc memory for Value Data!\n");
42                         exit (-1);
43                 }
44
45                 status = GetPrinterDataEx(server, "PrinterDriverData", argv[2], &type, pData, pcbData, &pcbData);
46                 if (status == ERROR_SUCCESS)
47                 {
48                         printf ("\tValue Name = %s\n", argv[2]);
49                         printf ("\tType = %d\n", type);
50                         printf ("\tData = 0x%x bytes\n", pcbData);
51                         i = 0;
52                         while (i < pcbData)
53                         {
54                                 printf ("\t0x%x", *(pData++));
55                                 if (i%4 == 3)
56                                         printf ("\n");
57                                 i++;
58                         }
59                         printf ("\n");
60                 }
61
62                 printf ("\n");
63         }
64
65
66         /* close the server */
67         if (!ClosePrinter(server))
68                 PrintLastError();
69         else
70                 printf ("Server [%s] closed successfully.\n", argv[1]);
71
72         return 0;
73
74 }