mirror of
https://github.com/reactos/reactos.git
synced 2024-12-27 01:24:38 +00:00
A more likely demo VMS server (it should not block, because it is chain-called from the listenig thread in csrsrv.dll.
svn path=/trunk/; revision=17311
This commit is contained in:
parent
749cee8834
commit
3119900771
1 changed files with 28 additions and 21 deletions
|
@ -37,30 +37,21 @@ HANDLE VmsApiPort = NULL;
|
||||||
VOID STDCALL VmsStaticServerThread (PVOID x)
|
VOID STDCALL VmsStaticServerThread (PVOID x)
|
||||||
{
|
{
|
||||||
NTSTATUS Status = STATUS_SUCCESS;
|
NTSTATUS Status = STATUS_SUCCESS;
|
||||||
LPC_MAX_MESSAGE Request;
|
PPORT_MESSAGE Request = (PPORT_MESSAGE) x;
|
||||||
PPORT_MESSAGE Reply = NULL;
|
PPORT_MESSAGE Reply = NULL;
|
||||||
ULONG MessageType = 0;
|
ULONG MessageType = 0;
|
||||||
|
|
||||||
while (TRUE)
|
DPRINT("VMSSRV: %s called\n", __FUNCTION__);
|
||||||
{
|
|
||||||
Status = NtReplyWaitReceivePort (VmsApiPort,
|
MessageType = Request->u2.s2.Type;
|
||||||
0,
|
DPRINT("VMSSRV: %s received a message (Type=%d)\n",
|
||||||
Reply,
|
|
||||||
(PPORT_MESSAGE) & Request);
|
|
||||||
if(NT_SUCCESS(Status))
|
|
||||||
{
|
|
||||||
MessageType = Request.Header.u2.s2.Type;
|
|
||||||
DPRINT("VMS: %s received a message (Type=%d)\n",
|
|
||||||
__FUNCTION__, MessageType);
|
__FUNCTION__, MessageType);
|
||||||
switch(MessageType)
|
switch (MessageType)
|
||||||
{
|
{
|
||||||
default:
|
default:
|
||||||
continue;
|
Reply = Request;
|
||||||
}
|
Status = NtReplyPort (VmsApiPort, Reply);
|
||||||
}else{
|
break;
|
||||||
DPRINT("VMS: %s: NtReplyWaitReceivePort failed (Status=%08lx)\n",
|
|
||||||
__FUNCTION__, Status);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,7 +62,23 @@ VOID STDCALL VmsStaticServerThread (PVOID x)
|
||||||
NTSTATUS STDCALL ServerDllInitialization (ULONG ArgumentCount,
|
NTSTATUS STDCALL ServerDllInitialization (ULONG ArgumentCount,
|
||||||
LPWSTR *Argument)
|
LPWSTR *Argument)
|
||||||
{
|
{
|
||||||
return CsrAddStaticServerThread (VmsStaticServerThread);
|
NTSTATUS Status = STATUS_SUCCESS;
|
||||||
|
|
||||||
|
DPRINT("VMSSRV: %s called\n", __FUNCTION__);
|
||||||
|
|
||||||
|
// Get the listening port from csrsrv.dll
|
||||||
|
VmsApiPort = CsrQueryApiPort ();
|
||||||
|
if (NULL == VmsApiPort)
|
||||||
|
{
|
||||||
|
return STATUS_UNSUCCESSFUL;
|
||||||
|
}
|
||||||
|
// Register our message dispatcher
|
||||||
|
Status = CsrAddStaticServerThread (VmsStaticServerThread);
|
||||||
|
if (NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
//TODO: perform the real VMS server internal initialization here
|
||||||
|
}
|
||||||
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EOF */
|
/* EOF */
|
||||||
|
|
Loading…
Reference in a new issue