xref: /illumos-gate/usr/src/uts/common/smbsrv/ndl/svcctl.ndl (revision b89a8333f5e1f75ec0c269b22524bd2eccb972ba)
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/*
223db3f65cSamw * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
23da6c28aaSamw * Use is subject to license terms.
24da6c28aaSamw */
25da6c28aaSamw
26da6c28aaSamw#ifndef _MLSVC_SVCCTL_NDL_
27da6c28aaSamw#define _MLSVC_SVCCTL_NDL_
28da6c28aaSamw
29da6c28aaSamw/*
30da6c28aaSamw * NT Service Control Services (SVCCTL) RPC interface definition.
31da6c28aaSamw * This interface provides remote access to add, remove, start and
32da6c28aaSamw * stop services.
33da6c28aaSamw */
34da6c28aaSamw
35da6c28aaSamw#include "ndrtypes.ndl"
36da6c28aaSamw
373db3f65cSamw/* Windows NT */
38da6c28aaSamw#define SVCCTL_OPNUM_Close			0x00
393db3f65cSamw#define	SVCCTL_OPNUM_ControlService		0x01
403db3f65cSamw#define	SVCCTL_OPNUM_DeleteService		0x02
413db3f65cSamw#define	SVCCTL_OPNUM_LockServiceDatabase	0x03
423db3f65cSamw#define	SVCCTL_OPNUM_QueryServiceSecurity	0x04
433db3f65cSamw#define	SVCCTL_OPNUM_SetServiceSecurity		0x05
44da6c28aaSamw#define SVCCTL_OPNUM_QueryServiceStatus		0x06
453db3f65cSamw#define	SVCCTL_OPNUM_SetServiceStatus		0x07
463db3f65cSamw#define	SVCCTL_OPNUM_UnlockServiceDatabase	0x08
473db3f65cSamw#define	SVCCTL_OPNUM_NotifyBootConfigStatus	0x09
483db3f65cSamw#define	SVCCTL_OPNUM_SetServiceBits		0x0a
493db3f65cSamw#define	SVCCTL_OPNUM_ChangeServiceConfig	0x0b
503db3f65cSamw#define	SVCCTL_OPNUM_CreateService		0x0c
513db3f65cSamw#define	SVCCTL_OPNUM_EnumDependentServices	0x0d
52da6c28aaSamw#define SVCCTL_OPNUM_EnumServicesStatus		0x0E
53da6c28aaSamw#define SVCCTL_OPNUM_OpenManager		0x0F
54da6c28aaSamw#define SVCCTL_OPNUM_OpenService		0x10
55da6c28aaSamw#define SVCCTL_OPNUM_QueryServiceConfig		0x11
563db3f65cSamw#define	SVCCTL_OPNUM_QueryServiceLockStatus	0x12
573db3f65cSamw#define	SVCCTL_OPNUM_StartService		0x13
583db3f65cSamw#define	SVCCTL_OPNUM_GetServiceDisplayNameW	0x14
593db3f65cSamw#define	SVCCTL_OPNUM_GetServiceKeyNameW		0x15
603db3f65cSamw#define	SVCCTL_OPNUM_SetServiceBitsA		0x16
613db3f65cSamw#define	SVCCTL_OPNUM_ChangeServiceConfigA	0x17
623db3f65cSamw#define	SVCCTL_OPNUM_CreateServiceA		0x18
633db3f65cSamw#define	SVCCTL_OPNUM_EnumDependentServicesA	0x19
643db3f65cSamw#define	SVCCTL_OPNUM_EnumServiceStatusA		0x1a
653db3f65cSamw#define	SVCCTL_OPNUM_OpenSCManagerA		0x1b
663db3f65cSamw#define	SVCCTL_OPNUM_OpenServiceA		0x1c
673db3f65cSamw#define	SVCCTL_OPNUM_QueryServiceConfigA	0x1d
683db3f65cSamw#define	SVCCTL_OPNUM_QueryServiceLockStatusA	0x1e
693db3f65cSamw#define	SVCCTL_OPNUM_StartServiceA		0x1f
703db3f65cSamw#define	SVCCTL_OPNUM_GetServiceDisplayNameA	0x20
713db3f65cSamw#define	SVCCTL_OPNUM_GetServiceKeyNameA		0x21
723db3f65cSamw#define	SVCCTL_OPNUM_GetCurrentGroupStateW	0x22
733db3f65cSamw#define	SVCCTL_OPNUM_EnumServiceGroupW		0x23
743db3f65cSamw#define	SVCCTL_OPNUM_ChangeServiceConfig2A	0x24
753db3f65cSamw#define	SVCCTL_OPNUM_ChangeServiceConfig2W	0x25
763db3f65cSamw#define	SVCCTL_OPNUM_QueryServiceConfig2A	0x26
773db3f65cSamw
783db3f65cSamw/* Windows 2000 */
793db3f65cSamw#define	SVCCTL_OPNUM_QueryServiceConfig2W	0x27
803db3f65cSamw#define	SVCCTL_OPNUM_QueryServiceStatusEx	0x28
813db3f65cSamw#define	SVCCTL_OPNUM_EnumServiceStatusExA	0x29
823db3f65cSamw#define	SVCCTL_OPNUM_EnumServiceStatusExW	0x2a
833db3f65cSamw
843db3f65cSamw/* Windows XP and Windows Server 2003 */
853db3f65cSamw#define	SVCCTL_OPNUM_SendTSMessage		0x2b
863db3f65cSamw
873db3f65cSamw/* Windows Vista */
883db3f65cSamw#define	SVCCTL_OPNUM_CreateServiceWOW64A	0x2c
893db3f65cSamw#define	SVCCTL_OPNUM_CreateServiceWOW64W	0x2d
903db3f65cSamw#define	SVCCTL_OPNUM_QueryServiceTagInfo	0x2e
913db3f65cSamw#define	SVCCTL_OPNUM_NotifyServiceStatusChange	0x2f
923db3f65cSamw#define	SVCCTL_OPNUM_GetNotifyResult		0x30
933db3f65cSamw#define	SVCCTL_OPNUM_CloseNotifyHandle		0x31
943db3f65cSamw#define	SVCCTL_OPNUM_ControlServiceExA		0x32
953db3f65cSamw#define	SVCCTL_OPNUM_ControlServiceExW		0x33
963db3f65cSamw#define	SVCCTL_OPNUM_SendPnPMessage		0x34
973db3f65cSamw#define	SVCCTL_OPNUM_ValidatePnPService		0x35
983db3f65cSamw#define	SVCCTL_OPNUM_OpenServiceStatusHandle	0x36
99da6c28aaSamw
100da6c28aaSamw/*
101da6c28aaSamw * Standard opaque 20 byte RPC handle.
102da6c28aaSamw */
103da6c28aaSamwstruct svcctl_handle {
104da6c28aaSamw	DWORD hand1;
105da6c28aaSamw	DWORD hand2;
106da6c28aaSamw	WORD  hand3[2];
107da6c28aaSamw	BYTE  hand4[8];
108da6c28aaSamw};
109da6c28aaSamw
110da6c28aaSamwtypedef struct svcctl_handle svcctl_handle_t;
111da6c28aaSamw
112da6c28aaSamw/*
113da6c28aaSamw * The svc_status (SERVICE_STATUS) structure contains information about a
114da6c28aaSamw * service. The ControlService, EnumDependentServices, EnumServicesStatus,
115da6c28aaSamw * and QueryServiceStatus functions use this structure to return information
116da6c28aaSamw * about a service. A service uses this structure in the SetServiceStatus
117da6c28aaSamw * function to report its current status to the service control manager.
118da6c28aaSamw *
119da6c28aaSamw * service_type
120da6c28aaSamw *	The type of service. This member can be one of the following values.
121da6c28aaSamw *
122da6c28aaSamw *      SERVICE_FILE_SYSTEM_DRIVER
123da6c28aaSamw *      SERVICE_KERNEL_DRIVER
124da6c28aaSamw *      SERVICE_WIN32_OWN_PROCESS
125da6c28aaSamw *      SERVICE_WIN32_SHARE_PROCESS
126da6c28aaSamw *
127da6c28aaSamw * If the service type is either SERVICE_WIN32_OWN_PROCESS or
128da6c28aaSamw * SERVICE_WIN32_SHARE_PROCESS, and the service is running in
129da6c28aaSamw * the context of the LocalSystem account, the following type
130da6c28aaSamw * may also be specified to indicate that the service can
131da6c28aaSamw * interact with the desktop.
132da6c28aaSamw *
133da6c28aaSamw *      SERVICE_INTERACTIVE_PROCESS
134da6c28aaSamw *
135da6c28aaSamw * cur_state
136da6c28aaSamw *	The current state of the service. This member can be one of the
137da6c28aaSamw *	following values.
138da6c28aaSamw *
139da6c28aaSamw *      SERVICE_CONTINUE_PENDING
140da6c28aaSamw *      SERVICE_PAUSE_PENDING
141da6c28aaSamw *      SERVICE_PAUSED
142da6c28aaSamw *      SERVICE_RUNNING
143da6c28aaSamw *      SERVICE_START_PENDING
144da6c28aaSamw *      SERVICE_STOP_PENDING
145da6c28aaSamw *      SERVICE_STOPPED
146da6c28aaSamw *
147da6c28aaSamw * ctrl_accepted
148da6c28aaSamw *	The control codes that the service will accept and process in its
149da6c28aaSamw *	handler function (see Handler and HandlerEx). A user interface
150da6c28aaSamw *	process can control a service by specifying a control command in
151da6c28aaSamw *	the ControlService function. By default, all services accept the
152da6c28aaSamw *	SERVICE_CONTROL_INTERROGATE value. The following are the control
153da6c28aaSamw *	codes.
154da6c28aaSamw *
155da6c28aaSamw *      SERVICE_ACCEPT_STOP
156da6c28aaSamw *      SERVICE_ACCEPT_PAUSE_CONTINUE
157da6c28aaSamw *      SERVICE_ACCEPT_SHUTDOWN
158da6c28aaSamw *      SERVICE_ACCEPT_PARAMCHANGE
159da6c28aaSamw *      SERVICE_ACCEPT_NETBINDCHANGE
160da6c28aaSamw *
161da6c28aaSamw * w32_exitcode
162da6c28aaSamw *  An error code that the service uses to report an error that occurs when
163da6c28aaSamw *  it is starting or stopping. To return an error code specific to the
164da6c28aaSamw *  service, the service must set this value to ERROR_SERVICE_SPECIFIC_ERROR
165da6c28aaSamw *  to indicate that the dwServiceSpecificExitCode member contains the error
166da6c28aaSamw *  code. The service should set this value to NO_ERROR when it is running
167da6c28aaSamw *  and on normal termination.
168da6c28aaSamw *
169da6c28aaSamw * svc_specified_exitcode
170da6c28aaSamw *  A service-specific error code that the service returns when an error
171da6c28aaSamw *  occurs while the service is starting or stopping. This value is ignored
172da6c28aaSamw *  unless the w32_exitcode member is set to ERROR_SERVICE_SPECIFIC_ERROR.
173da6c28aaSamw *
174da6c28aaSamw * check_point
175da6c28aaSamw *  A value that the service increments periodically to report its progress
176da6c28aaSamw *  during a lengthy start, stop, pause, or continue operation. For example,
177da6c28aaSamw *  the service should increment this value as it completes each step of its
178da6c28aaSamw *  initialization when it is starting up. The user interface program that
179da6c28aaSamw *  invoked the operation on the service uses this value to track the progress
180da6c28aaSamw *  of the service during a lengthy operation. This value is not valid and
181da6c28aaSamw *  should be zero when the service does not have a start, stop, pause, or
182da6c28aaSamw *  continue operation pending.
183da6c28aaSamw *
184da6c28aaSamw * wait_hint
185da6c28aaSamw *  An estimate of the amount of time, in milliseconds, that the service
186da6c28aaSamw *  expects a pending start, stop, pause, or continue operation to take
187da6c28aaSamw *  before the service makes its next call to the SetServiceStatus
188da6c28aaSamw *  function with either an incremented check_point value or a change in
189da6c28aaSamw *  dwCurrentState. If the amount of time specified by wait_hint passes,
190da6c28aaSamw *  and check_point has not been incremented, or cur_state has not changed,
191da6c28aaSamw *  the service control manager or service control program can assume that
192da6c28aaSamw *  an error has occurred and the service should be stopped.
193da6c28aaSamw */
194da6c28aaSamwstruct svc_status {
195da6c28aaSamw	DWORD service_type;
196da6c28aaSamw	DWORD cur_state;
197da6c28aaSamw	DWORD ctrl_accepted;
198da6c28aaSamw	DWORD w32_exitcode;
199da6c28aaSamw	DWORD svc_specified_exitcode;
200da6c28aaSamw	DWORD check_point;
201da6c28aaSamw	DWORD wait_hint;
202da6c28aaSamw};
203da6c28aaSamwtypedef struct svc_status svc_status_t;
204da6c28aaSamw
205da6c28aaSamwstruct svc_enum_status {
206da6c28aaSamw	DWORD svc_name;		/* offset within response buffer */
207da6c28aaSamw	DWORD display_name;	/* offset within response buffer */
208da6c28aaSamw	svc_status_t svc_status;
209da6c28aaSamw};
210da6c28aaSamwtypedef struct svc_enum_status svc_enum_status_t;
211da6c28aaSamw
212da6c28aaSamwstruct svc_config {
213da6c28aaSamw	DWORD  service_type;
214da6c28aaSamw	DWORD  start_type;
215da6c28aaSamw	DWORD  error_control;
216da6c28aaSamw	LPTSTR binary_pathname;
217da6c28aaSamw	LPTSTR loadorder_group;
218da6c28aaSamw	DWORD  tag_id;
219da6c28aaSamw	LPTSTR dependencies;
220da6c28aaSamw	LPTSTR service_startname;
221da6c28aaSamw	LPTSTR display_name;
222da6c28aaSamw};
223da6c28aaSamwtypedef struct svc_config svc_config_t;
224da6c28aaSamw
225*b89a8333Snatalie li - Sun Microsystems - Irvine United Statesstruct svc_failure_actions {
226*b89a8333Snatalie li - Sun Microsystems - Irvine United States	DWORD reset_period;
227*b89a8333Snatalie li - Sun Microsystems - Irvine United States	DWORD rebootmsg_offset;
228*b89a8333Snatalie li - Sun Microsystems - Irvine United States	DWORD command_offset;
229*b89a8333Snatalie li - Sun Microsystems - Irvine United States	DWORD actions;
230*b89a8333Snatalie li - Sun Microsystems - Irvine United States	DWORD actions_offset;
231*b89a8333Snatalie li - Sun Microsystems - Irvine United States};
232*b89a8333Snatalie li - Sun Microsystems - Irvine United Statestypedef struct svc_failure_actions svc_failure_actions_t;
233*b89a8333Snatalie li - Sun Microsystems - Irvine United States
234*b89a8333Snatalie li - Sun Microsystems - Irvine United Statesstruct svc_description {
235*b89a8333Snatalie li - Sun Microsystems - Irvine United States	DWORD desc;		/* offset of description string */
236*b89a8333Snatalie li - Sun Microsystems - Irvine United States};
237*b89a8333Snatalie li - Sun Microsystems - Irvine United Statestypedef struct svc_description svc_description_t;
238da6c28aaSamw
239da6c28aaSamw/*
240da6c28aaSamw ***********************************************************************
241da6c28aaSamw * Close
242da6c28aaSamw ***********************************************************************
243da6c28aaSamw */
244da6c28aaSamwOPERATION(SVCCTL_OPNUM_Close)
245da6c28aaSamwstruct svcctl_Close {
246da6c28aaSamw	IN		svcctl_handle_t handle;
247da6c28aaSamw	OUT		svcctl_handle_t result_handle;
248da6c28aaSamw	OUT		DWORD status;
249da6c28aaSamw};
250da6c28aaSamw
251da6c28aaSamw
252da6c28aaSamw/*
253da6c28aaSamw ***********************************************************************
254da6c28aaSamw * OpenManager
255da6c28aaSamw ***********************************************************************
256da6c28aaSamw */
257da6c28aaSamwOPERATION(SVCCTL_OPNUM_OpenManager)
258da6c28aaSamwstruct svcctl_OpenManager {
259da6c28aaSamw	IN		LPTSTR machine_name;
260da6c28aaSamw	IN		LPTSTR database_name;
261da6c28aaSamw	IN		DWORD desired_access;
262da6c28aaSamw	OUT		svcctl_handle_t handle;
263da6c28aaSamw	OUT		DWORD status;
264da6c28aaSamw};
265da6c28aaSamw
266da6c28aaSamw
267da6c28aaSamw/*
268da6c28aaSamw ***********************************************************************
269da6c28aaSamw * OpenService
270da6c28aaSamw ***********************************************************************
271da6c28aaSamw */
272da6c28aaSamwOPERATION(SVCCTL_OPNUM_OpenService)
273da6c28aaSamwstruct svcctl_OpenService {
274da6c28aaSamw	IN		svcctl_handle_t manager_handle;
275da6c28aaSamw	IN REFERENCE	LPTSTR service_name;
276da6c28aaSamw	IN		DWORD desired_access;
277da6c28aaSamw	OUT		svcctl_handle_t service_handle;
278da6c28aaSamw	OUT		DWORD status;
279da6c28aaSamw};
280da6c28aaSamw
281da6c28aaSamw
282da6c28aaSamw/*
283da6c28aaSamw ***********************************************************************
284da6c28aaSamw * QueryServiceStatus
285da6c28aaSamw ***********************************************************************
286da6c28aaSamw */
287da6c28aaSamwOPERATION(SVCCTL_OPNUM_QueryServiceStatus)
288da6c28aaSamwstruct svcctl_QueryServiceStatus {
289da6c28aaSamw	IN		svcctl_handle_t service_handle;
290da6c28aaSamw	OUT		svc_status_t service_status;
291da6c28aaSamw	OUT		DWORD status;
292da6c28aaSamw};
293da6c28aaSamw
294da6c28aaSamw/*
295da6c28aaSamw ***********************************************************************
296da6c28aaSamw * EnumServicesStatus
297da6c28aaSamw ***********************************************************************
298da6c28aaSamw */
299da6c28aaSamwOPERATION(SVCCTL_OPNUM_EnumServicesStatus)
300da6c28aaSamwstruct svcctl_EnumServicesStatus {
301da6c28aaSamw	IN		svcctl_handle_t manager_handle;
302da6c28aaSamw	IN		DWORD svc_type;
303da6c28aaSamw	IN		DWORD svc_state;
304*b89a8333Snatalie li - Sun Microsystems - Irvine United States	IN		DWORD buf_size;
305*b89a8333Snatalie li - Sun Microsystems - Irvine United States    SIZE_IS(buf_size)
306*b89a8333Snatalie li - Sun Microsystems - Irvine United States	OUT REFERENCE	LPBYTE services;
307da6c28aaSamw	OUT		DWORD bytes_needed;
308da6c28aaSamw	OUT		DWORD svc_num;
309*b89a8333Snatalie li - Sun Microsystems - Irvine United States	INOUT		DWORD *resume_handle;
310da6c28aaSamw	OUT		DWORD status;
311da6c28aaSamw};
312da6c28aaSamw
313da6c28aaSamw/*
314da6c28aaSamw ***********************************************************************
315da6c28aaSamw * QueryServiceConfig
316da6c28aaSamw ***********************************************************************
317da6c28aaSamw */
318da6c28aaSamwOPERATION(SVCCTL_OPNUM_QueryServiceConfig)
319da6c28aaSamwstruct svcctl_QueryServiceConfig {
320da6c28aaSamw	IN		svcctl_handle_t service_handle;
321da6c28aaSamw	IN		DWORD buf_size;
322da6c28aaSamw	OUT		svc_config_t service_cfg;
323da6c28aaSamw	OUT		DWORD cfg_bytes;
324da6c28aaSamw	OUT		DWORD status;
325da6c28aaSamw};
326da6c28aaSamw
327da6c28aaSamw/*
328da6c28aaSamw ***********************************************************************
3293db3f65cSamw * GetServiceDisplayNameW
3303db3f65cSamw ***********************************************************************
3313db3f65cSamw */
3323db3f65cSamwOPERATION(SVCCTL_OPNUM_GetServiceDisplayNameW)
3333db3f65cSamwstruct svcctl_GetServiceDisplayNameW {
334*b89a8333Snatalie li - Sun Microsystems - Irvine United States	IN		svcctl_handle_t manager_handle;
335*b89a8333Snatalie li - Sun Microsystems - Irvine United States	IN REFERENCE	LPTSTR service_name;
336*b89a8333Snatalie li - Sun Microsystems - Irvine United States	OUT REFERENCE	LPTSTR display_name;
3373db3f65cSamw	INOUT		DWORD buf_size;
3383db3f65cSamw	OUT		DWORD status;
3393db3f65cSamw};
3403db3f65cSamw
3413db3f65cSamw/*
3423db3f65cSamw ***********************************************************************
3433db3f65cSamw * GetServiceKeyNameW
3443db3f65cSamw ***********************************************************************
3453db3f65cSamw */
3463db3f65cSamwOPERATION(SVCCTL_OPNUM_GetServiceKeyNameW)
3473db3f65cSamwstruct svcctl_GetServiceKeyNameW {
348*b89a8333Snatalie li - Sun Microsystems - Irvine United States	IN		svcctl_handle_t manager_handle;
349*b89a8333Snatalie li - Sun Microsystems - Irvine United States	IN REFERENCE	LPTSTR service_name;
350*b89a8333Snatalie li - Sun Microsystems - Irvine United States	OUT REFERENCE	LPTSTR key_name;
3513db3f65cSamw	INOUT		DWORD buf_size;
3523db3f65cSamw	OUT		DWORD status;
3533db3f65cSamw};
3543db3f65cSamw
3553db3f65cSamw/*
3563db3f65cSamw ***********************************************************************
357*b89a8333Snatalie li - Sun Microsystems - Irvine United States * QueryServiceConfig2W
358*b89a8333Snatalie li - Sun Microsystems - Irvine United States ***********************************************************************
359*b89a8333Snatalie li - Sun Microsystems - Irvine United States */
360*b89a8333Snatalie li - Sun Microsystems - Irvine United StatesOPERATION(SVCCTL_OPNUM_QueryServiceConfig2W)
361*b89a8333Snatalie li - Sun Microsystems - Irvine United Statesstruct svcctl_QueryServiceConfig2W {
362*b89a8333Snatalie li - Sun Microsystems - Irvine United States	IN		svcctl_handle_t service_handle;
363*b89a8333Snatalie li - Sun Microsystems - Irvine United States	IN		DWORD info_level;
364*b89a8333Snatalie li - Sun Microsystems - Irvine United States	IN		DWORD buf_size;
365*b89a8333Snatalie li - Sun Microsystems - Irvine United States    SIZE_IS(buf_size)
366*b89a8333Snatalie li - Sun Microsystems - Irvine United States	OUT REFERENCE	LPBYTE buffer;
367*b89a8333Snatalie li - Sun Microsystems - Irvine United States	OUT		DWORD bytes_needed;
368*b89a8333Snatalie li - Sun Microsystems - Irvine United States	OUT		DWORD status;
369*b89a8333Snatalie li - Sun Microsystems - Irvine United States};
370*b89a8333Snatalie li - Sun Microsystems - Irvine United States
371*b89a8333Snatalie li - Sun Microsystems - Irvine United States/*
372*b89a8333Snatalie li - Sun Microsystems - Irvine United States ***********************************************************************
373da6c28aaSamw * The SVCCTL interface definition.
374da6c28aaSamw ***********************************************************************
375da6c28aaSamw */
376da6c28aaSamwINTERFACE(0)
377da6c28aaSamwunion svcctl_interface {
378da6c28aaSamw	CASE(SVCCTL_OPNUM_Close)
379da6c28aaSamw		struct svcctl_Close			SvcClose;
380da6c28aaSamw	CASE(SVCCTL_OPNUM_OpenManager)
381da6c28aaSamw		struct svcctl_OpenManager		SvcOpenManager;
382da6c28aaSamw	CASE(SVCCTL_OPNUM_OpenService)
383da6c28aaSamw		struct svcctl_OpenService		SvcOpenService;
384da6c28aaSamw	CASE(SVCCTL_OPNUM_QueryServiceStatus)
385da6c28aaSamw		struct svcctl_QueryServiceStatus	SvcQueryServiceStatus;
386da6c28aaSamw	CASE(SVCCTL_OPNUM_EnumServicesStatus)
387da6c28aaSamw		struct svcctl_EnumServicesStatus	SvcEnumServicesStatus;
388da6c28aaSamw	CASE(SVCCTL_OPNUM_QueryServiceConfig)
389da6c28aaSamw		struct svcctl_QueryServiceConfig	SvcQueryServiceConfig;
3903db3f65cSamw	CASE(SVCCTL_OPNUM_GetServiceDisplayNameW)
3913db3f65cSamw		struct svcctl_GetServiceDisplayNameW SvcGetServiceDisplayNameW;
3923db3f65cSamw	CASE(SVCCTL_OPNUM_GetServiceKeyNameW)
3933db3f65cSamw		struct svcctl_GetServiceKeyNameW	SvcGetServiceKeyNameW;
394*b89a8333Snatalie li - Sun Microsystems - Irvine United States	CASE(SVCCTL_OPNUM_QueryServiceConfig2W)
395*b89a8333Snatalie li - Sun Microsystems - Irvine United States		struct svcctl_QueryServiceConfig2W	SvcQueryServiceConfig2W;
396da6c28aaSamw};
397da6c28aaSamw
398da6c28aaSamwtypedef union svcctl_interface	svcctl_interface_t;
399da6c28aaSamwEXTERNTYPEINFO(svcctl_interface)
400da6c28aaSamw
401da6c28aaSamw
402da6c28aaSamw#endif /* _MLSVC_SVCCTL_NDL_ */
403