1*da6c28aaSamw /* 2*da6c28aaSamw * CDDL HEADER START 3*da6c28aaSamw * 4*da6c28aaSamw * The contents of this file are subject to the terms of the 5*da6c28aaSamw * Common Development and Distribution License (the "License"). 6*da6c28aaSamw * You may not use this file except in compliance with the License. 7*da6c28aaSamw * 8*da6c28aaSamw * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*da6c28aaSamw * or http://www.opensolaris.org/os/licensing. 10*da6c28aaSamw * See the License for the specific language governing permissions 11*da6c28aaSamw * and limitations under the License. 12*da6c28aaSamw * 13*da6c28aaSamw * When distributing Covered Code, include this CDDL HEADER in each 14*da6c28aaSamw * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*da6c28aaSamw * If applicable, add the following below this CDDL HEADER, with the 16*da6c28aaSamw * fields enclosed by brackets "[]" replaced with your own identifying 17*da6c28aaSamw * information: Portions Copyright [yyyy] [name of copyright owner] 18*da6c28aaSamw * 19*da6c28aaSamw * CDDL HEADER END 20*da6c28aaSamw */ 21*da6c28aaSamw /* 22*da6c28aaSamw * Copyright 2007 Sun Microsystems, Inc. All rights reserved. 23*da6c28aaSamw * Use is subject to license terms. 24*da6c28aaSamw */ 25*da6c28aaSamw 26*da6c28aaSamw #ifndef _SMBSRV_WINSVC_H 27*da6c28aaSamw #define _SMBSRV_WINSVC_H 28*da6c28aaSamw 29*da6c28aaSamw #pragma ident "%Z%%M% %I% %E% SMI" 30*da6c28aaSamw 31*da6c28aaSamw /* 32*da6c28aaSamw * NT Service Control interface definition for the Service Control 33*da6c28aaSamw * Manager (SCM). 34*da6c28aaSamw */ 35*da6c28aaSamw 36*da6c28aaSamw #ifdef __cplusplus 37*da6c28aaSamw extern "C" { 38*da6c28aaSamw #endif 39*da6c28aaSamw 40*da6c28aaSamw /* 41*da6c28aaSamw * Service types (Bit Mask). 42*da6c28aaSamw * 43*da6c28aaSamw * SERVICE_WIN32_OWN_PROCESS The service runs in its own process. 44*da6c28aaSamw * SERVICE_WIN32_SHARE_PROCESS The service shares a process with other 45*da6c28aaSamw * services. 46*da6c28aaSamw */ 47*da6c28aaSamw #define SERVICE_KERNEL_DRIVER 0x00000001 48*da6c28aaSamw #define SERVICE_FILE_SYSTEM_DRIVER 0x00000002 49*da6c28aaSamw #define SERVICE_ADAPTER 0x00000004 50*da6c28aaSamw #define SERVICE_RECOGNIZER_DRIVER 0x00000008 51*da6c28aaSamw #define SERVICE_WIN32_OWN_PROCESS 0x00000010 52*da6c28aaSamw #define SERVICE_WIN32_SHARE_PROCESS 0x00000020 53*da6c28aaSamw #define SERVICE_INTERACTIVE_PROCESS 0x00000100 54*da6c28aaSamw 55*da6c28aaSamw #define SERVICE_DRIVER (SERVICE_KERNEL_DRIVER \ 56*da6c28aaSamw | SERVICE_FILE_SYSTEM_DRIVER \ 57*da6c28aaSamw | SERVICE_RECOGNIZER_DRIVER) 58*da6c28aaSamw 59*da6c28aaSamw #define SERVICE_WIN32 (SERVICE_WIN32_OWN_PROCESS \ 60*da6c28aaSamw | SERVICE_WIN32_SHARE_PROCESS) 61*da6c28aaSamw 62*da6c28aaSamw #define SERVICE_TYPE_ALL (SERVICE_WIN32 \ 63*da6c28aaSamw | SERVICE_ADAPTER \ 64*da6c28aaSamw | SERVICE_DRIVER \ 65*da6c28aaSamw | SERVICE_INTERACTIVE_PROCESS) 66*da6c28aaSamw 67*da6c28aaSamw /* 68*da6c28aaSamw * Start type. 69*da6c28aaSamw */ 70*da6c28aaSamw #define SERVICE_BOOT_START 0x00000000 71*da6c28aaSamw #define SERVICE_SYSTEM_START 0x00000001 72*da6c28aaSamw #define SERVICE_AUTO_START 0x00000002 73*da6c28aaSamw #define SERVICE_DEMAND_START 0x00000003 74*da6c28aaSamw #define SERVICE_DISABLED 0x00000004 75*da6c28aaSamw 76*da6c28aaSamw /* 77*da6c28aaSamw * Error control type. 78*da6c28aaSamw */ 79*da6c28aaSamw #define SERVICE_ERROR_IGNORE 0x00000000 80*da6c28aaSamw #define SERVICE_ERROR_NORMAL 0x00000001 81*da6c28aaSamw #define SERVICE_ERROR_SEVERE 0x00000002 82*da6c28aaSamw #define SERVICE_ERROR_CRITICAL 0x00000003 83*da6c28aaSamw 84*da6c28aaSamw /* 85*da6c28aaSamw * Value to indicate no change to an optional parameter. 86*da6c28aaSamw */ 87*da6c28aaSamw #define SERVICE_NO_CHANGE 0xffffffff 88*da6c28aaSamw 89*da6c28aaSamw /* 90*da6c28aaSamw * Service State - for Enum Requests (Bit Mask). 91*da6c28aaSamw */ 92*da6c28aaSamw #define SERVICE_ACTIVE 0x00000001 93*da6c28aaSamw #define SERVICE_INACTIVE 0x00000002 94*da6c28aaSamw #define SERVICE_STATE_ALL (SERVICE_ACTIVE | SERVICE_INACTIVE) 95*da6c28aaSamw 96*da6c28aaSamw /* 97*da6c28aaSamw * Controls 98*da6c28aaSamw */ 99*da6c28aaSamw #define SERVICE_CONTROL_STOP 0x00000001 100*da6c28aaSamw #define SERVICE_CONTROL_PAUSE 0x00000002 101*da6c28aaSamw #define SERVICE_CONTROL_CONTINUE 0x00000003 102*da6c28aaSamw #define SERVICE_CONTROL_INTERROGATE 0x00000004 103*da6c28aaSamw #define SERVICE_CONTROL_SHUTDOWN 0x00000005 104*da6c28aaSamw #define SERVICE_CONTROL_PARAMCHANGE 0x00000006 105*da6c28aaSamw #define SERVICE_CONTROL_NETBINDADD 0x00000007 106*da6c28aaSamw #define SERVICE_CONTROL_NETBINDREMOVE 0x00000008 107*da6c28aaSamw #define SERVICE_CONTROL_NETBINDENABLE 0x00000009 108*da6c28aaSamw #define SERVICE_CONTROL_NETBINDDISABLE 0x0000000A 109*da6c28aaSamw 110*da6c28aaSamw /* 111*da6c28aaSamw * Service State -- for CurrentState 112*da6c28aaSamw */ 113*da6c28aaSamw #define SERVICE_STOPPED 0x00000001 114*da6c28aaSamw #define SERVICE_START_PENDING 0x00000002 115*da6c28aaSamw #define SERVICE_STOP_PENDING 0x00000003 116*da6c28aaSamw #define SERVICE_RUNNING 0x00000004 117*da6c28aaSamw #define SERVICE_CONTINUE_PENDING 0x00000005 118*da6c28aaSamw #define SERVICE_PAUSE_PENDING 0x00000006 119*da6c28aaSamw #define SERVICE_PAUSED 0x00000007 120*da6c28aaSamw 121*da6c28aaSamw /* 122*da6c28aaSamw * Controls Accepted (Bit Mask) 123*da6c28aaSamw * 124*da6c28aaSamw * SERVICE_ACCEPT_NETBINDCHANGE 125*da6c28aaSamw * Windows 2000/XP: The service is a network component that 126*da6c28aaSamw * can accept changes in its binding without being stopped and restarted. 127*da6c28aaSamw * This control code allows the service to receive SERVICE_CONTROL_NETBINDADD, 128*da6c28aaSamw * SERVICE_CONTROL_NETBINDREMOVE, SERVICE_CONTROL_NETBINDENABLE, and 129*da6c28aaSamw * SERVICE_CONTROL_NETBINDDISABLE notifications. 130*da6c28aaSamw * 131*da6c28aaSamw * SERVICE_ACCEPT_PARAMCHANGE 132*da6c28aaSamw * Windows 2000/XP: The service can reread its startup parameters without 133*da6c28aaSamw * being stopped and restarted. This control code allows the service to 134*da6c28aaSamw * receive SERVICE_CONTROL_PARAMCHANGE notifications. 135*da6c28aaSamw * 136*da6c28aaSamw * SERVICE_ACCEPT_PAUSE_CONTINUE 137*da6c28aaSamw * The service can be paused and continued. This control code allows the 138*da6c28aaSamw * service to receive SERVICE_CONTROL_PAUSE and SERVICE_CONTROL_CONTINUE 139*da6c28aaSamw * notifications. 140*da6c28aaSamw * 141*da6c28aaSamw * SERVICE_ACCEPT_SHUTDOWN 142*da6c28aaSamw * The service is notified when system shutdown occurs. This control code 143*da6c28aaSamw * allows the service to receive SERVICE_CONTROL_SHUTDOWN notifications. 144*da6c28aaSamw * Note that ControlService cannot send this notification; only the system 145*da6c28aaSamw * can send it. 146*da6c28aaSamw * 147*da6c28aaSamw * SERVICE_ACCEPT_STOP 148*da6c28aaSamw * The service can be stopped. This control code allows the service to 149*da6c28aaSamw * receive SERVICE_CONTROL_STOP notifications. 150*da6c28aaSamw */ 151*da6c28aaSamw #define SERVICE_ACCEPT_STOP 0x00000001 152*da6c28aaSamw #define SERVICE_ACCEPT_PAUSE_CONTINUE 0x00000002 153*da6c28aaSamw #define SERVICE_ACCEPT_SHUTDOWN 0x00000004 154*da6c28aaSamw #define SERVICE_ACCEPT_PARAMCHANGE 0x00000008 155*da6c28aaSamw #define SERVICE_ACCEPT_NETBINDCHANGE 0x00000010 156*da6c28aaSamw 157*da6c28aaSamw /* 158*da6c28aaSamw * Service Control Manager object specific access types. 159*da6c28aaSamw */ 160*da6c28aaSamw #define SC_MANAGER_CONNECT 0x0001 161*da6c28aaSamw #define SC_MANAGER_CREATE_SERVICE 0x0002 162*da6c28aaSamw #define SC_MANAGER_ENUMERATE_SERVICE 0x0004 163*da6c28aaSamw #define SC_MANAGER_LOCK 0x0008 164*da6c28aaSamw #define SC_MANAGER_QUERY_LOCK_STATUS 0x0010 165*da6c28aaSamw #define SC_MANAGER_MODIFY_BOOT_CONFIG 0x0020 166*da6c28aaSamw 167*da6c28aaSamw #define SC_MANAGER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED \ 168*da6c28aaSamw | SC_MANAGER_CONNECT \ 169*da6c28aaSamw | SC_MANAGER_CREATE_SERVICE \ 170*da6c28aaSamw | SC_MANAGER_ENUMERATE_SERVICE \ 171*da6c28aaSamw | SC_MANAGER_LOCK \ 172*da6c28aaSamw | SC_MANAGER_QUERY_LOCK_STATUS \ 173*da6c28aaSamw | SC_MANAGER_MODIFY_BOOT_CONFIG) 174*da6c28aaSamw 175*da6c28aaSamw /* 176*da6c28aaSamw * Service object specific access type. 177*da6c28aaSamw */ 178*da6c28aaSamw #define SERVICE_QUERY_CONFIG 0x0001 179*da6c28aaSamw #define SERVICE_CHANGE_CONFIG 0x0002 180*da6c28aaSamw #define SERVICE_QUERY_STATUS 0x0004 181*da6c28aaSamw #define SERVICE_ENUMERATE_DEPENDENTS 0x0008 182*da6c28aaSamw #define SERVICE_START 0x0010 183*da6c28aaSamw #define SERVICE_STOP 0x0020 184*da6c28aaSamw #define SERVICE_PAUSE_CONTINUE 0x0040 185*da6c28aaSamw #define SERVICE_INTERROGATE 0x0080 186*da6c28aaSamw #define SERVICE_USER_DEFINED_CONTROL 0x0100 187*da6c28aaSamw 188*da6c28aaSamw #define SERVICE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED \ 189*da6c28aaSamw | SERVICE_QUERY_CONFIG \ 190*da6c28aaSamw | SERVICE_CHANGE_CONFIG \ 191*da6c28aaSamw | SERVICE_QUERY_STATUS \ 192*da6c28aaSamw | SERVICE_ENUMERATE_DEPENDENTS \ 193*da6c28aaSamw | SERVICE_START \ 194*da6c28aaSamw | SERVICE_STOP \ 195*da6c28aaSamw | SERVICE_PAUSE_CONTINUE \ 196*da6c28aaSamw | SERVICE_INTERROGATE \ 197*da6c28aaSamw | SERVICE_USER_DEFINED_CONTROL) 198*da6c28aaSamw 199*da6c28aaSamw /* 200*da6c28aaSamw * Info levels for ChangeServiceConfig2 and QueryServiceConfig2. 201*da6c28aaSamw */ 202*da6c28aaSamw #define SERVICE_CONFIG_DESCRIPTION 1 203*da6c28aaSamw #define SERVICE_CONFIG_FAILURE_ACTIONS 2 204*da6c28aaSamw 205*da6c28aaSamw /* 206*da6c28aaSamw * Actions to take on service failure (SC_ACTION_TYPE). 207*da6c28aaSamw */ 208*da6c28aaSamw #define SC_ACTION_NONE 0 209*da6c28aaSamw #define SC_ACTION_RESTART 1 210*da6c28aaSamw #define SC_ACTION_REBOOT 2 211*da6c28aaSamw #define SC_ACTION_RUN_COMMAND 3 212*da6c28aaSamw 213*da6c28aaSamw #ifdef __cplusplus 214*da6c28aaSamw } 215*da6c28aaSamw #endif 216*da6c28aaSamw 217*da6c28aaSamw #endif /* _SMBSRV_WINSVC_H */ 218