Author: gedmurphy
Date: Tue Jan 5 18:14:08 2010
New Revision: 44949
URL:
http://svn.reactos.org/svn/reactos?rev=44949&view=rev
Log:
More code towards getting servman to stop services again, etc...
(clearly not a message for the changelog)
Added:
trunk/reactos/base/applications/mscutils/servman/stop_dependencies.c
- copied, changed from r44882,
trunk/reactos/base/applications/mscutils/servman/dependencies.c
Removed:
trunk/reactos/base/applications/mscutils/servman/dependencies.c
Modified:
trunk/reactos/base/applications/mscutils/servman/dependencies_tv2.c
trunk/reactos/base/applications/mscutils/servman/precomp.h
trunk/reactos/base/applications/mscutils/servman/servman.rbuild
trunk/reactos/base/applications/mscutils/servman/stop.c
Removed: trunk/reactos/base/applications/mscutils/servman/dependencies.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/servman/dependencies.c [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/servman/dependencies.c (removed)
@@ -1,153 +1,0 @@
-/*
- * PROJECT: ReactOS Services
- * LICENSE: GPL - See COPYING in the top level directory
- * FILE: base/applications/mscutils/servman/dependencies.c
- * PURPOSE: Helper functions for service dependents
- * COPYRIGHT: Copyright 2006-2009 Ged Murphy <gedmurphy(a)reactos.org>
- *
- */
-
-#include "precomp.h"
-
-//FIXME: reimplement this
-static BOOL
-DoInitDependsDialog(PSTOP_INFO pStopInfo,
- HWND hDlg)
-{
- //LPENUM_SERVICE_STATUS lpDependencies;
- //DWORD dwCount;
- LPTSTR lpPartialStr, lpStr;
- DWORD fullLen;
- HICON hIcon = NULL;
- BOOL bRet = FALSE;
-
- if (pStopInfo)
- {
- SetWindowLongPtr(hDlg,
- GWLP_USERDATA,
- (LONG_PTR)pStopInfo);
-
- hIcon = (HICON)LoadImage(hInstance,
- MAKEINTRESOURCE(IDI_SM_ICON),
- IMAGE_ICON,
- 16,
- 16,
- 0);
- if (hIcon)
- {
- SendMessage(hDlg,
- WM_SETICON,
- ICON_SMALL,
- (LPARAM)hIcon);
- DestroyIcon(hIcon);
- }
-
- /* Add the label */
- if (AllocAndLoadString(&lpPartialStr,
- hInstance,
- IDS_STOP_DEPENDS))
- {
- fullLen = _tcslen(lpPartialStr) +
_tcslen(pStopInfo->pInfo->pCurrentService->lpDisplayName) + 1;
-
- lpStr = HeapAlloc(ProcessHeap,
- 0,
- fullLen * sizeof(TCHAR));
- if (lpStr)
- {
- _sntprintf(lpStr, fullLen, lpPartialStr,
pStopInfo->pInfo->pCurrentService->lpDisplayName);
-
- SendDlgItemMessage(hDlg,
- IDC_STOP_DEPENDS,
- WM_SETTEXT,
- 0,
- (LPARAM)lpStr);
-
- bRet = TRUE;
-
- HeapFree(ProcessHeap,
- 0,
- lpStr);
- }
-
- HeapFree(ProcessHeap,
- 0,
- lpPartialStr);
- }
-
- /* Get the list of dependencies
- GetServiceDependents(pStopInfo->hMainService, &dwCount);
- if (lpDependencies)
- {
- LPENUM_SERVICE_STATUS lpEnumServiceStatus;
- DWORD i;
-
- for (i = 0; i < dwCount; i++)
- {
- lpEnumServiceStatus = &lpDependencies[i];
-
- Add the service to the listbox
- SendDlgItemMessage(hDlg,
- IDC_STOP_DEPENDS_LB,
- LB_ADDSTRING,
- 0,
- (LPARAM)lpEnumServiceStatus->lpDisplayName);
- }
-
- HeapFree(ProcessHeap,
- 0,
- lpDependencies);
- }*/
- }
-
- return bRet;
-}
-
-
-INT_PTR CALLBACK
-StopDependsDialogProc(HWND hDlg,
- UINT message,
- WPARAM wParam,
- LPARAM lParam)
-{
- PSTOP_INFO pStopInfo = NULL;
-
- /* Get the window context */
- pStopInfo = (PSTOP_INFO)GetWindowLongPtr(hDlg,
- GWLP_USERDATA);
- if (pStopInfo == NULL && message != WM_INITDIALOG)
- {
- return FALSE;
- }
-
- switch (message)
- {
- case WM_INITDIALOG:
- {
- BOOL bRet = FALSE;
-
- pStopInfo = (PSTOP_INFO)lParam;
- if (pStopInfo != NULL)
- {
- bRet = DoInitDependsDialog(pStopInfo, hDlg);
- }
-
- return bRet;
- }
-
- case WM_COMMAND:
- {
- switch (LOWORD(wParam))
- {
- case IDOK:
- case IDCANCEL:
- {
- EndDialog(hDlg,
- LOWORD(wParam));
- return TRUE;
- }
- }
- }
- }
-
- return FALSE;
-}
Modified: trunk/reactos/base/applications/mscutils/servman/dependencies_tv2.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/servman/dependencies_tv2.c [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/servman/dependencies_tv2.c [iso-8859-1] Tue
Jan 5 18:14:08 2010
@@ -51,55 +51,67 @@
}
-static LPENUM_SERVICE_STATUS
-TV2_GetDependants(SC_HANDLE hService,
+LPENUM_SERVICE_STATUS
+TV2_GetDependants(LPWSTR lpServiceName,
LPDWORD lpdwCount)
{
- LPENUM_SERVICE_STATUS lpDependencies;
+ SC_HANDLE hSCManager;
+ SC_HANDLE hService;
+ LPENUM_SERVICE_STATUSW lpDependencies = NULL;
DWORD dwBytesNeeded;
DWORD dwCount;
- /* Does this have any dependencies? */
- if (EnumDependentServices(hService,
- SERVICE_STATE_ALL,
- NULL,
- 0,
- &dwBytesNeeded,
- &dwCount))
- {
- /* There are no dependent services */
- return NULL;
- }
- else
- {
- if (GetLastError() != ERROR_MORE_DATA)
- return NULL; /* Unexpected error */
-
- lpDependencies = (LPENUM_SERVICE_STATUS)HeapAlloc(GetProcessHeap(),
- 0,
- dwBytesNeeded);
- if (lpDependencies)
- {
- /* Get the list of dependents */
- if (EnumDependentServices(hService,
- SERVICE_STATE_ALL,
- lpDependencies,
- dwBytesNeeded,
- &dwBytesNeeded,
- &dwCount))
+ /* Set the first items in each tree view */
+ hSCManager = OpenSCManagerW(NULL,
+ NULL,
+ SC_MANAGER_ALL_ACCESS);
+ if (hSCManager)
+ {
+ hService = OpenServiceW(hSCManager,
+ lpServiceName,
+ SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS |
SERVICE_QUERY_CONFIG);
+ if (hService)
+ {
+ /* Does this have any dependencies? */
+ if (!EnumDependentServicesW(hService,
+ SERVICE_STATE_ALL,
+ NULL,
+ 0,
+ &dwBytesNeeded,
+ &dwCount) &&
+ GetLastError() == ERROR_MORE_DATA)
{
- /* Set the count */
- *lpdwCount = dwCount;
+ lpDependencies = (LPENUM_SERVICE_STATUSW)HeapAlloc(GetProcessHeap(),
+ 0,
+ dwBytesNeeded);
+ if (lpDependencies)
+ {
+ /* Get the list of dependents */
+ if (EnumDependentServicesW(hService,
+ SERVICE_STATE_ALL,
+ lpDependencies,
+ dwBytesNeeded,
+ &dwBytesNeeded,
+ &dwCount))
+ {
+ /* Set the count */
+ *lpdwCount = dwCount;
+ }
+ else
+ {
+ HeapFree(ProcessHeap,
+ 0,
+ lpDependencies);
+
+ lpDependencies = NULL;
+ }
+ }
}
- else
- {
- HeapFree(ProcessHeap,
- 0,
- lpDependencies);
-
- lpDependencies = NULL;
- }
- }
+
+ CloseServiceHandle(hService);
+ }
+
+ CloseServiceHandle(hSCManager);
}
return lpDependencies;
@@ -111,70 +123,56 @@
HTREEITEM hParent,
LPTSTR lpServiceName)
{
- SC_HANDLE hSCManager;
- SC_HANDLE hService;
- LPENUM_SERVICE_STATUS lpServiceStatus;
+
+ LPENUM_SERVICE_STATUSW lpServiceStatus;
LPTSTR lpNoDepends;
DWORD count, i;
BOOL bHasChildren;
- /* Set the first items in each tree view */
- hSCManager = OpenSCManager(NULL,
- NULL,
- SC_MANAGER_ALL_ACCESS);
- if (hSCManager)
- {
- hService = OpenService(hSCManager,
- lpServiceName,
- SERVICE_QUERY_STATUS | SERVICE_ENUMERATE_DEPENDENTS |
SERVICE_QUERY_CONFIG);
- if (hService)
- {
- /* Get a list of service dependents */
- lpServiceStatus = TV2_GetDependants(hService, &count);
- if (lpServiceStatus)
- {
- for (i = 0; i < count; i++)
- {
- /* Does this item need a +/- box? */
- bHasChildren =
TV2_HasDependantServices(lpServiceStatus[i].lpServiceName);
-
- /* Add it */
- AddItemToTreeView(pDlgInfo->hDependsTreeView2,
- hParent,
- lpServiceStatus[i].lpDisplayName,
- lpServiceStatus[i].lpServiceName,
- lpServiceStatus[i].ServiceStatus.dwServiceType,
- bHasChildren);
- }
- }
- else
- {
- /* If there is no parent, set the tree to 'no dependencies' */
- if (!hParent)
- {
- /* Load the 'No dependencies' string */
- AllocAndLoadString(&lpNoDepends, hInstance, IDS_NO_DEPENDS);
-
- AddItemToTreeView(pDlgInfo->hDependsTreeView2,
- NULL,
- lpNoDepends,
- NULL,
- 0,
- FALSE);
-
- HeapFree(ProcessHeap,
- 0,
- lpNoDepends);
-
- /* Disable the window */
- EnableWindow(pDlgInfo->hDependsTreeView2, FALSE);
- }
- }
-
- CloseServiceHandle(hService);
- }
-
- CloseServiceHandle(hSCManager);
+ /* Get a list of service dependents */
+ lpServiceStatus = TV2_GetDependants(lpServiceName, &count);
+ if (lpServiceStatus)
+ {
+ for (i = 0; i < count; i++)
+ {
+ /* Does this item need a +/- box? */
+ bHasChildren = TV2_HasDependantServices(lpServiceStatus[i].lpServiceName);
+
+ /* Add it */
+ AddItemToTreeView(pDlgInfo->hDependsTreeView2,
+ hParent,
+ lpServiceStatus[i].lpDisplayName,
+ lpServiceStatus[i].lpServiceName,
+ lpServiceStatus[i].ServiceStatus.dwServiceType,
+ bHasChildren);
+ }
+
+ HeapFree(GetProcessHeap(),
+ 0,
+ lpServiceStatus);
+ }
+ else
+ {
+ /* If there is no parent, set the tree to 'no dependencies' */
+ if (!hParent)
+ {
+ /* Load the 'No dependencies' string */
+ AllocAndLoadString(&lpNoDepends, hInstance, IDS_NO_DEPENDS);
+
+ AddItemToTreeView(pDlgInfo->hDependsTreeView2,
+ NULL,
+ lpNoDepends,
+ NULL,
+ 0,
+ FALSE);
+
+ HeapFree(ProcessHeap,
+ 0,
+ lpNoDepends);
+
+ /* Disable the window */
+ EnableWindow(pDlgInfo->hDependsTreeView2, FALSE);
+ }
}
}
Modified: trunk/reactos/base/applications/mscutils/servman/precomp.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/servman/precomp.h [iso-8859-1] (original)
+++ trunk/reactos/base/applications/mscutils/servman/precomp.h [iso-8859-1] Tue Jan 5
18:14:08 2010
@@ -124,8 +124,9 @@
HTREEITEM AddItemToTreeView(HWND hTreeView, HTREEITEM hRoot, LPTSTR lpDisplayName, LPTSTR
lpServiceName, ULONG serviceType, BOOL bHasChildren);
-/* dependencies */
+/* stop_dependencies */
INT_PTR CALLBACK StopDependsDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM
lParam);
+LPWSTR GetListOfServicesToStop(LPWSTR lpServiceName);
/* tv1_dependencies */
BOOL TV1_Initialize(PSERVICEPROPSHEET pDlgInfo, LPTSTR lpServiceName);
@@ -135,6 +136,7 @@
BOOL TV2_Initialize(PSERVICEPROPSHEET pDlgInfo, LPTSTR lpServiceName);
VOID TV2_AddDependantsToTree(PSERVICEPROPSHEET pDlgInfo, HTREEITEM hParent, LPTSTR
lpServiceName);
BOOL TV2_HasDependantServices(LPWSTR lpServiceName);
+LPENUM_SERVICE_STATUS TV2_GetDependants(LPWSTR lpServiceName, LPDWORD lpdwCount);
LONG APIENTRY OpenPropSheet(PMAIN_WND_INFO Info);
Modified: trunk/reactos/base/applications/mscutils/servman/servman.rbuild
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/servman/servman.rbuild [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/servman/servman.rbuild [iso-8859-1] Tue Jan
5 18:14:08 2010
@@ -14,7 +14,6 @@
<file>control.c</file>
<file>create.c</file>
<file>delete.c</file>
- <file>dependencies.c</file>
<file>dependencies_tv1.c</file>
<file>dependencies_tv2.c</file>
<file>export.c</file>
@@ -29,6 +28,7 @@
<file>servman.c</file>
<file>start.c</file>
<file>stop.c</file>
+ <file>stop_dependencies.c</file>
</compilationunit>
<file>servman.rc</file>
<pch>precomp.h</pch>
Modified: trunk/reactos/base/applications/mscutils/servman/stop.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/servman/stop.c [iso-8859-1] (original)
+++ trunk/reactos/base/applications/mscutils/servman/stop.c [iso-8859-1] Tue Jan 5
18:14:08 2010
@@ -3,7 +3,7 @@
* LICENSE: GPL - See COPYING in the top level directory
* FILE: base/applications/mscutils/servman/stop.c
* PURPOSE: Stops running a service
- * COPYRIGHT: Copyright 2006-2009 Ged Murphy <gedmurphy(a)reactos.org>
+ * COPYRIGHT: Copyright 2006-2010 Ged Murphy <gedmurphy(a)reactos.org>
*
*/
@@ -118,6 +118,7 @@
BOOL
DoStop(PMAIN_WND_INFO pInfo)
{
+ LPWSTR lpServiceList;
BOOL bRet = FALSE;
if (pInfo)
@@ -125,18 +126,23 @@
/* Does this service have anything which depends on it? */
if (TV2_HasDependantServices(pInfo->pCurrentService->lpServiceName))
{
- /* It does, list them and ask the user if they want to stop them as well */
- if (DialogBoxParam(hInstance,
- MAKEINTRESOURCE(IDD_DLG_DEPEND_STOP),
- pInfo->hMainWnd,
- StopDependsDialogProc,
- (LPARAM)&pInfo) == IDOK)
+ /* It does, get a list of all the services which need stopping */
+ lpServiceList =
GetListOfServicesToStop(pInfo->pCurrentService->lpServiceName);
+ if (lpServiceList)
{
- /* Stop all the dependany services */
- if (StopDependantServices(pInfo,
pInfo->pCurrentService->lpServiceName))
+ /* List them and ask the user if they want to stop them */
+ if (DialogBoxParamW(hInstance,
+ MAKEINTRESOURCEW(IDD_DLG_DEPEND_STOP),
+ pInfo->hMainWnd,
+ StopDependsDialogProc,
+ (LPARAM)lpServiceList) == IDOK)
{
- /* Finally stop the requested service */
- bRet = StopService(pInfo,
pInfo->pCurrentService->lpServiceName);
+ /* Stop all the dependant services */
+ if (StopDependantServices(pInfo,
pInfo->pCurrentService->lpServiceName))
+ {
+ /* Finally stop the requested service */
+ bRet = StopService(pInfo,
pInfo->pCurrentService->lpServiceName);
+ }
}
}
}
Copied: trunk/reactos/base/applications/mscutils/servman/stop_dependencies.c (from r44882,
trunk/reactos/base/applications/mscutils/servman/dependencies.c)
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/mscutils…
==============================================================================
--- trunk/reactos/base/applications/mscutils/servman/dependencies.c [iso-8859-1]
(original)
+++ trunk/reactos/base/applications/mscutils/servman/stop_dependencies.c [iso-8859-1] Tue
Jan 5 18:14:08 2010
@@ -1,72 +1,194 @@
/*
* PROJECT: ReactOS Services
* LICENSE: GPL - See COPYING in the top level directory
- * FILE: base/applications/mscutils/servman/dependencies.c
- * PURPOSE: Helper functions for service dependents
- * COPYRIGHT: Copyright 2006-2009 Ged Murphy <gedmurphy(a)reactos.org>
+ * FILE: base/applications/mscutils/servman/stop_dependencies.c
+ * PURPOSE: Routines related to stopping dependent services
+ * COPYRIGHT: Copyright 2006-2010 Ged Murphy <gedmurphy(a)reactos.org>
*
*/
#include "precomp.h"
-//FIXME: reimplement this
+
+static LPWSTR
+AddServiceToList(LPWSTR *lpServiceList,
+ LPWSTR lpServiceToAdd)
+{
+ LPWSTR lpNewList = NULL;
+ LPWSTR ptr;
+ DWORD dwToAddSize;
+ DWORD dwCurSize;
+
+ dwToAddSize = wcslen(lpServiceToAdd) + 1;
+
+ /* Is this is the first in the list? */
+ if (!*lpServiceList)
+ {
+ /* Add another char for double null */
+ dwToAddSize++;
+
+ lpNewList = HeapAlloc(GetProcessHeap(),
+ 0,
+ dwToAddSize * sizeof(WCHAR));
+ if (lpNewList)
+ {
+ /* Copy the service name */
+ wcscpy_s(lpNewList,
+ dwToAddSize,
+ lpServiceToAdd);
+
+ /* Add the double null char */
+ lpNewList[dwToAddSize - 1] = L'\0';
+ }
+ }
+ else
+ {
+ ptr = *lpServiceList;
+ dwCurSize = 0;
+
+ /* Get the list size */
+ while (*ptr != L'\0' || *(ptr + 1) != L'\0')
+ {
+ ptr++;
+ dwCurSize++;
+ }
+ dwCurSize++;
+
+ /* Add another char for double null */
+ dwCurSize++;
+
+ /* Extend the list size */
+ lpNewList = HeapReAlloc(GetProcessHeap(),
+ 0,
+ *lpServiceList,
+ (dwCurSize + dwToAddSize) * sizeof(WCHAR));
+ if (lpNewList)
+ {
+ /* Copy the service name */
+ wcscpy_s(&lpNewList[dwCurSize - 1],
+ dwToAddSize,
+ lpServiceToAdd);
+
+ /* Add the double null char */
+ lpNewList[dwCurSize + dwToAddSize - 1] = L'\0';
+ }
+ }
+
+ return lpNewList;
+}
+
static BOOL
-DoInitDependsDialog(PSTOP_INFO pStopInfo,
+BuildListOfServicesToStop(LPWSTR *lpServiceList,
+ LPWSTR lpServiceName)
+{
+ LPENUM_SERVICE_STATUS lpServiceStatus;
+ DWORD dwCount, i;
+ BOOL bRet = FALSE;
+
+ /* Get a list of service dependents */
+ lpServiceStatus = TV2_GetDependants(lpServiceName, &dwCount);
+ if (lpServiceStatus)
+ {
+ for (i = 0; i < dwCount; i++)
+ {
+ /* Does this service have any dependents? */
+ if (TV2_HasDependantServices(lpServiceStatus[i].lpServiceName))
+ {
+ /* recall this function with the dependent */
+ BuildListOfServicesToStop(lpServiceList,
lpServiceStatus[i].lpServiceName);
+ }
+
+ /* Add the service to the list */
+ *lpServiceList = AddServiceToList(lpServiceList,
lpServiceStatus[i].lpServiceName);
+ }
+
+ bRet = TRUE;
+
+ HeapFree(GetProcessHeap(),
+ 0,
+ lpServiceStatus);
+ }
+
+ return bRet;
+}
+
+LPWSTR
+GetListOfServicesToStop(LPWSTR lpServiceName)
+{
+ LPWSTR lpServiceList = NULL;
+
+ /* Call recursive function to get our list */
+ if (BuildListOfServicesToStop(&lpServiceList, lpServiceName))
+ return lpServiceList;
+ else
+ return NULL;
+}
+
+
+static BOOL
+DoInitDependsDialog(PMAIN_WND_INFO pInfo,
HWND hDlg)
{
- //LPENUM_SERVICE_STATUS lpDependencies;
- //DWORD dwCount;
- LPTSTR lpPartialStr, lpStr;
+ LPWSTR lpPartialStr, lpStr;
DWORD fullLen;
HICON hIcon = NULL;
BOOL bRet = FALSE;
- if (pStopInfo)
- {
- SetWindowLongPtr(hDlg,
- GWLP_USERDATA,
- (LONG_PTR)pStopInfo);
-
- hIcon = (HICON)LoadImage(hInstance,
- MAKEINTRESOURCE(IDI_SM_ICON),
- IMAGE_ICON,
- 16,
- 16,
- 0);
+ if (pInfo)
+ {
+ /* Tag the info to the window */
+ SetWindowLongPtrW(hDlg,
+ GWLP_USERDATA,
+ (LONG_PTR)pInfo);
+
+ /* Load the icon for the window */
+ hIcon = (HICON)LoadImageW(hInstance,
+ MAKEINTRESOURCE(IDI_SM_ICON),
+ IMAGE_ICON,
+ GetSystemMetrics(SM_CXSMICON),
+ GetSystemMetrics(SM_CXSMICON),
+ 0);
if (hIcon)
{
- SendMessage(hDlg,
- WM_SETICON,
- ICON_SMALL,
- (LPARAM)hIcon);
+ /* Set it */
+ SendMessageW(hDlg,
+ WM_SETICON,
+ ICON_SMALL,
+ (LPARAM)hIcon);
DestroyIcon(hIcon);
}
- /* Add the label */
+ /* Load the stop depends note */
if (AllocAndLoadString(&lpPartialStr,
hInstance,
IDS_STOP_DEPENDS))
{
- fullLen = _tcslen(lpPartialStr) +
_tcslen(pStopInfo->pInfo->pCurrentService->lpDisplayName) + 1;
+ /* Get the length required */
+ fullLen = wcslen(lpPartialStr) +
wcslen(pInfo->pCurrentService->lpDisplayName) + 1;
lpStr = HeapAlloc(ProcessHeap,
0,
- fullLen * sizeof(TCHAR));
+ fullLen * sizeof(WCHAR));
if (lpStr)
{
- _sntprintf(lpStr, fullLen, lpPartialStr,
pStopInfo->pInfo->pCurrentService->lpDisplayName);
-
- SendDlgItemMessage(hDlg,
- IDC_STOP_DEPENDS,
- WM_SETTEXT,
- 0,
- (LPARAM)lpStr);
-
- bRet = TRUE;
+ /* Add the service name to the depends note */
+ _snwprintf(lpStr,
+ fullLen,
+ lpPartialStr,
+ pInfo->pCurrentService->lpDisplayName);
+
+ /* Add the string to the dialog */
+ SendDlgItemMessageW(hDlg,
+ IDC_STOP_DEPENDS,
+ WM_SETTEXT,
+ 0,
+ (LPARAM)lpStr);
HeapFree(ProcessHeap,
0,
lpStr);
+
+ bRet = TRUE;
}
HeapFree(ProcessHeap,
@@ -74,29 +196,8 @@
lpPartialStr);
}
- /* Get the list of dependencies
- GetServiceDependents(pStopInfo->hMainService, &dwCount);
- if (lpDependencies)
- {
- LPENUM_SERVICE_STATUS lpEnumServiceStatus;
- DWORD i;
-
- for (i = 0; i < dwCount; i++)
- {
- lpEnumServiceStatus = &lpDependencies[i];
-
- Add the service to the listbox
- SendDlgItemMessage(hDlg,
- IDC_STOP_DEPENDS_LB,
- LB_ADDSTRING,
- 0,
- (LPARAM)lpEnumServiceStatus->lpDisplayName);
- }
-
- HeapFree(ProcessHeap,
- 0,
- lpDependencies);
- }*/
+ /* FIXME: Load the list of services which need stopping */
+
}
return bRet;
@@ -109,12 +210,12 @@
WPARAM wParam,
LPARAM lParam)
{
- PSTOP_INFO pStopInfo = NULL;
+ PMAIN_WND_INFO pInfo = NULL;
/* Get the window context */
- pStopInfo = (PSTOP_INFO)GetWindowLongPtr(hDlg,
- GWLP_USERDATA);
- if (pStopInfo == NULL && message != WM_INITDIALOG)
+ pInfo = (PMAIN_WND_INFO)GetWindowLongPtrW(hDlg,
+ GWLP_USERDATA);
+ if (pInfo == NULL && message != WM_INITDIALOG)
{
return FALSE;
}
@@ -125,10 +226,10 @@
{
BOOL bRet = FALSE;
- pStopInfo = (PSTOP_INFO)lParam;
- if (pStopInfo != NULL)
- {
- bRet = DoInitDependsDialog(pStopInfo, hDlg);
+ pInfo = (PMAIN_WND_INFO)lParam;
+ if (pInfo != NULL)
+ {
+ bRet = DoInitDependsDialog(pInfo, hDlg);
}
return bRet;