Don't use #pragma once for pch files. Fixes build.
[reactos.git] / reactos / base / applications / mscutils / servman / precomp.h
index 796bb32..9b829ad 100644 (file)
 #define LVSTARTUP 3
 #define LVLOGONAS 4
 
+#define IMAGE_UNKNOWN 0
+#define IMAGE_SERVICE 1
+#define IMAGE_DRIVER 2
+
 typedef struct _MAIN_WND_INFO
 {
     HWND  hMainWnd;
@@ -40,6 +44,8 @@ typedef struct _MAIN_WND_INFO
     BOOL bInMenuLoop;
     BOOL bIsUserAnAdmin;
 
+    PVOID pTag;
+
 } MAIN_WND_INFO, *PMAIN_WND_INFO;
 
 
@@ -75,16 +81,27 @@ BOOL CreateListView(PMAIN_WND_INFO Info);
 /* start */
 BOOL DoStart(PMAIN_WND_INFO Info);
 
+/* stop */
+typedef struct _STOP_INFO
+{
+    PMAIN_WND_INFO pInfo;
+    SC_HANDLE hSCManager;
+    SC_HANDLE hMainService;
+} STOP_INFO, *PSTOP_INFO;
+
 /* control */
-BOOL Control(PMAIN_WND_INFO Info, HWND hProgDlg, DWORD Control);
+BOOL Control(PMAIN_WND_INFO Info, HWND hProgress, DWORD Control);
 BOOL DoStop(PMAIN_WND_INFO Info);
 BOOL DoPause(PMAIN_WND_INFO Info);
 BOOL DoResume(PMAIN_WND_INFO Info);
 
 /* progress.c */
-HWND CreateProgressDialog(HWND hParent, LPTSTR lpServiceName, UINT Event);
-VOID IncrementProgressBar(HWND hProgDlg);
-VOID CompleteProgressBar(HWND hProgDlg);
+#define DEFAULT_STEP 0
+HWND CreateProgressDialog(HWND hParent, UINT LabelId);
+BOOL DestroyProgressDialog(HWND hProgress, BOOL bComplete);
+VOID InitializeProgressDialog(HWND hProgress, LPWSTR lpServiceName);
+VOID IncrementProgressBar(HWND hProgress, UINT NewPos);
+VOID CompleteProgressBar(HWND hProgress);
 
 /* query.c */
 ENUM_SERVICE_STATUS_PROCESS* GetSelectedService(PMAIN_WND_INFO Info);
@@ -97,12 +114,47 @@ BOOL RefreshServiceList(PMAIN_WND_INFO Info);
 BOOL UpdateServiceStatus(ENUM_SERVICE_STATUS_PROCESS* pService);
 BOOL GetServiceList(PMAIN_WND_INFO Info, DWORD *NumServices);
 
-/* reg */
-BOOL SetDescription(LPTSTR, LPTSTR);
 
 /* propsheet.c */
+typedef struct _SERVICEPROPSHEET
+{
+    PMAIN_WND_INFO Info;
+    ENUM_SERVICE_STATUS_PROCESS *pService;
+    HIMAGELIST hDependsImageList;
+    HWND hDependsWnd;
+    HWND hDependsTreeView1;
+    HWND hDependsTreeView2;
+} SERVICEPROPSHEET, *PSERVICEPROPSHEET;
+
+
+HTREEITEM AddItemToTreeView(HWND hTreeView, HTREEITEM hRoot, LPTSTR lpDisplayName, LPTSTR lpServiceName, ULONG serviceType, BOOL bHasChildren);
+
+/* 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);
+VOID TV1_AddDependantsToTree(PSERVICEPROPSHEET pDlgInfo, HTREEITEM hParent, LPTSTR lpServiceName);
+
+/* tv2_dependencies */
+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);
 
+/* propsheet window procs */
+INT_PTR CALLBACK DependenciesPageProc(HWND hwndDlg,
+                                      UINT uMsg,
+                                      WPARAM wParam,
+                                      LPARAM lParam);
+INT_PTR CALLBACK GeneralPageProc(HWND hwndDlg,
+                                 UINT uMsg,
+                                 WPARAM wParam,
+                                 LPARAM lParam);
+
 /* export.c */
 VOID ExportFile(PMAIN_WND_INFO Info);
 
@@ -128,9 +180,10 @@ INT GetTextFromEdit(OUT LPTSTR lpString,
                     IN UINT Res);
 VOID GetError(VOID);
 VOID DisplayString(PTCHAR);
-HIMAGELIST InitImageList(UINT NumButtons,
-                         UINT StartResource,
+HIMAGELIST InitImageList(UINT StartResource,
+                         UINT EndResource,
                          UINT Width,
-                         UINT Height);
+                         UINT Height,
+                         ULONG type);
 
 #endif /* __SERVMAN_PRECOMP_H */