2004288b0134f8bcf5f832254b3e3b0651e00fdb
[reactos.git] / sdk / include / reactos / subsys / lsass / lsass.h
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS system libraries
4 * FILE: include/reactos/subsys/lsass/lsass.h
5 * PURPOSE: LSASS API declarations
6 * UPDATE HISTORY:
7 * Created 05/08/00
8 */
9
10 #ifndef __INCLUDE_LSASS_LSASS_H
11 #define __INCLUDE_LSASS_LSASS_H
12
13 #include <ntsecapi.h>
14
15 #define LSASS_MAX_LOGON_PROCESS_NAME_LENGTH 127
16 #define LSASS_MAX_PACKAGE_NAME_LENGTH 127
17
18 typedef enum _LSA_API_NUMBER
19 {
20 LSASS_REQUEST_CALL_AUTHENTICATION_PACKAGE,
21 LSASS_REQUEST_DEREGISTER_LOGON_PROCESS,
22 LSASS_REQUEST_LOGON_USER,
23 LSASS_REQUEST_LOOKUP_AUTHENTICATION_PACKAGE,
24 LSASS_REQUEST_ENUM_LOGON_SESSIONS,
25 LSASS_REQUEST_GET_LOGON_SESSION_DATA,
26 LSASS_REQUEST_MAXIMUM
27 } LSA_API_NUMBER, *PLSA_API_NUMBER;
28
29
30 typedef struct _LSA_CONNECTION_INFO
31 {
32 NTSTATUS Status;
33 LSA_OPERATIONAL_MODE OperationalMode;
34 ULONG Length;
35 CHAR LogonProcessNameBuffer[LSASS_MAX_LOGON_PROCESS_NAME_LENGTH + 1];
36 BOOL CreateContext;
37 } LSA_CONNECTION_INFO, *PLSA_CONNECTION_INFO;
38
39
40 typedef struct _LSA_LOGON_USER_MSG
41 {
42 union
43 {
44 struct
45 {
46 LSA_STRING OriginName;
47 SECURITY_LOGON_TYPE LogonType;
48 ULONG AuthenticationPackage;
49 PVOID AuthenticationInformation;
50 ULONG AuthenticationInformationLength;
51 PTOKEN_GROUPS LocalGroups;
52 ULONG LocalGroupsCount;
53 TOKEN_SOURCE SourceContext;
54 } Request;
55
56 struct
57 {
58 PVOID ProfileBuffer;
59 ULONG ProfileBufferLength;
60 LUID LogonId;
61 HANDLE Token;
62 QUOTA_LIMITS Quotas;
63 NTSTATUS SubStatus;
64 } Reply;
65 };
66 } LSA_LOGON_USER_MSG, *PLSA_LOGON_USER_MSG;
67
68
69 typedef struct _LSA_CALL_AUTHENTICATION_PACKAGE_MSG
70 {
71 union
72 {
73 struct
74 {
75 ULONG AuthenticationPackage;
76 PVOID ProtocolSubmitBuffer;
77 ULONG SubmitBufferLength;
78 } Request;
79 struct
80 {
81 PVOID ProtocolReturnBuffer;
82 ULONG ReturnBufferLength;
83 NTSTATUS ProtocolStatus;
84 } Reply;
85 };
86 } LSA_CALL_AUTHENTICATION_PACKAGE_MSG, *PLSA_CALL_AUTHENTICATION_PACKAGE_MSG;
87
88
89 typedef struct _LSA_DEREGISTER_LOGON_PROCESS_MSG
90 {
91 union
92 {
93 struct
94 {
95 ULONG Dummy;
96 } Request;
97 struct
98 {
99 ULONG Dummy;
100 } Reply;
101 };
102 } LSA_DEREGISTER_LOGON_PROCESS_MSG, *PLSA_DEREGISTER_LOGON_PROCESS_MSG;
103
104
105 typedef struct _LSA_LOOKUP_AUTHENTICATION_PACKAGE_MSG
106 {
107 union
108 {
109 struct
110 {
111 ULONG PackageNameLength;
112 CHAR PackageName[LSASS_MAX_PACKAGE_NAME_LENGTH + 1];
113 } Request;
114 struct
115 {
116 ULONG Package;
117 } Reply;
118 };
119 } LSA_LOOKUP_AUTHENTICATION_PACKAGE_MSG, *PLSA_LOOKUP_AUTHENTICATION_PACKAGE_MSG;
120
121
122 typedef struct _LSA_ENUM_LOGON_SESSIONS_MSG
123 {
124 union
125 {
126 struct
127 {
128 ULONG Dummy;
129 } Request;
130 struct
131 {
132 ULONG LogonSessionCount;
133 PVOID LogonSessionBuffer;
134 } Reply;
135 };
136 } LSA_ENUM_LOGON_SESSIONS_MSG, *PLSA_ENUM_LOGON_SESSIONS_MSG;
137
138
139 typedef struct _LSA_GET_LOGON_SESSION_DATA_MSG
140 {
141 union
142 {
143 struct
144 {
145 LUID LogonId;
146 } Request;
147 struct
148 {
149 PVOID SessionDataBuffer;
150 } Reply;
151 };
152 } LSA_GET_LOGON_SESSION_DATA_MSG, *PLSA_GET_LOGON_SESSION_DATA_MSG;
153
154
155 typedef struct _LSA_API_MSG
156 {
157 PORT_MESSAGE h;
158 union
159 {
160 LSA_CONNECTION_INFO ConnectInfo;
161 struct
162 {
163 LSA_API_NUMBER ApiNumber;
164 NTSTATUS Status;
165 union
166 {
167 LSA_LOGON_USER_MSG LogonUser;
168 LSA_CALL_AUTHENTICATION_PACKAGE_MSG CallAuthenticationPackage;
169 LSA_DEREGISTER_LOGON_PROCESS_MSG DeregisterLogonProcess;
170 LSA_LOOKUP_AUTHENTICATION_PACKAGE_MSG LookupAuthenticationPackage;
171 LSA_ENUM_LOGON_SESSIONS_MSG EnumLogonSessions;
172 LSA_GET_LOGON_SESSION_DATA_MSG GetLogonSessionData;
173 };
174 };
175 };
176 } LSA_API_MSG, *PLSA_API_MSG;
177
178 #define LSA_PORT_DATA_SIZE(c) (sizeof(ULONG)+sizeof(NTSTATUS)+sizeof(c))
179 #define LSA_PORT_MESSAGE_SIZE (sizeof(LSA_API_MSG))
180
181 #endif /* __INCLUDE_LSASS_LSASS_H */