ReactOS  0.4.14-dev-115-g4576127
lsalpc.c File Reference
#include "precomp.h"
#include <ndk/lpctypes.h>
#include <ndk/lpcfuncs.h>
#include <ndk/mmfuncs.h>
#include <ndk/rtlfuncs.h>
#include <ndk/obfuncs.h>
#include <psdk/ntsecapi.h>
#include <lsass/lsass.h>
#include <wine/debug.h>
Include dependency graph for lsalpc.c:

Go to the source code of this file.

Functions

 WINE_DEFAULT_DEBUG_CHANNEL (secur32)
 
VOID LsapInitLsaPort (VOID)
 
VOID LsapCloseLsaPort (VOID)
 
NTSTATUS LsapOpenLsaPort (VOID)
 
NTSTATUS NTAPI LsaConnectUntrusted (OUT PHANDLE LsaHandle)
 
NTSTATUS NTAPI LsaEnumerateLogonSessions (PULONG LogonSessionCount, PLUID *LogonSessionList)
 
NTSTATUS NTAPI LsaGetLogonSessionData (PLUID LogonId, PSECURITY_LOGON_SESSION_DATA *ppLogonSessionData)
 
NTSTATUS NTAPI LsaRegisterPolicyChangeNotification (POLICY_NOTIFICATION_INFORMATION_CLASS InformationClass, HANDLE NotificationEventHandle)
 
NTSTATUS NTAPI LsaUnregisterPolicyChangeNotification (POLICY_NOTIFICATION_INFORMATION_CLASS InformationClass, HANDLE NotificationEventHandle)
 

Variables

HANDLE LsaPortHandle
 
HANDLE Secur32Heap
 

Function Documentation

◆ LsaConnectUntrusted()

NTSTATUS NTAPI LsaConnectUntrusted ( OUT PHANDLE  LsaHandle)

Definition at line 111 of file lsalpc.c.

113 {
115  SECURITY_QUALITY_OF_SERVICE SecurityQos;
116  LSA_CONNECTION_INFO ConnectInfo;
117  ULONG ConnectInfoLength = sizeof(ConnectInfo);
119  UNICODE_STRING EventName;
122 
123  TRACE("LsaConnectUntrusted(%p)\n", LsaHandle);
124 
125  // TODO: we may need to impersonate ourselves before, because we are untrusted!
126 
127  /* Wait for the LSA authentication thread */
128  RtlInitUnicodeString(&EventName,
129  L"\\SECURITY\\LSA_AUTHENTICATION_INITIALIZED");
131  &EventName,
133  NULL,
134  NULL);
136  SYNCHRONIZE,
138  if (!NT_SUCCESS(Status))
139  {
140  WARN("NtOpenEvent failed (Status 0x%08lx)\n", Status);
141 
143  SYNCHRONIZE,
146  FALSE);
147  if (!NT_SUCCESS(Status))
148  {
149  WARN("NtCreateEvent failed (Status 0x%08lx)\n", Status);
150  return Status;
151  }
152  }
153 
155  TRUE,
156  NULL);
158  if (!NT_SUCCESS(Status))
159  {
160  ERR("NtWaitForSingleObject failed (Status 0x%08lx)\n", Status);
161  return Status;
162  }
163 
164  /* Connect to the authentication port */
166  L"\\LsaAuthenticationPort");
167 
168  SecurityQos.Length = sizeof(SecurityQos);
171  SecurityQos.EffectiveOnly = TRUE;
172 
173  RtlZeroMemory(&ConnectInfo,
174  ConnectInfoLength);
175 
176  ConnectInfo.CreateContext = TRUE;
177  ConnectInfo.Untrusted = TRUE;
178 
180  &PortName,
181  &SecurityQos,
182  NULL,
183  NULL,
184  NULL,
185  &ConnectInfo,
186  &ConnectInfoLength);
187  if (!NT_SUCCESS(Status))
188  {
189  ERR("NtConnectPort failed (Status 0x%08lx)\n", Status);
190  return Status;
191  }
192 
193  if (!NT_SUCCESS(ConnectInfo.Status))
194  {
195  ERR("ConnectInfo.Status: 0x%08lx\n", ConnectInfo.Status);
196  }
197 
198  return ConnectInfo.Status;
199 }
IN PUNICODE_STRING IN POBJECT_ATTRIBUTES ObjectAttributes
Definition: conport.c:35
#define TRUE
Definition: types.h:120
#define WARN(fmt,...)
Definition: debug.h:111
LONG NTSTATUS
Definition: precomp.h:26
NTSTATUS NTAPI NtCreateEvent(OUT PHANDLE EventHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL, IN EVENT_TYPE EventType, IN BOOLEAN InitialState)
Definition: event.c:100
#define OBJ_PERMANENT
Definition: winternl.h:226
SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode
Definition: lsa.idl:66
BOOL CreateContext
Definition: lsass.h:37
NTSTATUS Status
Definition: lsass.h:33
HANDLE LsaHandle
Definition: logon.c:17
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
NTSTATUS NTAPI NtConnectPort(OUT PHANDLE PortHandle, IN PUNICODE_STRING PortName, IN PSECURITY_QUALITY_OF_SERVICE SecurityQos, IN OUT PPORT_VIEW ClientView OPTIONAL, IN OUT PREMOTE_PORT_VIEW ServerView OPTIONAL, OUT PULONG MaxMessageLength OPTIONAL, IN OUT PVOID ConnectionInformation OPTIONAL, IN OUT PULONG ConnectionInformationLength OPTIONAL)
Definition: connect.c:753
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
Definition: obhandle.c:3399
#define OBJ_CASE_INSENSITIVE
Definition: winternl.h:228
#define SECURITY_DYNAMIC_TRACKING
Definition: setypes.h:103
static const WCHAR L[]
Definition: oid.c:1250
#define SYNCHRONIZE
Definition: nt_native.h:61
NTSTATUS NTAPI NtOpenEvent(OUT PHANDLE EventHandle, IN ACCESS_MASK DesiredAccess, IN POBJECT_ATTRIBUTES ObjectAttributes)
Definition: event.c:185
Status
Definition: gdiplustypes.h:24
#define ERR(fmt,...)
Definition: debug.h:109
SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
Definition: lsa.idl:65
unsigned int ULONG
Definition: retypes.h:1
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:261
#define InitializeObjectAttributes(p, n, a, r, s)
Definition: reg.c:106
IN PUNICODE_STRING PortName
Definition: conport.c:35
_Out_ PHANDLE EventHandle
Definition: iofuncs.h:855
NTSYSAPI NTSTATUS NTAPI NtWaitForSingleObject(IN HANDLE hObject, IN BOOLEAN bAlertable, IN PLARGE_INTEGER Timeout)

