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 104da6c28aaSamw/* 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 114037cac00Sjoyce mcintosh/* 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 362da6c28aaSamw/* 363da6c28aaSamw *********************************************************************** 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 379037cac00Sjoyce mcintosh/* 380037cac00Sjoyce mcintosh *********************************************************************** 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 412da6c28aaSamw/* 413da6c28aaSamw *********************************************************************** 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 435037cac00Sjoyce mcintosh/* 436037cac00Sjoyce mcintosh *********************************************************************** 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 4633db3f65cSamw/* 4643db3f65cSamw *********************************************************************** 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 510037cac00Sjoyce mcintosh/* 511037cac00Sjoyce mcintosh *********************************************************************** 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 526b89a8333Snatalie li - Sun Microsystems - Irvine United States/* 527b89a8333Snatalie li - Sun Microsystems - Irvine United States *********************************************************************** 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 555037cac00Sjoyce mcintosh/* 556037cac00Sjoyce mcintosh *********************************************************************** 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