mirror of
https://github.com/reactos/reactos.git
synced 2024-12-30 19:14:31 +00:00
66 lines
1.8 KiB
C
66 lines
1.8 KiB
C
|
/* $Id: init.c,v 1.5 2002/10/29 04:45:33 rex Exp $
|
||
|
*
|
||
|
* COPYRIGHT: See COPYING in the top level directory
|
||
|
* PROJECT: ReactOS POSIX+ Subsystem
|
||
|
* FILE: reactos/subsys/psx/lib/psxdll/misc/init.c
|
||
|
* PURPOSE: Client initialization
|
||
|
* PROGRAMMER: Emanuele Aliberti
|
||
|
* UPDATE HISTORY:
|
||
|
* 2001-05-06
|
||
|
*/
|
||
|
#define NTOS_MODE_USER
|
||
|
#include <ntos.h>
|
||
|
#include <psx/lpcproto.h>
|
||
|
|
||
|
/* DLL GLOBALS */
|
||
|
int * errno = NULL;
|
||
|
char *** _environ = NULL;
|
||
|
HANDLE ApiPort = INVALID_HANDLE_VALUE;
|
||
|
/*
|
||
|
* Called by startup code in crt0.o, where real
|
||
|
* errno and _environ are actually defined.
|
||
|
*/
|
||
|
VOID STDCALL __PdxInitializeData (int * errno_arg, char *** environ_arg)
|
||
|
{
|
||
|
errno = errno_arg;
|
||
|
_environ = environ_arg;
|
||
|
}
|
||
|
/*
|
||
|
* Called by DLL's entry point when reason==PROCESS_ATTACH.
|
||
|
*/
|
||
|
NTSTATUS STDCALL PsxConnectApiPort (VOID)
|
||
|
{
|
||
|
UNICODE_STRING usApiPortName;
|
||
|
LPWSTR wsApiPortName = L"\\"PSX_NS_SUBSYSTEM_DIRECTORY_NAME"\\"PSX_NS_API_PORT_NAME;
|
||
|
SECURITY_QUALITY_OF_SERVICE Sqos;
|
||
|
ULONG MaxMessageSize = 0;
|
||
|
NTSTATUS Status;
|
||
|
PSX_CONNECT_PORT_DATA ConnectData;
|
||
|
ULONG ConnectDataLength = sizeof ConnectData;
|
||
|
|
||
|
RtlInitUnicodeString (& usApiPortName, wsApiPortName);
|
||
|
RtlZeroMemory (& Sqos, sizeof Sqos);
|
||
|
ConnectData.ConnectionType = PSX_CONNECTION_TYPE_PROCESS;
|
||
|
ConnectData.Version = PSX_LPC_PROTOCOL_VERSION;
|
||
|
ConnectData.PortIdentifier = 0;
|
||
|
Status = NtConnectPort (
|
||
|
& ApiPort,
|
||
|
& usApiPortName,
|
||
|
& Sqos,
|
||
|
NULL,
|
||
|
NULL,
|
||
|
& MaxMessageSize,
|
||
|
& ConnectData,
|
||
|
& ConnectDataLength
|
||
|
);
|
||
|
if (!NT_SUCCESS(Status))
|
||
|
{
|
||
|
/* TODO: emit a diagnostic message */
|
||
|
return Status;
|
||
|
}
|
||
|
/* TODO: save returned data */
|
||
|
return STATUS_SUCCESS;
|
||
|
}
|
||
|
/* EOF */
|
||
|
|