/* TYPES *********************************************************************/
-VOID HandleBind(VOID);
-
typedef struct _ACTIVE_SERVICE
{
CLIENT_HANDLE hService;
/* GLOBALS *******************************************************************/
-extern handle_t BindingHandle;
static DWORD dwActiveServiceCount = 0;
static PACTIVE_SERVICE lpActiveServices = NULL;
NULL);
if (*hPipe == INVALID_HANDLE_VALUE)
{
- ERR("CreateFileW() failed (Error %lu)\n", GetLastError());
+ ERR("CreateFileW() failed for pipe %S (Error %lu)\n", NtControlPipeName, GetLastError());
return ERROR_FAILED_SERVICE_CONTROLLER_CONNECT;
}
break;
default:
- TRACE("Unknown command %lu", ControlPacket->dwControl);
+ TRACE("Command %lu received", ControlPacket->dwControl);
+ ScControlService(ControlPacket);
continue;
}
*
* @implemented
*/
-SERVICE_STATUS_HANDLE STDCALL
+SERVICE_STATUS_HANDLE WINAPI
RegisterServiceCtrlHandlerA(LPCSTR lpServiceName,
LPHANDLER_FUNCTION lpHandlerProc)
{
*
* @implemented
*/
-SERVICE_STATUS_HANDLE STDCALL
+SERVICE_STATUS_HANDLE WINAPI
RegisterServiceCtrlHandlerW(LPCWSTR lpServiceName,
LPHANDLER_FUNCTION lpHandlerProc)
{
*
* @implemented
*/
-SERVICE_STATUS_HANDLE STDCALL
+SERVICE_STATUS_HANDLE WINAPI
RegisterServiceCtrlHandlerExA(LPCSTR lpServiceName,
LPHANDLER_FUNCTION_EX lpHandlerProc,
LPVOID lpContext)
*
* @implemented
*/
-SERVICE_STATUS_HANDLE STDCALL
+SERVICE_STATUS_HANDLE WINAPI
RegisterServiceCtrlHandlerExW(LPCWSTR lpServiceName,
LPHANDLER_FUNCTION_EX lpHandlerProc,
LPVOID lpContext)
Service->HandlerFunctionEx = lpHandlerProc;
Service->HandlerContext = lpContext;
- TRACE("RegisterServiceCtrlHandlerEx returning %lu", Service->hService);
+ TRACE("RegisterServiceCtrlHandlerEx returning %lu\n", Service->hService);
return (SERVICE_STATUS_HANDLE)Service->hService;
}
*
* @implemented
*/
-BOOL STDCALL
+BOOL WINAPI
I_ScSetServiceBitsA(SERVICE_STATUS_HANDLE hServiceStatus,
DWORD dwServiceBits,
BOOL bSetBitsOn,
{
BOOL bResult;
-// HandleBind();
-
- _SEH_TRY
+ RpcTryExcept
{
/* Call to services.exe using RPC */
- bResult = RI_ScSetServiceBitsA(//BindingHandle,
- (RPC_SERVICE_STATUS_HANDLE)hServiceStatus,
+ bResult = RI_ScSetServiceBitsA((RPC_SERVICE_STATUS_HANDLE)hServiceStatus,
dwServiceBits,
bSetBitsOn,
bUpdateImmediately,
lpString);
}
- _SEH_HANDLE
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
SetLastError(ScmRpcStatusToWinError(RpcExceptionCode()));
bResult = FALSE;
}
- _SEH_END;
+ RpcEndExcept;
return bResult;
}
*
* @implemented
*/
-BOOL STDCALL
+BOOL WINAPI
I_ScSetServiceBitsW(SERVICE_STATUS_HANDLE hServiceStatus,
DWORD dwServiceBits,
BOOL bSetBitsOn,
{
BOOL bResult;
-// HandleBind();
-
- _SEH_TRY
+ RpcTryExcept
{
/* Call to services.exe using RPC */
- bResult = RI_ScSetServiceBitsW(//BindingHandle,
- (RPC_SERVICE_STATUS_HANDLE)hServiceStatus,
+ bResult = RI_ScSetServiceBitsW((RPC_SERVICE_STATUS_HANDLE)hServiceStatus,
dwServiceBits,
bSetBitsOn,
bUpdateImmediately,
lpString);
}
- _SEH_HANDLE
+ RpcExcept(EXCEPTION_EXECUTE_HANDLER)
{
SetLastError(ScmRpcStatusToWinError(RpcExceptionCode()));
bResult = FALSE;
}
- _SEH_END;
+ RpcEndExcept;
return bResult;
}
*
* @implemented
*/
-BOOL STDCALL
+BOOL WINAPI
SetServiceBits(SERVICE_STATUS_HANDLE hServiceStatus,
DWORD dwServiceBits,
BOOL bSetBitsOn,
*
* @implemented
*/
-BOOL STDCALL
+BOOL WINAPI
SetServiceStatus(SERVICE_STATUS_HANDLE hServiceStatus,
LPSERVICE_STATUS lpServiceStatus)
{
TRACE("SetServiceStatus() called\n");
TRACE("hServiceStatus %lu\n", hServiceStatus);
-// HandleBind();
-
/* Call to services.exe using RPC */
- dwError = RSetServiceStatus(//BindingHandle,
- (RPC_SERVICE_STATUS_HANDLE)hServiceStatus,
+ dwError = RSetServiceStatus((RPC_SERVICE_STATUS_HANDLE)hServiceStatus,
lpServiceStatus);
if (dwError != ERROR_SUCCESS)
{
*
* @implemented
*/
-BOOL STDCALL
-StartServiceCtrlDispatcherA(LPSERVICE_TABLE_ENTRYA lpServiceStartTable)
+BOOL WINAPI
+StartServiceCtrlDispatcherA(const SERVICE_TABLE_ENTRYA * lpServiceStartTable)
{
ULONG i;
HANDLE hPipe;
*
* @implemented
*/
-BOOL STDCALL
-StartServiceCtrlDispatcherW(LPSERVICE_TABLE_ENTRYW lpServiceStartTable)
+BOOL WINAPI
+StartServiceCtrlDispatcherW(const SERVICE_TABLE_ENTRYW * lpServiceStartTable)
{
ULONG i;
HANDLE hPipe;