[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [win-pv-devel] [PATCH 3/3] xenagent: remove the service when the package is removed
Signed-off-by: Paul Durrant <paul.durrant@xxxxxxxxxx> Cc: Owen Smith <owen.smith@xxxxxxxxxx> --- src/coinst/coinst.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 79 insertions(+), 1 deletion(-) diff --git a/src/coinst/coinst.c b/src/coinst/coinst.c index ef646e8..fd1e93b 100644 --- a/src/coinst/coinst.c +++ b/src/coinst/coinst.c @@ -55,6 +55,8 @@ __user_code; #define SERVICE_KEY(_Driver) \ SERVICES_KEY ## "\\" ## #_Driver +#define AGENT_NAME "XENAGENT" + static VOID #pragma prefast(suppress:6262) // Function uses '1036' bytes of stack: exceeds /analyze:stacksize'1024' __Log( @@ -307,6 +309,78 @@ fail1: return FALSE; } +static BOOL +AgentDelete( + VOID + ) +{ + SC_HANDLE SCManager; + SC_HANDLE Service; + BOOL Success; + SERVICE_STATUS Status; + HRESULT Error; + + Log("====>"); + + SCManager = OpenSCManager(NULL, + NULL, + SC_MANAGER_ALL_ACCESS); + + if (SCManager == NULL) + goto fail1; + + Service = OpenService(SCManager, + AGENT_NAME, + SERVICE_ALL_ACCESS); + + if (Service == NULL) + goto fail2; + + Success = ControlService(Service, + SERVICE_CONTROL_STOP, + &Status); + + if (!Success) + goto fail3; + + Success = DeleteService(Service); + + if (!Success) + goto fail4; + + CloseServiceHandle(Service); + CloseServiceHandle(SCManager); + + Log("<===="); + + return TRUE; + +fail4: + Log("fail4"); + +fail3: + Log("fail3"); + + CloseServiceHandle(Service); + +fail2: + Log("fail2"); + + CloseServiceHandle(SCManager); + +fail1: + Error = GetLastError(); + + { + PTCHAR Message; + Message = GetErrorMessage(Error); + Log("fail1 (%s)", Message); + LocalFree(Message); + } + + return FALSE; +} + static HRESULT DifInstallPreProcess( IN HDEVINFO DeviceInfoSet, @@ -437,7 +511,11 @@ DifRemovePreProcess( UNREFERENCED_PARAMETER(DeviceInfoData); UNREFERENCED_PARAMETER(Context); - Log("<===>"); + Log("====>"); + + (VOID) AgentDelete(); + + Log("<===="); return NO_ERROR; } -- 2.1.1 _______________________________________________ win-pv-devel mailing list win-pv-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/cgi-bin/mailman/listinfo/win-pv-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |