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/>.
27 void print_devmode(DEVMODE
*pDevModeIn
)
29 if (pDevModeIn
== NULL
) {
30 printf("\tDevice Mode\t= (null)\n");
34 printf("\tDEVMODE:----------\n");
35 printf("\tDeviceName: [%s]\n", pDevModeIn
->dmDeviceName
);
36 printf("\tSpecVersion: %d\n", pDevModeIn
->dmSpecVersion
);
37 printf("\tDriverVersion: %d\n", pDevModeIn
->dmDriverVersion
);
38 printf("\tSize: %d\n", pDevModeIn
->dmSize
);
39 printf("\tDriverExtra: %d\n", pDevModeIn
->dmDriverExtra
);
40 printf("\tFields: 0x%x\n", pDevModeIn
->dmFields
);
42 if (pDevModeIn
->dmFields
& DM_ORIENTATION
)
43 printf("\tOrientation: %d\n", pDevModeIn
->dmOrientation
);
44 if (pDevModeIn
->dmFields
& DM_PAPERSIZE
)
45 printf("\tPaperSize: %d\n", pDevModeIn
->dmPaperSize
);
46 if (pDevModeIn
->dmFields
& DM_PAPERLENGTH
)
47 printf("\tPaperLength: %d\n", pDevModeIn
->dmPaperLength
);
48 if (pDevModeIn
->dmFields
& DM_PAPERWIDTH
)
49 printf("\tPaperWidth: %d\n", pDevModeIn
->dmPaperWidth
);
50 // if (pDevModeIn->dmFields & DM_POSITION)
51 // printf("\tPosition: %d\n", pDevModeIn->dmPosition);
52 if (pDevModeIn
->dmFields
& DM_SCALE
)
53 printf("\tScale: %d\n", pDevModeIn
->dmScale
);
54 if (pDevModeIn
->dmFields
& DM_COPIES
)
55 printf("\tCopies: %d\n", pDevModeIn
->dmCopies
);
56 if (pDevModeIn
->dmFields
& DM_DEFAULTSOURCE
)
57 printf("\tDefaultSource: %d\n", pDevModeIn
->dmDefaultSource
);
58 if (pDevModeIn
->dmFields
& DM_PRINTQUALITY
)
59 printf("\tPrintQuality: %d\n", pDevModeIn
->dmPrintQuality
);
60 if (pDevModeIn
->dmFields
& DM_COLOR
)
61 printf("\tColor: %d\n", pDevModeIn
->dmColor
);
62 if (pDevModeIn
->dmFields
& DM_DUPLEX
)
63 printf("\tDuplex: %d\n", pDevModeIn
->dmDuplex
);
64 if (pDevModeIn
->dmFields
& DM_YRESOLUTION
)
65 printf("\tYResolution: %d\n", pDevModeIn
->dmYResolution
);
66 if (pDevModeIn
->dmFields
& DM_TTOPTION
)
67 printf("\tTTOption: %d\n", pDevModeIn
->dmTTOption
);
68 if (pDevModeIn
->dmFields
& DM_COLLATE
)
69 printf("\tCollate: %d\n", pDevModeIn
->dmCollate
);
70 if (pDevModeIn
->dmFields
& DM_FORMNAME
)
71 printf("\tForm: [%s]\n", pDevModeIn
->dmFormName
);
72 if (pDevModeIn
->dmFields
& DM_LOGPIXELS
)
73 printf("\tLogPixels: %d\n", pDevModeIn
->dmLogPixels
);
74 if (pDevModeIn
->dmFields
& DM_BITSPERPEL
)
75 printf("\tBitsPerPel: %d\n", pDevModeIn
->dmBitsPerPel
);
76 if (pDevModeIn
->dmFields
& DM_PELSWIDTH
)
77 printf("\tPelsWidth: %d\n", pDevModeIn
->dmPelsWidth
);
78 if (pDevModeIn
->dmFields
& DM_PELSHEIGHT
)
79 printf("\tPelsHeight: %d\n", pDevModeIn
->dmPelsHeight
);
80 if (pDevModeIn
->dmFields
& DM_DISPLAYFLAGS
)
81 printf("\tDisplayFlags: %d\n", pDevModeIn
->dmDisplayFlags
);
82 // if (pDevModeIn->dmFields & DM_NUP)
83 // printf("\tNup: %d\n", pDevModeIn->dmNup);
84 if (pDevModeIn
->dmFields
& DM_DISPLAYFREQUENCY
)
85 printf("\tDisplayFrequency:%d\n", pDevModeIn
->dmDisplayFrequency
);
86 if (pDevModeIn
->dmFields
& DM_ICMMETHOD
)
87 printf("\tICMMethod: %d\n", pDevModeIn
->dmICMMethod
);
88 if (pDevModeIn
->dmFields
& DM_ICMINTENT
)
89 printf("\tICMIntent: %d\n", pDevModeIn
->dmICMIntent
);
90 if (pDevModeIn
->dmFields
& DM_MEDIATYPE
)
91 printf("\tMediaType: %d\n", pDevModeIn
->dmMediaType
);
92 if (pDevModeIn
->dmFields
& DM_DITHERTYPE
)
93 printf("\tDitherType: %d\n", pDevModeIn
->dmDitherType
);
94 // if (pDevModeIn->dmFields & DM_PANNINGWIDTH)
95 // printf("\tPanningWidth: %d\n", pDevModeIn->dmPanningWidth);
96 // if (pDevModeIn->dmFields & DM_PANNINGHEIGHT)
97 // printf("\tPanningHeight: %d\n", pDevModeIn->dmPanningHeight);
102 Dump((BYTE
*)pDevModeIn
, sizeof(DEVMODE
), LEADER
);
104 if (pDevModeIn
->dmDriverExtra
) {
105 printf("DriverExtra\n");
106 Dump((BYTE
*)pDevModeIn
+ sizeof(DEVMODE
), pDevModeIn
->dmDriverExtra
, LEADER
);
114 void print_acl(const char* str
, ACL
*acl
)
120 printf("\t\tACL Revision \t\t 0x%x\n", acl
->AclRevision
);
121 printf("\t\tSbz1\t\t 0x%x\n", acl
->Sbz1
);
122 printf("\t\tSbz2\t\t 0x%x\n", acl
->Sbz2
);
123 printf("\t\tACL Size\t\t 0x%x\n", acl
->AclSize
);
124 printf("\t\tACL Count\t\t 0x%x\n", acl
->AceCount
);
129 void PrintLastError();
131 void print_sid(LPSTR str
, PSID sid
)
138 printf("(null sid)\n");
142 if (!ConvertSidToStringSid(sid
, &sid_string
)) {
147 printf("%s\n", sid_string
);
148 LocalFree(sid_string
);
153 void print_secdesc(SECURITY_DESCRIPTOR
*secdesc
)
155 if (secdesc
== NULL
) {
156 printf("\tSecurity Descriptor\t= (null)\n");
160 printf("\tRevision\t= 0x%x\n", secdesc
->Revision
);
161 printf("\tSbz1\t\t= 0x%x\n", secdesc
->Sbz1
);
162 printf("\tControl\t\t= 0x%x\n", secdesc
->Control
);
164 print_sid("\tOwner\t\t= ", secdesc
->Owner
);
165 print_sid("\tGroup\t\t= ",secdesc
->Group
);
166 print_acl("\tSacl\t\t= ", secdesc
->Sacl
);
167 print_acl("\tDacl\t\t= ", secdesc
->Dacl
);
172 void PrintLastError()
177 status
= GetLastError();
179 FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER
| FORMAT_MESSAGE_FROM_SYSTEM
| FORMAT_MESSAGE_IGNORE_INSERTS
,
180 NULL
, GetLastError(), MAKELANGID(LANG_NEUTRAL
, SUBLANG_DEFAULT
), // Default language
181 (LPTSTR
)&lpMsgBuf
, 0, NULL
);
182 printf("ERROR [0x%x] : %s\n", status
, (char*)lpMsgBuf
);
189 void print_job_info_1(PJOB_INFO_1 info
)
191 printf("\tJob ID\t\t= %d\n", info
->JobId
);
192 printf("\tPrinter Name\t= %s\n", info
->pPrinterName
);
193 printf("\tMachine Name\t= %s\n", info
->pMachineName
);
194 printf("\tUser Name\t= %s\n", info
->pUserName
);
195 printf("\tDocument\t= %s\n", info
->pDocument
);
196 printf("\tDatatype\t= %s\n", info
->pDatatype
);
197 printf("\tStatus\t\t= %s\n", info
->pStatus
);
198 printf("\tStatus\t= %d\n", info
->Status
);
199 printf("\tPriority\t= %d\n", info
->Priority
);
200 printf("\tPosition\t= %d\n", info
->Position
);
201 printf("\tTotal Pages\t= %d\n", info
->TotalPages
);
202 printf("\tPages Printed\t= %d\n", info
->PagesPrinted
);
203 printf("\tSubmitted (DD:MM:YY HH:MM:SS)\t= %d:%d:%d %d:%d:%d UTC\n",
204 info
->Submitted
.wDay
, info
->Submitted
.wMonth
,
205 info
->Submitted
.wYear
, info
->Submitted
.wHour
,
206 info
->Submitted
.wMinute
, info
->Submitted
.wSecond
);
211 void print_job_info_2(PJOB_INFO_2 info
)
213 printf("\tJob ID\t\t= %d\n", info
->JobId
);
214 printf("\tPrinter Name\t= %s\n", info
->pPrinterName
);
215 printf("\tMachine Name\t= %s\n", info
->pMachineName
);
216 printf("\tUser Name\t= %s\n", info
->pUserName
);
217 printf("\tDocument\t= %s\n", info
->pDocument
);
218 printf("\tDatatype\t= %s\n", info
->pDatatype
);
219 printf("\tNotify Name\t= %s\n", info
->pNotifyName
);
220 printf("\tPrint Processor\t= %s\n", info
->pPrintProcessor
);
221 printf("\tParameters\t= %s\n", info
->pParameters
);
222 printf("\tDriver Name\t= %s\n", info
->pDriverName
);
223 printf("\tStatus\t\t= %s\n", info
->pStatus
);
224 printf("\tStatus\t\t= %d\n", info
->Status
);
225 printf("\tPriority\t= %d\n", info
->Priority
);
226 printf("\tPosition\t= %d\n", info
->Position
);
227 printf("\tTotal Pages\t= %d\n", info
->TotalPages
);
228 printf("\tPages Printed\t= %d\n", info
->PagesPrinted
);
229 printf("\tStart Time\t= %d\n", info
->StartTime
);
230 printf("\tUntil Time\t= %d\n", info
->UntilTime
);
231 printf("\tTime\t\t= %d\n", info
->Time
);
232 printf("\tSize\t\t= %d\n", info
->Size
);
233 printf("\tSubmitted (DD:MM:YY HH:MM:SS)\t= %d:%d:%d %d:%d:%d UTC\n",
234 info
->Submitted
.wDay
, info
->Submitted
.wMonth
,
235 info
->Submitted
.wYear
, info
->Submitted
.wHour
,
236 info
->Submitted
.wMinute
, info
->Submitted
.wSecond
);
237 printf("\tDevice Mode Information\n");
238 printf("\t-----------------------\n");
239 print_devmode(info
->pDevMode
);
240 printf("\tSecurity Descriptor Information\n");
241 printf("\t-------------------------------\n");
242 print_secdesc(info
->pSecurityDescriptor
);
247 void print_job_info_3(PJOB_INFO_3 info
)
249 printf("\tJob ID\t\t= %d\n", info
->JobId
);
250 printf("\tJob ID Next Job\t= %d\n", info
->NextJobId
);
251 printf("\tReserved (must be 0)\t= %d\n",info
->Reserved
);
256 void print_job_info_4(PJOB_INFO_4 info
)
258 printf("\tJob ID\t\t= %d\n", info
->JobId
);
259 printf("\tPrinter Name\t= %s\n", info
->pPrinterName
);
260 printf("\tMachine Name\t= %s\n", info
->pMachineName
);
261 printf("\tUser Name\t= %s\n", info
->pUserName
);
262 printf("\tDocument\t= %s\n", info
->pDocument
);
263 printf("\tDatatype\t= %s\n", info
->pDatatype
);
264 printf("\tNotify Name\t= %s\n", info
->pNotifyName
);
265 printf("\tPrint Processor\t= %s\n", info
->pPrintProcessor
);
266 printf("\tDriver Name\t= %s\n", info
->pDriverName
);
267 printf("\tStatus\t\t= %s\n", info
->pStatus
);
268 printf("\tStatus\t\t= %d\n", info
->Status
);
269 printf("\tPriority\t= %d\n", info
->Priority
);
270 printf("\tPosition\t= %d\n", info
->Position
);
271 printf("\tTotal Pages\t= %d\n", info
->TotalPages
);
272 printf("\tPages Printed\t= %d\n", info
->PagesPrinted
);
273 printf("\tStart Time\t= %d\n", info
->StartTime
);
274 printf("\tUntil Time\t= %d\n", info
->UntilTime
);
275 printf("\tTime\t\t= %d\n", info
->Time
);
276 printf("\tSize\t\t= %d\n", info
->Size
);
277 printf("\tSize High\t\t= 0x%016x\n", info
->SizeHigh
);
278 printf("\tSubmitted (DD:MM:YY HH:MM:SS)\t= %d:%d:%d %d:%d:%d UTC\n",
279 info
->Submitted
.wDay
, info
->Submitted
.wMonth
,
280 info
->Submitted
.wYear
, info
->Submitted
.wHour
,
281 info
->Submitted
.wMinute
, info
->Submitted
.wSecond
);
282 printf("\tDevice Mode Information\n");
283 printf("\t-----------------------\n");
284 print_devmode(info
->pDevMode
);
285 printf("\tSecurity Descriptor Information\n");
286 printf("\t-------------------------------\n");
287 print_secdesc(info
->pSecurityDescriptor
);
292 void print_job_info_bylevel(DWORD level
, LPBYTE buffer
, DWORD count
)
295 PJOB_INFO_1 buffer1
= NULL
;
296 PJOB_INFO_2 buffer2
= NULL
;
297 PJOB_INFO_3 buffer3
= NULL
;
298 PJOB_INFO_4 buffer4
= NULL
;
306 buffer1
= (PJOB_INFO_1
)buffer
;
309 buffer2
= (PJOB_INFO_2
)buffer
;
312 buffer3
= (PJOB_INFO_3
)buffer
;
315 buffer4
= (PJOB_INFO_4
)buffer
;
321 printf("Job Info Level %d:\n", level
);
325 for (i
=0; i
<count
; i
++) {
326 print_job_info_1(&buffer1
[i
]);
331 for (i
=0; i
<count
; i
++) {
332 print_job_info_2(&buffer2
[i
]);
337 for (i
=0; i
<count
; i
++) {
338 print_job_info_3(&buffer3
[i
]);
343 for (i
=0; i
<count
; i
++) {
344 print_job_info_4(&buffer4
[i
]);
353 void print_monitor_info_1(PMONITOR_INFO_1 info
)
355 printf("\tMonitor Name\t= %s\n", info
->pName
);
360 void print_monitor_info_2(PMONITOR_INFO_2 info
)
362 printf("\tMonitor Name\t= %s\n", info
->pName
);
363 printf("\tEnvironment\t= %s\n", info
->pEnvironment
);
364 printf("\tDLL Name\t= %s\n", info
->pDLLName
);
369 void print_monitor_info_bylevel(DWORD level
, LPBYTE buffer
, DWORD count
)
372 PMONITOR_INFO_1 buffer1
= NULL
;
373 PMONITOR_INFO_2 buffer2
= NULL
;
381 buffer1
= (PMONITOR_INFO_1
)buffer
;
384 buffer2
= (PMONITOR_INFO_2
)buffer
;
390 printf("Monitor Info Level %d:\n", level
);
394 for (i
=0; i
<count
; i
++) {
395 print_monitor_info_1(&buffer1
[i
]);
400 for (i
=0; i
<count
; i
++) {
401 print_monitor_info_2(&buffer2
[i
]);
410 void print_port_info_1(PPORT_INFO_1 info
)
412 printf("\tPort Name\t= %s\n", info
->pName
);
416 void print_port_info_2(PPORT_INFO_2 info
)
418 printf("\tPort Name\t= %s\n", info
->pPortName
);
419 printf("\tMonitor Name\t= %s\n",info
->pMonitorName
);
420 printf("\tDescription\t= %s\n", info
->pDescription
);
421 printf("\tPort Type\t= 0x%08x\n", info
->fPortType
);
422 printf("\tReserved\t= 0x%08x\n", info
->Reserved
);
426 void print_port_info_3(PPORT_INFO_3 info
)
428 printf("\tStatus\t= 0x%08x\n", info
->dwStatus
);
429 printf("\tStatus String\t= %s\n", info
->pszStatus
);
430 printf("\tSeverity\t= 0x%08x\n", info
->dwSeverity
);
434 void print_port_info_bylevel(DWORD level
, LPBYTE buffer
, DWORD count
)
437 PPORT_INFO_1 buffer1
= NULL
;
438 PPORT_INFO_2 buffer2
= NULL
;
439 PPORT_INFO_3 buffer3
= NULL
;
447 buffer1
= (PPORT_INFO_1
)buffer
;
450 buffer2
= (PPORT_INFO_2
)buffer
;
453 buffer3
= (PPORT_INFO_3
)buffer
;
459 printf("Port Info Level %d:\n", level
);
463 for (i
=0; i
<count
; i
++) {
464 print_port_info_1(&buffer1
[i
]);
469 for (i
=0; i
<count
; i
++) {
470 print_port_info_2(&buffer2
[i
]);
475 for (i
=0; i
<count
; i
++) {
476 print_port_info_3(&buffer3
[i
]);
485 void print_form_info_1(PFORM_INFO_1 info
)
487 printf("\tForm Name\t= %s\n", info
->pName
);
488 printf("\tFlags\t\t= 0x%x\n", info
->Flags
);
489 printf("\tSize\t\t= %d x %d\n", info
->Size
.cx
, info
->Size
.cy
);
490 printf("\tRectangle\t= [left]%d [right]%d [top]%d [bottom]%d\n",
491 info
->ImageableArea
.left
, info
->ImageableArea
.right
,
492 info
->ImageableArea
.top
, info
->ImageableArea
.bottom
);
497 void print_form_info_2(PFORM_INFO_2 info
)
499 printf("\tForm Name\t= %s\n", info
->pName
);
500 printf("\tFlags\t\t= 0x%x\n", info
->Flags
);
501 printf("\tSize\t\t= %d x %d\n", info
->Size
.cx
, info
->Size
.cy
);
502 printf("\tRectangle\t= [left]%d [right]%d [top]%d [bottom]%d\n",
503 info
->ImageableArea
.left
, info
->ImageableArea
.right
,
504 info
->ImageableArea
.top
, info
->ImageableArea
.bottom
);
505 printf("\tKeyword\t= %s\n", info
->pKeyword
);
506 printf("\tString Type\t= 0x%08x\n", info
->StringType
);
507 printf("\tMui DLL\t= %s\n", info
->pMuiDll
);
508 printf("\tResource Id\t= 0x%08x\n", info
->dwResourceId
);
509 printf("\tDisplay Name\t= %s\n",info
->pDisplayName
);
510 printf("\tLang Id\t= 0x%04x\n", info
->wLangId
);
515 void print_form_info_bylevel(DWORD level
, LPBYTE buffer
, DWORD count
)
518 PFORM_INFO_1 buffer1
= NULL
;
519 PFORM_INFO_2 buffer2
= NULL
;
527 buffer1
= (PFORM_INFO_1
)buffer
;
530 buffer2
= (PFORM_INFO_2
)buffer
;
536 printf("Form Info Level %d:\n", level
);
540 for (i
=0; i
<count
; i
++) {
541 print_form_info_1(&buffer1
[i
]);
546 for (i
=0; i
<count
; i
++) {
547 print_form_info_2(&buffer2
[i
]);
556 void print_printer_info_1(PPRINTER_INFO_1 info
)
558 printf("\tPrinter Name\t= %s\n", info
->pName
);
559 printf("\tDescription\t= %s\n", info
->pDescription
);
560 printf("\tComment\t\t= %s\n", info
->pComment
);
561 printf("\tFlags\t\t= 0x%x\n", info
->Flags
);
566 void print_printer_info_2(PPRINTER_INFO_2 info
)
568 printf("\tServer Name\t\t= %s\n", info
->pServerName
);
569 printf("\tPrinter Name\t\t= %s\n", info
->pPrinterName
);
570 printf("\tPort Name\t\t= %s\n", info
->pPortName
);
571 printf("\tShare Name\t\t= %s\n", info
->pShareName
);
572 printf("\tDriver Name\t\t= %s\n", info
->pDriverName
);
573 printf("\tComment\t\t\t= %s\n", info
->pComment
);
574 printf("\tLocation\t\t= %s\n", info
->pLocation
);
575 printf("\tSeparator File\t\t= %s\n", info
->pSepFile
);
576 printf("\tDefault Data Type\t= %s\n", info
->pDatatype
);
577 printf("\tPrint Processor\t\t= %s\n", info
->pPrintProcessor
);
578 printf("\tParameters\t\t= %s\n", info
->pParameters
);
579 printf("\tAttributes\t\t= 0x%x\n", info
->Attributes
);
580 printf("\tPriority\t\t= 0x%x\n", info
->Priority
);
581 printf("\tDefault Priority\t= 0x%x\n", info
->DefaultPriority
);
582 printf("\tStart Time\t\t= 0x%x\n", info
->StartTime
);
583 printf("\tUntil Time\t\t= 0x%x\n", info
->UntilTime
);
584 printf("\tStatus\t\t\t= 0x%x\n", info
->Status
);
585 printf("\tcJobs\t\t\t= 0x%x\n", info
->cJobs
);
586 printf("\tAverage PPM\t\t= 0x%x\n", info
->AveragePPM
);
588 printf("\tDevice Mode Information\n");
589 printf("\t-----------------------\n");
590 print_devmode(info
->pDevMode
);
591 printf("\tSecurity Descriptor Information\n");
592 printf("\t-------------------------------\n");
593 print_secdesc(info
->pSecurityDescriptor
);
597 void print_printer_info_5(PPRINTER_INFO_5 info
)
599 printf("\tPrinter Name\t\t\t= %s\n", info
->pPrinterName
);
600 printf("\tPort Name\t\t\t= %s\n", info
->pPortName
);
601 printf("\tAttributes\t\t\t= 0x%x\n", info
->Attributes
);
602 printf("\tDev NotSelect Timeout\t= 0x%x\n", info
->DeviceNotSelectedTimeout
);
603 printf("\tTX RetryTimeout\t\t= 0x%x\n", info
->TransmissionRetryTimeout
);
607 void print_printer_info_6(PPRINTER_INFO_6 info
)
609 printf("\tStatus\t\t\t= 0x%x\n", info
->dwStatus
);
613 void print_printer_info_7(PPRINTER_INFO_7 info
)
615 printf("\tObject GUID\t\t\t= %s\n", info
->pszObjectGUID
);
616 printf("\tAction\t\t\t= 0x%x\n", info
->dwAction
);
620 void print_printer_info_8(PPRINTER_INFO_8 info
)
622 print_devmode(info
->pDevMode
);
625 void print_printer_info_9(PPRINTER_INFO_9 info
)
627 print_devmode(info
->pDevMode
);
630 void print_printer_info_bylevel(DWORD level
, LPBYTE buffer
, DWORD count
)
633 PPRINTER_INFO_1 buffer1
= NULL
;
634 PPRINTER_INFO_2 buffer2
= NULL
;
635 PPRINTER_INFO_3 buffer3
= NULL
;
636 PPRINTER_INFO_4 buffer4
= NULL
;
637 PPRINTER_INFO_5 buffer5
= NULL
;
638 PPRINTER_INFO_6 buffer6
= NULL
;
639 PPRINTER_INFO_7 buffer7
= NULL
;
640 PPRINTER_INFO_8 buffer8
= NULL
;
648 buffer1
= (PPRINTER_INFO_1
)buffer
;
651 buffer2
= (PPRINTER_INFO_2
)buffer
;
654 buffer3
= (PPRINTER_INFO_3
)buffer
;
657 buffer4
= (PPRINTER_INFO_4
)buffer
;
660 buffer5
= (PPRINTER_INFO_5
)buffer
;
663 buffer6
= (PPRINTER_INFO_6
)buffer
;
666 buffer7
= (PPRINTER_INFO_7
)buffer
;
669 buffer8
= (PPRINTER_INFO_8
)buffer
;
675 printf("Printer Info Level %d:\n", level
);
679 for (i
=0; i
<count
; i
++) {
680 print_printer_info_1(&buffer1
[i
]);
685 for (i
=0; i
<count
; i
++) {
686 print_printer_info_2(&buffer2
[i
]);
692 for (i
=0; i
<count
; i
++) {
693 print_printer_info_3(&buffer3
[i
]);
698 for (i
=0; i
<count
; i
++) {
699 print_printer_info_4(&buffer4
[i
]);
705 for (i
=0; i
<count
; i
++) {
706 print_printer_info_5(&buffer5
[i
]);
711 for (i
=0; i
<count
; i
++) {
712 print_printer_info_6(&buffer6
[i
]);
717 for (i
=0; i
<count
; i
++) {
718 print_printer_info_7(&buffer7
[i
]);
723 for (i
=0; i
<count
; i
++) {
724 print_printer_info_8(&buffer8
[i
]);
733 void print_printprocessor_info_1(PPRINTPROCESSOR_INFO_1 info
)
735 printf("\tPrint Processor Name\t= %s\n", info
->pName
);
740 void print_printprocessor_info_bylevel(DWORD level
, LPBYTE buffer
, DWORD count
)
743 PPRINTPROCESSOR_INFO_1 buffer1
= NULL
;
751 buffer1
= (PPRINTPROCESSOR_INFO_1
)buffer
;
757 printf("Print Processor Info Level %d:\n", level
);
761 for (i
=0; i
<count
; i
++) {
762 print_printprocessor_info_1(&buffer1
[i
]);
771 void print_datatypes_info_1(PDATATYPES_INFO_1 info
)
773 printf("\tDataTypes Name\t= %s\n", info
->pName
);
778 void print_datatypes_info_bylevel(DWORD level
, LPBYTE buffer
, DWORD count
)
781 PDATATYPES_INFO_1 buffer1
= NULL
;
789 buffer1
= (PDATATYPES_INFO_1
)buffer
;
795 printf("DataTypes Info Level %d:\n", level
);
799 for (i
=0; i
<count
; i
++) {
800 print_datatypes_info_1(&buffer1
[i
]);
809 void print_driver_info_1(PDRIVER_INFO_1 info
)
811 printf("\tDriver Name\t= %s\n\n", info
->pName
);
816 void print_driver_info_2(PDRIVER_INFO_2 info
)
818 printf("\tDriver Name\t= %s\n", info
->pName
);
819 printf("\tEnvironment\t= %s\n", info
->pEnvironment
);
820 printf("\tVersion\t\t= %d\n", info
->cVersion
);
821 printf("\tDriver Path\t= %s\n", info
->pDriverPath
);
822 printf("\tData File\t= %s\n", info
->pDataFile
);
823 printf("\tConfig File\t= %s\n\n", info
->pConfigFile
);
828 void print_driver_info_3(PDRIVER_INFO_3 info
)
832 printf("\tDriver Name\t= %s\n", info
->pName
);
833 printf("\tEnvironment\t= %s\n", info
->pEnvironment
);
834 printf("\tVersion\t\t= %d\n", info
->cVersion
);
835 printf("\tDriver Path\t= %s\n", info
->pDriverPath
);
836 printf("\tData File\t= %s\n", info
->pDataFile
);
837 printf("\tConfig File\t= %s\n", info
->pConfigFile
);
838 printf("\tHelp Path\t= %s\n", info
->pHelpFile
);
839 printf("\tMonitor Name\t= %s\n", info
->pMonitorName
);
840 printf("\tData Type\t= %s\n", info
->pDefaultDataType
);
841 ptr
= (char*)info
->pDependentFiles
;
842 while ((ptr
!= NULL
) && (*ptr
!= '\0')) {
843 printf("\tDependent Files\t= %s\n", ptr
);
844 for (;*ptr
!= '\0'; ptr
++)
845 /* printf("%s\n", ptr); */
853 void print_driver_info_4(PDRIVER_INFO_4 info
)
857 printf("\tDriver Name\t= %s\n", info
->pName
);
858 printf("\tEnvironment\t= %s\n", info
->pEnvironment
);
859 printf("\tVersion\t\t= %d\n", info
->cVersion
);
860 printf("\tDriver Path\t= %s\n", info
->pDriverPath
);
861 printf("\tData File\t= %s\n", info
->pDataFile
);
862 printf("\tConfig File\t= %s\n", info
->pConfigFile
);
863 printf("\tHelp Path\t= %s\n", info
->pHelpFile
);
864 printf("\tMonitor Name\t= %s\n", info
->pMonitorName
);
865 printf("\tData Type\t= %s\n", info
->pDefaultDataType
);
866 printf("\tPrevious Names\t= %s\n", info
->pszzPreviousNames
);
867 ptr
= (char*)info
->pDependentFiles
;
868 while ((ptr
!= NULL
) && (*ptr
!= '\0')) {
869 printf("\tDependent Files\t= %s\n", ptr
);
870 for (;*ptr
!= '\0'; ptr
++)
871 /* printf("%s\n", ptr); */
879 void print_driver_info_5(PDRIVER_INFO_5 info
)
881 printf("\tDriver Name\t= %s\n", info
->pName
);
882 printf("\tEnvironment\t= %s\n", info
->pEnvironment
);
883 printf("\tVersion\t\t= %d\n", info
->cVersion
);
884 printf("\tDriver Path\t= %s\n", info
->pDriverPath
);
885 printf("\tData File\t= %s\n", info
->pDataFile
);
886 printf("\tConfig File\t= %s\n", info
->pConfigFile
);
887 printf("\tDriver Attributes\t= %d\n", info
->dwDriverAttributes
);
888 printf("\tConfig Version\t= %d\n", info
->dwConfigVersion
);
889 printf("\tDriver Version\t= %d\n", info
->dwDriverVersion
);
894 void print_driver_info_6(PDRIVER_INFO_6 info
)
898 printf("\tDriver Name\t= %s\n", info
->pName
);
899 printf("\tEnvironment\t= %s\n", info
->pEnvironment
);
900 printf("\tVersion\t\t= %d\n", info
->cVersion
);
901 printf("\tDriver Path\t= %s\n", info
->pDriverPath
);
902 printf("\tData File\t= %s\n", info
->pDataFile
);
903 printf("\tConfig File\t= %s\n", info
->pConfigFile
);
904 printf("\tHelp Path\t= %s\n", info
->pHelpFile
);
905 printf("\tMonitor Name\t= %s\n", info
->pMonitorName
);
906 printf("\tData Type\t= %s\n", info
->pDefaultDataType
);
907 printf("\tPrevious Names\t= %s\n", info
->pszzPreviousNames
);
908 ptr
= (char*)info
->pDependentFiles
;
910 while (*ptr
!= '\0') {
911 printf("\tDependent Files\t= %s\n", ptr
);
912 for (;*ptr
!= '\0'; ptr
++)
913 /* printf("%s\n", ptr); */
918 printf("\tPrevious Names\t= (null)\n");
921 ptr
= (char*)info
->pszzPreviousNames
;
923 while (*ptr
!= '\0') {
924 printf("\tPrevious Names\t= %s\n", ptr
);
925 for (;*ptr
!= '\0'; ptr
++)
926 /* printf("%s\n", ptr); */
931 printf("\tPrevious Names\t= (null)\n");
934 printf("\tDriver Date\t= %d\n", info
->ftDriverDate
);
935 printf("\tDriver Version\t= %d\n", info
->dwlDriverVersion
);
936 printf("\tManufacture Name = %s\n", info
->pszMfgName
);
937 printf("\tOEM URL\t\t= %s\n", info
->pszOEMUrl
);
938 printf("\tHardware ID\t= %s\n", info
->pszHardwareID
);
939 printf("\tProvider\t= %s\n", info
->pszProvider
);
943 static void print_multi_sz(LPSTR multisz
)
947 ptr
= (char *)multisz
;
954 while (*ptr
!= '\0') {
956 for (; *ptr
!= '\0'; ptr
++) {
957 /* printf("%s\n", ptr); */
964 void print_driver_info_8(PDRIVER_INFO_8 info
)
966 printf("\tDriver Name\t= %s\n", info
->pName
);
967 printf("\tEnvironment\t= %s\n", info
->pEnvironment
);
968 printf("\tVersion\t\t= %d\n", info
->cVersion
);
969 printf("\tDriver Path\t= %s\n", info
->pDriverPath
);
970 printf("\tData File\t= %s\n", info
->pDataFile
);
971 printf("\tConfig File\t= %s\n", info
->pConfigFile
);
972 printf("\tHelp Path\t= %s\n", info
->pHelpFile
);
973 printf("\tMonitor Name\t= %s\n", info
->pMonitorName
);
974 printf("\tData Type\t= %s\n", info
->pDefaultDataType
);
975 printf("\tPrevious Names\t=\n");
976 print_multi_sz(info
->pszzPreviousNames
);
977 printf("\tDependent Files\t=\n");
978 print_multi_sz(info
->pDependentFiles
);
979 printf("\tDriver Date\t= %d\n", info
->ftDriverDate
);
980 printf("\tDriver Version\t= %d\n", info
->dwlDriverVersion
);
981 printf("\tManufacture Name = %s\n", info
->pszMfgName
);
982 printf("\tOEM URL\t\t= %s\n", info
->pszOEMUrl
);
983 printf("\tHardware ID\t= %s\n", info
->pszHardwareID
);
984 printf("\tProvider\t= %s\n", info
->pszProvider
);
985 printf("\tPrint Processor\t= %s\n", info
->pszPrintProcessor
);
986 printf("\tVendor Setup\t= %s\n", info
->pszVendorSetup
);
987 printf("\tColor Profiles\t=\n");
988 print_multi_sz(info
->pszzColorProfiles
);
989 printf("\tInf Path\t= %s\n", info
->pszInfPath
);
990 printf("\tPrinter Driver Attributes = %d\n", info
->dwPrinterDriverAttributes
);
991 printf("\tCore Driver Dependencies\t=\n");
992 print_multi_sz(info
->pszzCoreDriverDependencies
);
993 printf("\tMin Inbox Driver VerDate\t= %d\n", info
->ftMinInboxDriverVerDate
);
994 printf("\tMin Inbox Driver VerVersion\t= %d\n", info
->dwlMinInboxDriverVerVersion
);
998 void print_driver_info_bylevel(DWORD level
, LPBYTE buffer
, DWORD count
)
1001 PDRIVER_INFO_1 buffer1
= NULL
;
1002 PDRIVER_INFO_2 buffer2
= NULL
;
1003 PDRIVER_INFO_3 buffer3
= NULL
;
1004 PDRIVER_INFO_4 buffer4
= NULL
;
1005 PDRIVER_INFO_5 buffer5
= NULL
;
1006 PDRIVER_INFO_6 buffer6
= NULL
;
1007 PDRIVER_INFO_8 buffer8
= NULL
;
1015 buffer1
= (PDRIVER_INFO_1
)buffer
;
1018 buffer2
= (PDRIVER_INFO_2
)buffer
;
1021 buffer3
= (PDRIVER_INFO_3
)buffer
;
1024 buffer4
= (PDRIVER_INFO_4
)buffer
;
1027 buffer5
= (PDRIVER_INFO_5
)buffer
;
1030 buffer6
= (PDRIVER_INFO_6
)buffer
;
1033 buffer8
= (PDRIVER_INFO_8
)buffer
;
1039 printf("Driver Info Level %d:\n", level
);
1043 for (i
=0; i
<count
; i
++) {
1044 print_driver_info_1(&buffer1
[i
]);
1049 for (i
=0; i
<count
; i
++) {
1050 print_driver_info_2(&buffer2
[i
]);
1055 for (i
=0; i
<count
; i
++) {
1056 print_driver_info_3(&buffer3
[i
]);
1061 for (i
=0; i
<count
; i
++) {
1062 print_driver_info_4(&buffer4
[i
]);
1067 for (i
=0; i
<count
; i
++) {
1068 print_driver_info_5(&buffer5
[i
]);
1073 for (i
=0; i
<count
; i
++) {
1074 print_driver_info_6(&buffer6
[i
]);
1079 for (i
=0; i
<count
; i
++) {
1080 print_driver_info_8(&buffer8
[i
]);
1089 void print_doc_info_1(PDOC_INFO_1 info
)
1091 printf("\tDocument Name\t= %s\n", info
->pDocName
);
1092 printf("\tOutput Filename\t= %s\n", info
->pOutputFile
);
1093 printf("\tDatatype\t= %s\n", info
->pDatatype
);
1097 void print_printer_keys(LPSTR buffer
)
1105 for (; *p
; p
= CharNext(p
)) {
1111 static LPSTR
reg_type_str(DWORD type
)
1119 return "REG_MULTI_SZ";
1121 return "REG_BINARY";
1127 void print_printer_data(LPSTR keyname
, LPSTR valuename
, DWORD size
, LPBYTE buffer
, DWORD type
)
1133 printf("\tKey Name:\t%s\n", keyname
);
1136 printf("\tValue Name:\t%s\n", valuename
);
1137 printf("\tSize: 0x%x (%d)\n", size
, size
);
1138 printf("\tType:\t\t%s\n", reg_type_str(type
));
1142 printf("\t\t%s\n", (LPSTR
)buffer
);
1148 for (; *p
; p
= CharNext(p
)) {
1155 printf("\t\t0x%08x\n", (DWORD
)*buffer
);
1158 for (i
=0; i
< size
; i
++) {
1159 printf("\t0x%x", buffer
[i
]);
1170 void print_printer_enum_values(PRINTER_ENUM_VALUES
*info
)
1172 print_printer_data(NULL
, info
->pValueName
, info
->cbData
, info
->pData
, info
->dwType
);