mirror of
https://github.com/reactos/reactos.git
synced 2026-05-30 23:33:24 +08:00
[SERVICES] Implement RI_ScSetServiceBitsA/W
- RI_ScSetServiceBitsA: Just call RI_ScSetServiceBitsW. - RI_ScSetServiceBitsW: Store the service bits in the service list entry. TODO: Merge all service bits in a global variable and pass it to the server service. Maybe use netapi.I_NetServerSetServiceBits(Ex)?
This commit is contained in:
@@ -1860,8 +1860,41 @@ RI_ScSetServiceBitsW(
|
||||
int bUpdateImmediately,
|
||||
wchar_t *lpString)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return ERROR_CALL_NOT_IMPLEMENTED;
|
||||
PSERVICE pService;
|
||||
|
||||
DPRINT("RI_ScSetServiceBitsW(%p %lx %d %d %S)\n",
|
||||
hServiceStatus, dwServiceBits, bSetBitsOn,
|
||||
bUpdateImmediately, lpString);
|
||||
|
||||
if (ScmShutdown)
|
||||
return ERROR_SHUTDOWN_IN_PROGRESS;
|
||||
|
||||
if (lpString != NULL)
|
||||
return ERROR_INVALID_PARAMETER;
|
||||
|
||||
if (hServiceStatus == 0)
|
||||
{
|
||||
DPRINT("hServiceStatus == NULL!\n");
|
||||
return ERROR_INVALID_HANDLE;
|
||||
}
|
||||
|
||||
// FIXME: Validate the status handle
|
||||
pService = (PSERVICE)hServiceStatus;
|
||||
|
||||
if (bSetBitsOn)
|
||||
{
|
||||
DPRINT("Old service bits: %08lx\n", pService->dwServiceBits);
|
||||
pService->dwServiceBits |= dwServiceBits;
|
||||
DPRINT("New service bits: %08lx\n", pService->dwServiceBits);
|
||||
}
|
||||
else
|
||||
{
|
||||
DPRINT("Old service bits: %08lx\n", pService->dwServiceBits);
|
||||
pService->dwServiceBits &= ~dwServiceBits;
|
||||
DPRINT("New service bits: %08lx\n", pService->dwServiceBits);
|
||||
}
|
||||
|
||||
return ERROR_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@@ -3335,8 +3368,17 @@ RI_ScSetServiceBitsA(
|
||||
int bUpdateImmediately,
|
||||
char *lpString)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return ERROR_CALL_NOT_IMPLEMENTED;
|
||||
if (ScmShutdown)
|
||||
return ERROR_SHUTDOWN_IN_PROGRESS;
|
||||
|
||||
if (lpString != NULL)
|
||||
return ERROR_INVALID_PARAMETER;
|
||||
|
||||
return RI_ScSetServiceBitsW(hServiceStatus,
|
||||
dwServiceBits,
|
||||
bSetBitsOn,
|
||||
bUpdateImmediately,
|
||||
NULL);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -71,6 +71,8 @@ typedef struct _SERVICE
|
||||
DWORD dwErrorControl;
|
||||
DWORD dwTag;
|
||||
|
||||
DWORD dwServiceBits;
|
||||
|
||||
ULONG Flags;
|
||||
|
||||
PSECURITY_DESCRIPTOR pSecurityDescriptor;
|
||||
|
||||
Reference in New Issue
Block a user