|
|
1.1 ! root 1: /*++ BUILD Version: 0002 // Increment this if a change has global effects ! 2: ! 3: Copyright (c) 1991-1993 Microsoft Corporation ! 4: ! 5: Module Name: ! 6: ! 7: lmsvc.h ! 8: ! 9: Abstract: ! 10: ! 11: This file contains structures, function prototypes, and definitions ! 12: for the NetService API. ! 13: ! 14: Author: ! 15: ! 16: Dan Lafferty (danl) 08-Mar-1991 ! 17: ! 18: [Environment:] ! 19: ! 20: User Mode -Win32 ! 21: ! 22: [Notes:] ! 23: ! 24: You must include NETCONS.H before this file, since this file depends ! 25: on values defined in NETCONS.H. ! 26: ! 27: Revision History: ! 28: ! 29: 10-Mar-1991 danl ! 30: Created from LM2.0 header files and NT-LAN API Spec. ! 31: 29-Jul-1991 DanHi ! 32: Change comments after manifest constants for error messages to a format ! 33: that is recognized by mapmsg.exe ! 34: 06-Sep-1991 JohnRo ! 35: Added OPTIONAL keywords as applicable. ! 36: 16-Sep-1991 CliffV ! 37: Added TEXT() around SERVICE_ service named. ! 38: Added Netlogon specific uninstall codes. ! 39: 16-Sep-1991 JohnRo ! 40: Correct UNICODE use of SERVICE_ENCRYPT. ! 41: 25-Sep-1991 CliffV ! 42: Added SERVICE2_BASE and SERVICE_UIC_M_NETLOGON_PATH from LM 2.1. ! 43: 14-Feb-1992 RitaW ! 44: Moved service name strings to lmsname.h. ! 45: 02-Jun-1992 JohnRo ! 46: RAID 9829: Avoid winsvc.h compiler warnings. ! 47: 31-Mar-1993 Danl ! 48: Used upper bits in the code field to extend the max possible waithint ! 49: to FFFF. Created macros for accessing this. (SERVICE_NT...). ! 50: ! 51: --*/ ! 52: ! 53: #ifndef _LMSVC_ ! 54: #define _LMSVC_ ! 55: ! 56: #ifdef __cplusplus ! 57: extern "C" { ! 58: #endif ! 59: ! 60: // ! 61: // Include the file which contains all the service name strings. ! 62: // ! 63: #include <lmsname.h> ! 64: ! 65: // ! 66: // Data Structures ! 67: // ! 68: ! 69: typedef struct _SERVICE_INFO_0 { ! 70: LPTSTR svci0_name; ! 71: } SERVICE_INFO_0, *PSERVICE_INFO_0, * LPSERVICE_INFO_0; ! 72: ! 73: typedef struct _SERVICE_INFO_1 { ! 74: LPTSTR svci1_name; ! 75: DWORD svci1_status; ! 76: DWORD svci1_code; ! 77: DWORD svci1_pid; ! 78: } SERVICE_INFO_1, *PSERVICE_INFO_1, * LPSERVICE_INFO_1; ! 79: ! 80: typedef struct _SERVICE_INFO_2 { ! 81: LPTSTR svci2_name; ! 82: DWORD svci2_status; ! 83: DWORD svci2_code; ! 84: DWORD svci2_pid; ! 85: LPTSTR svci2_text; ! 86: DWORD svci2_specific_error; ! 87: LPTSTR svci2_display_name; ! 88: } SERVICE_INFO_2, *PSERVICE_INFO_2, * LPSERVICE_INFO_2; ! 89: ! 90: // ! 91: // Function Prototypes ! 92: // ! 93: ! 94: NET_API_STATUS NET_API_FUNCTION ! 95: NetServiceControl ( ! 96: IN LPTSTR servername OPTIONAL, ! 97: IN LPTSTR service, ! 98: IN DWORD opcode, ! 99: IN DWORD arg, ! 100: OUT LPBYTE *bufptr ! 101: ); ! 102: ! 103: NET_API_STATUS NET_API_FUNCTION ! 104: NetServiceEnum ( ! 105: IN LPTSTR servername OPTIONAL, ! 106: IN DWORD level, ! 107: OUT LPBYTE *bufptr, ! 108: IN DWORD prefmaxlen, ! 109: OUT LPDWORD entriesread, ! 110: OUT LPDWORD totalentries, ! 111: IN OUT LPDWORD resume_handle OPTIONAL ! 112: ); ! 113: ! 114: NET_API_STATUS NET_API_FUNCTION ! 115: NetServiceGetInfo ( ! 116: IN LPTSTR servername OPTIONAL, ! 117: IN LPTSTR service, ! 118: IN DWORD level, ! 119: OUT LPBYTE *bufptr ! 120: ); ! 121: ! 122: NET_API_STATUS NET_API_FUNCTION ! 123: NetServiceInstall ( ! 124: IN LPTSTR servername OPTIONAL, ! 125: IN LPTSTR service, ! 126: IN DWORD argc, ! 127: IN LPTSTR argv[], ! 128: OUT LPBYTE *bufptr ! 129: ); ! 130: ! 131: // ! 132: // Special Values and Constants ! 133: // ! 134: ! 135: // ! 136: // Bitmask and bit values for svci1_status, and svci2_status ! 137: // fields. For each "subfield", there is a mask defined, ! 138: // and a number of constants representing the value ! 139: // obtained by doing (status & mask). ! 140: // ! 141: ! 142: // Bits 0,1 -- general status ! 143: ! 144: #define SERVICE_INSTALL_STATE 0x03 ! 145: #define SERVICE_UNINSTALLED 0x00 ! 146: #define SERVICE_INSTALL_PENDING 0x01 ! 147: #define SERVICE_UNINSTALL_PENDING 0x02 ! 148: #define SERVICE_INSTALLED 0x03 ! 149: ! 150: // Bits 2,3 -- paused/active status ! 151: ! 152: #define SERVICE_PAUSE_STATE 0x0C ! 153: #define LM20_SERVICE_ACTIVE 0x00 ! 154: #define LM20_SERVICE_CONTINUE_PENDING 0x04 ! 155: #define LM20_SERVICE_PAUSE_PENDING 0x08 ! 156: #define LM20_SERVICE_PAUSED 0x0C ! 157: ! 158: // Bit 4 -- uninstallable indication ! 159: ! 160: #define SERVICE_NOT_UNINSTALLABLE 0x00 ! 161: #define SERVICE_UNINSTALLABLE 0x10 ! 162: ! 163: // Bit 5 -- pausable indication ! 164: ! 165: #define SERVICE_NOT_PAUSABLE 0x00 ! 166: #define SERVICE_PAUSABLE 0x20 ! 167: ! 168: // Workstation service only: ! 169: // Bits 8,9,10 -- redirection paused/active ! 170: ! 171: #define SERVICE_REDIR_PAUSED 0x700 ! 172: #define SERVICE_REDIR_DISK_PAUSED 0x100 ! 173: #define SERVICE_REDIR_PRINT_PAUSED 0x200 ! 174: #define SERVICE_REDIR_COMM_PAUSED 0x400 ! 175: ! 176: // ! 177: // Additional standard LAN Manager for MS-DOS services ! 178: // ! 179: ! 180: #define SERVICE_DOS_ENCRYPTION TEXT("ENCRYPT") ! 181: ! 182: // ! 183: // NetServiceControl opcodes. ! 184: // ! 185: ! 186: #define SERVICE_CTRL_INTERROGATE 0 ! 187: #define SERVICE_CTRL_PAUSE 1 ! 188: #define SERVICE_CTRL_CONTINUE 2 ! 189: #define SERVICE_CTRL_UNINSTALL 3 ! 190: ! 191: // ! 192: // Workstation service only: Bits used in the "arg" parameter ! 193: // to NetServiceControl in conjunction with the opcode ! 194: // SERVICE_CTRL_PAUSE or SERVICE_CTRL_CONTINUE, to pause or ! 195: // continue redirection. ! 196: // ! 197: ! 198: #define SERVICE_CTRL_REDIR_DISK 0x1 ! 199: #define SERVICE_CTRL_REDIR_PRINT 0x2 ! 200: #define SERVICE_CTRL_REDIR_COMM 0x4 ! 201: ! 202: // ! 203: // Values for svci1_code, and svci2_code when status ! 204: // of the service is SERVICE_INSTALL_PENDING or ! 205: // SERVICE_UNINSTALL_PENDING. ! 206: // A service can optionally provide a hint to the installer ! 207: // that the install is proceeding and how long to wait ! 208: // (in 0.1 second increments) before querying status again. ! 209: // ! 210: ! 211: #define SERVICE_IP_NO_HINT 0x0 ! 212: #define SERVICE_CCP_NO_HINT 0x0 ! 213: ! 214: #define SERVICE_IP_QUERY_HINT 0x10000 ! 215: #define SERVICE_CCP_QUERY_HINT 0x10000 ! 216: ! 217: // ! 218: // Mask for install proceeding checkpoint number ! 219: // ! 220: ! 221: #define SERVICE_IP_CHKPT_NUM 0x0FF ! 222: #define SERVICE_CCP_CHKPT_NUM 0x0FF ! 223: ! 224: // ! 225: // Mask for wait time hint before querying again ! 226: // ! 227: ! 228: #define SERVICE_IP_WAIT_TIME 0x0FF00 ! 229: #define SERVICE_CCP_WAIT_TIME 0x0FF00 ! 230: ! 231: // ! 232: // Shift count for building wait time _code values ! 233: // ! 234: ! 235: #define SERVICE_IP_WAITTIME_SHIFT 8 ! 236: #define SERVICE_NTIP_WAITTIME_SHIFT 12 ! 237: ! 238: // ! 239: // Mask used for upper and lower portions of wait hint time. ! 240: // ! 241: #define UPPER_HINT_MASK 0x0000FF00 ! 242: #define LOWER_HINT_MASK 0x000000FF ! 243: #define UPPER_GET_HINT_MASK 0x0FF00000 ! 244: #define LOWER_GET_HINT_MASK 0x0000FF00 ! 245: #define SERVICE_NT_MAXTIME 0x0000FFFF ! 246: #define SERVICE_RESRV_MASK 0x0001FFFF ! 247: #define SERVICE_MAXTIME 0x000000FF ! 248: ! 249: // ! 250: // SERVICE_BASE is the base of service error codes, ! 251: // chosen to avoid conflict with OS, redirector, ! 252: // netapi, and errlog codes. ! 253: // ! 254: // Don't change the comments following the manifest constants without ! 255: // understanding how mapmsg works. ! 256: // ! 257: ! 258: #define SERVICE_BASE 3050 ! 259: #define SERVICE_UIC_NORMAL 0 ! 260: /* ! 261: * Uninstall codes, to be used in high byte of 'code' on final NetStatus, ! 262: * which sets the status to UNINSTALLED. ! 263: */ ! 264: ! 265: #define SERVICE_UIC_BADPARMVAL (SERVICE_BASE + 1) ! 266: /* ! 267: * The Registry or the information you just typed includes an illegal ! 268: * value for "%1". ! 269: */ ! 270: ! 271: #define SERVICE_UIC_MISSPARM (SERVICE_BASE + 2) ! 272: /* ! 273: * The required parameter was not provided on the command ! 274: * line or in the configuration file. ! 275: */ ! 276: ! 277: #define SERVICE_UIC_UNKPARM (SERVICE_BASE + 3) ! 278: /* ! 279: * LAN Manager does not recognize "%1" as a valid option. ! 280: */ ! 281: ! 282: #define SERVICE_UIC_RESOURCE (SERVICE_BASE + 4) ! 283: /* ! 284: * A request for resource could not be satisfied. ! 285: */ ! 286: ! 287: #define SERVICE_UIC_CONFIG (SERVICE_BASE + 5) ! 288: /* ! 289: * A problem exists with the system configuration. ! 290: */ ! 291: ! 292: #define SERVICE_UIC_SYSTEM (SERVICE_BASE + 6) ! 293: /* ! 294: * A system error has occurred. ! 295: */ ! 296: ! 297: #define SERVICE_UIC_INTERNAL (SERVICE_BASE + 7) ! 298: /* ! 299: * An internal consistency error has occurred. ! 300: */ ! 301: ! 302: #define SERVICE_UIC_AMBIGPARM (SERVICE_BASE + 8) ! 303: /* ! 304: * The configuration file or the command line has an ambiguous option. ! 305: */ ! 306: ! 307: #define SERVICE_UIC_DUPPARM (SERVICE_BASE + 9) ! 308: /* ! 309: * The configuration file or the command line has a duplicate parameter. ! 310: */ ! 311: ! 312: #define SERVICE_UIC_KILL (SERVICE_BASE + 10) ! 313: /* ! 314: * The service did not respond to control and was stopped with ! 315: * the DosKillProc function. ! 316: */ ! 317: ! 318: #define SERVICE_UIC_EXEC (SERVICE_BASE + 11) ! 319: /* ! 320: * An error occurred when attempting to run the service program. ! 321: */ ! 322: ! 323: #define SERVICE_UIC_SUBSERV (SERVICE_BASE + 12) ! 324: /* ! 325: * The sub-service failed to start. ! 326: */ ! 327: ! 328: #define SERVICE_UIC_CONFLPARM (SERVICE_BASE + 13) ! 329: /* ! 330: * There is a conflict in the value or use of these options: %1. ! 331: */ ! 332: ! 333: #define SERVICE_UIC_FILE (SERVICE_BASE + 14) ! 334: /* ! 335: * There is a problem with the file. ! 336: */ ! 337: ! 338: ! 339: ! 340: // ! 341: // The modifiers ! 342: // ! 343: ! 344: // ! 345: // General: ! 346: // ! 347: ! 348: #define SERVICE_UIC_M_NULL 0 ! 349: ! 350: // ! 351: // RESOURCE: ! 352: // ! 353: ! 354: #define SERVICE_UIC_M_MEMORY (SERVICE_BASE + 20) /* memory */ ! 355: #define SERVICE_UIC_M_DISK (SERVICE_BASE + 21) /* disk space */ ! 356: #define SERVICE_UIC_M_THREADS (SERVICE_BASE + 22) /* thread */ ! 357: #define SERVICE_UIC_M_PROCESSES (SERVICE_BASE + 23) /* process */ ! 358: ! 359: // ! 360: // CONFIG: ! 361: // ! 362: ! 363: // ! 364: // Security failure ! 365: // ! 366: ! 367: #define SERVICE_UIC_M_SECURITY (SERVICE_BASE + 24) ! 368: /* Security Failure. %0 */ ! 369: ! 370: #define SERVICE_UIC_M_LANROOT (SERVICE_BASE + 25) ! 371: /* ! 372: * Bad or missing LAN Manager root directory. ! 373: */ ! 374: ! 375: #define SERVICE_UIC_M_REDIR (SERVICE_BASE + 26) ! 376: /* ! 377: * The network software is not installed. ! 378: */ ! 379: ! 380: #define SERVICE_UIC_M_SERVER (SERVICE_BASE + 27) ! 381: /* ! 382: * The server is not started. ! 383: */ ! 384: ! 385: #define SERVICE_UIC_M_SEC_FILE_ERR (SERVICE_BASE + 28) ! 386: /* ! 387: * The server cannot access the user accounts database (NET.ACC). ! 388: */ ! 389: ! 390: #define SERVICE_UIC_M_FILES (SERVICE_BASE + 29) ! 391: /* ! 392: * Incompatible files are installed in the LANMAN tree. ! 393: */ ! 394: ! 395: #define SERVICE_UIC_M_LOGS (SERVICE_BASE + 30) ! 396: /* ! 397: * The LANMAN\LOGS directory is invalid. ! 398: */ ! 399: ! 400: #define SERVICE_UIC_M_LANGROUP (SERVICE_BASE + 31) ! 401: /* ! 402: * The domain specified could not be used. ! 403: */ ! 404: ! 405: #define SERVICE_UIC_M_MSGNAME (SERVICE_BASE + 32) ! 406: /* ! 407: * The computer name is being used as a message alias on another computer. ! 408: */ ! 409: ! 410: #define SERVICE_UIC_M_ANNOUNCE (SERVICE_BASE + 33) ! 411: /* ! 412: * The announcement of the server name failed. ! 413: */ ! 414: ! 415: #define SERVICE_UIC_M_UAS (SERVICE_BASE + 34) ! 416: /* ! 417: * The user accounts database is not configured correctly. ! 418: */ ! 419: ! 420: #define SERVICE_UIC_M_SERVER_SEC_ERR (SERVICE_BASE + 35) ! 421: /* ! 422: * The server is not running with user-level security. ! 423: */ ! 424: ! 425: #define SERVICE_UIC_M_WKSTA (SERVICE_BASE + 37) ! 426: /* ! 427: * The workstation is not configured properly. ! 428: */ ! 429: ! 430: #define SERVICE_UIC_M_ERRLOG (SERVICE_BASE + 38) ! 431: /* ! 432: * View your error log for details. ! 433: */ ! 434: ! 435: #define SERVICE_UIC_M_FILE_UW (SERVICE_BASE + 39) ! 436: /* ! 437: * Unable to write to this file. ! 438: */ ! 439: ! 440: #define SERVICE_UIC_M_ADDPAK (SERVICE_BASE + 40) ! 441: /* ! 442: * ADDPAK file is corrupted. Delete LANMAN\NETPROG\ADDPAK.SER ! 443: * and reapply all ADDPAKs. ! 444: */ ! 445: ! 446: #define SERVICE_UIC_M_LAZY (SERVICE_BASE + 41) ! 447: /* ! 448: * The LM386 server cannot be started because CACHE.EXE is not running. ! 449: */ ! 450: ! 451: #define SERVICE_UIC_M_UAS_MACHINE_ACCT (SERVICE_BASE + 42) ! 452: /* ! 453: * There is no account for this computer in the security database. ! 454: */ ! 455: ! 456: #define SERVICE_UIC_M_UAS_SERVERS_NMEMB (SERVICE_BASE + 43) ! 457: /* ! 458: * This computer is not a member of the group SERVERS. ! 459: */ ! 460: ! 461: #define SERVICE_UIC_M_UAS_SERVERS_NOGRP (SERVICE_BASE + 44) ! 462: /* ! 463: * The group SERVERS is not present in the local security database. ! 464: */ ! 465: ! 466: #define SERVICE_UIC_M_UAS_INVALID_ROLE (SERVICE_BASE + 45) ! 467: /* ! 468: * This Windows NT computer is configured as a member of a workgroup, not as ! 469: * a member of a domain. The Netlogon service does not need to run in this ! 470: * configuration. ! 471: */ ! 472: ! 473: #define SERVICE_UIC_M_NETLOGON_NO_DC (SERVICE_BASE + 46) ! 474: /* ! 475: * The Windows NT domain controller for this domain could not be located. ! 476: */ ! 477: ! 478: #define SERVICE_UIC_M_NETLOGON_DC_CFLCT (SERVICE_BASE + 47) ! 479: /* ! 480: * A domain controller is already running in this domain. ! 481: */ ! 482: ! 483: #define SERVICE_UIC_M_NETLOGON_AUTH (SERVICE_BASE + 48) ! 484: /* ! 485: * The service failed to authenticate with the primary domain controller. ! 486: */ ! 487: ! 488: #define SERVICE_UIC_M_UAS_PROLOG (SERVICE_BASE + 49) ! 489: /* ! 490: * There is a problem with the security database creation date or serial number. ! 491: */ ! 492: ! 493: ! 494: #define SERVICE2_BASE 5600 ! 495: /* new SEVICE_UIC messages go here */ ! 496: ! 497: #define SERVICE_UIC_M_NETLOGON_MPATH (SERVICE2_BASE + 0) ! 498: /* ! 499: * Could not share the User or Script path. ! 500: */ ! 501: ! 502: #define SERVICE_UIC_M_LSA_MACHINE_ACCT (SERVICE2_BASE + 1) ! 503: /* ! 504: * The password for this computer is not found in the local security ! 505: * database. ! 506: */ ! 507: ! 508: #define SERVICE_UIC_M_DATABASE_ERROR (SERVICE2_BASE + 2) ! 509: /* ! 510: * An internal error occurred while accessing the computer's ! 511: * local or network security database. ! 512: */ ! 513: ! 514: ! 515: // ! 516: // End modifiers ! 517: // ! 518: ! 519: // ! 520: // Commonly used Macros: ! 521: // ! 522: ! 523: #define SERVICE_IP_CODE(tt,nn) \ ! 524: ((long)SERVICE_IP_QUERY_HINT|(long)(nn|(tt<<SERVICE_IP_WAITTIME_SHIFT))) ! 525: ! 526: #define SERVICE_CCP_CODE(tt,nn) \ ! 527: ((long)SERVICE_CCP_QUERY_HINT|(long)(nn|(tt<<SERVICE_IP_WAITTIME_SHIFT))) ! 528: ! 529: #define SERVICE_UIC_CODE(cc,mm) \ ! 530: ((long)(((long)cc<<16)|(long)(unsigned short)mm)) ! 531: ! 532: // ! 533: // This macro takes a wait hint (tt) which can have a maximum value of ! 534: // 0xFFFF and puts it into the service status code field. ! 535: // 0x0FF1FFnn (where nn is the checkpoint information). ! 536: // ! 537: #define SERVICE_NT_CCP_CODE(tt,nn) \ ! 538: ( \ ! 539: ((long)SERVICE_CCP_QUERY_HINT) | \ ! 540: ((long)(nn)) | \ ! 541: (((tt)&LOWER_HINT_MASK) << SERVICE_IP_WAITTIME_SHIFT) | \ ! 542: (((tt)&UPPER_HINT_MASK) << SERVICE_NTIP_WAITTIME_SHIFT) \ ! 543: ) ! 544: ! 545: // ! 546: // This macro takes a status code field, and strips out the wait hint ! 547: // from the upper and lower sections. ! 548: // 0x0FF1FFnn results in 0x0000FFFF. ! 549: // ! 550: #define SERVICE_NT_WAIT_GET(code) \ ! 551: ( \ ! 552: (((code) & UPPER_GET_HINT_MASK) >> SERVICE_NTIP_WAITTIME_SHIFT) | \ ! 553: (((code) & LOWER_GET_HINT_MASK) >> SERVICE_IP_WAITTIME_SHIFT) \ ! 554: ) ! 555: ! 556: #ifdef __cplusplus ! 557: } ! 558: #endif ! 559: ! 560: #endif // _LMSVC_
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.