3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/*
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * svcctl interface definitions - exported by services.exe to access the
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * services database
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Copyright 2007 Google (Mikolaj Zalewski)
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This library is free software; you can redistribute it and/or
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * modify it under the terms of the GNU Lesser General Public
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * License as published by the Free Software Foundation; either
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * version 2.1 of the License, or (at your option) any later version.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * This library is distributed in the hope that it will be useful,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * but WITHOUT ANY WARRANTY; without even the implied warranty of
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Lesser General Public License for more details.
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync *
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * You should have received a copy of the GNU Lesser General Public
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * License along with this library; if not, write to the Free Software
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync/*
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * other than GPL or LGPL is available it will apply instead, Oracle elects to use only
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * a choice of LGPL license versions is made available with the language indicating
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * that LGPLv2 or any later version may be used, or where a choice of which version
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync * of the LGPL is applied is otherwise unspecified.
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync */
930b5f872e89407f445d4000d4e4aaecaa6a0998vboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncimport "wtypes.idl";
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/*
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync * some defined for the C code
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#include \"winsvc.h\"")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define SVCCTL_TRANSPORT {'n','c','a','c','n','_','n','p',0}")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define SVCCTL_ENDPOINT {'\\\\','p','i','p','e','\\\\','s','v','c','c','t','l',0}")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* Not the Windows event name - if needed the true one can be found in Inside Windows */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#define SVCCTL_STARTED_EVENT {'_','_','w','i','n','e','_','S','v','c','c','t','l','S','t','a','r','t','e','d',0}")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync/* Service startup protocol over control pipe - not compatible with Windows */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncenum service_pipe_command
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WINESERV_STARTINFO = 1,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WINESERV_SENDCONTROL = 2
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync};
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct service_start_info_t
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync enum service_pipe_command cmd; /* request code */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD total_size; /* total request size */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD name_size; /* size of name in data buffer */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD control; /* control code */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync WCHAR data[1];
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} service_start_info;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync[
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync uuid(367abb81-9844-35f1-ad32-98f038001003),
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync version(2.0),
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync pointer_default(unique),
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync endpoint("ncacn_np:[\\pipe\\svcctl]")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync]
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsyncinterface svcctl
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* handle types */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync typedef [handle] LPCWSTR MACHINE_HANDLEW;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync typedef [context_handle] void *SC_RPC_HANDLE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync typedef [context_handle] void *SC_RPC_LOCK;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* undocumented access rights */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync cpp_quote("#define SERVICE_SET_STATUS 0x8000")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#if 0 /* already defined in winsvc.h */")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _QUERY_SERVICE_CONFIGW {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwServiceType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwStartType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwErrorControl;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [unique] LPWSTR lpBinaryPathName;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [unique] LPWSTR lpLoadOrderGroup;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwTagId;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [unique] LPWSTR lpDependencies;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [unique] LPWSTR lpServiceStartName;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [unique] LPWSTR lpDisplayName;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} QUERY_SERVICE_CONFIGW, *LPQUERY_SERVICE_CONFIGW;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _SERVICE_STATUS {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwServiceType;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwCurrentState;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwControlsAccepted;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwWin32ExitCode;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwServiceSpecificExitCode;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwCheckPoint;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwWaitHint;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} SERVICE_STATUS, *LPSERVICE_STATUS;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef enum _SC_STATUS_TYPE {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync SC_STATUS_PROCESS_INFO = 0
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} SC_STATUS_TYPE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _SERVICE_DESCRIPTIONW {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync LPWSTR lpDescription;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} SERVICE_DESCRIPTIONW,*LPSERVICE_DESCRIPTIONW;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef enum _SC_ACTION_TYPE {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync SC_ACTION_NONE = 0,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync SC_ACTION_RESTART = 1,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync SC_ACTION_REBOOT = 2,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync SC_ACTION_RUN_COMMAND = 3
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} SC_ACTION_TYPE;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _SC_ACTION {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync SC_ACTION_TYPE Type;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD Delay;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} SC_ACTION,*LPSC_ACTION;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _SERVICE_FAILURE_ACTIONSW {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwResetPeriod;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [unique] LPWSTR lpRebootMsg;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [unique] LPWSTR lpCommand;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD cActions;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [size_is(cActions)] SC_ACTION *lpsaActions;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} SERVICE_FAILURE_ACTIONSW,*LPSERVICE_FAILURE_ACTIONSW;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _SERVICE_PRESHUTDOWN_INFO {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD dwPreshutdownTimeout;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} SERVICE_PRESHUTDOWN_INFO,*LPSERVICE_PRESHUTDOWN_INFO;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define SERVICE_CONFIG_DESCRIPTION 1
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define SERVICE_CONFIG_FAILURE_ACTIONS 2
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define SERVICE_CONFIG_DELAYED_AUTO_START_INFO 3
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define SERVICE_CONFIG_FAILURE_ACTIONS_FLAG 4
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define SERVICE_CONFIG_SERVICE_SID_INFO 5
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define SERVICE_CONFIG_REQUIRED_PRIVILEGES_INFO 6
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync#define SERVICE_CONFIG_PRESHUTDOWN_INFO 7
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef struct _ENUM_SERVICE_STATUSW {
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync LPWSTR lpServiceName;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync LPWSTR lpDisplayName;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync SERVICE_STATUS ServiceStatus;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} ENUM_SERVICE_STATUSW, *LPENUM_SERVICE_STATUSW;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynccpp_quote("#endif")
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsynctypedef [switch_type(DWORD)] union
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync{
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [case (SERVICE_CONFIG_DESCRIPTION)] SERVICE_DESCRIPTIONW descr;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [case (SERVICE_CONFIG_FAILURE_ACTIONS)] SERVICE_FAILURE_ACTIONSW actions;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [case (SERVICE_CONFIG_PRESHUTDOWN_INFO)] SERVICE_PRESHUTDOWN_INFO preshutdown;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync} SERVICE_CONFIG2W;
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Compatible with Windows function 0x00 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_CloseServiceHandle(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in,out] SC_RPC_HANDLE *handle
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Compatible with Windows function 0x01 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_ControlService(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] SC_RPC_HANDLE hService,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] DWORD dwControl,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] SERVICE_STATUS *lpServiceStatus
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Compatible with Windows function 0x02 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_DeleteService(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] SC_RPC_HANDLE hService
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Compatible with Windows function 0x03 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_LockServiceDatabase(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] SC_RPC_HANDLE hSCManager,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] SC_RPC_LOCK *phLock
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Not compatible with Windows function 0x04 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_QueryServiceObjectSecurity(/* FIXME */);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Not compatible with Windows function 0x05 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_SetServiceObjectSecurity(/* FIXME */);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Not compatible with Windows function 0x06 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_QueryServiceStatus(/* FIXME */);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Compatible with Windows function 0x07 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_SetServiceStatus(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] SC_RPC_HANDLE hServiceStatus,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] LPSERVICE_STATUS lpServiceStatus
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Compatible with Windows function 0x08 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_UnlockServiceDatabase(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in,out] SC_RPC_LOCK *phLock
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Not compatible with Windows function 0x09 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_NotifyBootConfigStatus(/* FIXME */);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Not compatible with Windows function 0x0a */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_SCSetServiceBitsW(/* FIXME */);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Compatible with Windows function 0x0b */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_ChangeServiceConfigW(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] SC_RPC_HANDLE hService,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] DWORD dwServiceType,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] DWORD dwStartType,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] DWORD dwErrorControl,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in,unique] LPCWSTR lpBinaryPathName,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in,unique] LPCWSTR lpLoadOrderGroupKey,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in,out,unique] DWORD *lpdwTagId,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in,unique,size_is(dwDependenciesSize)] const BYTE *lpDependencies,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] DWORD dwDependenciesSize,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in,unique] LPCWSTR lpServiceStartName,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in,unique,size_is(dwPasswordSize)] const BYTE *lpPassword,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] DWORD dwPasswordSize,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in,unique] LPCWSTR lpDisplayName
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Compatible with Windows function 0x0c */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_CreateServiceW(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] SC_RPC_HANDLE hSCManager,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] LPCWSTR lpServiceName,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in,unique] LPCWSTR lpDisplayName,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] DWORD dwDesiredAccess,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] DWORD dwServiceType,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] DWORD dwStartType,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] DWORD dwErrorControl,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] LPCWSTR lpBinaryPathName,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in,unique] LPCWSTR lpLoadOrderGroup,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in,out,unique] DWORD *lpdwTagId,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in,unique,size_is(dwDependenciesSize)] const BYTE *lpDependencies,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] DWORD dwDependenciesSize,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in,unique] LPCWSTR lpServiceStartName,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in,unique,size_is(dwPasswordSize)] const BYTE *lpPassword,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] DWORD dwPasswordSize,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] SC_RPC_HANDLE *phService
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Not compatible with Windows function 0x0d */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_EnumDependentServicesW(/* FIXME */);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Not compatible with Windows function 0x0e */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_EnumServicesStatusW(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] SC_RPC_HANDLE hmngr,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] DWORD type,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] DWORD state,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out,size_is(size)] BYTE *buffer,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] DWORD size,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] LPDWORD needed,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] LPDWORD returned
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Compatible with Windows function 0x0f */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_OpenSCManagerW(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in,unique] MACHINE_HANDLEW MachineName,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in,unique] LPCWSTR DatabaseName,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] DWORD dwAccessMask,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] SC_RPC_HANDLE *handle
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Compatible with Windows function 0x10 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_OpenServiceW(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] SC_RPC_HANDLE hSCManager,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] LPCWSTR lpServiceName,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] DWORD dwDesiredAccess,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] SC_RPC_HANDLE *phService
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Windows function 0x11 must be using a different prototype - not compatible */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_QueryServiceConfigW(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] SC_RPC_HANDLE hService,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] QUERY_SERVICE_CONFIGW *config);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Not compatible with Windows function 0x12 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_QueryServiceLockStatusW(/* FIXME */);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Untested with Windows function 0x13 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_StartServiceW(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] SC_RPC_HANDLE hService,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] DWORD dwNumServiceArgs,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in,unique,size_is(dwNumServiceArgs)] LPCWSTR *lpServiceArgVectors
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Compatible with Windows function 0x14 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_GetServiceDisplayNameW(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] SC_RPC_HANDLE hSCManager,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] LPCWSTR lpServiceName,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out,string,size_is(*cchBufSize+1)] WCHAR lpBuffer[],
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in,out] DWORD *cchBufSize);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Compatible with Windows function 0x15 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_GetServiceKeyNameW(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] SC_RPC_HANDLE hSCManager,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] LPCWSTR lpServiceDisplayName,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out,string,size_is(*cchBufSize+1)] WCHAR lpBuffer[],
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in,out] DWORD *cchBufSize);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Not compatible with Windows function 0x16 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_SCSetServiceBitsA(/* FIXME */);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Not compatible with Windows function 0x17 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_ChangeServiceConfigA(/* FIXME */);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Not compatible with Windows function 0x18 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_CreateServiceA(/* FIXME */);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Not compatible with Windows function 0x19 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_EnumDependentServicesA(/* FIXME */);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Not compatible with Windows function 0x1a */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_EnumServicesStatusA(/* FIXME */);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Not compatible with Windows function 0x1b */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_OpenSCManagerA(/* FIXME */);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Not compatible with Windows function 0x1c */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_OpenServiceA(/* FIXME */);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Not compatible with Windows function 0x1d */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_QueryServiceConfigA(/* FIXME */);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Not compatible with Windows function 0x1e */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_QueryServiceLockStatusA(/* FIXME */);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Not compatible with Windows function 0x1f */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_StartServiceA(/* FIXME */);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Not compatible with Windows function 0x20 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_GetServiceDisplayNameA(/* FIXME */);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Not compatible with Windows function 0x21 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_GetServiceKeyNameA(/* FIXME */);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Not compatible with Windows function 0x22 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_GetCurrentGroupStateW(/* FIXME */);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Not compatible with Windows function 0x23 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_EnumServiceGroupW(/* FIXME */);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Not compatible with Windows function 0x24 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_ChangeServiceConfig2A(/* FIXME */);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Untested with Windows function 0x25 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_ChangeServiceConfig2W(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] SC_RPC_HANDLE hService,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] DWORD InfoLevel,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in,switch_is(InfoLevel)] SERVICE_CONFIG2W *config );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Not compatible with Windows function 0x26 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_QueryServiceConfig2A(/* FIXME */);
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Untested with Windows function 0x27 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_QueryServiceConfig2W(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] SC_RPC_HANDLE hService,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] DWORD InfoLevel,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out,size_is(cbBufSize)] BYTE lpBuffer[],
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] DWORD cbBufSize,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] LPDWORD pcbBytesNeeded
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync /* Untested with Windows function 0x28 */
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_QueryServiceStatusEx(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] SC_RPC_HANDLE hService,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] SC_STATUS_TYPE InfoLevel,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out,size_is(cbBufSize)] BYTE *lpBuffer,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] DWORD cbBufSize,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] LPDWORD pcbBytesNeeded
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync DWORD svcctl_EnumServicesStatusExW(
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] SC_RPC_HANDLE hmngr,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] DWORD type,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] DWORD state,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out,size_is(size)] BYTE *buffer,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in] DWORD size,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] LPDWORD needed,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [out] LPDWORD returned,
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync [in,unique] LPCWSTR group
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync );
3194da424708abdd288b28d96892b3a5f3f7df0bvboxsync}