/* $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 #include /* 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 */