Add lsasrv.dll stub.

svn path=/trunk/; revision=13605
This commit is contained in:
Eric Kohl 2005-02-16 21:59:00 +00:00
parent 70350430a5
commit 159e5dbdb6
7 changed files with 312 additions and 1 deletions

View file

@ -63,7 +63,7 @@ DLLS = acledit aclui advapi32 advpack cabinet cards comctl32 crtdll comdlg32 d3d
msgina msi msimg32 msvcrt20 msvideo mswsock netapi32 ntdll ole32 oleaut32 oledlg olepro32 opengl32 \
packet psapi riched20 richedit rpcrt4 samlib secur32 setupapi shell32 shlwapi smdll snmpapi syssetup \
twain user32 userenv version wininet winmm winspool ws2help ws2_32 wsock32 wshirda dnsapi \
urlmon shdocvw dinput dinput8 dxdiagn devenum dsound $(DLLS_KBD) $(DLLS_CPL) $(DLLS_SHELLEXT)
urlmon shdocvw dinput dinput8 dxdiagn devenum dsound lsasrv $(DLLS_KBD) $(DLLS_CPL) $(DLLS_SHELLEXT)
SUBSYS = smss win32k csrss ntvdm

View file

@ -0,0 +1,8 @@
#ifndef __LSASRV_H
#define __LSASRV_H
NTSTATUS STDCALL
LsapInitLsa(VOID);
#endif /* __LSASRV_H */

View file

@ -0,0 +1,178 @@
/*
*/
#define NTOS_MODE_USER
#include <ntos.h>
#include <windows.h>
//#define NDEBUG
#include <debug.h>
HANDLE PortThreadHandle = NULL;
HANDLE ConnectPortHandle = NULL;
HANDLE MessagePortHandle = NULL;
static NTSTATUS
InitializeLsaPort(VOID)
{
OBJECT_ATTRIBUTES ObjectAttributes;
UNICODE_STRING PortName;
LPC_MAX_MESSAGE Request;
NTSTATUS Status;
ConnectPortHandle = NULL;
MessagePortHandle = NULL;
RtlInitUnicodeString(&PortName,
L"\\SeLsaCommandPort");
InitializeObjectAttributes(&ObjectAttributes,
&PortName,
0,
NULL,
NULL);
Status = NtCreatePort(&ConnectPortHandle,
&ObjectAttributes,
0,
0x100,
0x2000);
if (!NT_SUCCESS(Status))
{
DPRINT1("NtCreatePort() failed (Status %lx)\n", Status);
goto ByeBye;
}
Status = NtListenPort(ConnectPortHandle,
&Request.Header);
if (!NT_SUCCESS(Status))
{
DPRINT1("NtListenPort() failed (Status %lx)\n", Status);
goto ByeBye;
}
Status = NtAcceptConnectPort(&MessagePortHandle,
ConnectPortHandle,
NULL,
TRUE,
NULL,
NULL);
if (!NT_SUCCESS (Status))
{
DPRINT1("NtAcceptConnectPort() failed (Status %lx)\n", Status);
goto ByeBye;
}
Status = NtCompleteConnectPort (MessagePortHandle);
if (!NT_SUCCESS (Status))
{
DPRINT1("NtCompleteConnectPort() failed (Status %lx)\n", Status);
goto ByeBye;
}
ByeBye:
if (!NT_SUCCESS (Status))
{
if (ConnectPortHandle != NULL)
NtClose (ConnectPortHandle);
if (MessagePortHandle != NULL)
NtClose (MessagePortHandle);
}
return Status;
}
static NTSTATUS
ProcessPortMessage(VOID)
{
LPC_MAX_MESSAGE Request;
// LPC_MAX_MESSAGE Reply;
NTSTATUS Status;
DPRINT1("ProcessPortMessage() called\n");
Status = STATUS_SUCCESS;
for (;;)
{
Status = NtReplyWaitReceivePort(MessagePortHandle,
0,
NULL,
&Request.Header);
if (!NT_SUCCESS(Status))
{
DPRINT1("NtReplyWaitReceivePort() failed (Status %lx)\n", Status);
break;
}
DPRINT("Received message\n");
if (Request.Header.MessageType == LPC_PORT_CLOSED)
{
DPRINT("Port closed\n");
// return STATUS_UNSUCCESSFUL;
}
if (Request.Header.MessageType == LPC_REQUEST)
{
DPRINT("Received request\n");
}
else if (Request.Header.MessageType == LPC_DATAGRAM)
{
DPRINT("Received datagram\n");
// Message = (PIO_ERROR_LOG_MESSAGE)&Request.Data;
}
}
return Status;
}
static NTSTATUS STDCALL
PortThreadRoutine(PVOID Param)
{
NTSTATUS Status = STATUS_SUCCESS;
Status = InitializeLsaPort();
if (!NT_SUCCESS(Status))
return Status;
while (NT_SUCCESS(Status))
{
Status = ProcessPortMessage();
}
if (ConnectPortHandle != NULL)
NtClose (ConnectPortHandle);
if (MessagePortHandle != NULL)
NtClose (MessagePortHandle);
return Status;
}
BOOLEAN
StartLsaPortThread(VOID)
{
DWORD ThreadId;
PortThreadHandle = CreateThread(NULL,
0x1000,
(LPTHREAD_START_ROUTINE)PortThreadRoutine,
NULL,
0,
&ThreadId);
return (PortThreadHandle != NULL);
}
/* EOF */

