165 lines
4.1 KiB
C
165 lines
4.1 KiB
C
|
// SvcUtils.h
|
||
|
|
||
|
#include "stdutils.h" // FCompareMachineNames
|
||
|
|
||
|
// Help file for filemgmt.dll
|
||
|
const TCHAR g_szHelpFileFilemgmt[] = _T("filemgmt.hlp"); // Not subject to localization
|
||
|
|
||
|
|
||
|
// This enumeration should not be changed unless the string resources
|
||
|
// and all the array indices updated.
|
||
|
enum
|
||
|
{
|
||
|
iServiceActionNil = -1,
|
||
|
iServiceActionStart, // Start service
|
||
|
iServiceActionStop, // Stop service
|
||
|
iServiceActionPause, // Pause service
|
||
|
iServiceActionResume, // Resume service
|
||
|
iServiceActionRestart, // Stop and Start service
|
||
|
|
||
|
iServiceActionMax // Must be last
|
||
|
};
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////
|
||
|
// String szAbend
|
||
|
// This string is used for the 'Service Failure Recovery' dialog
|
||
|
// to append the 'Fail Count' to the command line. This string
|
||
|
// is not localized, so it should not be moved into the
|
||
|
// resources.
|
||
|
//
|
||
|
// NOTES
|
||
|
// The variable should be renamed to reflect its content. Currently
|
||
|
// 'abend' means 'fails'.
|
||
|
const TCHAR szAbend[] = L" /fail=%1%";
|
||
|
|
||
|
|
||
|
//
|
||
|
// Service running state
|
||
|
//
|
||
|
extern CString g_strSvcStateStarted;
|
||
|
extern CString g_strSvcStateStarting;
|
||
|
extern CString g_strSvcStateStopped;
|
||
|
extern CString g_strSvcStateStopping;
|
||
|
extern CString g_strSvcStatePaused;
|
||
|
extern CString g_strSvcStatePausing;
|
||
|
extern CString g_strSvcStateResuming;
|
||
|
|
||
|
//
|
||
|
// Service startup type
|
||
|
//
|
||
|
extern CString g_strSvcStartupBoot;
|
||
|
extern CString g_strSvcStartupSystem;
|
||
|
extern CString g_strSvcStartupAutomatic;
|
||
|
extern CString g_strSvcStartupManual;
|
||
|
extern CString g_strSvcStartupDisabled;
|
||
|
|
||
|
//
|
||
|
// Service startup account
|
||
|
// JonN 188203 11/13/00
|
||
|
//
|
||
|
extern CString g_strLocalSystem;
|
||
|
extern CString g_strLocalService;
|
||
|
extern CString g_strNetworkService;
|
||
|
|
||
|
extern CString g_strUnknown;
|
||
|
extern CString g_strLocalMachine;
|
||
|
|
||
|
|
||
|
void Service_LoadResourceStrings();
|
||
|
|
||
|
LPCTSTR Service_PszMapStateToName(DWORD dwServiceState, BOOL fLongString = FALSE);
|
||
|
|
||
|
// -1L is blank string
|
||
|
LPCTSTR Service_PszMapStartupTypeToName(DWORD dwStartupType);
|
||
|
|
||
|
// JonN 11/14/00 188203 support LocalService/NetworkService
|
||
|
LPCTSTR Service_PszMapStartupAccountToName(LPCTSTR pcszStartupAccount);
|
||
|
|
||
|
BOOL Service_FGetServiceButtonStatus(
|
||
|
SC_HANDLE hScManager,
|
||
|
CONST TCHAR * pszServiceName,
|
||
|
OUT BOOL rgfEnableButton[iServiceActionMax],
|
||
|
OUT DWORD * pdwCurrentState = NULL,
|
||
|
BOOL fSilentError = FALSE);
|
||
|
|
||
|
void Service_SplitCommandLine(
|
||
|
LPCTSTR pszFullCommand,
|
||
|
CString * pstrBinaryPath,
|
||
|
CString * pstrParameters,
|
||
|
BOOL * pfAbend = NULL);
|
||
|
|
||
|
void Service_UnSplitCommandLine(
|
||
|
CString * pstrFullCommand,
|
||
|
LPCTSTR pszBinaryPath,
|
||
|
LPCTSTR pszParameters);
|
||
|
|
||
|
void GetMsg(OUT CString& strMsg, DWORD dwErr, UINT wIdString = 0, ...);
|
||
|
|
||
|
// title is "Shared Folders"
|
||
|
INT DoErrMsgBox(HWND hwndParent, UINT uType, DWORD dwErr, UINT wIdString = 0, ...);
|
||
|
|
||
|
// title is "Services"
|
||
|
INT DoServicesErrMsgBox(HWND hwndParent, UINT uType, DWORD dwErr, UINT wIdString = 0, ...);
|
||
|
|
||
|
BOOL UiGetUser(
|
||
|
HWND hwndOwner,
|
||
|
BOOL fIsContainer,
|
||
|
LPCTSTR pszServerName,
|
||
|
IN OUT CString& strrefUser);
|
||
|
|
||
|
// Help Support
|
||
|
#define HELP_DIALOG_TOPIC(DialogName) g_aHelpIDs_##DialogName
|
||
|
|
||
|
BOOL DoHelp(LPARAM lParam, const DWORD rgzHelpIDs[]);
|
||
|
BOOL DoContextHelp(WPARAM wParam, const DWORD rgzHelpIDs[]);
|
||
|
|
||
|
|
||
|
#ifdef SNAPIN_PROTOTYPER
|
||
|
/////////////////////////////////////////////////////////////////////
|
||
|
/////////////////////////////////////////////////////////////////////
|
||
|
class CStringIterator
|
||
|
{
|
||
|
private:
|
||
|
CString m_strData; // Data string to parse
|
||
|
CONST TCHAR * m_pszDataNext; // Pointer to the next data to parse
|
||
|
|
||
|
public:
|
||
|
CStringIterator()
|
||
|
{
|
||
|
m_pszDataNext = m_strData;
|
||
|
}
|
||
|
|
||
|
void SetString(CONST TCHAR * pszStringData)
|
||
|
{
|
||
|
m_strData = pszStringData;
|
||
|
m_pszDataNext = m_strData;
|
||
|
}
|
||
|
|
||
|
BOOL FGetNextString(OUT CString& rStringOut)
|
||
|
{
|
||
|
Assert(m_pszDataNext != NULL);
|
||
|
|
||
|
if (*m_pszDataNext == '\0')
|
||
|
{
|
||
|
rStringOut.Empty();
|
||
|
return FALSE;
|
||
|
}
|
||
|
CONST TCHAR * pchStart = m_pszDataNext;
|
||
|
while (*m_pszDataNext != '\0')
|
||
|
{
|
||
|
if (*m_pszDataNext == ';')
|
||
|
{
|
||
|
// HACK: Truncating the string
|
||
|
*(TCHAR *)m_pszDataNext++ = '\0';
|
||
|
break;
|
||
|
}
|
||
|
m_pszDataNext++;
|
||
|
}
|
||
|
rStringOut = pchStart; // Copy the string
|
||
|
return TRUE;
|
||
|
}
|
||
|
}; // CStringIterator
|
||
|
|
||
|
#endif // SNAPIN_PROTOTYPER
|
||
|
|