CsrApiCallHandler(PCSRSS_PROCESS_DATA ProcessData,
PCSR_API_MESSAGE Request)
{
- BOOL Found = FALSE;
unsigned DefIndex;
ULONG Type;
DPRINT("CSR: API Number: %x ServerID: %x\n",Type, Request->Type >> 16);
/* FIXME: Extract DefIndex instead of looping */
- for (DefIndex = 0; ! Found && DefIndex < ApiDefinitionsCount; DefIndex++)
+ for (DefIndex = 0; DefIndex < ApiDefinitionsCount; DefIndex++)
{
if (ApiDefinitions[DefIndex].Type == Type)
{
}
else
{
- (ApiDefinitions[DefIndex].Handler)(ProcessData, Request);
- Found = TRUE;
+ Request->Status = (ApiDefinitions[DefIndex].Handler)(ProcessData, Request);
}
+ return;
}
}
- if (! Found)
- {
- DPRINT1("CSR: Unknown request type 0x%x\n", Request->Type);
- Request->Header.u1.s1.TotalLength = sizeof(CSR_API_MESSAGE);
- Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - sizeof(PORT_MESSAGE);
- Request->Status = STATUS_INVALID_SYSTEM_SERVICE;
- }
+ DPRINT1("CSR: Unknown request type 0x%x\n", Request->Type);
+ Request->Header.u1.s1.TotalLength = sizeof(CSR_API_MESSAGE);
+ Request->Header.u1.s1.DataLength = sizeof(CSR_API_MESSAGE) - sizeof(PORT_MESSAGE);
+ Request->Status = STATUS_INVALID_SYSTEM_SERVICE;
}
BOOL
(VOID)CallHardError(ProcessData, Message);
}
-NTSTATUS STDCALL
+NTSTATUS WINAPI
CsrpHandleConnectionRequest (PPORT_MESSAGE Request,
IN HANDLE hApiListenPort)
{
}
VOID
-STDCALL
+WINAPI
ClientConnectionThread(HANDLE ServerPort)
{
NTSTATUS Status;
}
if (ProcessData->Terminated)
{
- DPRINT1("Message %d: process %d already terminated\n",
- Request->Type, (ULONG)Request->Header.ClientId.UniqueProcess);
+ DPRINT1("Message %d: process %p already terminated\n",
+ Request->Type, Request->Header.ClientId.UniqueProcess);
continue;
}
RtlExitUserThread(STATUS_SUCCESS);
}
-/**********************************************************************
- * NAME
- * ServerApiPortThread/1
- *
- * DESCRIPTION
- * Handle connection requests from clients to the port
- * "\Windows\ApiPort".
- */
-#if 0
-DWORD STDCALL
-ServerApiPortThread (HANDLE hApiListenPort)
-{
- NTSTATUS Status = STATUS_SUCCESS;
- BYTE RawRequest[sizeof(PORT_MESSAGE) + sizeof(CSR_CONNECTION_INFO)];
- PPORT_MESSAGE Request = (PPORT_MESSAGE)RawRequest;
-
- DPRINT("CSR: %s called", __FUNCTION__);
-
- for (;;)
- {
- REMOTE_PORT_VIEW LpcRead;
- LpcRead.Length = sizeof(LpcRead);
-
- Status = NtListenPort (hApiListenPort, Request);
- if (!NT_SUCCESS(Status))
- {
- DPRINT1("CSR: NtListenPort() failed, status=%x\n", Status);
- break;
- }
-
- Status = CsrpHandleConnectionRequest(Request, hApiListenPort);
- if(!NT_SUCCESS(Status))
- {
- DPRINT1("CSR: %s: SmpHandleConnectionRequest failed (Status=0x%08lx)\n",
- __FUNCTION__, Status);
- break;
- }
- }
-
- NtClose(hApiListenPort);
- NtTerminateThread(NtCurrentThread(), Status);
- return 0;
-}
-#endif
-
/**********************************************************************
* NAME
* ServerSbApiPortThread/1
* "\Windows\SbApiPort". We will accept only one
* connection request (from the SM).
*/
-DWORD STDCALL
+DWORD WINAPI
ServerSbApiPortThread (HANDLE hSbApiPortListen)
{
HANDLE hConnectedPort = (HANDLE) 0;