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

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

unix.superglobalmegacorp.com

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