Referenced by NetUserChangePassword().

◆ LsaEnumerateLogonSessions()

NTSTATUS NTAPI LsaEnumerateLogonSessions ( PULONG  LogonSessionCount,
PLUID LogonSessionList 
)

Definition at line 207 of file lsalpc.c.

210 {
211  LSA_API_MSG ApiMessage;
213 
214  TRACE("LsaEnumerateLogonSessions(%p %p)\n", LogonSessionCount, LogonSessionList);
215 
217  if (!NT_SUCCESS(Status))
218  return Status;
219 
221  ApiMessage.h.u1.s1.DataLength = LSA_PORT_DATA_SIZE(ApiMessage.EnumLogonSessions);
222  ApiMessage.h.u1.s1.TotalLength = LSA_PORT_MESSAGE_SIZE;
223  ApiMessage.h.u2.ZeroInit = 0;
224 
226  (PPORT_MESSAGE)&ApiMessage,
227  (PPORT_MESSAGE)&ApiMessage);
228  if (!NT_SUCCESS(Status))
229  {
230  ERR("NtRequestWaitReplyPort() failed (Status 0x%08lx)\n", Status);
231  return Status;
232  }
233 
234  if (!NT_SUCCESS(ApiMessage.Status))
235  {
236  ERR("NtRequestWaitReplyPort() failed (ApiMessage.Status 0x%08lx)\n", ApiMessage.Status);
237  return ApiMessage.Status;
238  }
239 
240  *LogonSessionCount = ApiMessage.EnumLogonSessions.Reply.LogonSessionCount;
241  *LogonSessionList = ApiMessage.EnumLogonSessions.Reply.LogonSessionBuffer;
242 
243  return Status;
244 }
NTSTATUS LsapOpenLsaPort(VOID)
Definition: lsalpc.c:52
NTSTATUS NTAPI NtRequestWaitReplyPort(IN HANDLE PortHandle, IN PPORT_MESSAGE LpcRequest, IN OUT PPORT_MESSAGE LpcReply)
Definition: send.c:695
LONG NTSTATUS
Definition: precomp.h:26
PORT_MESSAGE h
Definition: lsass.h:177
HANDLE LsaPortHandle
Definition: lsalpc.c:26
#define TRACE(s)
Definition: solgame.cpp:4
#define LSA_PORT_MESSAGE_SIZE
Definition: lsass.h:200
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
LSA_API_NUMBER ApiNumber
Definition: lsass.h:183
Status
Definition: gdiplustypes.h:24
#define ERR(fmt,...)
Definition: debug.h:109
LSA_ENUM_LOGON_SESSIONS_MSG EnumLogonSessions
Definition: lsass.h:191
#define LSA_PORT_DATA_SIZE(c)
Definition: lsass.h:199

