Annotation of mstools/h/winsvc.h, revision 1.1

1.1     ! root        1: /*++ BUILD Version: 0009    // Increment this if a change has global effects
        !             2: 
        !             3: Copyright (c) 1992  Microsoft Corporation
        !             4: 
        !             5: Module Name:
        !             6: 
        !             7:     winsvc.h
        !             8: 
        !             9: Abstract:
        !            10: 
        !            11:     Header file for the Service Control Manager
        !            12: 
        !            13: Author:
        !            14: 
        !            15:     Dan Lafferty (danl) 19-Jan-1992
        !            16: 
        !            17: Environment:
        !            18: 
        !            19:     User Mode - Win32
        !            20: 
        !            21: Revision History:
        !            22: 
        !            23:     19-Jan-1992 danl
        !            24:          Created
        !            25: 
        !            26: --*/
        !            27: #ifndef _WINSVC_
        !            28: #define _WINSVC_
        !            29: 
        !            30: //
        !            31: // Constants
        !            32: //
        !            33: 
        !            34: //
        !            35: // Service database names
        !            36: //
        !            37: 
        !            38: #define SERVICES_ACTIVE_DATABASEW      L"ServicesActive"
        !            39: #define SERVICES_FAILED_DATABASEW      L"ServicesFailed"
        !            40: 
        !            41: #define SERVICES_ACTIVE_DATABASEA      "ServicesActive"
        !            42: #define SERVICES_FAILED_DATABASEA      "ServicesFailed"
        !            43: 
        !            44: #ifdef UNICODE
        !            45: 
        !            46: #define SERVICES_ACTIVE_DATABASE       SERVICES_ACTIVE_DATABASEW
        !            47: #define SERVICES_FAILED_DATABASE       SERVICES_FAILED_DATABASEW
        !            48: 
        !            49: #else // ndef UNICODE
        !            50: 
        !            51: #define SERVICES_ACTIVE_DATABASE       SERVICES_ACTIVE_DATABASEA
        !            52: #define SERVICES_FAILED_DATABASE       SERVICES_FAILED_DATABASEA
        !            53: 
        !            54: #endif // ndef UNICODE
        !            55: 
        !            56: //
        !            57: // Value to indicate no change to an optional parameter
        !            58: //
        !            59: #define SERVICE_NO_CHANGE              0xffffffff
        !            60: 
        !            61: //
        !            62: // Service State -- for Enum Requests (Bit Mask)
        !            63: //
        !            64: #define SERVICE_ACTIVE                 0x00000001
        !            65: #define SERVICE_INACTIVE               0x00000002
        !            66: #define SERVICE_STATE_ALL              (SERVICE_ACTIVE   | \
        !            67:                                         SERVICE_INACTIVE)
        !            68: 
        !            69: //
        !            70: // Controls
        !            71: //
        !            72: #define SERVICE_CONTROL_STOP           0x00000001
        !            73: #define SERVICE_CONTROL_PAUSE          0x00000002
        !            74: #define SERVICE_CONTROL_CONTINUE       0x00000003
        !            75: #define SERVICE_CONTROL_INTERROGATE    0x00000004
        !            76: 
        !            77: //
        !            78: // Service State -- for CurrentState
        !            79: //
        !            80: #define SERVICE_STOPPED                0x00000001
        !            81: #define SERVICE_START_PENDING          0x00000002
        !            82: #define SERVICE_STOP_PENDING           0x00000003
        !            83: #define SERVICE_RUNNING                0x00000004
        !            84: #define SERVICE_CONTINUE_PENDING       0x00000005
        !            85: #define SERVICE_PAUSE_PENDING          0x00000006
        !            86: #define SERVICE_PAUSED                 0x00000007
        !            87: 
        !            88: //
        !            89: // Controls Accepted  (Bit Mask)
        !            90: //
        !            91: #define SERVICE_ACCEPT_STOP            0x00000001
        !            92: #define SERVICE_ACCEPT_PAUSE_CONTINUE  0x00000002
        !            93: 
        !            94: //
        !            95: // Service Control Manager object specific access types
        !            96: //
        !            97: #define SC_MANAGER_CONNECT             0x0001
        !            98: #define SC_MANAGER_CREATE_SERVICE      0x0002
        !            99: #define SC_MANAGER_ENUMERATE_SERVICE   0x0004
        !           100: #define SC_MANAGER_LOCK                0x0008
        !           101: #define SC_MANAGER_QUERY_LOCK_STATUS   0x0010
        !           102: #define SC_MANAGER_MODIFY_BOOT_CONFIG  0x0020
        !           103: 
        !           104: #define SC_MANAGER_ALL_ACCESS          (STANDARD_RIGHTS_REQUIRED      | \
        !           105:                                         SC_MANAGER_CONNECT            | \
        !           106:                                         SC_MANAGER_CREATE_SERVICE     | \
        !           107:                                         SC_MANAGER_ENUMERATE_SERVICE  | \
        !           108:                                         SC_MANAGER_LOCK               | \
        !           109:                                         SC_MANAGER_QUERY_LOCK_STATUS  | \
        !           110:                                         SC_MANAGER_MODIFY_BOOT_CONFIG)
        !           111: 
        !           112: 
        !           113: 
        !           114: //
        !           115: // Service object specific access type
        !           116: //
        !           117: #define SERVICE_QUERY_CONFIG           0x0001
        !           118: #define SERVICE_CHANGE_CONFIG          0x0002
        !           119: #define SERVICE_QUERY_STATUS           0x0004
        !           120: #define SERVICE_ENUMERATE_DEPENDENTS   0x0008
        !           121: #define SERVICE_START                  0x0010
        !           122: #define SERVICE_STOP                   0x0020
        !           123: #define SERVICE_PAUSE_CONTINUE         0x0040
        !           124: #define SERVICE_INTERROGATE            0x0080
        !           125: 
        !           126: #define SERVICE_ALL_ACCESS             (STANDARD_RIGHTS_REQUIRED     | \
        !           127:                                         SERVICE_QUERY_CONFIG         | \
        !           128:                                         SERVICE_CHANGE_CONFIG        | \
        !           129:                                         SERVICE_QUERY_STATUS         | \
        !           130:                                         SERVICE_ENUMERATE_DEPENDENTS | \
        !           131:                                         SERVICE_START                | \
        !           132:                                         SERVICE_STOP                 | \
        !           133:                                         SERVICE_PAUSE_CONTINUE       | \
        !           134:                                         SERVICE_INTERROGATE)
        !           135: 
        !           136: 
        !           137: //
        !           138: // Handle Types
        !           139: //
        !           140: 
        !           141: typedef HANDLE      SC_HANDLE;
        !           142: typedef SC_HANDLE   *LPSC_HANDLE;
        !           143: 
        !           144: typedef DWORD       SERVICE_STATUS_HANDLE;
        !           145: 
        !           146: //
        !           147: // Service Status Structure
        !           148: //
        !           149: 
        !           150: typedef struct _SERVICE_STATUS {
        !           151:     DWORD   dwServiceType;
        !           152:     DWORD   dwCurrentState;
        !           153:     DWORD   dwControlsAccepted;
        !           154:     DWORD   dwWin32ExitCode;
        !           155:     DWORD   dwServiceSpecificExitCode;
        !           156:     DWORD   dwCheckPoint;
        !           157:     DWORD   dwWaitHint;
        !           158: } SERVICE_STATUS, *LPSERVICE_STATUS;
        !           159: 
        !           160: 
        !           161: 
        !           162: //
        !           163: // Service Status Enumeration Structure
        !           164: //
        !           165: 
        !           166: typedef struct _ENUM_SERVICE_STATUSA {
        !           167:     LPSTR          lpServiceName;
        !           168:     SERVICE_STATUS ServiceStatus;
        !           169: } ENUM_SERVICE_STATUSA, *LPENUM_SERVICE_STATUSA;
        !           170: typedef struct _ENUM_SERVICE_STATUSW {
        !           171:     LPWSTR         lpServiceName;
        !           172:     SERVICE_STATUS ServiceStatus;
        !           173: } ENUM_SERVICE_STATUSW, *LPENUM_SERVICE_STATUSW;
        !           174: #ifdef UNICODE
        !           175: #define ENUM_SERVICE_STATUS ENUM_SERVICE_STATUSW
        !           176: #define LPENUM_SERVICE_STATUS LPENUM_SERVICE_STATUSW
        !           177: #else
        !           178: #define ENUM_SERVICE_STATUS ENUM_SERVICE_STATUSA
        !           179: #define LPENUM_SERVICE_STATUS LPENUM_SERVICE_STATUSA
        !           180: #endif // UNICODE
        !           181: 
        !           182: 
        !           183: //
        !           184: // Structures for the Lock API functions
        !           185: //
        !           186: 
        !           187: typedef LPVOID  SC_LOCK;
        !           188: 
        !           189: typedef struct _QUERY_SERVICE_LOCK_STATUSA {
        !           190:     DWORD   fIsLocked;
        !           191:     LPSTR   lpLockOwner;
        !           192:     DWORD   dwLockDuration;
        !           193: } QUERY_SERVICE_LOCK_STATUSA, *LPQUERY_SERVICE_LOCK_STATUSA;
        !           194: typedef struct _QUERY_SERVICE_LOCK_STATUSW {
        !           195:     DWORD   fIsLocked;
        !           196:     LPWSTR  lpLockOwner;
        !           197:     DWORD   dwLockDuration;
        !           198: } QUERY_SERVICE_LOCK_STATUSW, *LPQUERY_SERVICE_LOCK_STATUSW;
        !           199: #ifdef UNICODE
        !           200: #define QUERY_SERVICE_LOCK_STATUS QUERY_SERVICE_LOCK_STATUSW
        !           201: #define LPQUERY_SERVICE_LOCK_STATUS LPQUERY_SERVICE_LOCK_STATUSW
        !           202: #else
        !           203: #define QUERY_SERVICE_LOCK_STATUS QUERY_SERVICE_LOCK_STATUSA
        !           204: #define LPQUERY_SERVICE_LOCK_STATUS LPQUERY_SERVICE_LOCK_STATUSA
        !           205: #endif // UNICODE
        !           206: 
        !           207: 
        !           208: 
        !           209: //
        !           210: // Query Service Configuration Structure
        !           211: //
        !           212: 
        !           213: typedef struct _QUERY_SERVICE_CONFIGA {
        !           214:     DWORD   dwServiceType;
        !           215:     DWORD   dwStartType;
        !           216:     DWORD   dwErrorControl;
        !           217:     LPSTR   lpBinaryPathName;
        !           218:     LPSTR   lpLoadOrderGroup;
        !           219:     LPSTR   lpDependencies;
        !           220:     LPSTR   lpServiceStartName;
        !           221: } QUERY_SERVICE_CONFIGA, *LPQUERY_SERVICE_CONFIGA;
        !           222: typedef struct _QUERY_SERVICE_CONFIGW {
        !           223:     DWORD   dwServiceType;
        !           224:     DWORD   dwStartType;
        !           225:     DWORD   dwErrorControl;
        !           226:     LPWSTR  lpBinaryPathName;
        !           227:     LPWSTR  lpLoadOrderGroup;
        !           228:     LPWSTR  lpDependencies;
        !           229:     LPWSTR  lpServiceStartName;
        !           230: } QUERY_SERVICE_CONFIGW, *LPQUERY_SERVICE_CONFIGW;
        !           231: #ifdef UNICODE
        !           232: #define QUERY_SERVICE_CONFIG QUERY_SERVICE_CONFIGW
        !           233: #define LPQUERY_SERVICE_CONFIG LPQUERY_SERVICE_CONFIGW
        !           234: #else
        !           235: #define QUERY_SERVICE_CONFIG QUERY_SERVICE_CONFIGA
        !           236: #define LPQUERY_SERVICE_CONFIG LPQUERY_SERVICE_CONFIGA
        !           237: #endif // UNICODE
        !           238: 
        !           239: 
        !           240: 
        !           241: //
        !           242: // Function Prototype for the Service Main Function
        !           243: //
        !           244: 
        !           245: typedef VOID (*LPSERVICE_MAIN_FUNCTIONW)(
        !           246:     DWORD   dwNumServicesArgs,
        !           247:     LPWSTR  *lpServiceArgVectors
        !           248:     );
        !           249: 
        !           250: typedef VOID (*LPSERVICE_MAIN_FUNCTIONA)(
        !           251:     DWORD   dwNumServicesArgs,
        !           252:     LPSTR   *lpServiceArgVectors
        !           253:     );
        !           254: 
        !           255: #ifdef UNICODE
        !           256: #define LPSERVICE_MAIN_FUNCTION LPSERVICE_MAIN_FUNCTIONW
        !           257: #else
        !           258: #define LPSERVICE_MAIN_FUNCTION LPSERVICE_MAIN_FUNCTIONA
        !           259: #endif //UNICODE
        !           260: 
        !           261: 
        !           262: //
        !           263: // Service Start Table
        !           264: //
        !           265: 
        !           266: typedef struct _SERVICE_TABLE_ENTRYA {
        !           267:     LPSTR                       lpServiceName;
        !           268:     LPSERVICE_MAIN_FUNCTIONA    lpServiceProc;
        !           269: }SERVICE_TABLE_ENTRYA, *LPSERVICE_TABLE_ENTRYA;
        !           270: typedef struct _SERVICE_TABLE_ENTRYW {
        !           271:     LPWSTR                      lpServiceName;
        !           272:     LPSERVICE_MAIN_FUNCTIONW    lpServiceProc;
        !           273: }SERVICE_TABLE_ENTRYW, *LPSERVICE_TABLE_ENTRYW;
        !           274: #ifdef UNICODE
        !           275: #define SERVICE_TABLE_ENTRY SERVICE_TABLE_ENTRYW
        !           276: #define LPSERVICE_TABLE_ENTRY LPSERVICE_TABLE_ENTRYW
        !           277: #else
        !           278: #define SERVICE_TABLE_ENTRY SERVICE_TABLE_ENTRYA
        !           279: #define LPSERVICE_TABLE_ENTRY LPSERVICE_TABLE_ENTRYA
        !           280: #endif // UNICODE
        !           281: 
        !           282: //
        !           283: // Prototype for the Service Control Handler Function
        !           284: //
        !           285: 
        !           286: typedef VOID (*LPHANDLER_FUNCTION)(
        !           287:     DWORD    dwControl
        !           288:     );
        !           289: 
        !           290: 
        !           291: 
        !           292: ///////////////////////////////////////////////////////////////////////////
        !           293: // API Function Prototypes
        !           294: ///////////////////////////////////////////////////////////////////////////
        !           295: 
        !           296: BOOL
        !           297: WINAPI
        !           298: ChangeServiceConfigA(
        !           299:     SC_HANDLE    hService,
        !           300:     DWORD        dwServiceType,
        !           301:     DWORD        dwStartType,
        !           302:     DWORD        dwErrorControl,
        !           303:     LPCSTR     lpBinaryPathName,
        !           304:     LPCSTR     lpLoadOrderGroup,
        !           305:     LPCSTR     lpDependencies,
        !           306:     LPCSTR     lpServiceStartName,
        !           307:     LPCSTR     lpPassword
        !           308:     );
        !           309: BOOL
        !           310: WINAPI
        !           311: ChangeServiceConfigW(
        !           312:     SC_HANDLE    hService,
        !           313:     DWORD        dwServiceType,
        !           314:     DWORD        dwStartType,
        !           315:     DWORD        dwErrorControl,
        !           316:     LPCWSTR     lpBinaryPathName,
        !           317:     LPCWSTR     lpLoadOrderGroup,
        !           318:     LPCWSTR     lpDependencies,
        !           319:     LPCWSTR     lpServiceStartName,
        !           320:     LPCWSTR     lpPassword
        !           321:     );
        !           322: #ifdef UNICODE
        !           323: #define ChangeServiceConfig ChangeServiceConfigW
        !           324: #else
        !           325: #define ChangeServiceConfig ChangeServiceConfigA
        !           326: #endif // !UNICODE
        !           327: 
        !           328: BOOL
        !           329: WINAPI
        !           330: CloseServiceHandle(
        !           331:     SC_HANDLE   hSCObject
        !           332:     );
        !           333: 
        !           334: BOOL
        !           335: WINAPI
        !           336: ControlService(
        !           337:     SC_HANDLE           hService,
        !           338:     DWORD               dwControl,
        !           339:     LPSERVICE_STATUS    lpServiceStatus
        !           340:     );
        !           341: 
        !           342: SC_HANDLE
        !           343: WINAPI
        !           344: CreateServiceA(
        !           345:     SC_HANDLE    hSCManager,
        !           346:     LPCSTR     lpServiceName,
        !           347:     DWORD        dwDesiredAccess,
        !           348:     DWORD        dwServiceType,
        !           349:     DWORD        dwStartType,
        !           350:     DWORD        dwErrorControl,
        !           351:     LPCSTR     lpBinaryPathName,
        !           352:     LPCSTR     lpLoadOrderGroup,
        !           353:     LPCSTR     lpDependencies,
        !           354:     LPCSTR     lpServiceStartName,
        !           355:     LPCSTR     lpPassword
        !           356:     );
        !           357: SC_HANDLE
        !           358: WINAPI
        !           359: CreateServiceW(
        !           360:     SC_HANDLE    hSCManager,
        !           361:     LPCWSTR     lpServiceName,
        !           362:     DWORD        dwDesiredAccess,
        !           363:     DWORD        dwServiceType,
        !           364:     DWORD        dwStartType,
        !           365:     DWORD        dwErrorControl,
        !           366:     LPCWSTR     lpBinaryPathName,
        !           367:     LPCWSTR     lpLoadOrderGroup,
        !           368:     LPCWSTR     lpDependencies,
        !           369:     LPCWSTR     lpServiceStartName,
        !           370:     LPCWSTR     lpPassword
        !           371:     );
        !           372: #ifdef UNICODE
        !           373: #define CreateService CreateServiceW
        !           374: #else
        !           375: #define CreateService CreateServiceA
        !           376: #endif // !UNICODE
        !           377: 
        !           378: BOOL
        !           379: WINAPI
        !           380: DeleteService(
        !           381:     SC_HANDLE   hService
        !           382:     );
        !           383: 
        !           384: BOOL
        !           385: WINAPI
        !           386: EnumDependentServicesA(
        !           387:     SC_HANDLE               hService,
        !           388:     DWORD                   dwServiceState,
        !           389:     LPENUM_SERVICE_STATUSA  lpServices,
        !           390:     DWORD                   cbBufSize,
        !           391:     LPDWORD                 pcbBytesNeeded,
        !           392:     LPDWORD                 lpServicesReturned
        !           393:     );
        !           394: BOOL
        !           395: WINAPI
        !           396: EnumDependentServicesW(
        !           397:     SC_HANDLE               hService,
        !           398:     DWORD                   dwServiceState,
        !           399:     LPENUM_SERVICE_STATUSW  lpServices,
        !           400:     DWORD                   cbBufSize,
        !           401:     LPDWORD                 pcbBytesNeeded,
        !           402:     LPDWORD                 lpServicesReturned
        !           403:     );
        !           404: #ifdef UNICODE
        !           405: #define EnumDependentServices EnumDependentServicesW
        !           406: #else
        !           407: #define EnumDependentServices EnumDependentServicesA
        !           408: #endif // !UNICODE
        !           409: 
        !           410: BOOL
        !           411: WINAPI
        !           412: EnumServicesStatusA(
        !           413:     SC_HANDLE               hSCManager,
        !           414:     DWORD                   dwServiceType,
        !           415:     DWORD                   dwServiceState,
        !           416:     LPENUM_SERVICE_STATUSA  lpServices,
        !           417:     DWORD                   cbBufSize,
        !           418:     LPDWORD                 pcbBytesNeeded,
        !           419:     LPDWORD                 lpServicesReturned,
        !           420:     LPDWORD                 lpResumeHandle
        !           421:     );
        !           422: BOOL
        !           423: WINAPI
        !           424: EnumServicesStatusW(
        !           425:     SC_HANDLE               hSCManager,
        !           426:     DWORD                   dwServiceType,
        !           427:     DWORD                   dwServiceState,
        !           428:     LPENUM_SERVICE_STATUSW  lpServices,
        !           429:     DWORD                   cbBufSize,
        !           430:     LPDWORD                 pcbBytesNeeded,
        !           431:     LPDWORD                 lpServicesReturned,
        !           432:     LPDWORD                 lpResumeHandle
        !           433:     );
        !           434: #ifdef UNICODE
        !           435: #define EnumServicesStatus EnumServicesStatusW
        !           436: #else
        !           437: #define EnumServicesStatus EnumServicesStatusA
        !           438: #endif // !UNICODE
        !           439: 
        !           440: SC_LOCK
        !           441: WINAPI
        !           442: LockServiceDatabase(
        !           443:     SC_HANDLE   hSCManager
        !           444:     );
        !           445: 
        !           446: BOOL
        !           447: WINAPI
        !           448: NotifyBootConfigStatus(
        !           449:     BOOL     BootAcceptable
        !           450:     );
        !           451: 
        !           452: SC_HANDLE
        !           453: WINAPI
        !           454: OpenSCManagerA(
        !           455:     LPCSTR lpMachineName,
        !           456:     LPCSTR lpDatabaseName,
        !           457:     DWORD   dwDesiredAccess
        !           458:     );
        !           459: SC_HANDLE
        !           460: WINAPI
        !           461: OpenSCManagerW(
        !           462:     LPCWSTR lpMachineName,
        !           463:     LPCWSTR lpDatabaseName,
        !           464:     DWORD   dwDesiredAccess
        !           465:     );
        !           466: #ifdef UNICODE
        !           467: #define OpenSCManager OpenSCManagerW
        !           468: #else
        !           469: #define OpenSCManager OpenSCManagerA
        !           470: #endif // !UNICODE
        !           471: 
        !           472: SC_HANDLE
        !           473: WINAPI
        !           474: OpenServiceA(
        !           475:     SC_HANDLE   hSCManager,
        !           476:     LPCSTR    lpServiceName,
        !           477:     DWORD       dwDesiredAccess
        !           478:     );
        !           479: SC_HANDLE
        !           480: WINAPI
        !           481: OpenServiceW(
        !           482:     SC_HANDLE   hSCManager,
        !           483:     LPCWSTR    lpServiceName,
        !           484:     DWORD       dwDesiredAccess
        !           485:     );
        !           486: #ifdef UNICODE
        !           487: #define OpenService OpenServiceW
        !           488: #else
        !           489: #define OpenService OpenServiceA
        !           490: #endif // !UNICODE
        !           491: 
        !           492: BOOL
        !           493: WINAPI
        !           494: QueryServiceConfigA(
        !           495:     SC_HANDLE               hService,
        !           496:     LPQUERY_SERVICE_CONFIGA lpServiceConfig,
        !           497:     DWORD                   cbBufSize,
        !           498:     LPDWORD                 pcbBytesNeeded
        !           499:     );
        !           500: BOOL
        !           501: WINAPI
        !           502: QueryServiceConfigW(
        !           503:     SC_HANDLE               hService,
        !           504:     LPQUERY_SERVICE_CONFIGW lpServiceConfig,
        !           505:     DWORD                   cbBufSize,
        !           506:     LPDWORD                 pcbBytesNeeded
        !           507:     );
        !           508: #ifdef UNICODE
        !           509: #define QueryServiceConfig QueryServiceConfigW
        !           510: #else
        !           511: #define QueryServiceConfig QueryServiceConfigA
        !           512: #endif // !UNICODE
        !           513: 
        !           514: BOOL
        !           515: WINAPI
        !           516: QueryServiceLockStatusA(
        !           517:     SC_HANDLE                       hSCManager,
        !           518:     LPQUERY_SERVICE_LOCK_STATUSA    lpLockStatus,
        !           519:     DWORD                           cbBufSize,
        !           520:     LPDWORD                         pcbBytesNeeded
        !           521:     );
        !           522: BOOL
        !           523: WINAPI
        !           524: QueryServiceLockStatusW(
        !           525:     SC_HANDLE                       hSCManager,
        !           526:     LPQUERY_SERVICE_LOCK_STATUSW    lpLockStatus,
        !           527:     DWORD                           cbBufSize,
        !           528:     LPDWORD                         pcbBytesNeeded
        !           529:     );
        !           530: #ifdef UNICODE
        !           531: #define QueryServiceLockStatus QueryServiceLockStatusW
        !           532: #else
        !           533: #define QueryServiceLockStatus QueryServiceLockStatusA
        !           534: #endif // !UNICODE
        !           535: 
        !           536: BOOL
        !           537: WINAPI
        !           538: QueryServiceObjectSecurity(
        !           539:     SC_HANDLE               hService,
        !           540:     SECURITY_INFORMATION    dwSecurityInformation,
        !           541:     PSECURITY_DESCRIPTOR    lpSecurityDescriptor,
        !           542:     DWORD                   cbBufSize,
        !           543:     LPDWORD                 pcbBytesNeeded
        !           544:     );
        !           545: 
        !           546: BOOL
        !           547: WINAPI
        !           548: QueryServiceStatus(
        !           549:     SC_HANDLE           hService,
        !           550:     LPSERVICE_STATUS    lpServiceStatus
        !           551:     );
        !           552: 
        !           553: SERVICE_STATUS_HANDLE
        !           554: WINAPI
        !           555: RegisterServiceCtrlHandlerA(
        !           556:     LPCSTR             lpServiceName,
        !           557:     LPHANDLER_FUNCTION   lpHandlerProc
        !           558:     );
        !           559: SERVICE_STATUS_HANDLE
        !           560: WINAPI
        !           561: RegisterServiceCtrlHandlerW(
        !           562:     LPCWSTR             lpServiceName,
        !           563:     LPHANDLER_FUNCTION   lpHandlerProc
        !           564:     );
        !           565: #ifdef UNICODE
        !           566: #define RegisterServiceCtrlHandler RegisterServiceCtrlHandlerW
        !           567: #else
        !           568: #define RegisterServiceCtrlHandler RegisterServiceCtrlHandlerA
        !           569: #endif // !UNICODE
        !           570: 
        !           571: BOOL
        !           572: WINAPI
        !           573: SetServiceObjectSecurity(
        !           574:     SC_HANDLE               hService,
        !           575:     SECURITY_INFORMATION    dwSecurityInformation,
        !           576:     PSECURITY_DESCRIPTOR    lpSecurityDescriptor
        !           577:     );
        !           578: 
        !           579: BOOL
        !           580: WINAPI
        !           581: SetServiceStatus(
        !           582:     SERVICE_STATUS_HANDLE   hServiceStatus,
        !           583:     LPSERVICE_STATUS        lpServiceStatus
        !           584:     );
        !           585: 
        !           586: BOOL
        !           587: WINAPI
        !           588: StartServiceCtrlDispatcherA(
        !           589:     LPSERVICE_TABLE_ENTRYA    lpServiceStartTable
        !           590:     );
        !           591: BOOL
        !           592: WINAPI
        !           593: StartServiceCtrlDispatcherW(
        !           594:     LPSERVICE_TABLE_ENTRYW    lpServiceStartTable
        !           595:     );
        !           596: #ifdef UNICODE
        !           597: #define StartServiceCtrlDispatcher StartServiceCtrlDispatcherW
        !           598: #else
        !           599: #define StartServiceCtrlDispatcher StartServiceCtrlDispatcherA
        !           600: #endif // !UNICODE
        !           601: 
        !           602: 
        !           603: BOOL
        !           604: WINAPI
        !           605: StartServiceA(
        !           606:     SC_HANDLE            hService,
        !           607:     DWORD                dwNumServiceArgs,
        !           608:     LPCSTR             *lpServiceArgVectors
        !           609:     );
        !           610: BOOL
        !           611: WINAPI
        !           612: StartServiceW(
        !           613:     SC_HANDLE            hService,
        !           614:     DWORD                dwNumServiceArgs,
        !           615:     LPCWSTR             *lpServiceArgVectors
        !           616:     );
        !           617: #ifdef UNICODE
        !           618: #define StartService StartServiceW
        !           619: #else
        !           620: #define StartService StartServiceA
        !           621: #endif // !UNICODE
        !           622: 
        !           623: BOOL
        !           624: WINAPI
        !           625: UnlockServiceDatabase(
        !           626:     SC_LOCK     ScLock
        !           627:     );
        !           628: 
        !           629: 
        !           630: 
        !           631: 
        !           632: #endif // _WINSVC_

unix.superglobalmegacorp.com

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