sync with trunk (r49238)
[reactos.git] / dll / win32 / lsasrv / lsasrv.c
1 /*
2 * PROJECT: Local Security Authority Server DLL
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: dll/win32/lsasrv/lsasrv.c
5 * PURPOSE: Main file
6 * COPYRIGHT: Copyright 2006-2009 Eric Kohl
7 */
8
9 /* INCLUDES ****************************************************************/
10
11 #include "lsasrv.h"
12
13 WINE_DEFAULT_DEBUG_CHANNEL(lsasrv);
14
15
16 /* FUNCTIONS ***************************************************************/
17
18 NTSTATUS WINAPI
19 LsapInitLsa(VOID)
20 {
21 HANDLE hEvent;
22 DWORD dwError;
23
24 TRACE("LsapInitLsa() called\n");
25
26 /* Initialize the well known SIDs */
27 LsapInitSids();
28
29 /* Start the RPC server */
30 LsarStartRpcServer();
31
32 TRACE("Creating notification event!\n");
33 /* Notify the service manager */
34 hEvent = CreateEventW(NULL,
35 TRUE,
36 FALSE,
37 L"LSA_RPC_SERVER_ACTIVE");
38 if (hEvent == NULL)
39 {
40 dwError = GetLastError();
41 TRACE("Failed to create the notication event (Error %lu)\n", dwError);
42
43 if (dwError == ERROR_ALREADY_EXISTS)
44 {
45 hEvent = OpenEventW(GENERIC_WRITE,
46 FALSE,
47 L"LSA_RPC_SERVER_ACTIVE");
48 if (hEvent == NULL)
49 {
50 ERR("Could not open the notification event (Error %lu)\n", GetLastError());
51 return STATUS_UNSUCCESSFUL;
52 }
53 }
54 }
55
56 TRACE("Set notification event!\n");
57 SetEvent(hEvent);
58
59 /* NOTE: Do not close the event handle!!!! */
60
61 StartAuthenticationPort();
62
63 return STATUS_SUCCESS;
64 }
65
66
67 NTSTATUS WINAPI
68 ServiceInit(VOID)
69 {
70 TRACE("ServiceInit() called\n");
71 return STATUS_SUCCESS;
72 }
73
74
75 void __RPC_FAR * __RPC_USER midl_user_allocate(SIZE_T len)
76 {
77 return RtlAllocateHeap(RtlGetProcessHeap(), HEAP_ZERO_MEMORY, len);
78 }
79
80
81 void __RPC_USER midl_user_free(void __RPC_FAR * ptr)
82 {
83 RtlFreeHeap(RtlGetProcessHeap(), 0, ptr);
84 }
85
86 /* EOF */