140 lines
3.7 KiB
C++
140 lines
3.7 KiB
C++
|
//+--------------------------------------------------------------------------
|
||
|
//
|
||
|
// Copyright (c) 1997-1999 Microsoft Corporation
|
||
|
//
|
||
|
// File: postsrv.cpp
|
||
|
//
|
||
|
// Contents: Post service initialize routine
|
||
|
//
|
||
|
// History:
|
||
|
//
|
||
|
//---------------------------------------------------------------------------
|
||
|
#include "pch.cpp"
|
||
|
#include "postsrv.h"
|
||
|
#include "tlsjob.h"
|
||
|
#include "globals.h"
|
||
|
#include "init.h"
|
||
|
|
||
|
|
||
|
extern BOOL g_bReportToSCM;
|
||
|
|
||
|
DWORD
|
||
|
PostServiceInit()
|
||
|
{
|
||
|
DWORD dwStatus = ERROR_SUCCESS;
|
||
|
FILETIME ftTime;
|
||
|
HRESULT hrStatus = NULL;
|
||
|
|
||
|
|
||
|
//
|
||
|
// Initialize work manager
|
||
|
//
|
||
|
dwStatus = TLSWorkManagerInit();
|
||
|
|
||
|
|
||
|
hrStatus = g_pWriter->Initialize (idWriter, // id of writer
|
||
|
L"TermServLicensing", // name of writer
|
||
|
true, // system service
|
||
|
false, // bootable state
|
||
|
L"", // files to include
|
||
|
L""); // files to exclude
|
||
|
|
||
|
if (FAILED (hrStatus))
|
||
|
{
|
||
|
|
||
|
DBGPrintf(
|
||
|
DBG_INFORMATION,
|
||
|
DBG_FACILITY_INIT,
|
||
|
DBGLEVEL_FUNCTION_DETAILSIMPLE,
|
||
|
_TEXT("CVssJetWriter::Initialize failed with error code %08x...\n"),
|
||
|
hrStatus
|
||
|
);
|
||
|
}
|
||
|
|
||
|
|
||
|
if(dwStatus != ERROR_SUCCESS)
|
||
|
{
|
||
|
TLSLogEvent(
|
||
|
EVENTLOG_ERROR_TYPE,
|
||
|
TLS_E_WORKMANAGERGENERAL,
|
||
|
TLS_E_WORKMANAGER_STARTUP,
|
||
|
dwStatus
|
||
|
);
|
||
|
|
||
|
dwStatus = TLS_E_SERVICE_STARTUP_WORKMANAGER;
|
||
|
return dwStatus;
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// Initialize namedpipe for client to test connect
|
||
|
//
|
||
|
dwStatus = InitNamedPipeThread();
|
||
|
if(dwStatus != ERROR_SUCCESS)
|
||
|
{
|
||
|
TLSLogErrorEvent(TLS_E_SERVICE_STARTUP_CREATE_THREAD);
|
||
|
dwStatus = TLS_E_SERVICE_STARTUP_CREATE_THREAD;
|
||
|
return dwStatus;
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// Initialize mailslot thread to receive broadcast
|
||
|
//
|
||
|
dwStatus = InitMailSlotThread();
|
||
|
if(dwStatus != ERROR_SUCCESS)
|
||
|
{
|
||
|
TLSLogErrorEvent(TLS_E_SERVICE_STARTUP_CREATE_THREAD);
|
||
|
dwStatus = TLS_E_SERVICE_STARTUP_CREATE_THREAD;
|
||
|
return dwStatus;
|
||
|
}
|
||
|
|
||
|
//
|
||
|
// Initialize thread to put expired permanent licenses back in pool
|
||
|
//
|
||
|
dwStatus = InitExpirePermanentThread();
|
||
|
if(dwStatus != ERROR_SUCCESS)
|
||
|
{
|
||
|
TLSLogErrorEvent(TLS_E_SERVICE_STARTUP_CREATE_THREAD);
|
||
|
dwStatus = TLS_E_SERVICE_STARTUP_CREATE_THREAD;
|
||
|
return dwStatus;
|
||
|
}
|
||
|
|
||
|
DBGPrintf(
|
||
|
DBG_INFORMATION,
|
||
|
DBG_FACILITY_INIT,
|
||
|
DBGLEVEL_FUNCTION_TRACE,
|
||
|
_TEXT("Server is %s (0x%08x)\n"),
|
||
|
(IS_ENFORCE_SERVER(TLS_CURRENT_VERSION)) ? _TEXT("Enforce") : _TEXT("Non-Enforce"),
|
||
|
IS_ENFORCE_SERVER(TLS_CURRENT_VERSION)
|
||
|
);
|
||
|
|
||
|
// must be running as service and not in debug mode
|
||
|
if(g_bReportToSCM == TRUE)
|
||
|
{
|
||
|
if(!(GetLicenseServerRole() & TLSERVER_ENTERPRISE_SERVER))
|
||
|
{
|
||
|
GetServiceLastShutdownTime(&ftTime);
|
||
|
dwStatus = TLSStartAnnounceLicenseServerJob(
|
||
|
g_pszServerPid,
|
||
|
g_szScope,
|
||
|
g_szComputerName,
|
||
|
&ftTime
|
||
|
);
|
||
|
if(dwStatus != ERROR_SUCCESS)
|
||
|
{
|
||
|
return dwStatus;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
GetServiceLastShutdownTime(&ftTime);
|
||
|
dwStatus = TLSStartAnnounceToEServerJob(
|
||
|
g_pszServerPid,
|
||
|
g_szScope,
|
||
|
g_szComputerName,
|
||
|
&ftTime
|
||
|
);
|
||
|
}
|
||
|
|
||
|
ServiceInitPolicyModule();
|
||
|
return dwStatus;
|
||
|
}
|