2020-09-30 16:53:55 +02:00

215 lines
5.9 KiB
C++

//+---------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1993.
//
// File: proto.hxx
//
// Contents: Shared function prototypes.
//
// Classes: None.
//
// Functions: RequestService
//
// History: 25-Oct-95 MarkBl Created
//
//----------------------------------------------------------------------------
#ifndef __PROTO_HXX__
#define __PROTO_HXX__
#include "..\inc\defines.hxx"
VOID
GetExeNameFromCmdLine(
LPCWSTR,
DWORD,
TCHAR *);
typedef struct _JOB_CREDENTIALS {
DWORD ccAccount;
WCHAR wszAccount[MAX_USERNAME + 1];
DWORD ccDomain;
WCHAR wszDomain[MAX_DOMAINNAME + 1];
DWORD ccPassword;
WCHAR wszPassword[MAX_PASSWORD + 1];
BOOL fIsPasswordNull;
} JOB_CREDENTIALS, * PJOB_CREDENTIALS;
HRESULT
GetAccountInformation(
LPCWSTR pwszJobName,
PJOB_CREDENTIALS pjc);
HRESULT
GetNSAccountInformation(
PJOB_CREDENTIALS pjc);
HRESULT
GetFileInformation(
LPCWSTR pwszFileName,
DWORD * pcbOwnerSid,
PSID * ppOwnerSid,
PSECURITY_DESCRIPTOR * ppOwnerSecDescr,
UUID * pJobID,
DWORD ccOwnerName,
DWORD ccOwnerDomain,
DWORD ccApplication,
WCHAR wszOwnerName[],
WCHAR wszOwnerDomain[],
WCHAR wszApplication[],
FILETIME * pftCreationTime,
DWORD * pdwVolumeSerialNo);
HRESULT
InitSS(VOID);
VOID
UninitSS(VOID);
BOOL
InitializeSAWindow(VOID);
VOID
UninitializeSAWindow(VOID);
HANDLE
ImpersonateLoggedInUser(VOID);
HANDLE
ImpersonateUser(
HANDLE hUserToken,
HANDLE ThreadHandle);
BOOL StopImpersonating(
HANDLE ThreadHandle,
BOOL fCloseHandle);
BOOL
IsAdminFileOwner(
LPCWSTR pwszFile);
HRESULT
OpenLogFile(
VOID);
VOID
CloseLogFile(
VOID);
//+---------------------------------------------------------------------------
//
// Function: LogTaskStatus
//
// Purpose: Log successful task operations.
//
// Arguments: [ptszTaskName] - the task name.
// [ptszTaskTarget] - the application/document name.
// [uMsgID] - this would typically be either:
// IDS_LOG_JOB_STATUS_STARTED or
// IDS_LOG_JOB_STATUS_FINISHED
// [dwExitCode] - if uMsgID is IDS_LOG_JOB_STATUS_FINISHED,
// it is the task exit code; ignored otherwise.
//
//----------------------------------------------------------------------------
extern "C"
VOID
LogTaskStatus(
LPCTSTR ptszTaskName,
LPTSTR ptszTaskTarget,
UINT uMsgID,
DWORD dwExitCode = 0);
//+---------------------------------------------------------------------------
//
// Function: LogTaskError
//
// Purpose: Log task warnings and errors.
//
// Arguments: [ptszTaskName] - the task name.
// [ptszTaskTarget] - the application/document name.
// [uSeverityMsgID] - this would typically be either:
// IDS_LOG_JOB_NAME_WARNING or
// IDS_LOG_JOB_NAME_ERROR
// [uErrorClassMsgID] - this indicates the class of error, such
// as "Unable to start task" or "Forced to
// close"
// [pst] - the time when the error occured; if NULL,
// enters the current time.
// [dwErrorCode] - if non-zero, then an error from the OS
// that would be expanded by FormatMessage.
// [uHelpHintMsgID] - if an error, then a suggestion as to a
// possible remedy.
//
//----------------------------------------------------------------------------
VOID
LogTaskError(
LPCTSTR ptszTaskName,
LPCTSTR ptszTaskTarget,
UINT uSeverityMsgID,
UINT uErrorClassMsgID,
LPSYSTEMTIME pst,
DWORD dwErrCode = 0,
UINT uHelpHintMsgID = 0);
//+---------------------------------------------------------------------------
//
// Function: LogServiceEvent
//
// Purpose: Note the starting, stoping, pausing, and continuing of the
// service.
//
// Arguments: [uStrId] - a string identifying the event.
//
//----------------------------------------------------------------------------
VOID
LogServiceEvent(
UINT uStrId);
//+---------------------------------------------------------------------------
//
// Function: LogServiceError
//
// Purpose: Log service failures.
//
// Arguments: [uErrorClassMsgID] - as above.
// [dwErrCode] - as above.
// [uHelpHintMsgID] - as above.
//
//----------------------------------------------------------------------------
VOID
LogServiceError(
UINT uErrorClassMsgID,
DWORD dwErrCode,
UINT uHelpHintMsgID = 0);
//+---------------------------------------------------------------------------
//
// Function: LogMissedRuns
//
// Synopsis: Write details about missed runs to the log file.
//
// Arguments: [pstLastRun], [pstNow] - times between which runs were missed.
//
//----------------------------------------------------------------------------
VOID
LogMissedRuns(
const SYSTEMTIME * pstLastRun,
const SYSTEMTIME * pstNow);
HRESULT
RequestService(
CTask * pTask);
VOID
StopRpcServer(
VOID);
DWORD GetCurrentServiceState(VOID);
inline BOOL IsServiceStopping(VOID) {
return(GetCurrentServiceState() == SERVICE_STOP_PENDING ||
GetCurrentServiceState() == SERVICE_STOPPED);
}
#endif // __PROTO_HXX__