◆ LsaGetLogonSessionData()

NTSTATUS NTAPI LsaGetLogonSessionData ( PLUID  LogonId,
PSECURITY_LOGON_SESSION_DATA ppLogonSessionData 
)

Definition at line 252 of file lsalpc.c.

255 {
256  LSA_API_MSG ApiMessage;
257  PSECURITY_LOGON_SESSION_DATA SessionData;
259 
260  TRACE("LsaGetLogonSessionData(%p %p)\n", LogonId, ppLogonSessionData);
261 
263  if (!NT_SUCCESS(Status))
264  return Status;
265 
267  ApiMessage.h.u1.s1.DataLength = LSA_PORT_DATA_SIZE(ApiMessage.GetLogonSessionData);
268  ApiMessage.h.u1.s1.TotalLength = LSA_PORT_MESSAGE_SIZE;
269  ApiMessage.h.u2.ZeroInit = 0;
270 
271  RtlCopyLuid(&ApiMessage.GetLogonSessionData.Request.LogonId,
272  LogonId);
273 
275  (PPORT_MESSAGE)&ApiMessage,
276  (PPORT_MESSAGE)&ApiMessage);
277  if (!NT_SUCCESS(Status))
278  {
279  ERR("NtRequestWaitReplyPort() failed (Status 0x%08lx)\n", Status);
280  return Status;
281  }
282 
283  if (!NT_SUCCESS(ApiMessage.Status))
284  {
285  ERR("NtRequestWaitReplyPort() failed (ApiMessage.Status 0x%08lx)\n", ApiMessage.Status);
286  return ApiMessage.Status;
287  }
288 
289  SessionData = ApiMessage.GetLogonSessionData.Reply.SessionDataBuffer;
290 
291  TRACE("UserName: %p\n", SessionData->UserName.Buffer);
292  if (SessionData->UserName.Buffer != NULL)
293  SessionData->UserName.Buffer = (LPWSTR)((ULONG_PTR)SessionData + (ULONG_PTR)SessionData->UserName.Buffer);
294 
295  TRACE("LogonDomain: %p\n", SessionData->LogonDomain.Buffer);
296  if (SessionData->LogonDomain.Buffer != NULL)
297  SessionData->LogonDomain.Buffer = (LPWSTR)((ULONG_PTR)SessionData + (ULONG_PTR)SessionData->LogonDomain.Buffer);
298 
299  TRACE("AuthenticationPackage: %p\n", SessionData->AuthenticationPackage.Buffer);
300  if (SessionData->AuthenticationPackage.Buffer != NULL)
301  SessionData->AuthenticationPackage.Buffer = (LPWSTR)((ULONG_PTR)SessionData + (ULONG_PTR)SessionData->AuthenticationPackage.Buffer);
302 
303  TRACE("Sid: %p\n", SessionData->Sid);
304  if (SessionData->Sid != NULL)
305  SessionData->Sid = (LPWSTR)((ULONG_PTR)SessionData + (ULONG_PTR)SessionData->Sid);
306 
307  TRACE("LogonServer: %p\n", SessionData->LogonServer.Buffer);
308  if (SessionData->LogonServer.Buffer != NULL)
309  SessionData->LogonServer.Buffer = (LPWSTR)((ULONG_PTR)SessionData + (ULONG_PTR)SessionData->LogonServer.Buffer);
310 
311  TRACE("DnsDomainName: %p\n", SessionData->DnsDomainName.Buffer);
312  if (SessionData->DnsDomainName.Buffer != NULL)
313  SessionData->DnsDomainName.Buffer = (LPWSTR)((ULONG_PTR)SessionData + (ULONG_PTR)SessionData->DnsDomainName.Buffer);
314 
315  TRACE("Upn: %p\n", SessionData->Upn.Buffer);
316  if (SessionData->Upn.Buffer != NULL)
317  SessionData->Upn.Buffer = (LPWSTR)((ULONG_PTR)SessionData + (ULONG_PTR)SessionData->Upn.Buffer);
318 
319  *ppLogonSessionData = SessionData;
320 
321  return Status;
322 }
LSA_GET_LOGON_SESSION_DATA_MSG GetLogonSessionData
Definition: lsass.h:192
NTSTATUS LsapOpenLsaPort(VOID)
Definition: lsalpc.c:52
NTSTATUS NTAPI NtRequestWaitReplyPort(IN HANDLE PortHandle, IN PPORT_MESSAGE LpcRequest, IN OUT PPORT_MESSAGE LpcReply)
Definition: send.c:695
LONG NTSTATUS
Definition: precomp.h:26
PORT_MESSAGE h
Definition: lsass.h:177
NTSYSAPI void WINAPI RtlCopyLuid(PLUID, const LUID *)
uint32_t ULONG_PTR
Definition: typedefs.h:63
HANDLE LsaPortHandle
Definition: lsalpc.c:26
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
#define LSA_PORT_MESSAGE_SIZE
Definition: lsass.h:200
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
LSA_API_NUMBER ApiNumber
Definition: lsass.h:183
LSA_UNICODE_STRING LogonDomain
Definition: ntsecapi.h:304
LSA_UNICODE_STRING DnsDomainName
Definition: ntsecapi.h:311
Status
Definition: gdiplustypes.h:24
#define ERR(fmt,...)
Definition: debug.h:109
LSA_UNICODE_STRING LogonServer
Definition: ntsecapi.h:310
_IRQL_requires_same_ _In_ PLSA_STRING _In_ SECURITY_LOGON_TYPE _In_ ULONG _In_ ULONG _In_opt_ PTOKEN_GROUPS _In_ PTOKEN_SOURCE _Out_ PVOID _Out_ PULONG _Inout_ PLUID LogonId
struct _LSA_GET_LOGON_SESSION_DATA_MSG::@3355::@3357 Request
#define ULONG_PTR
Definition: config.h:101
WCHAR * LPWSTR
Definition: xmlstorage.h:184
LSA_UNICODE_STRING AuthenticationPackage
Definition: ntsecapi.h:305
LSA_UNICODE_STRING Upn
Definition: ntsecapi.h:312
LSA_UNICODE_STRING UserName
Definition: ntsecapi.h:303
#define LSA_PORT_DATA_SIZE(c)
Definition: lsass.h:199

