1 /* $Id: lpcsrv.c,v 1.7 2000/06/29 23:35:10 dwelch Exp $
3 * DESCRIPTION: Simple LPC Server
4 * PROGRAMMER: David Welch
17 void debug_printf(char* fmt
, ...)
23 vsprintf(buffer
,fmt
,args
);
24 WriteConsoleA(OutputHandle
, buffer
, strlen(buffer
), NULL
, NULL
);
29 int main(int argc
, char* argv
[])
31 UNICODE_STRING PortName
;
32 OBJECT_ATTRIBUTES ObjectAttributes
;
34 HANDLE NamedPortHandle
;
36 LPC_MAX_MESSAGE ConnectMsg
;
38 printf("(lpcsrv.exe) Lpc test server\n");
40 RtlInitUnicodeString(&PortName
, L
"\\TestPort");
41 InitializeObjectAttributes(&ObjectAttributes
,
47 printf("(lpcsrv.exe) Creating port\n");
48 Status
= NtCreatePort(&NamedPortHandle
,
53 if (!NT_SUCCESS(Status
))
55 printf("(lpcsrv.exe) Failed to create port (Status = 0x%08lX)\n", Status
);
60 printf("(lpcsrv.exe) Listening for connections\n");
61 Status
= NtListenPort(NamedPortHandle
,
63 if (!NT_SUCCESS(Status
))
65 printf("(lpcsrv.exe) Failed to listen for connections (Status = 0x%08lX)\n", Status
);
69 printf("(lpcsrv.exe) Accepting connections\n");
70 Status
= NtAcceptConnectPort(&PortHandle
,
76 if (!NT_SUCCESS(Status
))
78 printf("(lpcsrv.exe) Failed to accept connection (Status = 0x%08lX)\n", Status
);
82 printf("(lpcsrv.exe) Completing connection\n");
83 Status
= NtCompleteConnectPort(PortHandle
);
84 if (!NT_SUCCESS(Status
))
86 printf("(lpcsrv.exe) Failed to complete connection (Status = 0x%08lX)\n", Status
);
92 LPC_MAX_MESSAGE Request
;
94 Status
= NtReplyWaitReceivePort(PortHandle
,
98 if (!NT_SUCCESS(Status
))
100 printf("(lpcsrv.exe) Failed to receive request (Status = 0x%08lX)\n", Status
);
104 printf("(lpcsrv.exe) Message contents are <%s>\n",