11#define WIN32_NO_STATUS
13#define COM_NO_WINDOWS_H
27#include <services/services.h>
90#define LOCK_TAG 0x4C697041
126 DWORD dwDependenciesLength);
138 DWORD *lpdwDependenciesLength);
static SERVICE_STATUS_HANDLE(WINAPI *pRegisterServiceCtrlHandlerExA)(LPCSTR
VOID ScmQueryServiceLockStatusW(OUT LPQUERY_SERVICE_LOCK_STATUSW lpLockStatus)
DWORD ScmReadString(HKEY hServiceKey, LPCWSTR lpValueName, LPWSTR *lpValue)
DWORD ScmControlService(_In_ HANDLE hControlPipe, _In_ PCWSTR pServiceName, _In_ DWORD dwControl, _In_ SERVICE_STATUS_HANDLE hServiceStatus)
DWORD ScmGetServiceNameFromTag(PTAG_INFO_NAME_FROM_TAG_IN_PARAMS InParams, PTAG_INFO_NAME_FROM_TAG_OUT_PARAMS *OutParams)
DWORD ScmRunLastKnownGood(VOID)
DWORD ScmStartDriver(PSERVICE lpService)
DWORD ScmCreateLastKnownGoodControlSet(VOID)
VOID ScmAutoStartServices(VOID)
PSERVICE ScmGetServiceEntryByResumeCount(DWORD dwResumeCount)
VOID ScmRemoveServiceImage(PSERVICE_IMAGE pServiceImage)
VOID PrintString(LPCSTR fmt,...)
DWORD ScmOpenServiceKey(LPWSTR lpServiceName, REGSAM samDesired, PHKEY phKey)
BOOL ScmIsDeleteFlagSet(HKEY hServiceKey)
VOID ScmUnlockDatabase(VOID)
DWORD ScmWriteSecurityDescriptor(_In_ HKEY hServiceKey, _In_ PSECURITY_DESCRIPTOR pSecurityDescriptor)
struct _SERVICE * PSERVICE
VOID ScmShutdownSecurity(VOID)
DWORD ScmSetServicePassword(IN PCWSTR pszServiceName, IN PCWSTR pszPassword)
DWORD ScmGenerateServiceTag(PSERVICE lpServiceRecord)
struct _SERVICE_IMAGE SERVICE_IMAGE
struct _SERVICE_GROUP * PSERVICE_GROUP
struct _START_LOCK * PSTART_LOCK
DWORD ScmWriteDependencies(HKEY hServiceKey, LPCWSTR lpDependencies, DWORD dwDependenciesLength)
struct _SERVICE_GROUP SERVICE_GROUP
VOID ScmInitNamedPipeCriticalSection(VOID)
DWORD ScmReferenceService(PSERVICE lpService)
VOID ScmQueryServiceLockStatusA(OUT LPQUERY_SERVICE_LOCK_STATUSA lpLockStatus)
DWORD ScmCreateServiceDatabase(VOID)
DWORD ScmStartService(PSERVICE Service, DWORD argc, const PCWSTR *argv)
VOID ScmDeleteServiceRecord(PSERVICE lpService)
VOID ScmAutoShutdownServices(VOID)
BOOL ScmLockDatabaseExclusive(VOID)
DWORD ScmReadSecurityDescriptor(_In_ HKEY hServiceKey, _Out_ PSECURITY_DESCRIPTOR *ppSecurityDescriptor)
VOID ScmGetBootAndSystemDriverState(VOID)
DWORD ScmAcquireServiceStartLock(IN BOOL IsServiceController, OUT LPSC_RPC_LOCK lpLock)
DWORD ScmDereferenceService(PSERVICE lpService)
DWORD ScmCreateGroupList(VOID)
DWORD ScmReleaseServiceStartLock(IN OUT LPSC_RPC_LOCK lpLock)
DWORD ScmCreateNewServiceRecord(LPCWSTR lpServiceName, PSERVICE *lpServiceRecord, DWORD dwServiceType, DWORD dwStartType)
PSERVICE ScmGetServiceEntryByName(LPCWSTR lpServiceName)
DWORD ScmAcceptBoot(VOID)
VOID ScmStartRpcServer(VOID)
DWORD ScmInitializeSecurity(VOID)
PSECURITY_DESCRIPTOR pPipeSD
BOOL ScmLockDatabaseShared(VOID)
struct _SERVICE_IMAGE * PSERVICE_IMAGE
LIST_ENTRY ServiceListHead
DWORD ScmReadDependencies(HKEY hServiceKey, LPWSTR *lpDependencies, DWORD *lpdwDependenciesLength)
DWORD SetSecurityServicesEvent(VOID)
PSERVICE_GROUP ScmGetServiceGroupByName(_In_ LPCWSTR lpGroupName)
DWORD ScmMarkServiceForDelete(PSERVICE pService)
DWORD ScmDeleteRegKey(_In_ HKEY hKey, _In_ PCWSTR pszSubKey)
VOID ScmDeleteNamedPipeCriticalSection(VOID)
VOID ScmShutdownServiceDatabase(VOID)
PSERVICE ScmGetServiceEntryByDisplayName(LPCWSTR lpDisplayName)
DWORD ScmCreateDefaultServiceSD(PSECURITY_DESCRIPTOR *ppSecurityDescriptor)
DWORD ScmSetServiceGroup(PSERVICE lpService, LPCWSTR lpGroupName)
DWORD ScmCreateServiceKey(LPCWSTR lpServiceName, REGSAM samDesired, PHKEY phKey)
DWORD ScmControlDriver(PSERVICE lpService, DWORD dwControl, LPSERVICE_STATUS lpServiceStatus)
struct _START_LOCK START_LOCK
VOID ScmLogEvent(DWORD dwEventId, WORD wType, WORD wStrings, LPCWSTR *lpStrings)
DWORD ScmDecryptPassword(_In_ PVOID ContextHandle, _In_ PBYTE pPassword, _In_ DWORD dwPasswordSize, _Out_ PWSTR *pDecryptedPassword)
LIST_ENTRY GroupListEntry
LIST_ENTRY ImageListEntry
PSECURITY_DESCRIPTOR pSecurityDescriptor
LIST_ENTRY ServiceListEntry
SERVICE_STATUS_HANDLE hServiceStatus
_In_ LPCSTR _Out_writes_to_opt_ cchDisplayName LPSTR lpDisplayName