WindowsXP-SP1/admin/snapin/filemgmt/svcutils.h
2020-09-30 16:53:49 +02:00

165 lines
4.2 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