View file

@ -0,0 +1,24 @@
#define NTOS_MODE_USER
#include <ntos.h>
#include <windows.h>
#include <lsass/lsasrv.h>
#define NDEBUG
#include <debug.h>
VOID StartLsaPortThread(VOID);
NTSTATUS STDCALL
LsapInitLsa(VOID)
{
DPRINT1("LsapInitLsa() called\n");
StartLsaPortThread();
return STATUS_SUCCESS;
}
/* EOF */

View file

@ -0,0 +1,68 @@
; $Id: lsasrv.def 12852 2005-01-06 13:58:04Z mf $
LIBRARY lsasrv
EXPORTS
;LsaIAuditNotifyPackageLoad
;LsaIAuditSamEvent
;LsaIEnumerateSecrets
;LsaIFree_LSAI_PRIVATE_DATA
;LsaIFree_LSAI_SECRET_ENUM_BUFFER
;LsaIFree_LSAPR_ACCOUNT_ENUM_BUFFER
;LsaIFree_LSAPR_CR_CIPHER_VALUE
;LsaIFree_LSAPR_POLICY_INFORMATION
;LsaIFree_LSAPR_PRIVILEGE_ENUM_BUFFER
;LsaIFree_LSAPR_PRIVILEGE_SET
;LsaIFree_LSAPR_REFERENCED_DOMAIN_LIST
;LsaIFree_LSAPR_SR_SECURITY_DESCRIPTOR
;LsaIFree_LSAPR_TRANSLATED_NAMES
;LsaIFree_LSAPR_TRANSLATED_SIDS
;LsaIFree_LSAPR_TRUSTED_DOMAIN_INFO
;LsaIFree_LSAPR_TRUSTED_ENUM_BUFFER
;LsaIFree_LSAPR_TRUST_INFORMATION
;LsaIFree_LSAPR_UNICODE_STRING
;LsaIGetPrivateData
;LsaIGetSerialNumberPolicy
;LsaIGetSerialNumberPolicy2
;LsaIHealthCheck
;LsaIInitializeWellKnownSids
;LsaIOpenPolicyTrusted
;LsaIQueryInformationPolicyTrusted
;LsaISetPrivateData
;LsaISetSerialNumberPolicy
;LsaISetTimesSecret
;LsaISetupWasRun
;LsapAuOpenSam
LsapInitLsa@0
;LsarAddPrivilegesToAccount
;LsarClose
;LsarCreateAccount
;LsarCreateSecret
;LsarCreateTrustedDomain
;LsarDelete
;LsarEnumerateAccounts
;LsarEnumeratePrivileges
;LsarEnumeratePrivilegesAccount
;LsarEnumerateTrustedDomains
;LsarGetQuotasForAccount
;LsarGetSystemAccessAccount
;LsarLookupNames
;LsarLookupPrivilegeDisplayName
;LsarLookupPrivilegeName
;LsarLookupPrivilegeValue
;LsarLookupSids
;LsarOpenAccount
;LsarOpenPolicy
;LsarOpenSecret
;LsarOpenTrustedDomain
;LsarQueryInfoTrustedDomain
;LsarQueryInformationPolicy
;LsarQuerySecret
;LsarQuerySecurityObject
;LsarRemovePrivilegesFromAccount
;LsarSetInformationPolicy
;LsarSetInformationTrustedDomain
;LsarSetQuotasForAccount
;LsarSetSecret
;LsarSetSecurityObject
;LsarSetSystemAccessAccount
;ServiceInit
; EOF

View file

@ -0,0 +1,5 @@
#define REACTOS_VERSION_DLL
#define REACTOS_STR_FILE_DESCRIPTION "LSA server DLL\0"
#define REACTOS_STR_INTERNAL_NAME "lsasrv\0"
#define REACTOS_STR_ORIGINAL_FILENAME "lsasrv.dll\0"
#include <reactos/version.rc>

View file

@ -0,0 +1,28 @@
# $Id$
PATH_TO_TOP = ../..
TARGET_TYPE = dynlink
TARGET_NAME = lsasrv
TARGET_BASE = $(TARGET_BASE_LIB_LSASRV)
TARGET_ENTRY = 0x0
TARGET_CFLAGS += -Wall -Werror
TARGET_LFLAGS = -nostartfiles -nostdlib
TARGET_SDKLIBS = ntdll.a kernel32.a
TARGET_OBJECTS = lsasrv.o lsaport.o
DEP_OBJECTS = $(TARGET_OBJECTS)
include $(PATH_TO_TOP)/rules.mak
include $(TOOLS_PATH)/helper.mk
include $(TOOLS_PATH)/depend.mk