1da6c28aaSamw/*
2da6c28aaSamw * CDDL HEADER START
3da6c28aaSamw *
4da6c28aaSamw * The contents of this file are subject to the terms of the
5da6c28aaSamw * Common Development and Distribution License (the "License").
6da6c28aaSamw * You may not use this file except in compliance with the License.
7da6c28aaSamw *
8da6c28aaSamw * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9da6c28aaSamw * or http://www.opensolaris.org/os/licensing.
10da6c28aaSamw * See the License for the specific language governing permissions
11da6c28aaSamw * and limitations under the License.
12da6c28aaSamw *
13da6c28aaSamw * When distributing Covered Code, include this CDDL HEADER in each
14da6c28aaSamw * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15da6c28aaSamw * If applicable, add the following below this CDDL HEADER, with the
16da6c28aaSamw * fields enclosed by brackets "[]" replaced with your own identifying
17da6c28aaSamw * information: Portions Copyright [yyyy] [name of copyright owner]
18da6c28aaSamw *
19da6c28aaSamw * CDDL HEADER END
20da6c28aaSamw */
21da6c28aaSamw/*
22037cac00Sjoyce mcintosh * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
23da6c28aaSamw * Use is subject to license terms.
24*3299f39fSGordon Ross *
25*3299f39fSGordon Ross * Copyright 2013 Nexenta Systems, Inc.  All rights reserved.
26da6c28aaSamw */
27da6c28aaSamw
28da6c28aaSamw#ifndef _MLSVC_SVCCTL_NDL_
29da6c28aaSamw#define _MLSVC_SVCCTL_NDL_
30da6c28aaSamw
31da6c28aaSamw/*
32da6c28aaSamw * NT Service Control Services (SVCCTL) RPC interface definition.
33da6c28aaSamw * This interface provides remote access to add, remove, start and
34da6c28aaSamw * stop services.
35da6c28aaSamw */
36da6c28aaSamw
37*3299f39fSGordon Ross#include <libmlrpc/ndrtypes.ndl>
38da6c28aaSamw
393db3f65cSamw/* Windows NT */
40da6c28aaSamw#define SVCCTL_OPNUM_Close			0x00
413db3f65cSamw#define	SVCCTL_OPNUM_ControlService		0x01
423db3f65cSamw#define	SVCCTL_OPNUM_DeleteService		0x02
433db3f65cSamw#define	SVCCTL_OPNUM_LockServiceDatabase	0x03
443db3f65cSamw#define	SVCCTL_OPNUM_QueryServiceSecurity	0x04
453db3f65cSamw#define	SVCCTL_OPNUM_SetServiceSecurity		0x05
46da6c28aaSamw#define SVCCTL_OPNUM_QueryServiceStatus		0x06
473db3f65cSamw#define	SVCCTL_OPNUM_SetServiceStatus		0x07
483db3f65cSamw#define	SVCCTL_OPNUM_UnlockServiceDatabase	0x08
493db3f65cSamw#define	SVCCTL_OPNUM_NotifyBootConfigStatus	0x09
503db3f65cSamw#define	SVCCTL_OPNUM_SetServiceBits		0x0a
513db3f65cSamw#define	SVCCTL_OPNUM_ChangeServiceConfig	0x0b
523db3f65cSamw#define	SVCCTL_OPNUM_CreateService		0x0c
533db3f65cSamw#define	SVCCTL_OPNUM_EnumDependentServices	0x0d
54da6c28aaSamw#define SVCCTL_OPNUM_EnumServicesStatus		0x0E
55da6c28aaSamw#define SVCCTL_OPNUM_OpenManager		0x0F
56da6c28aaSamw#define SVCCTL_OPNUM_OpenService		0x10
57da6c28aaSamw#define SVCCTL_OPNUM_QueryServiceConfig		0x11
583db3f65cSamw#define	SVCCTL_OPNUM_QueryServiceLockStatus	0x12
593db3f65cSamw#define	SVCCTL_OPNUM_StartService		0x13
603db3f65cSamw#define	SVCCTL_OPNUM_GetServiceDisplayNameW	0x14
613db3f65cSamw#define	SVCCTL_OPNUM_GetServiceKeyNameW		0x15
623db3f65cSamw#define	SVCCTL_OPNUM_SetServiceBitsA		0x16
633db3f65cSamw#define	SVCCTL_OPNUM_ChangeServiceConfigA	0x17
643db3f65cSamw#define	SVCCTL_OPNUM_CreateServiceA		0x18
653db3f65cSamw#define	SVCCTL_OPNUM_EnumDependentServicesA	0x19
66037cac00Sjoyce mcintosh#define	SVCCTL_OPNUM_EnumServicesStatusA	0x1a
673db3f65cSamw#define	SVCCTL_OPNUM_OpenSCManagerA		0x1b
683db3f65cSamw#define	SVCCTL_OPNUM_OpenServiceA		0x1c
693db3f65cSamw#define	SVCCTL_OPNUM_QueryServiceConfigA	0x1d
703db3f65cSamw#define	SVCCTL_OPNUM_QueryServiceLockStatusA	0x1e
713db3f65cSamw#define	SVCCTL_OPNUM_StartServiceA		0x1f
723db3f65cSamw#define	SVCCTL_OPNUM_GetServiceDisplayNameA	0x20
733db3f65cSamw#define	SVCCTL_OPNUM_GetServiceKeyNameA		0x21
743db3f65cSamw#define	SVCCTL_OPNUM_GetCurrentGroupStateW	0x22
753db3f65cSamw#define	SVCCTL_OPNUM_EnumServiceGroupW		0x23
763db3f65cSamw#define	SVCCTL_OPNUM_ChangeServiceConfig2A	0x24
773db3f65cSamw#define	SVCCTL_OPNUM_ChangeServiceConfig2W	0x25
783db3f65cSamw#define	SVCCTL_OPNUM_QueryServiceConfig2A	0x26
793db3f65cSamw
803db3f65cSamw/* Windows 2000 */
813db3f65cSamw#define	SVCCTL_OPNUM_QueryServiceConfig2W	0x27
823db3f65cSamw#define	SVCCTL_OPNUM_QueryServiceStatusEx	0x28
83037cac00Sjoyce mcintosh#define	SVCCTL_OPNUM_EnumServicesStatusExA	0x29
84037cac00Sjoyce mcintosh#define	SVCCTL_OPNUM_EnumServicesStatusExW	0x2a
853db3f65cSamw
863db3f65cSamw/* Windows XP and Windows Server 2003 */
873db3f65cSamw#define	SVCCTL_OPNUM_SendTSMessage		0x2b
883db3f65cSamw
893db3f65cSamw/* Windows Vista */
903db3f65cSamw#define	SVCCTL_OPNUM_CreateServiceWOW64A	0x2c
913db3f65cSamw#define	SVCCTL_OPNUM_CreateServiceWOW64W	0x2d
923db3f65cSamw#define	SVCCTL_OPNUM_QueryServiceTagInfo	0x2e
933db3f65cSamw#define	SVCCTL_OPNUM_NotifyServiceStatusChange	0x2f
943db3f65cSamw#define	SVCCTL_OPNUM_GetNotifyResult		0x30
953db3f65cSamw#define	SVCCTL_OPNUM_CloseNotifyHandle		0x31
963db3f65cSamw#define	SVCCTL_OPNUM_ControlServiceExA		0x32
973db3f65cSamw#define	SVCCTL_OPNUM_ControlServiceExW		0x33
983db3f65cSamw#define	SVCCTL_OPNUM_SendPnPMessage		0x34
993db3f65cSamw#define	SVCCTL_OPNUM_ValidatePnPService		0x35
1003db3f65cSamw#define	SVCCTL_OPNUM_OpenServiceStatusHandle	0x36
101da6c28aaSamw
1028d7e4166Sjose borregoCONTEXT_HANDLE(svcctl_handle) svcctl_handle_t;
103da6c28aaSamw
104037cac00Sjoyce mcintosh/*
105037cac00Sjoyce mcintosh * String definition for the ASCII interface.
106037cac00Sjoyce mcintosh */
107037cac00Sjoyce mcintoshstruct svcctl_value {
108037cac00Sjoyce mcintosh	DWORD	vc_first_is;	/* 0 */
109037cac00Sjoyce mcintosh	DWORD	vc_length_is;
110037cac00Sjoyce mcintosh    SIZE_IS(vc_length_is)
111037cac00Sjoyce mcintosh	BYTE	value[ANY_SIZE_ARRAY];
112037cac00Sjoyce mcintosh};
113037cac00Sjoyce mcintosh
114da6c28aaSamw/*
115da6c28aaSamw * The svc_status (SERVICE_STATUS) structure contains information about a
116da6c28aaSamw * service. The ControlService, EnumDependentServices, EnumServicesStatus,
117da6c28aaSamw * and QueryServiceStatus functions use this structure to return information
118da6c28aaSamw * about a service. A service uses this structure in the SetServiceStatus
119da6c28aaSamw * function to report its current status to the service control manager.
120da6c28aaSamw *
121da6c28aaSamw * service_type
122da6c28aaSamw *	The type of service. This member can be one of the following values.
123da6c28aaSamw *
124da6c28aaSamw *      SERVICE_FILE_SYSTEM_DRIVER
125da6c28aaSamw *      SERVICE_KERNEL_DRIVER
126da6c28aaSamw *      SERVICE_WIN32_OWN_PROCESS
127da6c28aaSamw *      SERVICE_WIN32_SHARE_PROCESS
128da6c28aaSamw *
129da6c28aaSamw * If the service type is either SERVICE_WIN32_OWN_PROCESS or
130da6c28aaSamw * SERVICE_WIN32_SHARE_PROCESS, and the service is running in
131da6c28aaSamw * the context of the LocalSystem account, the following type
132da6c28aaSamw * may also be specified to indicate that the service can
133da6c28aaSamw * interact with the desktop.
134da6c28aaSamw *
135da6c28aaSamw *      SERVICE_INTERACTIVE_PROCESS
136da6c28aaSamw *
137da6c28aaSamw * cur_state
138da6c28aaSamw *	The current state of the service. This member can be one of the
139da6c28aaSamw *	following values.
140da6c28aaSamw *
141da6c28aaSamw *      SERVICE_CONTINUE_PENDING
142da6c28aaSamw *      SERVICE_PAUSE_PENDING
143da6c28aaSamw *      SERVICE_PAUSED
144da6c28aaSamw *      SERVICE_RUNNING
145da6c28aaSamw *      SERVICE_START_PENDING
146da6c28aaSamw *      SERVICE_STOP_PENDING
147da6c28aaSamw *      SERVICE_STOPPED
148da6c28aaSamw *
149da6c28aaSamw * ctrl_accepted
150da6c28aaSamw *	The control codes that the service will accept and process in its
151da6c28aaSamw *	handler function (see Handler and HandlerEx). A user interface
152da6c28aaSamw *	process can control a service by specifying a control command in
153da6c28aaSamw *	the ControlService function. By default, all services accept the
154da6c28aaSamw *	SERVICE_CONTROL_INTERROGATE value. The following are the control
155da6c28aaSamw *	codes.
156da6c28aaSamw *
157da6c28aaSamw *      SERVICE_ACCEPT_STOP
158da6c28aaSamw *      SERVICE_ACCEPT_PAUSE_CONTINUE
159da6c28aaSamw *      SERVICE_ACCEPT_SHUTDOWN
160da6c28aaSamw *      SERVICE_ACCEPT_PARAMCHANGE
161da6c28aaSamw *      SERVICE_ACCEPT_NETBINDCHANGE
162da6c28aaSamw *
163da6c28aaSamw * w32_exitcode
164da6c28aaSamw *  An error code that the service uses to report an error that occurs when
165da6c28aaSamw *  it is starting or stopping. To return an error code specific to the
166da6c28aaSamw *  service, the service must set this value to ERROR_SERVICE_SPECIFIC_ERROR
167da6c28aaSamw *  to indicate that the dwServiceSpecificExitCode member contains the error
168da6c28aaSamw *  code. The service should set this value to NO_ERROR when it is running
169da6c28aaSamw *  and on normal termination.
170da6c28aaSamw *
171da6c28aaSamw * svc_specified_exitcode
172da6c28aaSamw *  A service-specific error code that the service returns when an error
173da6c28aaSamw *  occurs while the service is starting or stopping. This value is ignored
174da6c28aaSamw *  unless the w32_exitcode member is set to ERROR_SERVICE_SPECIFIC_ERROR.
175da6c28aaSamw *
176da6c28aaSamw * check_point
177da6c28aaSamw *  A value that the service increments periodically to report its progress
178da6c28aaSamw *  during a lengthy start, stop, pause, or continue operation. For example,
179da6c28aaSamw *  the service should increment this value as it completes each step of its
180da6c28aaSamw *  initialization when it is starting up. The user interface program that
181da6c28aaSamw *  invoked the operation on the service uses this value to track the progress
182da6c28aaSamw *  of the service during a lengthy operation. This value is not valid and
183da6c28aaSamw *  should be zero when the service does not have a start, stop, pause, or
184da6c28aaSamw *  continue operation pending.
185da6c28aaSamw *
186da6c28aaSamw * wait_hint
187da6c28aaSamw *  An estimate of the amount of time, in milliseconds, that the service
188da6c28aaSamw *  expects a pending start, stop, pause, or continue operation to take
189da6c28aaSamw *  before the service makes its next call to the SetServiceStatus
190da6c28aaSamw *  function with either an incremented check_point value or a change in
191da6c28aaSamw *  dwCurrentState. If the amount of time specified by wait_hint passes,
192da6c28aaSamw *  and check_point has not been incremented, or cur_state has not changed,
193da6c28aaSamw *  the service control manager or service control program can assume that
194da6c28aaSamw *  an error has occurred and the service should be stopped.
195da6c28aaSamw */
196da6c28aaSamwstruct svc_status {
197da6c28aaSamw	DWORD service_type;
198da6c28aaSamw	DWORD cur_state;
199da6c28aaSamw	DWORD ctrl_accepted;
200da6c28aaSamw	DWORD w32_exitcode;
201da6c28aaSamw	DWORD svc_specified_exitcode;
202da6c28aaSamw	DWORD check_point;
203da6c28aaSamw	DWORD wait_hint;
204da6c28aaSamw};
205da6c28aaSamwtypedef struct svc_status svc_status_t;
206da6c28aaSamw
207da6c28aaSamwstruct svc_enum_status {
208da6c28aaSamw	DWORD svc_name;		/* offset within response buffer */
209da6c28aaSamw	DWORD display_name;	/* offset within response buffer */
210da6c28aaSamw	svc_status_t svc_status;
211da6c28aaSamw};
212da6c28aaSamwtypedef struct svc_enum_status svc_enum_status_t;
213da6c28aaSamw
214da6c28aaSamwstruct svc_config {
215da6c28aaSamw	DWORD  service_type;
216da6c28aaSamw	DWORD  start_type;
217da6c28aaSamw	DWORD  error_control;
218da6c28aaSamw	LPTSTR binary_pathname;
219da6c28aaSamw	LPTSTR loadorder_group;
220da6c28aaSamw	DWORD  tag_id;
221da6c28aaSamw	LPTSTR dependencies;
222da6c28aaSamw	LPTSTR service_startname;
223da6c28aaSamw	LPTSTR display_name;
224da6c28aaSamw};
225da6c28aaSamwtypedef struct svc_config svc_config_t;
226da6c28aaSamw
227b89a8333Snatalie li - Sun Microsystems - Irvine United Statesstruct svc_failure_actions {
228b89a8333Snatalie li - Sun Microsystems - Irvine United States	DWORD reset_period;
229b89a8333Snatalie li - Sun Microsystems - Irvine United States	DWORD rebootmsg_offset;
230b89a8333Snatalie li - Sun Microsystems - Irvine United States	DWORD command_offset;
231b89a8333Snatalie li - Sun Microsystems - Irvine United States	DWORD actions;
232b89a8333Snatalie li - Sun Microsystems - Irvine United States	DWORD actions_offset;
233b89a8333Snatalie li - Sun Microsystems - Irvine United States};
234b89a8333Snatalie li - Sun Microsystems - Irvine United Statestypedef struct svc_failure_actions svc_failure_actions_t;
235b89a8333Snatalie li - Sun Microsystems - Irvine United States
236b89a8333Snatalie li - Sun Microsystems - Irvine United Statesstruct svc_description {
237b89a8333Snatalie li - Sun Microsystems - Irvine United States	DWORD desc;		/* offset of description string */
238b89a8333Snatalie li - Sun Microsystems - Irvine United States};
239b89a8333Snatalie li - Sun Microsystems - Irvine United Statestypedef struct svc_description svc_description_t;
240da6c28aaSamw
241e3f2c991SKeyur Desai/* Boolean flag to control delayed start of service. Set 1=true, 0=false */
242e3f2c991SKeyur Desaistruct svc_delayed_auto_start {
243e3f2c991SKeyur Desai	DWORD dstart;
244e3f2c991SKeyur Desai};
245e3f2c991SKeyur Desaitypedef struct svc_delayed_auto_start svc_delayed_auto_start_t;
246e3f2c991SKeyur Desai
247e3f2c991SKeyur Desai/* Boolean flag to control configured failure action. Set 1=true, 0=false */
248e3f2c991SKeyur Desaistruct svc_config_failure_action {
249e3f2c991SKeyur Desai	DWORD cfa;
250e3f2c991SKeyur Desai};
251e3f2c991SKeyur Desaitypedef struct svc_config_failure_action svc_config_failure_action_t;
252e3f2c991SKeyur Desai
253da6c28aaSamw/*
254da6c28aaSamw ***********************************************************************
255da6c28aaSamw * Close
256da6c28aaSamw ***********************************************************************
257da6c28aaSamw */
258da6c28aaSamwOPERATION(SVCCTL_OPNUM_Close)
259da6c28aaSamwstruct svcctl_Close {
260da6c28aaSamw	IN		svcctl_handle_t handle;
261da6c28aaSamw	OUT		svcctl_handle_t result_handle;
262da6c28aaSamw	OUT		DWORD status;
263da6c28aaSamw};
264da6c28aaSamw
265037cac00Sjoyce mcintosh/*
266037cac00Sjoyce mcintosh ***********************************************************************
267037cac00Sjoyce mcintosh * ControlService
268037cac00Sjoyce mcintosh ***********************************************************************
269037cac00Sjoyce mcintosh */
270037cac00Sjoyce mcintoshOPERATION(SVCCTL_OPNUM_ControlService)
271037cac00Sjoyce mcintoshstruct svcctl_ControlService {
272037cac00Sjoyce mcintosh	IN		svcctl_handle_t service_handle;
273037cac00Sjoyce mcintosh	IN		DWORD control;
274037cac00Sjoyce mcintosh	OUT		svc_status_t service_status;
275037cac00Sjoyce mcintosh	OUT		DWORD status;
276037cac00Sjoyce mcintosh};
277037cac00Sjoyce mcintosh
278037cac00Sjoyce mcintosh/*
279037cac00Sjoyce mcintosh ***********************************************************************
280037cac00Sjoyce mcintosh * DeleteService
281037cac00Sjoyce mcintosh ***********************************************************************
282037cac00Sjoyce mcintosh */
283037cac00Sjoyce mcintoshOPERATION(SVCCTL_OPNUM_DeleteService)
284037cac00Sjoyce mcintoshstruct svcctl_DeleteService {
285037cac00Sjoyce mcintosh	IN		svcctl_handle_t service_handle;
286037cac00Sjoyce mcintosh	OUT		DWORD status;
287037cac00Sjoyce mcintosh};
288037cac00Sjoyce mcintosh
289037cac00Sjoyce mcintosh/*
290037cac00Sjoyce mcintosh ***********************************************************************
291037cac00Sjoyce mcintosh * QueryServiceSecurity
292037cac00Sjoyce mcintosh ***********************************************************************
293037cac00Sjoyce mcintosh */
294037cac00Sjoyce mcintoshOPERATION(SVCCTL_OPNUM_QueryServiceSecurity)
295037cac00Sjoyce mcintoshstruct svcctl_QueryServiceSecurity {
296037cac00Sjoyce mcintosh	IN		svcctl_handle_t service_handle;
297037cac00Sjoyce mcintosh	IN		DWORD security_info;
298037cac00Sjoyce mcintosh	IN		DWORD buf_size;
299037cac00Sjoyce mcintosh    SIZE_IS(buf_size)
300037cac00Sjoyce mcintosh	OUT REFERENCE	LPBYTE buffer;
301037cac00Sjoyce mcintosh	OUT		DWORD bytes_needed;
302037cac00Sjoyce mcintosh	OUT		DWORD status;
303037cac00Sjoyce mcintosh};
304037cac00Sjoyce mcintosh
305037cac00Sjoyce mcintosh/*
306037cac00Sjoyce mcintosh ***********************************************************************
307037cac00Sjoyce mcintosh * SetServiceSecurity
308037cac00Sjoyce mcintosh ***********************************************************************
309037cac00Sjoyce mcintosh */
310037cac00Sjoyce mcintoshOPERATION(SVCCTL_OPNUM_SetServiceSecurity)
311037cac00Sjoyce mcintoshstruct svcctl_SetServiceSecurity {
312037cac00Sjoyce mcintosh	IN		svcctl_handle_t service_handle;
313037cac00Sjoyce mcintosh	IN		DWORD security_info;
314037cac00Sjoyce mcintosh    SIZE_IS(buf_size)
315037cac00Sjoyce mcintosh	IN REFERENCE	LPBYTE buffer;
316037cac00Sjoyce mcintosh	IN		DWORD buf_size;
317037cac00Sjoyce mcintosh	OUT		DWORD status;
318037cac00Sjoyce mcintosh};
319da6c28aaSamw
320da6c28aaSamw/*
321da6c28aaSamw ***********************************************************************
322da6c28aaSamw * OpenManager
323da6c28aaSamw ***********************************************************************
324da6c28aaSamw */
325da6c28aaSamwOPERATION(SVCCTL_OPNUM_OpenManager)
326da6c28aaSamwstruct svcctl_OpenManager {
327da6c28aaSamw	IN		LPTSTR machine_name;
328da6c28aaSamw	IN		LPTSTR database_name;
329da6c28aaSamw	IN		DWORD desired_access;
330da6c28aaSamw	OUT		svcctl_handle_t handle;
331da6c28aaSamw	OUT		DWORD status;
332da6c28aaSamw};
333da6c28aaSamw
334da6c28aaSamw
335da6c28aaSamw/*
336da6c28aaSamw ***********************************************************************
337da6c28aaSamw * OpenService
338da6c28aaSamw ***********************************************************************
339da6c28aaSamw */
340da6c28aaSamwOPERATION(SVCCTL_OPNUM_OpenService)
341da6c28aaSamwstruct svcctl_OpenService {
342da6c28aaSamw	IN		svcctl_handle_t manager_handle;
343da6c28aaSamw	IN REFERENCE	LPTSTR service_name;
344da6c28aaSamw	IN		DWORD desired_access;
345da6c28aaSamw	OUT		svcctl_handle_t service_handle;
346da6c28aaSamw	OUT		DWORD status;
347da6c28aaSamw};
348da6c28aaSamw
349da6c28aaSamw
350da6c28aaSamw/*
351da6c28aaSamw ***********************************************************************
352da6c28aaSamw * QueryServiceStatus
353da6c28aaSamw ***********************************************************************
354da6c28aaSamw */
355da6c28aaSamwOPERATION(SVCCTL_OPNUM_QueryServiceStatus)
356da6c28aaSamwstruct svcctl_QueryServiceStatus {
357da6c28aaSamw	IN		svcctl_handle_t service_handle;
358da6c28aaSamw	OUT		svc_status_t service_status;
359da6c28aaSamw	OUT		DWORD status;
360da6c28aaSamw};
361da6c28aaSamw
362037cac00Sjoyce mcintosh/*
363037cac00Sjoyce mcintosh ***********************************************************************
364037cac00Sjoyce mcintosh * EnumDependentServices
365037cac00Sjoyce mcintosh ***********************************************************************
366037cac00Sjoyce mcintosh */
367037cac00Sjoyce mcintoshOPERATION(SVCCTL_OPNUM_EnumDependentServices)
368037cac00Sjoyce mcintoshstruct svcctl_EnumDependentServices {
369037cac00Sjoyce mcintosh	IN		svcctl_handle_t service_handle;
370037cac00Sjoyce mcintosh	IN		DWORD svc_state;
371037cac00Sjoyce mcintosh	IN		DWORD buf_size;
372037cac00Sjoyce mcintosh    SIZE_IS(buf_size)
373037cac00Sjoyce mcintosh	OUT REFERENCE	LPBYTE services;
374037cac00Sjoyce mcintosh	OUT		DWORD bytes_needed;
375037cac00Sjoyce mcintosh	OUT		DWORD svc_num;
376037cac00Sjoyce mcintosh	OUT		DWORD status;
377037cac00Sjoyce mcintosh};
378037cac00Sjoyce mcintosh
379da6c28aaSamw/*
380da6c28aaSamw ***********************************************************************
381da6c28aaSamw * EnumServicesStatus
382da6c28aaSamw ***********************************************************************
383da6c28aaSamw */
384da6c28aaSamwOPERATION(SVCCTL_OPNUM_EnumServicesStatus)
385da6c28aaSamwstruct svcctl_EnumServicesStatus {
386da6c28aaSamw	IN		svcctl_handle_t manager_handle;
387da6c28aaSamw	IN		DWORD svc_type;
388da6c28aaSamw	IN		DWORD svc_state;
389b89a8333Snatalie li - Sun Microsystems - Irvine United States	IN		DWORD buf_size;
390b89a8333Snatalie li - Sun Microsystems - Irvine United States    SIZE_IS(buf_size)
391b89a8333Snatalie li - Sun Microsystems - Irvine United States	OUT REFERENCE	LPBYTE services;
392da6c28aaSamw	OUT		DWORD bytes_needed;
393da6c28aaSamw	OUT		DWORD svc_num;
394b89a8333Snatalie li - Sun Microsystems - Irvine United States	INOUT		DWORD *resume_handle;
395da6c28aaSamw	OUT		DWORD status;
396da6c28aaSamw};
397da6c28aaSamw
398da6c28aaSamw/*
399da6c28aaSamw ***********************************************************************
400da6c28aaSamw * QueryServiceConfig
401da6c28aaSamw ***********************************************************************
402da6c28aaSamw */
403da6c28aaSamwOPERATION(SVCCTL_OPNUM_QueryServiceConfig)
404da6c28aaSamwstruct svcctl_QueryServiceConfig {
405da6c28aaSamw	IN		svcctl_handle_t service_handle;
406da6c28aaSamw	IN		DWORD buf_size;
407da6c28aaSamw	OUT		svc_config_t service_cfg;
408da6c28aaSamw	OUT		DWORD cfg_bytes;
409da6c28aaSamw	OUT		DWORD status;
410da6c28aaSamw};
411da6c28aaSamw
412037cac00Sjoyce mcintosh/*
413037cac00Sjoyce mcintosh ***********************************************************************
414037cac00Sjoyce mcintosh * StartService
415037cac00Sjoyce mcintosh *
416037cac00Sjoyce mcintosh * argc:	The number of strings in argv.  If argv is NULL,
417037cac00Sjoyce mcintosh *		argc may be 0.
418037cac00Sjoyce mcintosh * argv:	A pointer to a buffer containing an array of
419037cac00Sjoyce mcintosh *		null-terminated Unicode strings.
420037cac00Sjoyce mcintosh *
421037cac00Sjoyce mcintosh * For service management support, this should probably be:
422037cac00Sjoyce mcintosh *	IN		DWORD argc;
423037cac00Sjoyce mcintosh *    SIZE_IS(buf_size)
424037cac00Sjoyce mcintosh *	IN REFERENCE	LPBYTE argv;
425037cac00Sjoyce mcintosh ***********************************************************************
426037cac00Sjoyce mcintosh */
427037cac00Sjoyce mcintoshOPERATION(SVCCTL_OPNUM_StartService)
428037cac00Sjoyce mcintoshstruct svcctl_StartService {
429037cac00Sjoyce mcintosh	IN		svcctl_handle_t service_handle;
430037cac00Sjoyce mcintosh	IN		DWORD argc;
431037cac00Sjoyce mcintosh	IN		DWORD argv;
432037cac00Sjoyce mcintosh	OUT		DWORD status;
433037cac00Sjoyce mcintosh};
434037cac00Sjoyce mcintosh
4353db3f65cSamw/*
4363db3f65cSamw ***********************************************************************
4373db3f65cSamw * GetServiceDisplayNameW
4383db3f65cSamw ***********************************************************************
4393db3f65cSamw */
4403db3f65cSamwOPERATION(SVCCTL_OPNUM_GetServiceDisplayNameW)
4413db3f65cSamwstruct svcctl_GetServiceDisplayNameW {
442b89a8333Snatalie li - Sun Microsystems - Irvine United States	IN		svcctl_handle_t manager_handle;
443b89a8333Snatalie li - Sun Microsystems - Irvine United States	IN REFERENCE	LPTSTR service_name;
444b89a8333Snatalie li - Sun Microsystems - Irvine United States	OUT REFERENCE	LPTSTR display_name;
4453db3f65cSamw	INOUT		DWORD buf_size;
4463db3f65cSamw	OUT		DWORD status;
4473db3f65cSamw};
4483db3f65cSamw
4493db3f65cSamw/*
4503db3f65cSamw ***********************************************************************
4513db3f65cSamw * GetServiceKeyNameW
4523db3f65cSamw ***********************************************************************
4533db3f65cSamw */
4543db3f65cSamwOPERATION(SVCCTL_OPNUM_GetServiceKeyNameW)
4553db3f65cSamwstruct svcctl_GetServiceKeyNameW {
456b89a8333Snatalie li - Sun Microsystems - Irvine United States	IN		svcctl_handle_t manager_handle;
457b89a8333Snatalie li - Sun Microsystems - Irvine United States	IN REFERENCE	LPTSTR service_name;
458b89a8333Snatalie li - Sun Microsystems - Irvine United States	OUT REFERENCE	LPTSTR key_name;
4593db3f65cSamw	INOUT		DWORD buf_size;
4603db3f65cSamw	OUT		DWORD status;
4613db3f65cSamw};
4623db3f65cSamw
463037cac00Sjoyce mcintosh/*
464037cac00Sjoyce mcintosh ***********************************************************************
465037cac00Sjoyce mcintosh * OpenSCManagerA
466037cac00Sjoyce mcintosh ***********************************************************************
467037cac00Sjoyce mcintosh */
468037cac00Sjoyce mcintoshOPERATION(SVCCTL_OPNUM_OpenSCManagerA)
469037cac00Sjoyce mcintoshstruct svcctl_OpenSCManagerA {
470037cac00Sjoyce mcintosh	IN		struct svcctl_value *machine_name;
471037cac00Sjoyce mcintosh	IN		struct svcctl_value *database_name;
472037cac00Sjoyce mcintosh	IN		DWORD desired_access;
473037cac00Sjoyce mcintosh	OUT		svcctl_handle_t handle;
474037cac00Sjoyce mcintosh	OUT		DWORD status;
475037cac00Sjoyce mcintosh};
476037cac00Sjoyce mcintosh
477037cac00Sjoyce mcintosh/*
478037cac00Sjoyce mcintosh ***********************************************************************
479037cac00Sjoyce mcintosh * OpenServiceA
480037cac00Sjoyce mcintosh ***********************************************************************
481037cac00Sjoyce mcintosh */
482037cac00Sjoyce mcintoshOPERATION(SVCCTL_OPNUM_OpenServiceA)
483037cac00Sjoyce mcintoshstruct svcctl_OpenServiceA {
484037cac00Sjoyce mcintosh	IN		svcctl_handle_t manager_handle;
485037cac00Sjoyce mcintosh	IN REFERENCE	struct svcctl_value *service_name;
486037cac00Sjoyce mcintosh	IN		DWORD desired_access;
487037cac00Sjoyce mcintosh	OUT		svcctl_handle_t service_handle;
488037cac00Sjoyce mcintosh	OUT		DWORD status;
489037cac00Sjoyce mcintosh};
490037cac00Sjoyce mcintosh
491037cac00Sjoyce mcintosh/*
492037cac00Sjoyce mcintosh ***********************************************************************
493037cac00Sjoyce mcintosh * EnumServicesStatusA
494037cac00Sjoyce mcintosh ***********************************************************************
495037cac00Sjoyce mcintosh */
496037cac00Sjoyce mcintoshOPERATION(SVCCTL_OPNUM_EnumServicesStatusA)
497037cac00Sjoyce mcintoshstruct svcctl_EnumServicesStatusA {
498037cac00Sjoyce mcintosh	IN		svcctl_handle_t manager_handle;
499037cac00Sjoyce mcintosh	IN		DWORD svc_type;
500037cac00Sjoyce mcintosh	IN		DWORD svc_state;
501037cac00Sjoyce mcintosh	IN		DWORD buf_size;
502037cac00Sjoyce mcintosh    SIZE_IS(buf_size)
503037cac00Sjoyce mcintosh	OUT REFERENCE	LPBYTE services;
504037cac00Sjoyce mcintosh	OUT		DWORD bytes_needed;
505037cac00Sjoyce mcintosh	OUT		DWORD svc_num;
506037cac00Sjoyce mcintosh	INOUT		DWORD *resume_handle;
507037cac00Sjoyce mcintosh	OUT		DWORD status;
508037cac00Sjoyce mcintosh};
509037cac00Sjoyce mcintosh
510b89a8333Snatalie li - Sun Microsystems - Irvine United States/*
511b89a8333Snatalie li - Sun Microsystems - Irvine United States ***********************************************************************
512b89a8333Snatalie li - Sun Microsystems - Irvine United States * QueryServiceConfig2W
513b89a8333Snatalie li - Sun Microsystems - Irvine United States ***********************************************************************
514b89a8333Snatalie li - Sun Microsystems - Irvine United States */
515b89a8333Snatalie li - Sun Microsystems - Irvine United StatesOPERATION(SVCCTL_OPNUM_QueryServiceConfig2W)
516b89a8333Snatalie li - Sun Microsystems - Irvine United Statesstruct svcctl_QueryServiceConfig2W {
517b89a8333Snatalie li - Sun Microsystems - Irvine United States	IN		svcctl_handle_t service_handle;
518b89a8333Snatalie li - Sun Microsystems - Irvine United States	IN		DWORD info_level;
519b89a8333Snatalie li - Sun Microsystems - Irvine United States	IN		DWORD buf_size;
520b89a8333Snatalie li - Sun Microsystems - Irvine United States    SIZE_IS(buf_size)
521b89a8333Snatalie li - Sun Microsystems - Irvine United States	OUT REFERENCE	LPBYTE buffer;
522b89a8333Snatalie li - Sun Microsystems - Irvine United States	OUT		DWORD bytes_needed;
523b89a8333Snatalie li - Sun Microsystems - Irvine United States	OUT		DWORD status;
524b89a8333Snatalie li - Sun Microsystems - Irvine United States};
525b89a8333Snatalie li - Sun Microsystems - Irvine United States
526037cac00Sjoyce mcintosh/*
527037cac00Sjoyce mcintosh ***********************************************************************
528037cac00Sjoyce mcintosh * QueryServiceStatusEx
529037cac00Sjoyce mcintosh ***********************************************************************
530037cac00Sjoyce mcintosh */
531037cac00Sjoyce mcintoshstruct svc_status_ex {
532037cac00Sjoyce mcintosh	DWORD service_type;
533037cac00Sjoyce mcintosh	DWORD cur_state;
534037cac00Sjoyce mcintosh	DWORD ctrl_accepted;
535037cac00Sjoyce mcintosh	DWORD w32_exitcode;
536037cac00Sjoyce mcintosh	DWORD svc_specified_exitcode;
537037cac00Sjoyce mcintosh	DWORD check_point;
538037cac00Sjoyce mcintosh	DWORD wait_hint;
539037cac00Sjoyce mcintosh	DWORD process_id;
540037cac00Sjoyce mcintosh	DWORD service_flags;
541037cac00Sjoyce mcintosh};
542037cac00Sjoyce mcintoshtypedef struct svc_status_ex svc_status_ex_t;
543037cac00Sjoyce mcintosh
544037cac00Sjoyce mcintoshOPERATION(SVCCTL_OPNUM_QueryServiceStatusEx)
545037cac00Sjoyce mcintoshstruct svcctl_QueryServiceStatusEx {
546037cac00Sjoyce mcintosh	IN		svcctl_handle_t service_handle;
547037cac00Sjoyce mcintosh	IN		DWORD info_level;
548037cac00Sjoyce mcintosh	IN		DWORD buf_size;
549037cac00Sjoyce mcintosh    SIZE_IS(buf_size)
550037cac00Sjoyce mcintosh	OUT REFERENCE	LPBYTE buffer;
551037cac00Sjoyce mcintosh	OUT		DWORD bytes_needed;
552037cac00Sjoyce mcintosh	OUT		DWORD status;
553037cac00Sjoyce mcintosh};
554037cac00Sjoyce mcintosh
555da6c28aaSamw/*
556da6c28aaSamw ***********************************************************************
557da6c28aaSamw * The SVCCTL interface definition.
558da6c28aaSamw ***********************************************************************
559da6c28aaSamw */
560da6c28aaSamwINTERFACE(0)
561da6c28aaSamwunion svcctl_interface {
562da6c28aaSamw	CASE(SVCCTL_OPNUM_Close)
563da6c28aaSamw		struct svcctl_Close			SvcClose;
564037cac00Sjoyce mcintosh	CASE(SVCCTL_OPNUM_ControlService)
565037cac00Sjoyce mcintosh		struct svcctl_ControlService		SvcControlService;
566037cac00Sjoyce mcintosh	CASE(SVCCTL_OPNUM_DeleteService)
567037cac00Sjoyce mcintosh		struct svcctl_DeleteService		SvcDeleteService;
568037cac00Sjoyce mcintosh	CASE(SVCCTL_OPNUM_QueryServiceSecurity)
569037cac00Sjoyce mcintosh		struct svcctl_QueryServiceSecurity	SvcQueryServiceSecurity;
570037cac00Sjoyce mcintosh	CASE(SVCCTL_OPNUM_SetServiceSecurity)
571037cac00Sjoyce mcintosh		struct svcctl_SetServiceSecurity	SvcSetServiceSecurity;
572da6c28aaSamw	CASE(SVCCTL_OPNUM_OpenManager)
573da6c28aaSamw		struct svcctl_OpenManager		SvcOpenManager;
574da6c28aaSamw	CASE(SVCCTL_OPNUM_OpenService)
575da6c28aaSamw		struct svcctl_OpenService		SvcOpenService;
576da6c28aaSamw	CASE(SVCCTL_OPNUM_QueryServiceStatus)
577da6c28aaSamw		struct svcctl_QueryServiceStatus	SvcQueryServiceStatus;
578037cac00Sjoyce mcintosh	CASE(SVCCTL_OPNUM_EnumDependentServices)
579037cac00Sjoyce mcintosh		struct svcctl_EnumDependentServices Svc_EnumDependentServices;
580da6c28aaSamw	CASE(SVCCTL_OPNUM_EnumServicesStatus)
581da6c28aaSamw		struct svcctl_EnumServicesStatus	SvcEnumServicesStatus;
582da6c28aaSamw	CASE(SVCCTL_OPNUM_QueryServiceConfig)
583da6c28aaSamw		struct svcctl_QueryServiceConfig	SvcQueryServiceConfig;
584037cac00Sjoyce mcintosh	CASE(SVCCTL_OPNUM_StartService)
585037cac00Sjoyce mcintosh		struct svcctl_StartService		SvcStartService;
5863db3f65cSamw	CASE(SVCCTL_OPNUM_GetServiceDisplayNameW)
5873db3f65cSamw		struct svcctl_GetServiceDisplayNameW SvcGetServiceDisplayNameW;
5883db3f65cSamw	CASE(SVCCTL_OPNUM_GetServiceKeyNameW)
5893db3f65cSamw		struct svcctl_GetServiceKeyNameW	SvcGetServiceKeyNameW;
590037cac00Sjoyce mcintosh	CASE(SVCCTL_OPNUM_OpenSCManagerA)
591037cac00Sjoyce mcintosh		struct svcctl_OpenSCManagerA		SvcOpenSCManagerA;
592037cac00Sjoyce mcintosh	CASE(SVCCTL_OPNUM_OpenServiceA)
593037cac00Sjoyce mcintosh		struct svcctl_OpenServiceA		SvcOpenServiceA;
594037cac00Sjoyce mcintosh	CASE(SVCCTL_OPNUM_EnumServicesStatusA)
595037cac00Sjoyce mcintosh		struct svcctl_EnumServicesStatusA	SvcEnumServicesStatusA;
596b89a8333Snatalie li - Sun Microsystems - Irvine United States	CASE(SVCCTL_OPNUM_QueryServiceConfig2W)
597b89a8333Snatalie li - Sun Microsystems - Irvine United States		struct svcctl_QueryServiceConfig2W	SvcQueryServiceConfig2W;
598037cac00Sjoyce mcintosh	CASE(SVCCTL_OPNUM_QueryServiceStatusEx)
599037cac00Sjoyce mcintosh		struct svcctl_QueryServiceStatusEx	SvcQueryServiceStatusEx;
600da6c28aaSamw};
601da6c28aaSamw
602da6c28aaSamwtypedef union svcctl_interface	svcctl_interface_t;
603da6c28aaSamwEXTERNTYPEINFO(svcctl_interface)
604da6c28aaSamw
605da6c28aaSamw
606da6c28aaSamw#endif /* _MLSVC_SVCCTL_NDL_ */
607