◆ LsapCloseLsaPort()

VOID LsapCloseLsaPort ( VOID  )

Definition at line 41 of file lsalpc.c.

42 {
43  if (LsaPortHandle != NULL)
44  {
47  }
48 }
HANDLE LsaPortHandle
Definition: lsalpc.c:26
smooth NULL
Definition: ftsmooth.c:416
NTSTATUS NTAPI NtClose(IN HANDLE Handle)
Definition: obhandle.c:3399

Referenced by DllMain().

◆ LsapInitLsaPort()

VOID LsapInitLsaPort ( VOID  )

Definition at line 34 of file lsalpc.c.

35 {
37 }
HANDLE LsaPortHandle
Definition: lsalpc.c:26
smooth NULL
Definition: ftsmooth.c:416

Referenced by DllMain().

◆ LsapOpenLsaPort()

NTSTATUS LsapOpenLsaPort ( VOID  )

Definition at line 52 of file lsalpc.c.

53 {
55  SECURITY_QUALITY_OF_SERVICE SecurityQos;
56  LSA_CONNECTION_INFO ConnectInfo;
57  ULONG ConnectInfoLength;
59 
60  TRACE("LsapOpenLsaPort()\n");
61 
62  if (LsaPortHandle != NULL)
63  return STATUS_SUCCESS;
64 
66  L"\\LsaAuthenticationPort");
67 
68  SecurityQos.Length = sizeof(SecurityQos);
71  SecurityQos.EffectiveOnly = TRUE;
72 
73  RtlZeroMemory(&ConnectInfo,
74  sizeof(ConnectInfo));
75 
76  ConnectInfo.CreateContext = FALSE;
77 
78  ConnectInfoLength = sizeof(LSA_CONNECTION_INFO);
80  &PortName,
81  &SecurityQos,
82  NULL,
83  NULL,
84  NULL,
85  &ConnectInfo,
86  &ConnectInfoLength);
87  if (!NT_SUCCESS(Status))
88  {
89  TRACE("NtConnectPort failed (Status 0x%08lx)\n", Status);
90  }
91 
92  return Status;
93 /*
94  if (!NT_SUCCESS(ConnectInfo.Status))
95  {
96  DPRINT1("ConnectInfo.Status: 0x%08lx\n", ConnectInfo.Status);
97  }
98 
99  return ConnectInfo.Status;
100 */
101 }
struct _LSA_CONNECTION_INFO LSA_CONNECTION_INFO
#define TRUE
Definition: types.h:120
LONG NTSTATUS
Definition: precomp.h:26
SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode
Definition: lsa.idl:66
BOOL CreateContext
Definition: lsass.h:37
HANDLE LsaPortHandle
Definition: lsalpc.c:26
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
NTSTATUS NTAPI NtConnectPort(OUT PHANDLE PortHandle, IN PUNICODE_STRING PortName, IN PSECURITY_QUALITY_OF_SERVICE SecurityQos, IN OUT PPORT_VIEW ClientView OPTIONAL, IN OUT PREMOTE_PORT_VIEW ServerView OPTIONAL, OUT PULONG MaxMessageLength OPTIONAL, IN OUT PVOID ConnectionInformation OPTIONAL, IN OUT PULONG ConnectionInformationLength OPTIONAL)
Definition: connect.c:753
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
#define SECURITY_DYNAMIC_TRACKING
Definition: setypes.h:103
static const WCHAR L[]
Definition: oid.c:1250
Status
Definition: gdiplustypes.h:24
SECURITY_IMPERSONATION_LEVEL ImpersonationLevel
Definition: lsa.idl:65
unsigned int ULONG
Definition: retypes.h:1
NTSYSAPI VOID NTAPI RtlInitUnicodeString(PUNICODE_STRING DestinationString, PCWSTR SourceString)
#define RtlZeroMemory(Destination, Length)
Definition: typedefs.h:261
return STATUS_SUCCESS
Definition: btrfs.c:2966
IN PUNICODE_STRING PortName
Definition: conport.c:35

