xref: /onnv-gate/usr/src/uts/common/smbsrv/winsvc.h (revision 10504:ee04788f8605)
15331Samw /*
25331Samw  * CDDL HEADER START
35331Samw  *
45331Samw  * The contents of this file are subject to the terms of the
55331Samw  * Common Development and Distribution License (the "License").
65331Samw  * You may not use this file except in compliance with the License.
75331Samw  *
85331Samw  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
95331Samw  * or http://www.opensolaris.org/os/licensing.
105331Samw  * See the License for the specific language governing permissions
115331Samw  * and limitations under the License.
125331Samw  *
135331Samw  * When distributing Covered Code, include this CDDL HEADER in each
145331Samw  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
155331Samw  * If applicable, add the following below this CDDL HEADER, with the
165331Samw  * fields enclosed by brackets "[]" replaced with your own identifying
175331Samw  * information: Portions Copyright [yyyy] [name of copyright owner]
185331Samw  *
195331Samw  * CDDL HEADER END
205331Samw  */
215331Samw /*
2210001SJoyce.McIntosh@Sun.COM  * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
235331Samw  * Use is subject to license terms.
245331Samw  */
255331Samw 
265331Samw #ifndef _SMBSRV_WINSVC_H
275331Samw #define	_SMBSRV_WINSVC_H
285331Samw 
295331Samw /*
305331Samw  * NT Service Control interface definition for the Service Control
315331Samw  * Manager (SCM).
325331Samw  */
335331Samw 
345331Samw #ifdef __cplusplus
355331Samw extern "C" {
365331Samw #endif
375331Samw 
385331Samw /*
395331Samw  * Service types (Bit Mask).
405331Samw  *
415331Samw  * SERVICE_WIN32_OWN_PROCESS	The service runs in its own process.
425331Samw  * SERVICE_WIN32_SHARE_PROCESS	The service shares a process with other
435331Samw  *                              services.
445331Samw  */
455331Samw #define	SERVICE_KERNEL_DRIVER		0x00000001
465331Samw #define	SERVICE_FILE_SYSTEM_DRIVER	0x00000002
475331Samw #define	SERVICE_ADAPTER			0x00000004
485331Samw #define	SERVICE_RECOGNIZER_DRIVER	0x00000008
495331Samw #define	SERVICE_WIN32_OWN_PROCESS	0x00000010
505331Samw #define	SERVICE_WIN32_SHARE_PROCESS	0x00000020
515331Samw #define	SERVICE_INTERACTIVE_PROCESS	0x00000100
525331Samw 
535331Samw #define	SERVICE_DRIVER (SERVICE_KERNEL_DRIVER				\
545331Samw 	    | SERVICE_FILE_SYSTEM_DRIVER				\
555331Samw 	    | SERVICE_RECOGNIZER_DRIVER)
565331Samw 
575331Samw #define	SERVICE_WIN32 (SERVICE_WIN32_OWN_PROCESS			\
585331Samw 	    | SERVICE_WIN32_SHARE_PROCESS)
595331Samw 
605331Samw #define	SERVICE_TYPE_ALL (SERVICE_WIN32					\
615331Samw 	    | SERVICE_ADAPTER						\
625331Samw 	    | SERVICE_DRIVER						\
635331Samw 	    | SERVICE_INTERACTIVE_PROCESS)
645331Samw 
655331Samw /*
665331Samw  * Start type.
675331Samw  */
685331Samw #define	SERVICE_BOOT_START		0x00000000
695331Samw #define	SERVICE_SYSTEM_START		0x00000001
705331Samw #define	SERVICE_AUTO_START		0x00000002
715331Samw #define	SERVICE_DEMAND_START		0x00000003
725331Samw #define	SERVICE_DISABLED		0x00000004
735331Samw 
745331Samw /*
755331Samw  * Error control type.
765331Samw  */
775331Samw #define	SERVICE_ERROR_IGNORE		0x00000000
785331Samw #define	SERVICE_ERROR_NORMAL		0x00000001
795331Samw #define	SERVICE_ERROR_SEVERE		0x00000002
805331Samw #define	SERVICE_ERROR_CRITICAL		0x00000003
815331Samw 
825331Samw /*
835331Samw  * Value to indicate no change to an optional parameter.
845331Samw  */
855331Samw #define	SERVICE_NO_CHANGE		0xffffffff
865331Samw 
875331Samw /*
885331Samw  * Service State - for Enum Requests (Bit Mask).
895331Samw  */
905331Samw #define	SERVICE_ACTIVE			0x00000001
915331Samw #define	SERVICE_INACTIVE		0x00000002
925331Samw #define	SERVICE_STATE_ALL		(SERVICE_ACTIVE | SERVICE_INACTIVE)
935331Samw 
945331Samw /*
955331Samw  * Controls
965331Samw  */
975331Samw #define	SERVICE_CONTROL_STOP		0x00000001
985331Samw #define	SERVICE_CONTROL_PAUSE		0x00000002
995331Samw #define	SERVICE_CONTROL_CONTINUE	0x00000003
1005331Samw #define	SERVICE_CONTROL_INTERROGATE	0x00000004
1015331Samw #define	SERVICE_CONTROL_SHUTDOWN	0x00000005
1025331Samw #define	SERVICE_CONTROL_PARAMCHANGE	0x00000006
1035331Samw #define	SERVICE_CONTROL_NETBINDADD	0x00000007
1045331Samw #define	SERVICE_CONTROL_NETBINDREMOVE	0x00000008
1055331Samw #define	SERVICE_CONTROL_NETBINDENABLE	0x00000009
1065331Samw #define	SERVICE_CONTROL_NETBINDDISABLE	0x0000000A
1075331Samw 
1085331Samw /*
1095331Samw  * Service State -- for CurrentState
1105331Samw  */
1115331Samw #define	SERVICE_STOPPED			0x00000001
1125331Samw #define	SERVICE_START_PENDING		0x00000002
1135331Samw #define	SERVICE_STOP_PENDING		0x00000003
1145331Samw #define	SERVICE_RUNNING			0x00000004
1155331Samw #define	SERVICE_CONTINUE_PENDING	0x00000005
1165331Samw #define	SERVICE_PAUSE_PENDING		0x00000006
1175331Samw #define	SERVICE_PAUSED			0x00000007
1185331Samw 
1195331Samw /*
1205331Samw  * Controls Accepted  (Bit Mask)
1215331Samw  *
1225331Samw  * SERVICE_ACCEPT_NETBINDCHANGE
1235331Samw  * Windows 2000/XP: The service is a network component that
1245331Samw  * can accept changes in its binding without being stopped and restarted.
1255331Samw  * This control code allows the service to receive SERVICE_CONTROL_NETBINDADD,
1265331Samw  * SERVICE_CONTROL_NETBINDREMOVE, SERVICE_CONTROL_NETBINDENABLE, and
1275331Samw  * SERVICE_CONTROL_NETBINDDISABLE notifications.
1285331Samw  *
1295331Samw  * SERVICE_ACCEPT_PARAMCHANGE
1305331Samw  * Windows 2000/XP: The service can reread its startup parameters without
1315331Samw  * being stopped and restarted. This control code allows the service to
1325331Samw  * receive SERVICE_CONTROL_PARAMCHANGE notifications.
1335331Samw  *
1345331Samw  * SERVICE_ACCEPT_PAUSE_CONTINUE
1355331Samw  * The service can be paused and continued. This control code allows the
1365331Samw  * service to receive SERVICE_CONTROL_PAUSE and SERVICE_CONTROL_CONTINUE
1375331Samw  * notifications.
1385331Samw  *
1395331Samw  * SERVICE_ACCEPT_SHUTDOWN
1405331Samw  * The service is notified when system shutdown occurs. This control code
1415331Samw  * allows the service to receive SERVICE_CONTROL_SHUTDOWN notifications.
1425331Samw  * Note that ControlService cannot send this notification; only the system
1435331Samw  * can send it.
1445331Samw  *
1455331Samw  * SERVICE_ACCEPT_STOP
1465331Samw  * The service can be stopped. This control code allows the service to
1475331Samw  * receive SERVICE_CONTROL_STOP notifications.
1485331Samw  */
1495331Samw #define	SERVICE_ACCEPT_STOP		0x00000001
1505331Samw #define	SERVICE_ACCEPT_PAUSE_CONTINUE	0x00000002
1515331Samw #define	SERVICE_ACCEPT_SHUTDOWN		0x00000004
1525331Samw #define	SERVICE_ACCEPT_PARAMCHANGE	0x00000008
1535331Samw #define	SERVICE_ACCEPT_NETBINDCHANGE	0x00000010
1545331Samw 
1555331Samw /*
1565331Samw  * Service Control Manager object specific access types.
1575331Samw  */
1585331Samw #define	SC_MANAGER_CONNECT		0x0001
1595331Samw #define	SC_MANAGER_CREATE_SERVICE	0x0002
1605331Samw #define	SC_MANAGER_ENUMERATE_SERVICE	0x0004
1615331Samw #define	SC_MANAGER_LOCK			0x0008
1625331Samw #define	SC_MANAGER_QUERY_LOCK_STATUS	0x0010
1635331Samw #define	SC_MANAGER_MODIFY_BOOT_CONFIG	0x0020
1645331Samw 
1655331Samw #define	SC_MANAGER_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED		       \
1665331Samw 	    | SC_MANAGER_CONNECT				       \
1675331Samw 	    | SC_MANAGER_CREATE_SERVICE				       \
1685331Samw 	    | SC_MANAGER_ENUMERATE_SERVICE			       \
1695331Samw 	    | SC_MANAGER_LOCK					       \
1705331Samw 	    | SC_MANAGER_QUERY_LOCK_STATUS			       \
1715331Samw 	    | SC_MANAGER_MODIFY_BOOT_CONFIG)
1725331Samw 
1735331Samw /*
1745331Samw  * Service object specific access type.
1755331Samw  */
1765331Samw #define	SERVICE_QUERY_CONFIG		0x0001
1775331Samw #define	SERVICE_CHANGE_CONFIG		0x0002
1785331Samw #define	SERVICE_QUERY_STATUS		0x0004
1795331Samw #define	SERVICE_ENUMERATE_DEPENDENTS	0x0008
1805331Samw #define	SERVICE_START			0x0010
1815331Samw #define	SERVICE_STOP			0x0020
1825331Samw #define	SERVICE_PAUSE_CONTINUE		0x0040
1835331Samw #define	SERVICE_INTERROGATE		0x0080
1845331Samw #define	SERVICE_USER_DEFINED_CONTROL	0x0100
1855331Samw 
1865331Samw #define	SERVICE_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED		       \
1875331Samw 	    | SERVICE_QUERY_CONFIG				       \
1885331Samw 	    | SERVICE_CHANGE_CONFIG				       \
1895331Samw 	    | SERVICE_QUERY_STATUS				       \
1905331Samw 	    | SERVICE_ENUMERATE_DEPENDENTS			       \
1915331Samw 	    | SERVICE_START					       \
1925331Samw 	    | SERVICE_STOP					       \
1935331Samw 	    | SERVICE_PAUSE_CONTINUE				       \
1945331Samw 	    | SERVICE_INTERROGATE				       \
1955331Samw 	    | SERVICE_USER_DEFINED_CONTROL)
1965331Samw 
1975331Samw /*
1985331Samw  * Info levels for ChangeServiceConfig2 and QueryServiceConfig2.
1995331Samw  */
200*10504SKeyur.Desai@Sun.COM #define	SERVICE_CONFIG_DESCRIPTION		1
201*10504SKeyur.Desai@Sun.COM #define	SERVICE_CONFIG_FAILURE_ACTIONS		2
202*10504SKeyur.Desai@Sun.COM #define	SERVICE_CONFIG_DELAYED_AUTO_START_INFO	3
203*10504SKeyur.Desai@Sun.COM #define	SERVICE_CONFIG_FAILURE_ACTIONS_FLAG	4
204*10504SKeyur.Desai@Sun.COM #define	SERVICE_CONFIG_SERVICE_SID_INFO		5
205*10504SKeyur.Desai@Sun.COM #define	SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO	6
206*10504SKeyur.Desai@Sun.COM #define	SERVICE_CONFIG_PRESHUTDOWN_INFO		7
207*10504SKeyur.Desai@Sun.COM #define	SERVICE_CONFIG_TRIGGER_INFO		8
208*10504SKeyur.Desai@Sun.COM #define	SERVICE_CONFIG_PREFERRED_NODE		9
2095331Samw 
2105331Samw /*
2115331Samw  * Actions to take on service failure (SC_ACTION_TYPE).
2125331Samw  */
2135331Samw #define	SC_ACTION_NONE			0
2145331Samw #define	SC_ACTION_RESTART		1
2155331Samw #define	SC_ACTION_REBOOT		2
2165331Samw #define	SC_ACTION_RUN_COMMAND		3
2175331Samw 
21810001SJoyce.McIntosh@Sun.COM /*
21910001SJoyce.McIntosh@Sun.COM  * Information level for QueryServiceStatusEx
22010001SJoyce.McIntosh@Sun.COM  */
22110001SJoyce.McIntosh@Sun.COM #define	SC_STATUS_PROCESS_INFO		0
22210001SJoyce.McIntosh@Sun.COM 
2235331Samw #ifdef __cplusplus
2245331Samw }
2255331Samw #endif
2265331Samw 
2275331Samw #endif /* _SMBSRV_WINSVC_H */
228