Annotation of mstools/h/lmsvc.h, revision 1.1.1.1

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_

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.