[SECUR32][LSASRV][LSALIB]
[reactos.git] / reactos / include / reactos / subsys / lsass / lsass.h
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS system libraries
4 * FILE: include/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_MAXIMUM
26 } LSA_API_NUMBER, *PLSA_API_NUMBER;
27
28
29 typedef struct _LSA_CONNECTION_INFO
30 {
31 NTSTATUS Status;
32 LSA_OPERATIONAL_MODE OperationalMode;
33 ULONG Length;
34 CHAR LogonProcessNameBuffer[LSASS_MAX_LOGON_PROCESS_NAME_LENGTH + 1];
35 BOOL CreateContext;
36 } LSA_CONNECTION_INFO, *PLSA_CONNECTION_INFO;
37
38
39 typedef struct _LSA_LOGON_USER_MSG
40 {
41 union
42 {
43 struct
44 {
45 LSA_STRING OriginName;
46 SECURITY_LOGON_TYPE LogonType;
47 ULONG AuthenticationPackage;
48 PVOID AuthenticationInformation;
49 ULONG AuthenticationInformationLength;
50 PTOKEN_GROUPS LocalGroups;
51 ULONG LocalGroupsCount;
52 TOKEN_SOURCE SourceContext;
53 } Request;
54
55 struct
56 {
57 PVOID ProfileBuffer;
58 ULONG ProfileBufferLength;
59 LUID LogonId;
60 HANDLE Token;
61 QUOTA_LIMITS Quotas;
62 NTSTATUS SubStatus;
63 } Reply;
64 };
65 } LSA_LOGON_USER_MSG, *PLSA_LOGON_USER_MSG;
66
67
68 typedef struct _LSA_CALL_AUTHENTICATION_PACKAGE_MSG
69 {
70 union
71 {
72 struct
73 {
74 ULONG AuthenticationPackage;
75 PVOID ProtocolSubmitBuffer;
76 ULONG SubmitBufferLength;
77 } Request;
78 struct
79 {
80 PVOID ProtocolReturnBuffer;
81 ULONG ReturnBufferLength;
82 NTSTATUS ProtocolStatus;
83 } Reply;
84 };
85 } LSA_CALL_AUTHENTICATION_PACKAGE_MSG, *PLSA_CALL_AUTHENTICATION_PACKAGE_MSG;
86
87
88 typedef struct _LSA_DEREGISTER_LOGON_PROCESS_MSG
89 {
90 union
91 {
92 struct
93 {
94 ULONG Dummy;
95 } Request;
96 struct
97 {
98 ULONG Dummy;
99 } Reply;
100 };
101 } LSA_DEREGISTER_LOGON_PROCESS_MSG, *PLSA_DEREGISTER_LOGON_PROCESS_MSG;
102
103
104 typedef struct _LSA_LOOKUP_AUTHENTICATION_PACKAGE_MSG
105 {
106 union
107 {
108 struct
109 {
110 ULONG PackageNameLength;
111 CHAR PackageName[LSASS_MAX_PACKAGE_NAME_LENGTH + 1];
112 } Request;
113 struct
114 {
115 ULONG Package;
116 } Reply;
117 };
118 } LSA_LOOKUP_AUTHENTICATION_PACKAGE_MSG, *PLSA_LOOKUP_AUTHENTICATION_PACKAGE_MSG;
119
120
121 typedef struct _LSA_ENUM_LOGON_SESSIONS_MSG
122 {
123 union
124 {
125 struct
126 {
127 ULONG Dummy;
128 } Request;
129 struct
130 {
131 ULONG LogonSessionCount;
132 ULONG LogonSessionBufferLength;
133 PVOID LogonSessionBuffer;
134 } Reply;
135 };
136 } LSA_ENUM_LOGON_SESSIONS_MSG, *PLSA_ENUM_LOGON_SESSIONS_MSG;
137
138
139 typedef struct _LSA_API_MSG
140 {
141 PORT_MESSAGE h;
142 union
143 {
144 LSA_CONNECTION_INFO ConnectInfo;
145 struct
146 {
147 LSA_API_NUMBER ApiNumber;
148 NTSTATUS Status;
149 union
150 {
151 LSA_LOGON_USER_MSG LogonUser;
152 LSA_CALL_AUTHENTICATION_PACKAGE_MSG CallAuthenticationPackage;
153 LSA_DEREGISTER_LOGON_PROCESS_MSG DeregisterLogonProcess;
154 LSA_LOOKUP_AUTHENTICATION_PACKAGE_MSG LookupAuthenticationPackage;
155 LSA_ENUM_LOGON_SESSIONS_MSG EnumLogonSessions;
156 };
157 };
158 };
159 } LSA_API_MSG, *PLSA_API_MSG;
160
161 #define LSA_PORT_DATA_SIZE(c) (sizeof(ULONG)+sizeof(NTSTATUS)+sizeof(c))
162 #define LSA_PORT_MESSAGE_SIZE (sizeof(LSA_API_MSG))
163
164 #endif /* __INCLUDE_LSASS_LSASS_H */