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