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