1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 /* 22 * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved. 23 */ 24 25 #ifndef _SPOOLSS_NDL_ 26 #define _SPOOLSS_NDL_ 27 28 #include "ndrtypes.ndl" 29 #include "security.ndl" 30 31 #define TABLE_STRING 1 32 #define TABLE_DWORD 2 33 #define TABLE_TIME 3 34 #define TABLE_DEVMODE 4 35 #define TABLE_SECURITY_DESCRIPTOR 5 36 37 #define SPOOLSS_OPNUM_EnumPrinters 0x00 38 #define SPOOLSS_OPNUM_OpenPrinter 0x01 39 #define SPOOLSS_OPNUM_GetJob 0x03 40 #define SPOOLSS_OPNUM_EnumJobs 0x04 41 #define SPOOLSS_OPNUM_DeletePrinter 0x06 42 #define SPOOLSS_OPNUM_GetPrinter 0x08 43 #define SPOOLSS_OPNUM_GetPrinterDriver 0x0b 44 #define SPOOLSS_OPNUM_DeletePrinterDriver 0x0d 45 #define SPOOLSS_OPNUM_StartDocPrinter 0x11 46 #define SPOOLSS_OPNUM_StartPagePrinter 0x12 47 #define SPOOLSS_OPNUM_WritePrinter 0x13 48 #define SPOOLSS_OPNUM_EndPagePrinter 0x14 49 #define SPOOLSS_OPNUM_AbortPrinter 0x15 50 #define SPOOLSS_OPNUM_AddJob 0x18 51 #define SPOOLSS_OPNUM_ScheduleJob 0x19 52 #define SPOOLSS_OPNUM_GetPrinterData 0x1a 53 #define SPOOLSS_OPNUM_ClosePrinter 0x1d 54 #define SPOOLSS_OPNUM_AddForm 0x1e 55 #define SPOOLSS_OPNUM_DeleteForm 0x1f 56 #define SPOOLSS_OPNUM_EndDocPrinter 0x17 57 #define SPOOLSS_OPNUM_EnumForms 0x22 58 #define SPOOLSS_OPNUM_EnumPorts 0x23 59 #define SPOOLSS_OPNUM_EnumMonitor 0x24 60 #define SPOOLSS_OPNUM_DeletePort 0x27 61 #define SPOOLSS_OPNUM_CreatePrinterIC 0x28 62 #define SPOOLSS_OPNUM_AddMonitor 0x2e 63 #define SPOOLSS_OPNUM_DeleteMonitor 0x2f 64 #define SPOOLSS_OPNUM_ResetPrinter 0x34 65 #define SPOOLSS_OPNUM_GetPrinterDriver2 0x35 66 #define SPOOLSS_OPNUM_FCPN 0x38 67 #define SPOOLSS_OPNUM_ReplyOpenPrinter 0x3a 68 #define SPOOLSS_OPNUM_ReplyClosePrinter 0x3c 69 #define SPOOLSS_OPNUM_AddPortEx 0x3d 70 #define SPOOLSS_OPNUM_RFFPCNEX 0x41 71 #define SPOOLSS_OPNUM_RRPCN 0x42 72 #define SPOOLSS_OPNUM_RFNPCNEX 0x43 73 #define SPOOLSS_OPNUM_OpenPrinterEx 0x45 74 #define SPOOLSS_OPNUM_SetPort 0x47 75 #define SPOOLSS_OPNUM_EnumPrinterData 0x48 76 #define SPOOLSS_OPNUM_EnumPrinterDataEx 0x4f 77 #define SPOOLSS_OPNUM_EnumPrinterKey 0x50 78 79 CONTEXT_HANDLE(spoolss_handle) spoolss_handle_t; 80 81 struct spoolssDevmodeContainer { 82 BYTE DevContCount; 83 SIZE_IS(DevContCount) 84 BYTE *DevMode; 85 }; 86 87 88 struct spoolss_DeviceMode { 89 BYTE devicename[64]; 90 WORD specversion; 91 WORD driverversion; 92 WORD size; 93 WORD driverextra_length; 94 DWORD fields; 95 WORD orientation; 96 WORD papersize; 97 WORD paperlength; 98 WORD paperwidth; 99 WORD scale; 100 WORD copies; 101 WORD defaultsource; 102 WORD printquality; 103 WORD color; 104 WORD duplex; 105 WORD yresolution; 106 WORD ttoption; 107 WORD collate; 108 BYTE formname[64]; 109 WORD logpixels; 110 DWORD bitsperpel; 111 DWORD pelswidth; 112 DWORD pelsheight; 113 DWORD displayflags; 114 DWORD displayfrequency; 115 DWORD icmmethod; 116 DWORD icmintent; 117 DWORD mediatype; 118 DWORD dithertype; 119 DWORD reserved1; 120 DWORD reserved2; 121 DWORD panningwidth; 122 DWORD panningheight; 123 struct spoolssDevmodeContainer driverextra_data; 124 }; 125 126 OPERATION(SPOOLSS_OPNUM_CreatePrinterIC) 127 struct spoolss_CreatePrinterIC { 128 IN spoolss_handle_t handle; 129 OUT spoolss_handle_t gdi_handle; 130 IN struct spoolssDevmodeContainer dmodeContainer; 131 OUT DWORD status; 132 }; 133 134 OPERATION(SPOOLSS_OPNUM_OpenPrinter) 135 struct spoolss_OpenPrinter { 136 IN LPTSTR printer_name; 137 OUT spoolss_handle_t handle; 138 IN LPTSTR data_type; 139 /* IN struct spoolssDevmodeContainer dmodeContainer; */ 140 /* IN DWORD AccessRequired; */ 141 OUT DWORD status; 142 }; 143 144 OPERATION(SPOOLSS_OPNUM_EnumJobs) 145 struct spoolss_EnumJobs { 146 IN spoolss_handle_t handle; 147 IN DWORD FirstJob; 148 IN DWORD NoJobs; 149 IN DWORD level; 150 IN DWORD Buf2; 151 IN DWORD BufCount; 152 SIZE_IS(BufCount) 153 OUT BYTE *pJob; 154 OUT DWORD needed; 155 OUT DWORD needed2; 156 OUT DWORD status; 157 }; 158 159 OPERATION(SPOOLSS_OPNUM_DeletePrinter) 160 struct spoolss_DeletePrinter { 161 IN DWORD dontcare; 162 OUT DWORD status; 163 }; 164 165 #define SPOOLSS_ARCHITECTURE_NT_X86 ( "Windows NT x86" ) 166 struct spoolss_Time { 167 WORD year; 168 WORD month; 169 WORD day_of_week; 170 WORD day; 171 WORD hour; 172 WORD minute; 173 WORD second; 174 WORD millisecond; 175 }; 176 177 struct spoolss_GetPrinter0 { 178 DWORD printername; 179 DWORD servername; 180 DWORD cjobs; 181 DWORD total_jobs; 182 DWORD total_bytes; 183 DWORD time0; 184 DWORD time1; 185 DWORD time2; 186 DWORD time3; 187 DWORD global_counter; 188 DWORD total_pages; 189 DWORD version; 190 DWORD ffreebuild; 191 DWORD cspooling; 192 DWORD cmaxspooling; 193 DWORD session_counter; 194 DWORD out_of_paper; 195 DWORD not_ready; 196 DWORD job_error; 197 DWORD num_processors; 198 DWORD type_processor; 199 DWORD high_part_total_bytes; 200 DWORD change_id; 201 DWORD last_error; 202 DWORD status; 203 DWORD enum_network_printers; 204 DWORD c_setprinter; 205 WORD processor_arch; 206 WORD processor_level; 207 DWORD ref; 208 DWORD reserved2; 209 DWORD reserved3; 210 }; 211 212 /* bitmap spoolss_EnumPrinterFlags */ 213 #define PRINTER_ENUM_DEFAULT ( 0x00000001 ) 214 #define PRINTER_ENUM_LOCAL ( 0x00000002 ) 215 #define PRINTER_ENUM_CONNECTIONS ( 0x00000004 ) 216 #define PRINTER_ENUM_FAVORITE ( 0x00000004 ) 217 #define PRINTER_ENUM_NAME ( 0x00000008 ) 218 #define PRINTER_ENUM_REMOTE ( 0x00000010 ) 219 #define PRINTER_ENUM_SHARED ( 0x00000020 ) 220 #define PRINTER_ENUM_NETWORK ( 0x00000040 ) 221 #define PRINTER_ENUM_EXPAND ( 0x00004000 ) 222 #define PRINTER_ENUM_CONTAINER ( 0x00008000 ) 223 #define PRINTER_ENUM_ICON1 ( 0x00010000 ) 224 #define PRINTER_ENUM_ICON2 ( 0x00020000 ) 225 #define PRINTER_ENUM_ICON3 ( 0x00040000 ) 226 #define PRINTER_ENUM_ICON4 ( 0x00080000 ) 227 #define PRINTER_ENUM_ICON5 ( 0x00100000 ) 228 #define PRINTER_ENUM_ICON6 ( 0x00200000 ) 229 #define PRINTER_ENUM_ICON7 ( 0x00400000 ) 230 #define PRINTER_ENUM_ICON8 ( 0x00800000 ) 231 #define PRINTER_ENUM_HIDE ( 0x01000000 ) 232 233 struct spoolss_GetPrinter1 { 234 DWORD flags; 235 DWORD name; 236 DWORD description; 237 DWORD comment; 238 }; 239 240 /* bitmap spoolss_PrinterAttributes */ 241 #define PRINTER_ATTRIBUTE_QUEUED ( 0x00000001 ) 242 #define PRINTER_ATTRIBUTE_DIRECT ( 0x00000002 ) 243 #define PRINTER_ATTRIBUTE_DEFAULT ( 0x00000004 ) 244 #define PRINTER_ATTRIBUTE_SHARED ( 0x00000008 ) 245 #define PRINTER_ATTRIBUTE_NETWORK ( 0x00000010 ) 246 #define PRINTER_ATTRIBUTE_HIDDEN ( 0x00000020 ) 247 #define PRINTER_ATTRIBUTE_LOCAL ( 0x00000040 ) 248 #define PRINTER_ATTRIBUTE_ENABLE_DEVQ ( 0x00000080 ) 249 #define PRINTER_ATTRIBUTE_KEEPPRINTEDJOBS ( 0x00000100 ) 250 #define PRINTER_ATTRIBUTE_DO_COMPLETE_FIRST ( 0x00000200 ) 251 #define PRINTER_ATTRIBUTE_WORK_OFFLINE ( 0x00000400 ) 252 #define PRINTER_ATTRIBUTE_ENABLE_BIDI ( 0x00000800 ) 253 #define PRINTER_ATTRIBUTE_RAW_ONLY ( 0x00001000 ) 254 #define PRINTER_ATTRIBUTE_PUBLISHED ( 0x00002000 ) 255 #define PRINTER_ATTRIBUTE_FAX ( 0x00004000 ) 256 #define PRINTER_ATTRIBUTE_TS ( 0x00008000 ) 257 258 /* bitmap spoolss_PrinterStatus */ 259 #define PRINTER_STATUS_PAUSED ( 0x00000001 ) 260 #define PRINTER_STATUS_ERROR ( 0x00000002 ) 261 #define PRINTER_STATUS_PENDING_DELETION ( 0x00000004 ) 262 #define PRINTER_STATUS_PAPER_JAM ( 0x00000008 ) 263 #define PRINTER_STATUS_PAPER_OUT ( 0x00000010 ) 264 #define PRINTER_STATUS_MANUAL_FEED ( 0x00000020 ) 265 #define PRINTER_STATUS_PAPER_PROBLEM ( 0x00000040 ) 266 #define PRINTER_STATUS_OFFLINE ( 0x00000080 ) 267 #define PRINTER_STATUS_IO_ACTIVE ( 0x00000100 ) 268 #define PRINTER_STATUS_BUSY ( 0x00000200 ) 269 #define PRINTER_STATUS_PRINTING ( 0x00000400 ) 270 #define PRINTER_STATUS_OUTPUT_BIN_FULL ( 0x00000800 ) 271 #define PRINTER_STATUS_NOT_AVAILABLE ( 0x00001000 ) 272 #define PRINTER_STATUS_WAITING ( 0x00002000 ) 273 #define PRINTER_STATUS_PROCESSING ( 0x00004000 ) 274 #define PRINTER_STATUS_INITIALIZING ( 0x00008000 ) 275 #define PRINTER_STATUS_WARMING_UP ( 0x00010000 ) 276 #define PRINTER_STATUS_TONER_LOW ( 0x00020000 ) 277 #define PRINTER_STATUS_NO_TONER ( 0x00040000 ) 278 #define PRINTER_STATUS_PAGE_PUNT ( 0x00080000 ) 279 #define PRINTER_STATUS_USER_INTERVENTION ( 0x00100000 ) 280 #define PRINTER_STATUS_OUT_OF_MEMORY ( 0x00200000 ) 281 #define PRINTER_STATUS_DOOR_OPEN ( 0x00400000 ) 282 #define PRINTER_STATUS_SERVER_UNKNOWN ( 0x00800000 ) 283 #define PRINTER_STATUS_POWER_SAVE ( 0x01000000 ) 284 285 struct spoolss_GetPrinter2 { 286 DWORD servername; 287 DWORD printername; 288 DWORD sharename; 289 DWORD portname; 290 DWORD drivername; 291 DWORD comment; 292 DWORD location; 293 DWORD devmode; 294 DWORD sepfile; 295 DWORD printprocessor; 296 DWORD datatype; 297 DWORD parameters; 298 DWORD secdesc; 299 DWORD attributes; 300 DWORD priority; 301 DWORD defaultpriority; 302 DWORD starttime; 303 DWORD untiltime; 304 DWORD status; 305 DWORD cjobs; 306 DWORD averageppm; 307 }; 308 309 typedef struct spoolss_GetPrinter2 spoolss_GetPrinter2_t; 310 311 struct spoolss_GetPrinter3 { 312 DWORD dummy; 313 }; 314 315 struct spoolss_GetPrinter4 { 316 DWORD printername; 317 DWORD servername; 318 DWORD attributes; 319 }; 320 321 struct spoolss_GetPrinter5 { 322 DWORD printername; 323 DWORD portname; 324 DWORD attributes; 325 DWORD device_not_selected_timeout; 326 DWORD transmission_retry_timeout; 327 }; 328 329 struct spoolss_GetPrinter6 { 330 DWORD status; 331 }; 332 333 /* bitmap spoolss_DsPrintAction */ 334 #define DSPRINT_PUBLISH ( 0x00000001 ) 335 #define DSPRINT_UPDATE ( 0x00000002 ) 336 #define DSPRINT_UNPUBLISH ( 0x00000004 ) 337 #define DSPRINT_REPUBLISH ( 0x00000008 ) 338 #define DSPRINT_PENDING ( 0x80000000 ) 339 340 struct spoolss_GetPrinter7 { 341 DWORD guid; 342 DWORD action; 343 }; 344 345 struct spoolss_GetPrinter8 { 346 DWORD flags; 347 DWORD name; 348 DWORD description; 349 DWORD comment; 350 }; 351 352 union spoolss_GetPrinter_result_u { 353 UNION_INFO_ENT(0, spoolss_GetPrinter); 354 UNION_INFO_ENT(1, spoolss_GetPrinter); 355 UNION_INFO_ENT(2, spoolss_GetPrinter); 356 UNION_INFO_ENT(3, spoolss_GetPrinter); 357 UNION_INFO_ENT(4, spoolss_GetPrinter); 358 UNION_INFO_ENT(5, spoolss_GetPrinter); 359 UNION_INFO_ENT(6, spoolss_GetPrinter); 360 UNION_INFO_ENT(7, spoolss_GetPrinter); 361 UNION_INFO_ENT(8, spoolss_GetPrinter); 362 DEFAULT char *nullptr; 363 }; 364 365 struct spoolss_GetPrinter_result { 366 DWORD switch_value; 367 SWITCH(switch_value) 368 union spoolss_GetPrinter_result_u ru; 369 }; 370 371 struct spoolss_RPC_V2_NOTIFY_OPTIONS_TYPE { 372 WORD type; 373 WORD reserved0; 374 DWORD reserved1; 375 DWORD reserved2; 376 DWORD count; 377 SIZE_IS(count) 378 WORD *pFields; 379 }; 380 381 struct spoolss_RPC_V2_NOTIFY_OPTIONS { 382 DWORD version; 383 DWORD reserved; 384 DWORD count; 385 SIZE_IS(count) 386 struct spoolss_RPC_V2_NOTIFY_OPTIONS_TYPE *ptypes; 387 }; 388 389 struct SYSTEMTIME { 390 WORD year; 391 WORD month; 392 WORD dayofweek; 393 WORD day; 394 WORD hour; 395 WORD minute; 396 WORD second; 397 WORD millisecs; 398 }; 399 400 struct SECURITY_CONTAINER { 401 DWORD count; 402 SIZE_IS(count) 403 BYTE *psecurity; 404 }; 405 406 struct SYSTEMTIME_CONTAINER { 407 DWORD count; 408 struct SYSTEMTIME *psystemtime; 409 }; 410 411 struct STRING_CONTAINER { 412 DWORD count; 413 SIZE_IS(count / 2) 414 LPTSTR pstring; 415 }; 416 417 union spoolss_RPC_V2_NOTIFY_INFO_DATA_DATA { 418 CASE(TABLE_STRING) 419 struct STRING_CONTAINER pcont; 420 CASE(TABLE_DWORD) 421 DWORD data[2]; 422 CASE(TABLE_TIME) 423 struct SYSTEMTIME_CONTAINER system_time; 424 CASE(TABLE_DEVMODE) 425 struct spoolssDevmodeContainer devmode; 426 CASE(TABLE_SECURITY_DESCRIPTOR) 427 struct SECURITY_CONTAINER security_descriptor; 428 }; 429 430 struct spoolss_RPC_V2_NOTIFY_INFO_DATA { 431 WORD Type; 432 WORD Field; 433 DWORD Reserved; 434 DWORD Id; 435 SWITCH(Reserved & 0x0000FFFF) 436 union spoolss_RPC_V2_NOTIFY_INFO_DATA_DATA data; 437 }; 438 439 struct spoolss_RPC_V2_NOTIFY_INFO { 440 DWORD Version; 441 DWORD Flags; 442 DWORD Count; 443 SIZE_IS(Count) 444 struct spoolss_RPC_V2_NOTIFY_INFO_DATA *aData; 445 }; 446 447 OPERATION(SPOOLSS_OPNUM_GetPrinter) 448 struct spoolss_GetPrinter { 449 IN spoolss_handle_t handle; 450 IN DWORD switch_value; 451 IN DWORD Buf2; 452 IN DWORD BufCount; 453 SIZE_IS(BufCount) 454 OUT BYTE *Buf; 455 OUT DWORD needed; 456 OUT DWORD status; 457 }; 458 459 OPERATION(SPOOLSS_OPNUM_GetPrinterData) 460 struct spoolss_GetPrinterData { 461 IN spoolss_handle_t handle; 462 IN REFERENCE LPTSTR pValueName; 463 OUT DWORD pType; 464 SIZE_IS(Size) 465 OUT REFERENCE LPBYTE Buf; 466 IN DWORD Size; 467 OUT DWORD Needed; 468 OUT DWORD status; 469 }; 470 471 OPERATION(SPOOLSS_OPNUM_GetPrinterDriver) 472 struct spoolss_GetPrinterDriver { 473 IN DWORD dontcare; 474 OUT DWORD status; 475 }; 476 477 OPERATION(SPOOLSS_OPNUM_DeletePrinterDriver) 478 struct spoolss_DeletePrinterDriver { 479 IN DWORD dontcare; 480 OUT DWORD status; 481 }; 482 483 struct spoolss_DocInfo { 484 LPTSTR doc_name; 485 LPTSTR printer_name; 486 LPTSTR type; 487 }; 488 typedef struct spoolss_DocInfo spoolss_DocInfo_t; 489 490 struct spoolss_DocInfo_Container { 491 DWORD level; 492 DWORD switch_value; 493 spoolss_DocInfo_t *DocInfoContainer; 494 }; 495 typedef struct spoolss_DocInfo_Container spoolss_DocInfo_Container_t; 496 497 OPERATION(SPOOLSS_OPNUM_StartDocPrinter) 498 struct spoolss_StartDocPrinter { 499 IN spoolss_handle_t handle; 500 IN spoolss_DocInfo_Container_t dinfo; 501 OUT DWORD JobId; 502 OUT DWORD status; 503 }; 504 505 OPERATION(SPOOLSS_OPNUM_AbortPrinter) 506 struct spoolss_AbortPrinter { 507 IN spoolss_handle_t handle; 508 OUT DWORD status; 509 }; 510 511 OPERATION(SPOOLSS_OPNUM_EnumPorts) 512 struct spoolss_EnumPorts { 513 IN LPTSTR name; 514 IN DWORD level; 515 OUT DWORD needed; 516 OUT DWORD returned; 517 OUT DWORD status; 518 }; 519 520 OPERATION(SPOOLSS_OPNUM_DeletePort) 521 struct spoolss_DeletePort { 522 IN LPTSTR name; 523 OUT DWORD status; 524 }; 525 526 OPERATION(SPOOLSS_OPNUM_AddPortEx) 527 struct spoolss_AddPortEx { 528 IN LPTSTR name; 529 OUT DWORD status; 530 }; 531 532 OPERATION(SPOOLSS_OPNUM_SetPort) 533 struct spoolss_SetPort { 534 IN LPTSTR name; 535 OUT DWORD status; 536 }; 537 538 OPERATION(SPOOLSS_OPNUM_EnumMonitor) 539 struct spoolss_EnumMonitor { 540 IN LPTSTR name; 541 IN DWORD level; 542 OUT DWORD needed; 543 OUT DWORD returned; 544 OUT DWORD status; 545 }; 546 547 OPERATION(SPOOLSS_OPNUM_AddMonitor) 548 struct spoolss_AddMonitor { 549 IN LPTSTR name; 550 OUT DWORD status; 551 }; 552 553 OPERATION(SPOOLSS_OPNUM_DeleteMonitor) 554 struct spoolss_DeleteMonitor { 555 IN LPTSTR name; 556 OUT DWORD status; 557 }; 558 559 OPERATION(SPOOLSS_OPNUM_ResetPrinter) 560 struct spoolss_ResetPrinter { 561 IN spoolss_handle_t handle; 562 OUT DWORD status; 563 }; 564 565 OPERATION(SPOOLSS_OPNUM_StartPagePrinter) 566 struct spoolss_StartPagePrinter { 567 IN spoolss_handle_t handle; 568 OUT DWORD status; 569 }; 570 571 OPERATION(SPOOLSS_OPNUM_EndPagePrinter) 572 struct spoolss_EndPagePrinter { 573 IN spoolss_handle_t handle; 574 OUT DWORD status; 575 }; 576 577 OPERATION(SPOOLSS_OPNUM_WritePrinter) 578 struct spoolss_WritePrinter { 579 IN spoolss_handle_t handle; 580 IN DWORD BufCount; 581 SIZE_IS(BufCount) 582 IN REFERENCE LPBYTE pBuf; 583 OUT DWORD written; 584 OUT DWORD status; 585 }; 586 587 OPERATION(SPOOLSS_OPNUM_ScheduleJob) 588 struct spoolss_ScheduleJob { 589 IN spoolss_handle_t handle; 590 IN DWORD JobId; 591 OUT DWORD status; 592 }; 593 594 OPERATION(SPOOLSS_OPNUM_GetJob) 595 struct spoolss_GetJob { 596 IN spoolss_handle_t handle; 597 IN DWORD JobId; 598 IN DWORD level; 599 SIZE_IS(BufCount) 600 INOUT BYTE *pJob; 601 IN DWORD BufCount; 602 OUT DWORD needed; 603 OUT DWORD status; 604 }; 605 606 OPERATION(SPOOLSS_OPNUM_AddJob) 607 struct spoolss_AddJob { 608 IN spoolss_handle_t handle; 609 IN DWORD level; 610 IN DWORD Buf2; 611 IN DWORD BufCount; 612 SIZE_IS(BufCount) 613 OUT BYTE *pAddJob; 614 OUT DWORD needed; 615 OUT DWORD status; 616 }; 617 618 OPERATION(SPOOLSS_OPNUM_ClosePrinter) 619 struct spoolss_ClosePrinter { 620 IN spoolss_handle_t handle; 621 OUT spoolss_handle_t result_handle; 622 OUT DWORD status; 623 }; 624 625 OPERATION(SPOOLSS_OPNUM_EndDocPrinter) 626 struct spoolss_EndDocPrinter { 627 IN spoolss_handle_t handle; 628 OUT DWORD status; 629 }; 630 631 OPERATION(SPOOLSS_OPNUM_AddForm) 632 struct spoolss_AddForm { 633 IN spoolss_handle_t handle; 634 /* FORM_CONTAINER *form_container; */ 635 OUT DWORD status; 636 }; 637 638 OPERATION(SPOOLSS_OPNUM_DeleteForm) 639 struct spoolss_DeleteForm { 640 IN spoolss_handle_t handle; 641 /* IN REFERENCE LPTSTR form_name; */ 642 OUT DWORD status; 643 }; 644 645 OPERATION(SPOOLSS_OPNUM_EnumForms) 646 struct spoolss_EnumForms { 647 IN spoolss_handle_t handle; 648 IN DWORD level; 649 IN DWORD BufCount; 650 SIZE_IS(BufCount) 651 INOUT BYTE *pEnumForms; 652 OUT DWORD needed; 653 OUT DWORD pcRet; 654 OUT DWORD status; 655 }; 656 657 OPERATION(SPOOLSS_OPNUM_GetPrinterDriver2) 658 struct spoolss_GetPrinterDriver2 { 659 IN DWORD dontcare; 660 OUT DWORD status; 661 }; 662 663 OPERATION(SPOOLSS_OPNUM_FCPN) 664 struct spoolss_FCPN { 665 IN DWORD dontcare; 666 OUT DWORD status; 667 }; 668 669 OPERATION(SPOOLSS_OPNUM_ReplyOpenPrinter) 670 struct spoolss_ReplyOpenPrinter { 671 IN DWORD dontcare; 672 OUT DWORD status; 673 }; 674 675 OPERATION(SPOOLSS_OPNUM_ReplyClosePrinter) 676 struct spoolss_ReplyClosePrinter { 677 IN DWORD dontcare; 678 OUT DWORD status; 679 }; 680 681 682 OPERATION(SPOOLSS_OPNUM_RFFPCNEX) 683 struct spoolss_RFFPCNEX { 684 IN spoolss_handle_t handle; 685 OUT DWORD status; 686 }; 687 688 struct spoolss_infores { 689 DWORD entriesread; 690 struct spoolss_RPC_V2_NOTIFY_INFO *pinfo; 691 }; 692 693 OPERATION(SPOOLSS_OPNUM_RFNPCNEX) 694 struct spoolss_RFNPCNEX { 695 IN spoolss_handle_t handle; 696 IN DWORD color; 697 IN struct spoolss_RPC_V2_NOTIFY_OPTIONS *poptions; 698 OUT struct spoolss_infores *ppinfo; 699 OUT DWORD status; 700 }; 701 702 OPERATION(SPOOLSS_OPNUM_RRPCN) 703 struct spoolss_RRPCN { 704 IN DWORD dontcare; 705 OUT DWORD status; 706 }; 707 708 OPERATION(SPOOLSS_OPNUM_OpenPrinterEx) 709 struct spoolss_OpenPrinterEx { 710 IN LPTSTR printer_name; 711 OUT spoolss_handle_t handle; 712 IN LPTSTR data_type; 713 /* IN struct spoolssDevmodeContainer dmodeContainer; */ 714 /* IN DWORD AccessRequired; */ 715 /* IN CLIENT_CONTAINER client_info; */ 716 OUT DWORD status; 717 }; 718 719 OPERATION(SPOOLSS_OPNUM_EnumPrinterData) 720 struct spoolss_EnumPrinterData { 721 IN DWORD dontcare; 722 OUT DWORD status; 723 }; 724 725 OPERATION(SPOOLSS_OPNUM_EnumPrinterDataEx) 726 struct spoolss_EnumPrinterDataEx { 727 IN DWORD dontcare; 728 OUT DWORD status; 729 }; 730 731 OPERATION(SPOOLSS_OPNUM_EnumPrinterKey) 732 struct spoolss_EnumPrinterKey { 733 IN DWORD dontcare; 734 OUT DWORD status; 735 }; 736 737 /* 738 *********************************************************************** 739 * The spoolss interface definition. 740 *********************************************************************** 741 */ 742 743 INTERFACE(0) 744 union spoolss_interface { 745 CASE(SPOOLSS_OPNUM_OpenPrinter) 746 struct spoolss_OpenPrinter OpenPrinter; 747 748 CASE(SPOOLSS_OPNUM_DeletePrinter) 749 struct spoolss_DeletePrinter DeletePrinter; 750 751 CASE(SPOOLSS_OPNUM_GetPrinter) 752 struct spoolss_GetPrinter GetPrinter; 753 754 CASE(SPOOLSS_OPNUM_GetPrinterData) 755 struct spoolss_GetPrinterData GetPrinterData; 756 757 CASE(SPOOLSS_OPNUM_AbortPrinter) 758 struct spoolss_AbortPrinter AbortPrinter; 759 760 CASE(SPOOLSS_OPNUM_StartDocPrinter) 761 struct spoolss_StartDocPrinter StartDocPrinter; 762 763 CASE(SPOOLSS_OPNUM_EndDocPrinter) 764 struct spoolss_EndDocPrinter EndDocPrinter; 765 766 CASE(SPOOLSS_OPNUM_CreatePrinterIC) 767 struct spoolss_CreatePrinterIC CreatePrinterIC; 768 769 CASE(SPOOLSS_OPNUM_ResetPrinter) 770 struct spoolss_ResetPrinter ResetPrinter; 771 772 CASE(SPOOLSS_OPNUM_EnumMonitor) 773 struct spoolss_EnumMonitor EnumMonitor; 774 775 CASE(SPOOLSS_OPNUM_AddMonitor) 776 struct spoolss_AddMonitor AddMonitor; 777 778 CASE(SPOOLSS_OPNUM_DeleteMonitor) 779 struct spoolss_DeleteMonitor DeleteMonitor; 780 781 CASE(SPOOLSS_OPNUM_WritePrinter) 782 struct spoolss_WritePrinter WritePrinter; 783 784 CASE(SPOOLSS_OPNUM_StartPagePrinter) 785 struct spoolss_StartPagePrinter StartPagePrinter; 786 787 CASE(SPOOLSS_OPNUM_EndPagePrinter) 788 struct spoolss_EndPagePrinter EndPagePrinter; 789 790 CASE(SPOOLSS_OPNUM_ClosePrinter) 791 struct spoolss_ClosePrinter ClosePrinter; 792 793 CASE(SPOOLSS_OPNUM_OpenPrinterEx) 794 struct spoolss_OpenPrinterEx OpenPrinterEx; 795 796 CASE(SPOOLSS_OPNUM_AddJob) 797 struct spoolss_AddJob AddJob; 798 799 CASE(SPOOLSS_OPNUM_GetJob) 800 struct spoolss_GetJob GetJob; 801 802 CASE(SPOOLSS_OPNUM_ScheduleJob) 803 struct spoolss_ScheduleJob ScheduleJob; 804 805 CASE(SPOOLSS_OPNUM_AddForm) 806 struct spoolss_AddForm AddForm; 807 808 CASE(SPOOLSS_OPNUM_DeleteForm) 809 struct spoolss_DeleteForm DeleteForm; 810 811 CASE(SPOOLSS_OPNUM_EnumForms) 812 struct spoolss_EnumForms EnumForms; 813 814 CASE(SPOOLSS_OPNUM_EnumPorts) 815 struct spoolss_EnumPorts EnumPorts; 816 817 CASE(SPOOLSS_OPNUM_DeletePort) 818 struct spoolss_DeletePort DeletePort; 819 820 CASE(SPOOLSS_OPNUM_AddPortEx) 821 struct spoolss_AddPortEx AddPortEx; 822 823 CASE(SPOOLSS_OPNUM_SetPort) 824 struct spoolss_SetPort SetPort; 825 826 CASE(SPOOLSS_OPNUM_RFNPCNEX) 827 struct spoolss_RFNPCNEX RFNPCNEX; 828 829 }; 830 typedef union spoolss_interface spoolss_interface_t; 831 EXTERNTYPEINFO(spoolss_interface) 832 833 #endif /* _SPOOLSS_NDL_ */