ImageEntry = ImageEntry->Flink;
}
- DPRINT1("Couldn't find a matching image\n");
+ DPRINT("Couldn't find a matching image\n");
return NULL;
OVERLAPPED Overlapped = {0, 0, 0, 0, 0};
#endif
- DPRINT1("ScmWaitForServiceConnect()\n");
+ DPRINT("ScmWaitForServiceConnect()\n");
#ifdef USE_ASYNCHRONOUS_IO
Overlapped.hEvent = (HANDLE)NULL;
&Overlapped);
if (bResult == FALSE)
{
- DPRINT1("ConnectNamedPipe() returned FALSE\n");
+ DPRINT("ConnectNamedPipe() returned FALSE\n");
dwError = GetLastError();
if (dwError == ERROR_IO_PENDING)
{
- DPRINT1("dwError: ERROR_IO_PENDING\n");
+ DPRINT("dwError: ERROR_IO_PENDING\n");
dwError = WaitForSingleObject(Service->lpImage->hControlPipe,
dwPipeTimeout);
- DPRINT1("WaitForSingleObject() returned %lu\n", dwError);
+ DPRINT("WaitForSingleObject() returned %lu\n", dwError);
if (dwError == WAIT_TIMEOUT)
{
+ DPRINT("WaitForSingleObject() returned WAIT_TIMEOUT\n");
+
bResult = CancelIo(Service->lpImage->hControlPipe);
if (bResult == FALSE)
{
}
}
- DPRINT1("Control pipe connected!\n");
+ DPRINT("Control pipe connected!\n");
Overlapped.hEvent = (HANDLE) NULL;
&Overlapped);
if (bResult == FALSE)
{
- DPRINT1("ReadFile() returned FALSE\n");
+ DPRINT("ReadFile() returned FALSE\n");
dwError = GetLastError();
if (dwError == ERROR_IO_PENDING)
{
- DPRINT1("dwError: ERROR_IO_PENDING\n");
+ DPRINT("dwError: ERROR_IO_PENDING\n");
dwError = WaitForSingleObject(Service->lpImage->hControlPipe,
dwPipeTimeout);
if (dwError == WAIT_TIMEOUT)
{
- DPRINT1("WaitForSingleObject() returned WAIT_TIMEOUT\n");
+ DPRINT("WaitForSingleObject() returned WAIT_TIMEOUT\n");
bResult = CancelIo(Service->lpImage->hControlPipe);
if (bResult == FALSE)
}
else if (dwError == ERROR_SUCCESS)
{
- DPRINT1("WaitForSingleObject() returned ERROR_SUCCESS\n");
+ DPRINT("WaitForSingleObject() returned ERROR_SUCCESS\n");
- DPRINT1("Process Id: %lu\n", dwProcessId);
+ DPRINT("Process Id: %lu\n", dwProcessId);
bResult = GetOverlappedResult(Service->lpImage->hControlPipe,
&Overlapped,
if (dwControl >= 128 && dwControl <= 255)
DesiredAccess = SERVICE_USER_DEFINED_CONTROL;
else
- DesiredAccess = SERVICE_QUERY_CONFIG |
- SERVICE_CHANGE_CONFIG |
- SERVICE_QUERY_STATUS |
- SERVICE_START |
- SERVICE_PAUSE_CONTINUE;
+ return ERROR_INVALID_PARAMETER;
break;
}
return ERROR_INVALID_HANDLE;
}
- /* FIXME: Lock the service list */
+ /* Lock the service database */
+ ScmLockDatabaseShared();
+
/* hack */
Status = RtlCreateSecurityDescriptor(&ObjectDescriptor, SECURITY_DESCRIPTOR_REVISION);
cbBufSize,
&dwBytesNeeded);
- /* FIXME: Unlock the service list */
+ /* Unlock the service database */
+ ScmUnlockDatabase();
if (NT_SUCCESS(Status))
{
return RtlNtStatusToDosError(Status);
RpcRevertToSelf();
+#endif
- /* FIXME: Lock service database */
+ /* Lock the service database exclusive */
+ ScmLockDatabaseExclusive();
+#if 0
Status = RtlSetSecurityObject(dwSecurityInformation,
(PSECURITY_DESCRIPTOR)lpSecurityDescriptor,
&lpService->lpSecurityDescriptor,
NtClose(hToken);
#endif
- /* FIXME: Unlock service database */
+ /* Unlock service database */
+ ScmUnlockDatabase();
DPRINT("RSetServiceObjectSecurity() done (Error %lu)\n", dwError);
return ERROR_INVALID_HANDLE;
}
- /* Lock the srevice database shared */
+ /* Lock the service database shared */
ScmLockDatabaseShared();
/* Return service status information */