Referenced by LsaEnumerateLogonSessions(), LsaGetLogonSessionData(), LsaRegisterPolicyChangeNotification(), and LsaUnregisterPolicyChangeNotification().

◆ LsaRegisterPolicyChangeNotification()

NTSTATUS NTAPI LsaRegisterPolicyChangeNotification ( POLICY_NOTIFICATION_INFORMATION_CLASS  InformationClass,
HANDLE  NotificationEventHandle 
)

Definition at line 330 of file lsalpc.c.

333 {
334  LSA_API_MSG ApiMessage;
336 
337  TRACE("LsaRegisterPolicyChangeNotification(%lu %p)\n",
338  InformationClass, NotificationEventHandle);
339 
341  if (!NT_SUCCESS(Status))
342  return Status;
343 
345  ApiMessage.h.u1.s1.DataLength = LSA_PORT_DATA_SIZE(ApiMessage.PolicyChangeNotify);
346  ApiMessage.h.u1.s1.TotalLength = LSA_PORT_MESSAGE_SIZE;
347  ApiMessage.h.u2.ZeroInit = 0;
348 
349  ApiMessage.PolicyChangeNotify.Request.InformationClass = InformationClass;
350  ApiMessage.PolicyChangeNotify.Request.NotificationEventHandle = NotificationEventHandle;
351  ApiMessage.PolicyChangeNotify.Request.Register = TRUE;
352 
354  (PPORT_MESSAGE)&ApiMessage,
355  (PPORT_MESSAGE)&ApiMessage);
356  if (!NT_SUCCESS(Status))
357  {
358  ERR("NtRequestWaitReplyPort() failed (Status 0x%08lx)\n", Status);
359  return Status;
360  }
361 
362  if (!NT_SUCCESS(ApiMessage.Status))
363  {
364  ERR("NtRequestWaitReplyPort() failed (ApiMessage.Status 0x%08lx)\n", ApiMessage.Status);
365  return ApiMessage.Status;
366  }
367 
368  return Status;
369 }
#define TRUE
Definition: types.h:120
NTSTATUS LsapOpenLsaPort(VOID)
Definition: lsalpc.c:52
NTSTATUS NTAPI NtRequestWaitReplyPort(IN HANDLE PortHandle, IN PPORT_MESSAGE LpcRequest, IN OUT PPORT_MESSAGE LpcReply)
Definition: send.c:695
LSA_POLICY_CHANGE_NOTIFY_MSG PolicyChangeNotify
Definition: lsass.h:193
LONG NTSTATUS
Definition: precomp.h:26
PORT_MESSAGE h
Definition: lsass.h:177
HANDLE LsaPortHandle
Definition: lsalpc.c:26
#define TRACE(s)
Definition: solgame.cpp:4
#define LSA_PORT_MESSAGE_SIZE
Definition: lsass.h:200
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
LSA_API_NUMBER ApiNumber
Definition: lsass.h:183
Status
Definition: gdiplustypes.h:24
#define ERR(fmt,...)
Definition: debug.h:109
struct _LSA_POLICY_CHANGE_NOTIFY_MSG::@3359::@3361 Request
_In_ FILTER_INFORMATION_CLASS InformationClass
Definition: fltkernel.h:1714
#define LSA_PORT_DATA_SIZE(c)
Definition: lsass.h:199

