xref: /titanic_53/usr/src/uts/common/smbsrv/winsvc.h (revision da6c28aaf62fa55f0fdb8004aa40f88f23bf53f0)
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