summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Kaganski <mike.kaganski@collabora.com>2018-04-13 06:52:14 +0100
committerMike Kaganski <mike.kaganski@collabora.com>2018-04-13 09:03:03 +0200
commit3bd63cc5d6e24139d41f029993dc54d7b2e07e87 (patch)
treea0f48f40cdd44bdfc15f519a1713015f44eff83c
parented52ffb6ab840a1f4abdda8553fa9410793f4add (diff)
I guess it's time to remove some Win9x code
Change-Id: I921207fb73b2dc1e0f55836fa87c3338ff4fe1a9 Reviewed-on: https://gerrit.libreoffice.org/52807 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
-rw-r--r--setup_native/Library_instooofiltmsi.mk1
-rw-r--r--setup_native/source/win32/customactions/indexingfilter/restartindexingservice.cxx58
2 files changed, 12 insertions, 47 deletions
diff --git a/setup_native/Library_instooofiltmsi.mk b/setup_native/Library_instooofiltmsi.mk
index 4d0ae63679f3..36e2e2a6b81c 100644
--- a/setup_native/Library_instooofiltmsi.mk
+++ b/setup_native/Library_instooofiltmsi.mk
@@ -32,6 +32,7 @@ $(eval $(call gb_Library_use_system_win32_libs,instooofiltmsi,\
libucrt \
libvcruntime \
kernel32 \
+ advapi32 \
))
# vim: set noet sw=4 ts=4:
diff --git a/setup_native/source/win32/customactions/indexingfilter/restartindexingservice.cxx b/setup_native/source/win32/customactions/indexingfilter/restartindexingservice.cxx
index 4fad91039c7e..783198fdf08a 100644
--- a/setup_native/source/win32/customactions/indexingfilter/restartindexingservice.cxx
+++ b/setup_native/source/win32/customactions/indexingfilter/restartindexingservice.cxx
@@ -30,34 +30,16 @@
#include <windows.h>
#include <msiquery.h>
-/*
- Advapi.dll needs to be loaded dynamically because the service
- control functions are not available under Windows 9x.
-*/
-typedef BOOL (__stdcall * CloseServiceHandle_t)(SC_HANDLE);
-typedef BOOL (__stdcall * ControlService_t)(SC_HANDLE, DWORD, LPSERVICE_STATUS);
-typedef SC_HANDLE (__stdcall * OpenSCManager_t)(LPCWSTR, LPCWSTR, DWORD);
-typedef SC_HANDLE (__stdcall * OpenService_t)(SC_HANDLE, LPCWSTR, DWORD);
-typedef BOOL (__stdcall * QueryServiceStatus_t)(SC_HANDLE, LPSERVICE_STATUS);
-typedef BOOL (__stdcall * StartService_t)(SC_HANDLE, DWORD, LPCWSTR*);
-
-static CloseServiceHandle_t CloseServiceHandle_ = nullptr;
-static ControlService_t ControlService_ = nullptr;
-static OpenSCManager_t OpenSCManager_ = nullptr;
-static OpenService_t OpenService_ = nullptr;
-static QueryServiceStatus_t QueryServiceStatus_ = nullptr;
-static StartService_t StartService_ = nullptr;
-
const wchar_t * const INDEXING_SERVICE_NAME = L"cisvc";
bool StopIndexingService(SC_HANDLE hService)
{
SERVICE_STATUS status;
- if (ControlService_(hService, SERVICE_CONTROL_STOP, &status))
+ if (ControlService(hService, SERVICE_CONTROL_STOP, &status))
{
// Check the status until the service is no longer stop pending.
- if (QueryServiceStatus_(hService, &status))
+ if (QueryServiceStatus(hService, &status))
{
DWORD startTime = GetTickCount();
DWORD oldCheckPoint = status.dwCheckPoint;
@@ -77,7 +59,7 @@ bool StopIndexingService(SC_HANDLE hService)
Sleep(waitTime);
// Check the status again.
- if (!QueryServiceStatus_(hService, &status) ||
+ if (!QueryServiceStatus(hService, &status) ||
(status.dwCurrentState == SERVICE_STOPPED))
break;
@@ -98,12 +80,12 @@ bool StopIndexingService(SC_HANDLE hService)
void StartIndexingService(SC_HANDLE hService)
{
- if (StartService_(hService, 0, nullptr))
+ if (StartServiceW(hService, 0, nullptr))
{
SERVICE_STATUS status;
// Check the status until the service is no longer stop pending.
- if (QueryServiceStatus_(hService, &status))
+ if (QueryServiceStatus(hService, &status))
{
DWORD startTime = GetTickCount();
DWORD oldCheckPoint = status.dwCheckPoint;
@@ -123,7 +105,7 @@ void StartIndexingService(SC_HANDLE hService)
Sleep(waitTime);
// Check the status again.
- if (!QueryServiceStatus_(hService, &status) ||
+ if (!QueryServiceStatus(hService, &status) ||
(status.dwCurrentState == SERVICE_STOPPED))
break;
@@ -144,32 +126,14 @@ void StartIndexingService(SC_HANDLE hService)
extern "C" UINT __stdcall RestartIndexingService(MSIHANDLE)
{
- HMODULE hAdvapi32 = LoadLibraryW(L"advapi32.dll");
-
- if (hAdvapi32)
- {
- CloseServiceHandle_ = reinterpret_cast<CloseServiceHandle_t>(GetProcAddress(hAdvapi32, "CloseServiceHandle"));
- ControlService_ = reinterpret_cast<ControlService_t>(GetProcAddress(hAdvapi32, "ControlService"));
- OpenSCManager_ = reinterpret_cast<OpenSCManager_t>(GetProcAddress(hAdvapi32, "OpenSCManagerW"));
- OpenService_ = reinterpret_cast<OpenService_t>(GetProcAddress(hAdvapi32, "OpenServiceW"));
- QueryServiceStatus_ = reinterpret_cast<QueryServiceStatus_t>(GetProcAddress(hAdvapi32, "QueryServiceStatus"));
- StartService_ = reinterpret_cast<StartService_t>(GetProcAddress(hAdvapi32, "StartServiceW"));
- }
-
- /* On systems other than Windows 2000/XP the service API
- functions might not be available */
- if (!hAdvapi32 ||
- !(CloseServiceHandle_ && ControlService_ && OpenSCManager_ && OpenService_ && QueryServiceStatus_ && StartService_))
- return ERROR_SUCCESS;
-
- SC_HANDLE hSCManager = OpenSCManager_(
+ SC_HANDLE hSCManager = OpenSCManagerW(
nullptr, // local machine
nullptr, // ServicesActive database
SC_MANAGER_ALL_ACCESS);
if (hSCManager != nullptr)
{
- SC_HANDLE hIndexingService = OpenService_(
+ SC_HANDLE hIndexingService = OpenServiceW(
hSCManager, INDEXING_SERVICE_NAME, SERVICE_QUERY_STATUS | SERVICE_START | SERVICE_STOP);
if (hIndexingService)
@@ -177,15 +141,15 @@ extern "C" UINT __stdcall RestartIndexingService(MSIHANDLE)
SERVICE_STATUS status;
ZeroMemory(&status, sizeof(status));
- if (QueryServiceStatus_(hIndexingService, &status) &&
+ if (QueryServiceStatus(hIndexingService, &status) &&
(status.dwCurrentState == SERVICE_RUNNING))
{
if (StopIndexingService(hIndexingService))
StartIndexingService(hIndexingService);
}
- CloseServiceHandle_(hIndexingService);
+ CloseServiceHandle(hIndexingService);
}
- CloseServiceHandle_(hSCManager);
+ CloseServiceHandle(hSCManager);
}
return ERROR_SUCCESS;
}