Referenced by NetRegisterDomainNameChangeNotification().

◆ LsaUnregisterPolicyChangeNotification()

NTSTATUS NTAPI LsaUnregisterPolicyChangeNotification ( POLICY_NOTIFICATION_INFORMATION_CLASS  InformationClass,
HANDLE  NotificationEventHandle 
)

Definition at line 377 of file lsalpc.c.

380 {
381  LSA_API_MSG ApiMessage;
383 
384  TRACE("LsaUnregisterPolicyChangeNotification(%lu %p)\n",
385  InformationClass, NotificationEventHandle);
386 
388  if (!NT_SUCCESS(Status))
389  return Status;
390 
392  ApiMessage.h.u1.s1.DataLength = LSA_PORT_DATA_SIZE(ApiMessage.PolicyChangeNotify);
393  ApiMessage.h.u1.s1.TotalLength = LSA_PORT_MESSAGE_SIZE;
394  ApiMessage.h.u2.ZeroInit = 0;
395 
396  ApiMessage.PolicyChangeNotify.Request.InformationClass = InformationClass;
397  ApiMessage.PolicyChangeNotify.Request.NotificationEventHandle = NotificationEventHandle;
398  ApiMessage.PolicyChangeNotify.Request.Register = FALSE;
399 
401  (PPORT_MESSAGE)&ApiMessage,
402  (PPORT_MESSAGE)&ApiMessage);
403  if (!NT_SUCCESS(Status))
404  {
405  ERR("NtRequestWaitReplyPort() failed (Status 0x%08lx)\n", Status);
406  return Status;
407  }
408 
409  if (!NT_SUCCESS(ApiMessage.Status))
410  {
411  ERR("NtRequestWaitReplyPort() failed (ApiMessage.Status 0x%08lx)\n", ApiMessage.Status);
412  return ApiMessage.Status;
413  }
414 
415  return Status;
416 }
NTSTATUS LsapOpenLsaPort(VOID)
Definition: lsalpc.c:52
NTSTATUS NTAPI NtRequestWaitReplyPort(IN HANDLE PortHandle, IN PPORT_MESSAGE LpcRequest, IN OUT PPORT_MESSAGE LpcReply)
Definition: send.c:695
LSA_POLICY_CHANGE_NOTIFY_MSG PolicyChangeNotify
Definition: lsass.h:193
LONG NTSTATUS
Definition: precomp.h:26
PORT_MESSAGE h
Definition: lsass.h:177
HANDLE LsaPortHandle
Definition: lsalpc.c:26
#define TRACE(s)
Definition: solgame.cpp:4
#define LSA_PORT_MESSAGE_SIZE
Definition: lsass.h:200
#define NT_SUCCESS(StatCode)
Definition: apphelp.c:32
LSA_API_NUMBER ApiNumber
Definition: lsass.h:183
Status
Definition: gdiplustypes.h:24
#define ERR(fmt,...)
Definition: debug.h:109
struct _LSA_POLICY_CHANGE_NOTIFY_MSG::@3359::@3361 Request
_In_ FILTER_INFORMATION_CLASS InformationClass
Definition: fltkernel.h:1714
#define LSA_PORT_DATA_SIZE(c)
Definition: lsass.h:199

Referenced by NetUnregisterDomainNameChangeNotification().

◆ WINE_DEFAULT_DEBUG_CHANNEL()

WINE_DEFAULT_DEBUG_CHANNEL ( secur32  )

Variable Documentation

◆ LsaPortHandle

◆ Secur32Heap

HANDLE Secur32Heap

Definition at line 17 of file dllmain.c.

Referenced by DllMain().