2 Unix SMB/CIFS implementation.
3 test suite for spoolss rpc operations
5 Copyright (C) Gerald (Jerry) Carter 2007
6 Copyright (C) Guenther Deschner 2009-2010
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <http://www.gnu.org/licenses/>.
26 void print_devmode(DEVMODE
*pDevModeIn
)
28 if (pDevModeIn
== NULL
) {
29 printf("\tDevice Mode\t= (null)\n");
33 printf("\tDEVMODE:----------\n");
34 printf("\tDeviceName: [%s]\n", pDevModeIn
->dmDeviceName
);
35 printf("\tSpecVersion: %d\n", pDevModeIn
->dmSpecVersion
);
36 printf("\tDriverVersion: %d\n", pDevModeIn
->dmDriverVersion
);
37 printf("\tSize: %d\n", pDevModeIn
->dmSize
);
38 printf("\tDriverExtra: %d\n", pDevModeIn
->dmDriverExtra
);
39 printf("\tFields: 0x%x\n", pDevModeIn
->dmFields
);
41 if (pDevModeIn
->dmFields
& DM_ORIENTATION
)
42 printf("\tOrientation: %d\n", pDevModeIn
->dmOrientation
);
43 if (pDevModeIn
->dmFields
& DM_PAPERSIZE
)
44 printf("\tPaperSize: %d\n", pDevModeIn
->dmPaperSize
);
45 if (pDevModeIn
->dmFields
& DM_PAPERLENGTH
)
46 printf("\tPaperLength: %d\n", pDevModeIn
->dmPaperLength
);
47 if (pDevModeIn
->dmFields
& DM_PAPERWIDTH
)
48 printf("\tPaperWidth: %d\n", pDevModeIn
->dmPaperWidth
);
49 // if (pDevModeIn->dmFields & DM_POSITION)
50 // printf("\tPosition: %d\n", pDevModeIn->dmPosition);
51 if (pDevModeIn
->dmFields
& DM_SCALE
)
52 printf("\tScale: %d\n", pDevModeIn
->dmScale
);
53 if (pDevModeIn
->dmFields
& DM_COPIES
)
54 printf("\tCopies: %d\n", pDevModeIn
->dmCopies
);
55 if (pDevModeIn
->dmFields
& DM_DEFAULTSOURCE
)
56 printf("\tDefaultSource: %d\n", pDevModeIn
->dmDefaultSource
);
57 if (pDevModeIn
->dmFields
& DM_PRINTQUALITY
)
58 printf("\tPrintQuality: %d\n", pDevModeIn
->dmPrintQuality
);
59 if (pDevModeIn
->dmFields
& DM_COLOR
)
60 printf("\tColor: %d\n", pDevModeIn
->dmColor
);
61 if (pDevModeIn
->dmFields
& DM_DUPLEX
)
62 printf("\tDuplex: %d\n", pDevModeIn
->dmDuplex
);
63 if (pDevModeIn
->dmFields
& DM_YRESOLUTION
)
64 printf("\tYResolution: %d\n", pDevModeIn
->dmYResolution
);
65 if (pDevModeIn
->dmFields
& DM_TTOPTION
)
66 printf("\tTTOption: %d\n", pDevModeIn
->dmTTOption
);
67 if (pDevModeIn
->dmFields
& DM_COLLATE
)
68 printf("\tCollate: %d\n", pDevModeIn
->dmCollate
);
69 if (pDevModeIn
->dmFields
& DM_FORMNAME
)
70 printf("\tForm: [%s]\n", pDevModeIn
->dmFormName
);
71 if (pDevModeIn
->dmFields
& DM_LOGPIXELS
)
72 printf("\tLogPixels: %d\n", pDevModeIn
->dmLogPixels
);
73 if (pDevModeIn
->dmFields
& DM_BITSPERPEL
)
74 printf("\tBitsPerPel: %d\n", pDevModeIn
->dmBitsPerPel
);
75 if (pDevModeIn
->dmFields
& DM_PELSWIDTH
)
76 printf("\tPelsWidth: %d\n", pDevModeIn
->dmPelsWidth
);
77 if (pDevModeIn
->dmFields
& DM_PELSHEIGHT
)
78 printf("\tPelsHeight: %d\n", pDevModeIn
->dmPelsHeight
);
79 if (pDevModeIn
->dmFields
& DM_DISPLAYFLAGS
)
80 printf("\tDisplayFlags: %d\n", pDevModeIn
->dmDisplayFlags
);
81 // if (pDevModeIn->dmFields & DM_NUP)
82 // printf("\tNup: %d\n", pDevModeIn->dmNup);
83 if (pDevModeIn
->dmFields
& DM_DISPLAYFREQUENCY
)
84 printf("\tDisplayFrequency:%d\n", pDevModeIn
->dmDisplayFrequency
);
85 if (pDevModeIn
->dmFields
& DM_ICMMETHOD
)
86 printf("\tICMMethod: %d\n", pDevModeIn
->dmICMMethod
);
87 if (pDevModeIn
->dmFields
& DM_ICMINTENT
)
88 printf("\tICMIntent: %d\n", pDevModeIn
->dmICMIntent
);
89 if (pDevModeIn
->dmFields
& DM_MEDIATYPE
)
90 printf("\tMediaType: %d\n", pDevModeIn
->dmMediaType
);
91 if (pDevModeIn
->dmFields
& DM_DITHERTYPE
)
92 printf("\tDitherType: %d\n", pDevModeIn
->dmDitherType
);
93 // if (pDevModeIn->dmFields & DM_PANNINGWIDTH)
94 // printf("\tPanningWidth: %d\n", pDevModeIn->dmPanningWidth);
95 // if (pDevModeIn->dmFields & DM_PANNINGHEIGHT)
96 // printf("\tPanningHeight: %d\n", pDevModeIn->dmPanningHeight);
101 Dump((BYTE
*)pDevModeIn
, sizeof(DEVMODE
), LEADER
);
103 if (pDevModeIn
->dmDriverExtra
) {
104 printf("DriverExtra\n");
105 Dump((BYTE
*)pDevModeIn
+ sizeof(DEVMODE
), pDevModeIn
->dmDriverExtra
, LEADER
);
113 void print_acl(const char* str
, ACL
*acl
)
119 printf("\t\tACL Revision \t\t 0x%x\n", acl
->AclRevision
);
120 printf("\t\tSbz1\t\t 0x%x\n", acl
->Sbz1
);
121 printf("\t\tSbz2\t\t 0x%x\n", acl
->Sbz2
);
122 printf("\t\tACL Size\t\t 0x%x\n", acl
->AclSize
);
123 printf("\t\tACL Count\t\t 0x%x\n", acl
->AceCount
);
128 void print_sid(const char* str
, SID
*sid
)
133 printf("0x%x\n", sid
);
136 printf("\t\tRevision\t\t0x%x\n", sid
->Revision
);
137 printf("\t\tSubAuthorityCount\t0x%x\n", sid
->SubAuthorityCount
);
138 printf("\t\tSubAuthority\n\t");
139 while (i
< sid
->SubAuthorityCount
) {
140 printf("\t0x%x", sid
->SubAuthority
[i
]);
149 void print_secdesc(SECURITY_DESCRIPTOR
*secdesc
)
151 if (secdesc
== NULL
) {
152 printf("\tSecurity Descriptor\t= (null)\n");
156 printf("\tRevision\t= 0x%x\n", secdesc
->Revision
);
157 printf("\tSbz1\t\t= 0x%x\n", secdesc
->Sbz1
);
159 print_sid("\tOwner\t\t= ", secdesc
->Owner
);
160 print_sid("\tGroup\t\t= ",secdesc
->Group
);
161 print_acl("\tSacl\t\t= ", secdesc
->Sacl
);
162 print_acl("\tDacl\t\t= ", secdesc
->Dacl
);
167 void PrintLastError()
172 status
= GetLastError();
174 FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER
| FORMAT_MESSAGE_FROM_SYSTEM
| FORMAT_MESSAGE_IGNORE_INSERTS
,
175 NULL
, GetLastError(), MAKELANGID(LANG_NEUTRAL
, SUBLANG_DEFAULT
), // Default language
176 (LPTSTR
)&lpMsgBuf
, 0, NULL
);
177 printf("ERROR [0x%x] : %s\n", status
, (char*)lpMsgBuf
);
184 void print_job_info_1(PJOB_INFO_1 info
)
186 printf("\tJob ID\t\t= %d\n", info
->JobId
);
187 printf("\tPrinter Name\t= %s\n", info
->pPrinterName
);
188 printf("\tMachine Name\t= %s\n", info
->pMachineName
);
189 printf("\tUser Name\t= %s\n", info
->pUserName
);
190 printf("\tDocument\t= %s\n", info
->pDocument
);
191 printf("\tDatatype\t= %s\n", info
->pDatatype
);
192 printf("\tStatus\t\t= %s\n", info
->pStatus
);
193 printf("\tStatus\t= %d\n", info
->Status
);
194 printf("\tPriority\t= %d\n", info
->Priority
);
195 printf("\tPosition\t= %d\n", info
->Position
);
196 printf("\tTotal Pages\t= %d\n", info
->TotalPages
);
197 printf("\tPages Printed\t= %d\n", info
->PagesPrinted
);
198 printf("\tSubmitted (DD:MM:YY HH:MM:SS)\t= %d:%d:%d %d:%d:%d UTC\n",
199 info
->Submitted
.wDay
, info
->Submitted
.wMonth
,
200 info
->Submitted
.wYear
, info
->Submitted
.wHour
,
201 info
->Submitted
.wMinute
, info
->Submitted
.wSecond
);
206 void print_job_info_2(PJOB_INFO_2 info
)
208 printf("\tJob ID\t\t= %d\n", info
->JobId
);
209 printf("\tPrinter Name\t= %s\n", info
->pPrinterName
);
210 printf("\tMachine Name\t= %s\n", info
->pMachineName
);
211 printf("\tUser Name\t= %s\n", info
->pUserName
);
212 printf("\tDocument\t= %s\n", info
->pDocument
);
213 printf("\tDatatype\t= %s\n", info
->pDatatype
);
214 printf("\tNotify Name\t= %s\n", info
->pNotifyName
);
215 printf("\tPrint Processor\t= %s\n", info
->pPrintProcessor
);
216 printf("\tParameters\t= %s\n", info
->pParameters
);
217 printf("\tDriver Name\t= %s\n", info
->pDriverName
);
218 printf("\tStatus\t\t= %s\n", info
->pStatus
);
219 printf("\tStatus\t\t= %d\n", info
->Status
);
220 printf("\tPriority\t= %d\n", info
->Priority
);
221 printf("\tPosition\t= %d\n", info
->Position
);
222 printf("\tTotal Pages\t= %d\n", info
->TotalPages
);
223 printf("\tPages Printed\t= %d\n", info
->PagesPrinted
);
224 printf("\tStart Time\t= %d\n", info
->StartTime
);
225 printf("\tUntil Time\t= %d\n", info
->UntilTime
);
226 printf("\tTime\t\t= %d\n", info
->Time
);
227 printf("\tSize\t\t= %d\n", info
->Size
);
228 printf("\tSubmitted (DD:MM:YY HH:MM:SS)\t= %d:%d:%d %d:%d:%d UTC\n",
229 info
->Submitted
.wDay
, info
->Submitted
.wMonth
,
230 info
->Submitted
.wYear
, info
->Submitted
.wHour
,
231 info
->Submitted
.wMinute
, info
->Submitted
.wSecond
);
232 printf("\tDevice Mode Information\n");
233 printf("\t-----------------------\n");
234 print_devmode(info
->pDevMode
);
235 printf("\tSecurity Descriptor Information\n");
236 printf("\t-------------------------------\n");
237 print_secdesc(info
->pSecurityDescriptor
);
242 void print_job_info_3(PJOB_INFO_3 info
)
244 printf("\tJob ID\t\t= %d\n", info
->JobId
);
245 printf("\tJob ID Next Job\t= %d\n", info
->NextJobId
);
246 printf("\tReserved (must be 0)\t= %d\n",info
->Reserved
);
251 void print_job_info_4(PJOB_INFO_4 info
)
253 printf("\tJob ID\t\t= %d\n", info
->JobId
);
254 printf("\tPrinter Name\t= %s\n", info
->pPrinterName
);
255 printf("\tMachine Name\t= %s\n", info
->pMachineName
);
256 printf("\tUser Name\t= %s\n", info
->pUserName
);
257 printf("\tDocument\t= %s\n", info
->pDocument
);
258 printf("\tDatatype\t= %s\n", info
->pDatatype
);
259 printf("\tNotify Name\t= %s\n", info
->pNotifyName
);
260 printf("\tPrint Processor\t= %s\n", info
->pPrintProcessor
);
261 printf("\tDriver Name\t= %s\n", info
->pDriverName
);
262 printf("\tStatus\t\t= %s\n", info
->pStatus
);
263 printf("\tStatus\t\t= %d\n", info
->Status
);
264 printf("\tPriority\t= %d\n", info
->Priority
);
265 printf("\tPosition\t= %d\n", info
->Position
);
266 printf("\tTotal Pages\t= %d\n", info
->TotalPages
);
267 printf("\tPages Printed\t= %d\n", info
->PagesPrinted
);
268 printf("\tStart Time\t= %d\n", info
->StartTime
);
269 printf("\tUntil Time\t= %d\n", info
->UntilTime
);
270 printf("\tTime\t\t= %d\n", info
->Time
);
271 printf("\tSize\t\t= %d\n", info
->Size
);
272 printf("\tSize High\t\t= 0x%016x\n", info
->SizeHigh
);
273 printf("\tSubmitted (DD:MM:YY HH:MM:SS)\t= %d:%d:%d %d:%d:%d UTC\n",
274 info
->Submitted
.wDay
, info
->Submitted
.wMonth
,
275 info
->Submitted
.wYear
, info
->Submitted
.wHour
,
276 info
->Submitted
.wMinute
, info
->Submitted
.wSecond
);
277 printf("\tDevice Mode Information\n");
278 printf("\t-----------------------\n");
279 print_devmode(info
->pDevMode
);
280 printf("\tSecurity Descriptor Information\n");
281 printf("\t-------------------------------\n");
282 print_secdesc(info
->pSecurityDescriptor
);
287 void print_job_info_bylevel(DWORD level
, LPBYTE buffer
, DWORD count
)
290 PJOB_INFO_1 buffer1
= NULL
;
291 PJOB_INFO_2 buffer2
= NULL
;
292 PJOB_INFO_3 buffer3
= NULL
;
293 PJOB_INFO_4 buffer4
= NULL
;
301 buffer1
= (PJOB_INFO_1
)buffer
;
304 buffer2
= (PJOB_INFO_2
)buffer
;
307 buffer3
= (PJOB_INFO_3
)buffer
;
310 buffer4
= (PJOB_INFO_4
)buffer
;
316 printf("Job Info Level %d:\n", level
);
320 for (i
=0; i
<count
; i
++) {
321 print_job_info_1(&buffer1
[i
]);
326 for (i
=0; i
<count
; i
++) {
327 print_job_info_2(&buffer2
[i
]);
332 for (i
=0; i
<count
; i
++) {
333 print_job_info_3(&buffer3
[i
]);
338 for (i
=0; i
<count
; i
++) {
339 print_job_info_4(&buffer4
[i
]);
348 void print_monitor_info_1(PMONITOR_INFO_1 info
)
350 printf("\tMonitor Name\t= %s\n", info
->pName
);
355 void print_monitor_info_2(PMONITOR_INFO_2 info
)
357 printf("\tMonitor Name\t= %s\n", info
->pName
);
358 printf("\tEnvironment\t= %s\n", info
->pEnvironment
);
359 printf("\tDLL Name\t= %s\n", info
->pDLLName
);
364 void print_monitor_info_bylevel(DWORD level
, LPBYTE buffer
, DWORD count
)
367 PMONITOR_INFO_1 buffer1
= NULL
;
368 PMONITOR_INFO_2 buffer2
= NULL
;
376 buffer1
= (PMONITOR_INFO_1
)buffer
;
379 buffer2
= (PMONITOR_INFO_2
)buffer
;
385 printf("Monitor Info Level %d:\n", level
);
389 for (i
=0; i
<count
; i
++) {
390 print_monitor_info_1(&buffer1
[i
]);
395 for (i
=0; i
<count
; i
++) {
396 print_monitor_info_2(&buffer2
[i
]);
405 void print_port_info_1(PPORT_INFO_1 info
)
407 printf("\tPort Name\t= %s\n", info
->pName
);
411 void print_port_info_2(PPORT_INFO_2 info
)
413 printf("\tPort Name\t= %s\n", info
->pPortName
);
414 printf("\tMonitor Name\t= %s\n",info
->pMonitorName
);
415 printf("\tDescription\t= %s\n", info
->pDescription
);
416 printf("\tPort Type\t= 0x%08x\n", info
->fPortType
);
417 printf("\tReserved\t= 0x%08x\n", info
->Reserved
);
421 void print_port_info_3(PPORT_INFO_3 info
)
423 printf("\tStatus\t= 0x%08x\n", info
->dwStatus
);
424 printf("\tStatus String\t= %s\n", info
->pszStatus
);
425 printf("\tSeverity\t= 0x%08x\n", info
->dwSeverity
);
429 void print_port_info_bylevel(DWORD level
, LPBYTE buffer
, DWORD count
)
432 PPORT_INFO_1 buffer1
= NULL
;
433 PPORT_INFO_2 buffer2
= NULL
;
434 PPORT_INFO_3 buffer3
= NULL
;
442 buffer1
= (PPORT_INFO_1
)buffer
;
445 buffer2
= (PPORT_INFO_2
)buffer
;
448 buffer3
= (PPORT_INFO_3
)buffer
;
454 printf("Port Info Level %d:\n", level
);
458 for (i
=0; i
<count
; i
++) {
459 print_port_info_1(&buffer1
[i
]);
464 for (i
=0; i
<count
; i
++) {
465 print_port_info_2(&buffer2
[i
]);
470 for (i
=0; i
<count
; i
++) {
471 print_port_info_3(&buffer3
[i
]);
480 void print_form_info_1(PFORM_INFO_1 info
)
482 printf("\tForm Name\t= %s\n", info
->pName
);
483 printf("\tFlags\t\t= 0x%x\n", info
->Flags
);
484 printf("\tSize\t\t= %d x %d\n", info
->Size
.cx
, info
->Size
.cy
);
485 printf("\tRectangle\t= [left]%d [right]%d [top]%d [bottom]%d\n",
486 info
->ImageableArea
.left
, info
->ImageableArea
.right
,
487 info
->ImageableArea
.top
, info
->ImageableArea
.bottom
);
492 void print_form_info_2(PFORM_INFO_2 info
)
494 printf("\tForm Name\t= %s\n", info
->pName
);
495 printf("\tFlags\t\t= 0x%x\n", info
->Flags
);
496 printf("\tSize\t\t= %d x %d\n", info
->Size
.cx
, info
->Size
.cy
);
497 printf("\tRectangle\t= [left]%d [right]%d [top]%d [bottom]%d\n",
498 info
->ImageableArea
.left
, info
->ImageableArea
.right
,
499 info
->ImageableArea
.top
, info
->ImageableArea
.bottom
);
500 printf("\tKeyword\t= %s\n", info
->pKeyword
);
501 printf("\tString Type\t= 0x%08x\n", info
->StringType
);
502 printf("\tMui DLL\t= %s\n", info
->pMuiDll
);
503 printf("\tResource Id\t= 0x%08x\n", info
->dwResourceId
);
504 printf("\tDisplay Name\t= %s\n",info
->pDisplayName
);
505 printf("\tLang Id\t= 0x%04x\n", info
->wLangId
);
510 void print_form_info_bylevel(DWORD level
, LPBYTE buffer
, DWORD count
)
513 PFORM_INFO_1 buffer1
= NULL
;
514 PFORM_INFO_2 buffer2
= NULL
;
522 buffer1
= (PFORM_INFO_1
)buffer
;
525 buffer2
= (PFORM_INFO_2
)buffer
;
531 printf("Form Info Level %d:\n", level
);
535 for (i
=0; i
<count
; i
++) {
536 print_form_info_1(&buffer1
[i
]);
541 for (i
=0; i
<count
; i
++) {
542 print_form_info_2(&buffer2
[i
]);
551 void print_printer_info_1(PPRINTER_INFO_1 info
)
553 printf("\tPrinter Name\t= %s\n", info
->pName
);
554 printf("\tDescription\t= %s\n", info
->pDescription
);
555 printf("\tComment\t\t= %s\n", info
->pComment
);
556 printf("\tFlags\t\t= 0x%x\n", info
->Flags
);
561 void print_printer_info_2(PPRINTER_INFO_2 info
)
563 printf("\tServer Name\t\t= %s\n", info
->pServerName
);
564 printf("\tPrinter Name\t\t= %s\n", info
->pPrinterName
);
565 printf("\tPort Name\t\t= %s\n", info
->pPortName
);
566 printf("\tShare Name\t\t= %s\n", info
->pShareName
);
567 printf("\tDriver Name\t\t= %s\n", info
->pDriverName
);
568 printf("\tComment\t\t\t= %s\n", info
->pComment
);
569 printf("\tLocation\t\t= %s\n", info
->pLocation
);
570 printf("\tSeparator File\t\t= %s\n", info
->pSepFile
);
571 printf("\tDefault Data Type\t= %s\n", info
->pDatatype
);
572 printf("\tPrint Processor\t\t= %s\n", info
->pPrintProcessor
);
573 printf("\tParameters\t\t= %s\n", info
->pParameters
);
574 printf("\tAttributes\t\t= 0x%x\n", info
->Attributes
);
575 printf("\tPriority\t\t= 0x%x\n", info
->Priority
);
576 printf("\tDefault Priority\t= 0x%x\n", info
->DefaultPriority
);
577 printf("\tStart Time\t\t= 0x%x\n", info
->StartTime
);
578 printf("\tUntil Time\t\t= 0x%x\n", info
->UntilTime
);
579 printf("\tStatus\t\t\t= 0x%x\n", info
->Status
);
580 printf("\tcJobs\t\t\t= 0x%x\n", info
->cJobs
);
581 printf("\tAverage PPM\t\t= 0x%x\n", info
->AveragePPM
);
583 printf("\tDevice Mode Information\n");
584 printf("\t-----------------------\n");
585 print_devmode(info
->pDevMode
);
587 printf("\tSecurity Descriptor Information\n");
588 printf("\t-------------------------------\n");
589 print_secdesc(info
->pSecurityDescriptor
);
594 void print_printer_info_5(PPRINTER_INFO_5 info
)
596 printf("\tPrinter Name\t\t\t= %s\n", info
->pPrinterName
);
597 printf("\tPort Name\t\t\t= %s\n", info
->pPortName
);
598 printf("\tAttributes\t\t\t= 0x%x\n", info
->Attributes
);
599 printf("\tDev NotSelect Timeout\t= 0x%x\n", info
->DeviceNotSelectedTimeout
);
600 printf("\tTX RetryTimeout\t\t= 0x%x\n", info
->TransmissionRetryTimeout
);
604 void print_printer_info_6(PPRINTER_INFO_6 info
)
606 printf("\tStatus\t\t\t= 0x%x\n", info
->dwStatus
);
610 void print_printer_info_7(PPRINTER_INFO_7 info
)
612 printf("\tObject GUID\t\t\t= %s\n", info
->pszObjectGUID
);
613 printf("\tAction\t\t\t= 0x%x\n", info
->dwAction
);
617 void print_printer_info_8(PPRINTER_INFO_8 info
)
619 print_devmode(info
->pDevMode
);
622 void print_printer_info_9(PPRINTER_INFO_9 info
)
624 print_devmode(info
->pDevMode
);
627 void print_printer_info_bylevel(DWORD level
, LPBYTE buffer
, DWORD count
)
630 PPRINTER_INFO_1 buffer1
= NULL
;
631 PPRINTER_INFO_2 buffer2
= NULL
;
632 PPRINTER_INFO_3 buffer3
= NULL
;
633 PPRINTER_INFO_4 buffer4
= NULL
;
634 PPRINTER_INFO_5 buffer5
= NULL
;
635 PPRINTER_INFO_6 buffer6
= NULL
;
636 PPRINTER_INFO_7 buffer7
= NULL
;
637 PPRINTER_INFO_8 buffer8
= NULL
;
645 buffer1
= (PPRINTER_INFO_1
)buffer
;
648 buffer2
= (PPRINTER_INFO_2
)buffer
;
651 buffer3
= (PPRINTER_INFO_3
)buffer
;
654 buffer4
= (PPRINTER_INFO_4
)buffer
;
657 buffer5
= (PPRINTER_INFO_5
)buffer
;
660 buffer6
= (PPRINTER_INFO_6
)buffer
;
663 buffer7
= (PPRINTER_INFO_7
)buffer
;
666 buffer8
= (PPRINTER_INFO_8
)buffer
;
672 printf("Printer Info Level %d:\n", level
);
676 for (i
=0; i
<count
; i
++) {
677 print_printer_info_1(&buffer1
[i
]);
682 for (i
=0; i
<count
; i
++) {
683 print_printer_info_2(&buffer2
[i
]);
689 for (i
=0; i
<count
; i
++) {
690 print_printer_info_3(&buffer3
[i
]);
695 for (i
=0; i
<count
; i
++) {
696 print_printer_info_4(&buffer4
[i
]);
702 for (i
=0; i
<count
; i
++) {
703 print_printer_info_5(&buffer5
[i
]);
708 for (i
=0; i
<count
; i
++) {
709 print_printer_info_6(&buffer6
[i
]);
714 for (i
=0; i
<count
; i
++) {
715 print_printer_info_7(&buffer7
[i
]);
720 for (i
=0; i
<count
; i
++) {
721 print_printer_info_8(&buffer8
[i
]);
730 void print_printprocessor_info_1(PPRINTPROCESSOR_INFO_1 info
)
732 printf("\tPrint Processor Name\t= %s\n", info
->pName
);
737 void print_printprocessor_info_bylevel(DWORD level
, LPBYTE buffer
, DWORD count
)
740 PPRINTPROCESSOR_INFO_1 buffer1
= NULL
;
748 buffer1
= (PPRINTPROCESSOR_INFO_1
)buffer
;
754 printf("Print Processor Info Level %d:\n", level
);
758 for (i
=0; i
<count
; i
++) {
759 print_printprocessor_info_1(&buffer1
[i
]);
768 void print_datatypes_info_1(PDATATYPES_INFO_1 info
)
770 printf("\tDataTypes Name\t= %s\n", info
->pName
);
775 void print_datatypes_info_bylevel(DWORD level
, LPBYTE buffer
, DWORD count
)
778 PDATATYPES_INFO_1 buffer1
= NULL
;
786 buffer1
= (PDATATYPES_INFO_1
)buffer
;
792 printf("DataTypes Info Level %d:\n", level
);
796 for (i
=0; i
<count
; i
++) {
797 print_datatypes_info_1(&buffer1
[i
]);
806 void print_driver_info_1(PDRIVER_INFO_1 info
)
808 printf("\tDriver Name\t= %s\n\n", info
->pName
);
813 void print_driver_info_2(PDRIVER_INFO_2 info
)
815 printf("\tDriver Name\t= %s\n", info
->pName
);
816 printf("\tEnvironment\t= %s\n", info
->pEnvironment
);
817 printf("\tVersion\t\t= %d\n", info
->cVersion
);
818 printf("\tDriver Path\t= %s\n", info
->pDriverPath
);
819 printf("\tData File\t= %s\n", info
->pDataFile
);
820 printf("\tConfig File\t= %s\n\n", info
->pConfigFile
);
825 void print_driver_info_3(PDRIVER_INFO_3 info
)
829 printf("\tDriver Name\t= %s\n", info
->pName
);
830 printf("\tEnvironment\t= %s\n", info
->pEnvironment
);
831 printf("\tVersion\t\t= %d\n", info
->cVersion
);
832 printf("\tDriver Path\t= %s\n", info
->pDriverPath
);
833 printf("\tData File\t= %s\n", info
->pDataFile
);
834 printf("\tConfig File\t= %s\n", info
->pConfigFile
);
835 printf("\tHelp Path\t= %s\n", info
->pHelpFile
);
836 printf("\tMonitor Name\t= %s\n", info
->pMonitorName
);
837 printf("\tData Type\t= %s\n", info
->pDefaultDataType
);
838 ptr
= (char*)info
->pDependentFiles
;
839 while ((ptr
!= NULL
) && (*ptr
!= '\0')) {
840 printf("\tDependent Files\t= %s\n", ptr
);
841 for (;*ptr
!= '\0'; ptr
++)
842 /* printf("%s\n", ptr); */
850 void print_driver_info_4(PDRIVER_INFO_4 info
)
854 printf("\tDriver Name\t= %s\n", info
->pName
);
855 printf("\tEnvironment\t= %s\n", info
->pEnvironment
);
856 printf("\tVersion\t\t= %d\n", info
->cVersion
);
857 printf("\tDriver Path\t= %s\n", info
->pDriverPath
);
858 printf("\tData File\t= %s\n", info
->pDataFile
);
859 printf("\tConfig File\t= %s\n", info
->pConfigFile
);
860 printf("\tHelp Path\t= %s\n", info
->pHelpFile
);
861 printf("\tMonitor Name\t= %s\n", info
->pMonitorName
);
862 printf("\tData Type\t= %s\n", info
->pDefaultDataType
);
863 printf("\tPrevious Names\t= %s\n", info
->pszzPreviousNames
);
864 ptr
= (char*)info
->pDependentFiles
;
865 while ((ptr
!= NULL
) && (*ptr
!= '\0')) {
866 printf("\tDependent Files\t= %s\n", ptr
);
867 for (;*ptr
!= '\0'; ptr
++)
868 /* printf("%s\n", ptr); */
876 void print_driver_info_5(PDRIVER_INFO_5 info
)
878 printf("\tDriver Name\t= %s\n", info
->pName
);
879 printf("\tEnvironment\t= %s\n", info
->pEnvironment
);
880 printf("\tVersion\t\t= %d\n", info
->cVersion
);
881 printf("\tDriver Path\t= %s\n", info
->pDriverPath
);
882 printf("\tData File\t= %s\n", info
->pDataFile
);
883 printf("\tConfig File\t= %s\n", info
->pConfigFile
);
884 printf("\tDriver Attributes\t= %d\n", info
->dwDriverAttributes
);
885 printf("\tConfig Version\t= %d\n", info
->dwConfigVersion
);
886 printf("\tDriver Version\t= %d\n", info
->dwDriverVersion
);
891 void print_driver_info_6(PDRIVER_INFO_6 info
)
895 printf("\tDriver Name\t= %s\n", info
->pName
);
896 printf("\tEnvironment\t= %s\n", info
->pEnvironment
);
897 printf("\tVersion\t\t= %d\n", info
->cVersion
);
898 printf("\tDriver Path\t= %s\n", info
->pDriverPath
);
899 printf("\tData File\t= %s\n", info
->pDataFile
);
900 printf("\tConfig File\t= %s\n", info
->pConfigFile
);
901 printf("\tHelp Path\t= %s\n", info
->pHelpFile
);
902 printf("\tMonitor Name\t= %s\n", info
->pMonitorName
);
903 printf("\tData Type\t= %s\n", info
->pDefaultDataType
);
904 printf("\tPrevious Names\t= %s\n", info
->pszzPreviousNames
);
905 ptr
= (char*)info
->pDependentFiles
;
907 while (*ptr
!= '\0') {
908 printf("\tDependent Files\t= %s\n", ptr
);
909 for (;*ptr
!= '\0'; ptr
++)
910 /* printf("%s\n", ptr); */
915 printf("\tPrevious Names\t= (null)\n");
918 ptr
= (char*)info
->pszzPreviousNames
;
920 while (*ptr
!= '\0') {
921 printf("\tPrevious Names\t= %s\n", ptr
);
922 for (;*ptr
!= '\0'; ptr
++)
923 /* printf("%s\n", ptr); */
928 printf("\tPrevious Names\t= (null)\n");
931 printf("\tDriver Date\t= %d\n", info
->ftDriverDate
);
932 printf("\tDriver Version\t= %d\n", info
->dwlDriverVersion
);
933 printf("\tManufacture Name = %s\n", info
->pszMfgName
);
934 printf("\tOEM URL\t\t= %s\n", info
->pszOEMUrl
);
935 printf("\tHardware ID\t= %s\n", info
->pszHardwareID
);
936 printf("\tProvider\t= %s\n", info
->pszProvider
);
940 static void print_multi_sz(LPSTR multisz
)
944 ptr
= (char *)multisz
;
951 while (*ptr
!= '\0') {
953 for (; *ptr
!= '\0'; ptr
++) {
954 /* printf("%s\n", ptr); */
961 void print_driver_info_8(PDRIVER_INFO_8 info
)
963 printf("\tDriver Name\t= %s\n", info
->pName
);
964 printf("\tEnvironment\t= %s\n", info
->pEnvironment
);
965 printf("\tVersion\t\t= %d\n", info
->cVersion
);
966 printf("\tDriver Path\t= %s\n", info
->pDriverPath
);
967 printf("\tData File\t= %s\n", info
->pDataFile
);
968 printf("\tConfig File\t= %s\n", info
->pConfigFile
);
969 printf("\tHelp Path\t= %s\n", info
->pHelpFile
);
970 printf("\tMonitor Name\t= %s\n", info
->pMonitorName
);
971 printf("\tData Type\t= %s\n", info
->pDefaultDataType
);
972 printf("\tPrevious Names\t=\n");
973 print_multi_sz(info
->pszzPreviousNames
);
974 printf("\tDependent Files\t=\n");
975 print_multi_sz(info
->pDependentFiles
);
976 printf("\tDriver Date\t= %d\n", info
->ftDriverDate
);
977 printf("\tDriver Version\t= %d\n", info
->dwlDriverVersion
);
978 printf("\tManufacture Name = %s\n", info
->pszMfgName
);
979 printf("\tOEM URL\t\t= %s\n", info
->pszOEMUrl
);
980 printf("\tHardware ID\t= %s\n", info
->pszHardwareID
);
981 printf("\tProvider\t= %s\n", info
->pszProvider
);
982 printf("\tPrint Processor\t= %s\n", info
->pszPrintProcessor
);
983 printf("\tVendor Setup\t= %s\n", info
->pszVendorSetup
);
984 printf("\tColor Profiles\t=\n");
985 print_multi_sz(info
->pszzColorProfiles
);
986 printf("\tInf Path\t= %s\n", info
->pszInfPath
);
987 printf("\tPrinter Driver Attributes = %d\n", info
->dwPrinterDriverAttributes
);
988 printf("\tCore Driver Dependencies\t=\n");
989 print_multi_sz(info
->pszzCoreDriverDependencies
);
990 printf("\tMin Inbox Driver VerDate\t= %d\n", info
->ftMinInboxDriverVerDate
);
991 printf("\tMin Inbox Driver VerVersion\t= %d\n", info
->dwlMinInboxDriverVerVersion
);
995 void print_driver_info_bylevel(DWORD level
, LPBYTE buffer
, DWORD count
)
998 PDRIVER_INFO_1 buffer1
= NULL
;
999 PDRIVER_INFO_2 buffer2
= NULL
;
1000 PDRIVER_INFO_3 buffer3
= NULL
;
1001 PDRIVER_INFO_4 buffer4
= NULL
;
1002 PDRIVER_INFO_5 buffer5
= NULL
;
1003 PDRIVER_INFO_6 buffer6
= NULL
;
1004 PDRIVER_INFO_8 buffer8
= NULL
;
1012 buffer1
= (PDRIVER_INFO_1
)buffer
;
1015 buffer2
= (PDRIVER_INFO_2
)buffer
;
1018 buffer3
= (PDRIVER_INFO_3
)buffer
;
1021 buffer4
= (PDRIVER_INFO_4
)buffer
;
1024 buffer5
= (PDRIVER_INFO_5
)buffer
;
1027 buffer6
= (PDRIVER_INFO_6
)buffer
;
1030 buffer8
= (PDRIVER_INFO_8
)buffer
;
1036 printf("Driver Info Level %d:\n", level
);
1040 for (i
=0; i
<count
; i
++) {
1041 print_driver_info_1(&buffer1
[i
]);
1046 for (i
=0; i
<count
; i
++) {
1047 print_driver_info_2(&buffer2
[i
]);
1052 for (i
=0; i
<count
; i
++) {
1053 print_driver_info_3(&buffer3
[i
]);
1058 for (i
=0; i
<count
; i
++) {
1059 print_driver_info_4(&buffer4
[i
]);
1064 for (i
=0; i
<count
; i
++) {
1065 print_driver_info_5(&buffer5
[i
]);
1070 for (i
=0; i
<count
; i
++) {
1071 print_driver_info_6(&buffer6
[i
]);
1076 for (i
=0; i
<count
; i
++) {
1077 print_driver_info_8(&buffer8
[i
]);
1086 void print_doc_info_1(PDOC_INFO_1 info
)
1088 printf("\tDocument Name\t= %s\n", info
->pDocName
);
1089 printf("\tOutput Filename\t= %s\n", info
->pOutputFile
);
1090 printf("\tDatatype\t= %s\n", info
->pDatatype
);
1094 void print_printer_keys(LPSTR buffer
)
1102 for (; *p
; p
= CharNext(p
)) {
1108 static LPSTR
reg_type_str(DWORD type
)
1116 return "REG_MULTI_SZ";
1118 return "REG_BINARY";
1124 void print_printer_data(LPSTR keyname
, LPSTR valuename
, DWORD size
, LPBYTE buffer
, DWORD type
)
1130 printf("\tKey Name:\t%s\n", keyname
);
1133 printf("\tValue Name:\t%s\n", valuename
);
1134 printf("\tSize: 0x%x (%d)\n", size
, size
);
1135 printf("\tType:\t\t%s\n", reg_type_str(type
));
1139 printf("\t\t%s\n", (LPSTR
)buffer
);
1145 for (; *p
; p
= CharNext(p
)) {
1152 printf("\t\t0x%08x\n", (DWORD
)*buffer
);
1155 for (i
=0; i
< size
; i
++) {
1156 printf("\t0x%x", buffer
[i
]);
1167 void print_printer_enum_values(PRINTER_ENUM_VALUES
*info
)
1169 print_printer_data(NULL
, info
->pValueName
, info
->cbData
, info
->pData
, info
->dwType
);