OSDN Git Service

a57cfcac04936a5501181307c6abb30433daef91
[mingw/mingw-org-wsl.git] / w32api / include / ntsecapi.h
1 #ifndef _NTSECAPI_H
2 #define _NTSECAPI_H
3 #if __GNUC__ >=3
4 #pragma GCC system_header
5 #endif
6
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10 #define KERB_WRAP_NO_ENCRYPT 0x80000001
11 #define LOGON_GUEST 1
12 #define LOGON_NOENCRYPTION 2
13 #define LOGON_CACHED_ACCOUNT 4
14 #define LOGON_USED_LM_PASSWORD 8
15 #define LOGON_EXTRA_SIDS 32
16 #define LOGON_SUBAUTH_SESSION_KEY 64
17 #define LOGON_SERVER_TRUST_ACCOUNT 128
18 #define LOGON_NTLMV2_ENABLED 256
19 #define LOGON_RESOURCE_GROUPS 512
20 #define LOGON_PROFILE_PATH_RETURNED 1024
21 #define LOGON_GRACE_LOGON 16777216
22 #define LSA_MODE_PASSWORD_PROTECTED 1
23 #define LSA_MODE_INDIVIDUAL_ACCOUNTS 2
24 #define LSA_MODE_MANDATORY_ACCESS 3
25 #define LSA_MODE_LOG_FULL 4
26 #define LSA_SUCCESS(x) ((LONG)(x)>=0)
27 #define MICROSOFT_KERBEROS_NAME_A "Kerberos"
28 #define MICROSOFT_KERBEROS_NAME_W L"Kerberos"
29 #define MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT 32
30 #define MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT 2048
31 #define MSV1_0_CHALLENGE_LENGTH 8
32 #define MSV1_0_CLEARTEXT_PASSWORD_ALLOWED 2
33 #define MSV1_0_CRED_LM_PRESENT 1
34 #define MSV1_0_CRED_NT_PRESENT 2
35 #define MSV1_0_CRED_VERSION 0
36 #define MSV1_0_DONT_TRY_GUEST_ACCOUNT 16
37 #define MSV1_0_LANMAN_SESSION_KEY_LENGTH 8
38 #define MSV1_0_MAX_NTLM3_LIFE 1800
39 #define MSV1_0_MAX_AVL_SIZE 64000
40 #define MSV1_0_MNS_LOGON 16777216
41 #define MSV1_0_NTLM3_RESPONSE_LENGTH 16
42 #define MSV1_0_NTLM3_OWF_LENGTH 16
43 #define MSV1_0_NTLM3_INPUT_LENGTH (sizeof(MSV1_0_NTLM3_RESPONSE)-MSV1_0_NTLM3_RESPONSE_LENGTH)
44 #define MSV1_0_OWF_PASSWORD_LENGTH 16
45 #define MSV1_0_PACKAGE_NAME "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0"
46 #define MSV1_0_PACKAGE_NAMEW L"MICROSOFT_AUTHENTICATION_PACKAGE_V1_0"
47 #define MSV1_0_PACKAGE_NAMEW_LENGTH sizeof(MSV1_0_PACKAGE_NAMEW)-sizeof(WCHAR)
48 #define MSV1_0_RETURN_USER_PARAMETERS 8
49 #define MSV1_0_RETURN_PASSWORD_EXPIRY 64
50 #define MSV1_0_RETURN_PROFILE_PATH 512
51 #define MSV1_0_SUBAUTHENTICATION_DLL_EX 1048576
52 #define MSV1_0_SUBAUTHENTICATION_DLL 0xff000000
53 #define MSV1_0_SUBAUTHENTICATION_DLL_SHIFT 24
54 #define MSV1_0_SUBAUTHENTICATION_DLL_RAS 2
55 #define MSV1_0_SUBAUTHENTICATION_DLL_IIS 132
56 #define MSV1_0_SUBAUTHENTICATION_FLAGS 0xff000000
57 #define MSV1_0_SUBAUTHENTICATION_KEY "System\\CurrentControlSet\\Control\\Lsa\\MSV1_0"
58 #define MSV1_0_SUBAUTHENTICATION_VALUE "Auth"
59 #define MSV1_0_TRY_GUEST_ACCOUNT_ONLY 256
60 #define MSV1_0_TRY_SPECIFIED_DOMAIN_ONLY 1024
61 #define MSV1_0_UPDATE_LOGON_STATISTICS 4
62 #define MSV1_0_USE_CLIENT_CHALLENGE 128
63 #define MSV1_0_USER_SESSION_KEY_LENGTH 16
64 #define POLICY_VIEW_LOCAL_INFORMATION 1
65 #define POLICY_VIEW_AUDIT_INFORMATION 2
66 #define POLICY_GET_PRIVATE_INFORMATION 4
67 #define POLICY_TRUST_ADMIN 8
68 #define POLICY_CREATE_ACCOUNT 16
69 #define POLICY_CREATE_SECRET 32
70 #define POLICY_CREATE_PRIVILEGE 64
71 #define POLICY_SET_DEFAULT_QUOTA_LIMITS 128
72 #define POLICY_SET_AUDIT_REQUIREMENTS 256
73 #define POLICY_AUDIT_LOG_ADMIN 512
74 #define POLICY_SERVER_ADMIN 1024
75 #define POLICY_LOOKUP_NAMES 2048
76 #define POLICY_READ (STANDARD_RIGHTS_READ|6)
77 #define POLICY_WRITE (STANDARD_RIGHTS_WRITE|2040)
78 #define POLICY_EXECUTE (STANDARD_RIGHTS_EXECUTE|2049)
79 #define POLICY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|4095)
80 #define POLICY_AUDIT_EVENT_UNCHANGED 0
81 #define POLICY_AUDIT_EVENT_SUCCESS 1
82 #define POLICY_AUDIT_EVENT_FAILURE 2
83 #define POLICY_AUDIT_EVENT_NONE 4
84 #define POLICY_AUDIT_EVENT_MASK 7
85 #define POLICY_LOCATION_LOCAL 1
86 #define POLICY_LOCATION_DS 2
87 #define POLICY_MACHINE_POLICY_LOCAL 0
88 #define POLICY_MACHINE_POLICY_DEFAULTED 1
89 #define POLICY_MACHINE_POLICY_EXPLICIT 2
90 #define POLICY_MACHINE_POLICY_UNKNOWN 0xFFFFFFFF
91 #define POLICY_QOS_SCHANEL_REQUIRED 1
92 #define POLICY_QOS_OUTBOUND_INTEGRITY 2
93 #define POLICY_QOS_OUTBOUND_CONFIDENTIALITY 4
94 #define POLICY_QOS_INBOUND_INTEGREITY 8
95 #define POLICY_QOS_INBOUND_CONFIDENTIALITY 16
96 #define POLICY_QOS_ALLOW_LOCAL_ROOT_CERT_STORE 32
97 #define POLICY_QOS_RAS_SERVER_ALLOWED 64
98 #define POLICY_QOS_DHCP_SERVER_ALLOWD 128
99 #define POLICY_KERBEROS_FORWARDABLE 1
100 #define POLICY_KERBEROS_PROXYABLE 2
101 #define POLICY_KERBEROS_RENEWABLE 4
102 #define POLICY_KERBEROS_POSTDATEABLE 8
103 #define SAM_PASSWORD_CHANGE_NOTIFY_ROUTINE "PasswordChangeNotify"
104 #define SAM_INIT_NOTIFICATION_ROUTINE "InitializeChangeNotify"
105 #define SAM_PASSWORD_FILTER_ROUTINE "PasswordFilter"
106 #define SE_INTERACTIVE_LOGON_NAME TEXT("SeInteractiveLogonRight")
107 #define SE_NETWORK_LOGON_NAME TEXT("SeNetworkLogonRight")
108 #define SE_BATCH_LOGON_NAME TEXT("SeBatchLogonRight")
109 #define SE_SERVICE_LOGON_NAME TEXT("SeServiceLogonRight")
110 #define TRUST_ATTRIBUTE_NON_TRANSITIVE 1
111 #define TRUST_ATTRIBUTE_UPLEVEL_ONLY 2
112 #define TRUST_ATTRIBUTE_TREE_PARENT 4194304
113 #define TRUST_ATTRIBUTES_VALID  -16580609
114 #define TRUST_AUTH_TYPE_NONE 0
115 #define TRUST_AUTH_TYPE_NT4OWF 1
116 #define TRUST_AUTH_TYPE_CLEAR 2
117 #define TRUST_DIRECTION_DISABLED 0
118 #define TRUST_DIRECTION_INBOUND 1
119 #define TRUST_DIRECTION_OUTBOUND 2
120 #define TRUST_DIRECTION_BIDIRECTIONAL 3
121 #define TRUST_TYPE_DOWNLEVEL 1
122 #define TRUST_TYPE_UPLEVEL 2
123 #define TRUST_TYPE_MIT 3
124 #define TRUST_TYPE_DCE 4
125 #if !defined(_NTDEF_H) && !defined(_SUBAUTH_H)
126 typedef LONG NTSTATUS, *PNTSTATUS;
127 typedef struct _UNICODE_STRING {
128   USHORT Length;
129   USHORT MaximumLength;
130   PWSTR Buffer;
131 } UNICODE_STRING, *PUNICODE_STRING;
132 typedef const UNICODE_STRING* PCUNICODE_STRING;
133 typedef struct _STRING {
134   USHORT Length;
135   USHORT MaximumLength;
136   PCHAR Buffer;
137 } STRING, *PSTRING;
138 #endif
139 typedef UNICODE_STRING LSA_UNICODE_STRING, *PLSA_UNICODE_STRING;
140 typedef STRING LSA_STRING, *PLSA_STRING;
141 typedef enum _MSV1_0_LOGON_SUBMIT_TYPE {
142   MsV1_0InteractiveLogon = 2,
143   MsV1_0Lm20Logon,
144   MsV1_0NetworkLogon,
145   MsV1_0SubAuthLogon,
146   MsV1_0WorkstationUnlockLogon = 7
147 } MSV1_0_LOGON_SUBMIT_TYPE, *PMSV1_0_LOGON_SUBMIT_TYPE;
148 typedef enum _MSV1_0_PROFILE_BUFFER_TYPE {
149   MsV1_0InteractiveProfile = 2,
150   MsV1_0Lm20LogonProfile,
151   MsV1_0SmartCardProfile
152 } MSV1_0_PROFILE_BUFFER_TYPE, *PMSV1_0_PROFILE_BUFFER_TYPE;
153 typedef enum {
154   MsvAvEOL,
155   MsvAvNbComputerName,
156   MsvAvNbDomainName,
157   MsvAvDnsComputerName,
158   MsvAvDnsDomainName
159 } MSV1_0_AVID;
160 typedef enum _MSV1_0_PROTOCOL_MESSAGE_TYPE {
161   MsV1_0Lm20ChallengeRequest = 0,
162   MsV1_0Lm20GetChallengeResponse,
163   MsV1_0EnumerateUsers,
164   MsV1_0GetUserInfo,
165   MsV1_0ReLogonUsers,
166   MsV1_0ChangePassword,
167   MsV1_0ChangeCachedPassword,
168   MsV1_0GenericPassthrough,
169   MsV1_0CacheLogon,
170   MsV1_0SubAuth,
171   MsV1_0DeriveCredential,
172   MsV1_0CacheLookup
173 } MSV1_0_PROTOCOL_MESSAGE_TYPE, *PMSV1_0_PROTOCOL_MESSAGE_TYPE;
174 typedef enum _POLICY_LSA_SERVER_ROLE {
175   PolicyServerRoleBackup = 2,
176   PolicyServerRolePrimary
177 } POLICY_LSA_SERVER_ROLE, *PPOLICY_LSA_SERVER_ROLE;
178 typedef enum _POLICY_SERVER_ENABLE_STATE {
179   PolicyServerEnabled = 2,
180   PolicyServerDisabled
181 } POLICY_SERVER_ENABLE_STATE, *PPOLICY_SERVER_ENABLE_STATE;
182 typedef enum _POLICY_INFORMATION_CLASS {
183   PolicyAuditLogInformation = 1,
184   PolicyAuditEventsInformation,
185   PolicyPrimaryDomainInformation,
186   PolicyPdAccountInformation,
187   PolicyAccountDomainInformation,
188   PolicyLsaServerRoleInformation,
189   PolicyReplicaSourceInformation,
190   PolicyDefaultQuotaInformation,
191   PolicyModificationInformation,
192   PolicyAuditFullSetInformation,
193   PolicyAuditFullQueryInformation,
194   PolicyDnsDomainInformation,
195   PolicyEfsInformation
196 } POLICY_INFORMATION_CLASS, *PPOLICY_INFORMATION_CLASS;
197 typedef enum _POLICY_AUDIT_EVENT_TYPE {
198   AuditCategorySystem,
199   AuditCategoryLogon,
200   AuditCategoryObjectAccess,
201   AuditCategoryPrivilegeUse,
202   AuditCategoryDetailedTracking,
203   AuditCategoryPolicyChange,
204   AuditCategoryAccountManagement,
205   AuditCategoryDirectoryServiceAccess,
206   AuditCategoryAccountLogon
207 } POLICY_AUDIT_EVENT_TYPE, *PPOLICY_AUDIT_EVENT_TYPE;
208 typedef enum _POLICY_LOCAL_INFORMATION_CLASS {
209   PolicyLocalAuditEventsInformation = 1,
210   PolicyLocalPdAccountInformation,
211   PolicyLocalAccountDomainInformation,
212   PolicyLocalLsaServerRoleInformation,
213   PolicyLocalReplicaSourceInformation,
214   PolicyLocalModificationInformation,
215   PolicyLocalAuditFullSetInformation,
216   PolicyLocalAuditFullQueryInformation,
217   PolicyLocalDnsDomainInformation,
218   PolicyLocalIPSecReferenceInformation,
219   PolicyLocalMachinePasswordInformation,
220   PolicyLocalQualityOfServiceInformation,
221   PolicyLocalPolicyLocationInformation
222 } POLICY_LOCAL_INFORMATION_CLASS, *PPOLICY_LOCAL_INFORMATION_CLASS;
223 typedef enum _POLICY_DOMAIN_INFORMATION_CLASS {
224   PolicyDomainIPSecReferenceInformation = 1,
225   PolicyDomainQualityOfServiceInformation,
226   PolicyDomainEfsInformation,
227   PolicyDomainPublicKeyInformation,
228   PolicyDomainPasswordPolicyInformation,
229   PolicyDomainLockoutInformation,
230   PolicyDomainKerberosTicketInformation
231 } POLICY_DOMAIN_INFORMATION_CLASS, *PPOLICY_DOMAIN_INFORMATION_CLASS;
232 typedef enum _SECURITY_LOGON_TYPE {
233   Interactive = 2,
234   Network,
235   Batch,
236   Service,
237   Proxy,
238   Unlock
239 } SECURITY_LOGON_TYPE, *PSECURITY_LOGON_TYPE;
240 typedef enum _TRUSTED_INFORMATION_CLASS {
241   TrustedDomainNameInformation = 1,
242   TrustedControllersInformation,
243   TrustedPosixOffsetInformation,
244   TrustedPasswordInformation,
245   TrustedDomainInformationBasic,
246   TrustedDomainInformationEx,
247   TrustedDomainAuthInformation,
248   TrustedDomainFullInformation
249 } TRUSTED_INFORMATION_CLASS, *PTRUSTED_INFORMATION_CLASS;
250 typedef struct _DOMAIN_PASSWORD_INFORMATION {
251   USHORT MinPasswordLength;
252   USHORT PasswordHistoryLength;
253   ULONG PasswordProperties;
254   LARGE_INTEGER MaxPasswordAge;
255   LARGE_INTEGER MinPasswordAge;
256 } DOMAIN_PASSWORD_INFORMATION, *PDOMAIN_PASSWORD_INFORMATION;
257 typedef ULONG LSA_ENUMERATION_HANDLE, *PLSA_ENUMERATION_HANDLE;
258 typedef struct _LSA_ENUMERATION_INFORMATION {
259   PSID Sid;
260 } LSA_ENUMERATION_INFORMATION, *PLSA_ENUMERATION_INFORMATION;
261 typedef ULONG LSA_OPERATIONAL_MODE, *PLSA_OPERATIONAL_MODE;
262 #if !defined(_NTDEF_H)
263 typedef struct _LSA_OBJECT_ATTRIBUTES {
264   ULONG Length;
265   HANDLE RootDirectory;
266   PLSA_UNICODE_STRING ObjectName;
267   ULONG Attributes;
268   PVOID SecurityDescriptor;
269   PVOID SecurityQualityOfService;
270 } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
271 #endif
272 typedef OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES, *PLSA_OBJECT_ATTRIBUTES;
273 typedef struct _LSA_TRUST_INFORMATION {
274   LSA_UNICODE_STRING Name;
275   PSID Sid;
276 } LSA_TRUST_INFORMATION, *PLSA_TRUST_INFORMATION;
277 typedef struct _LSA_REFERENCED_DOMAIN_LIST {
278   ULONG Entries;
279   PLSA_TRUST_INFORMATION Domains;
280 } LSA_REFERENCED_DOMAIN_LIST, *PLSA_REFERENCED_DOMAIN_LIST;
281 typedef struct _LSA_TRANSLATED_SID {
282   SID_NAME_USE Use;
283   ULONG RelativeId;
284   LONG DomainIndex;
285 } LSA_TRANSLATED_SID, *PLSA_TRANSLATED_SID;
286 typedef struct _LSA_TRANSLATED_NAME {
287   SID_NAME_USE Use;
288   LSA_UNICODE_STRING Name;
289   LONG DomainIndex;
290 } LSA_TRANSLATED_NAME, *PLSA_TRANSLATED_NAME;
291 typedef struct _MSV1_0_INTERACTIVE_LOGON {
292   MSV1_0_LOGON_SUBMIT_TYPE MessageType;
293   UNICODE_STRING LogonDomainName;
294   UNICODE_STRING UserName;
295   UNICODE_STRING Password;
296 } MSV1_0_INTERACTIVE_LOGON, *PMSV1_0_INTERACTIVE_LOGON;
297 typedef struct _MSV1_0_INTERACTIVE_PROFILE {
298   MSV1_0_PROFILE_BUFFER_TYPE MessageType;
299   USHORT LogonCount;
300   USHORT BadPasswordCount;
301   LARGE_INTEGER LogonTime;
302   LARGE_INTEGER LogoffTime;
303   LARGE_INTEGER KickOffTime;
304   LARGE_INTEGER PasswordLastSet;
305   LARGE_INTEGER PasswordCanChange;
306   LARGE_INTEGER PasswordMustChange;
307   UNICODE_STRING LogonScript;
308   UNICODE_STRING HomeDirectory;
309   UNICODE_STRING FullName;
310   UNICODE_STRING ProfilePath;
311   UNICODE_STRING HomeDirectoryDrive;
312   UNICODE_STRING LogonServer;
313   ULONG UserFlags;
314 } MSV1_0_INTERACTIVE_PROFILE, *PMSV1_0_INTERACTIVE_PROFILE;
315 typedef struct _MSV1_0_LM20_LOGON {
316   MSV1_0_LOGON_SUBMIT_TYPE MessageType;
317   UNICODE_STRING LogonDomainName;
318   UNICODE_STRING UserName;
319   UNICODE_STRING Workstation;
320   UCHAR ChallengeToClient[MSV1_0_CHALLENGE_LENGTH];
321   STRING CaseSensitiveChallengeResponse;
322   STRING CaseInsensitiveChallengeResponse;
323   ULONG ParameterControl;
324 } MSV1_0_LM20_LOGON, * PMSV1_0_LM20_LOGON;
325 typedef struct _MSV1_0_SUBAUTH_LOGON{ /* W2K only */
326   MSV1_0_LOGON_SUBMIT_TYPE MessageType;
327   UNICODE_STRING LogonDomainName;
328   UNICODE_STRING UserName;
329   UNICODE_STRING Workstation;
330   UCHAR ChallengeToClient[MSV1_0_CHALLENGE_LENGTH];
331   STRING AuthenticationInfo1;
332   STRING AuthenticationInfo2;
333   ULONG ParameterControl;
334   ULONG SubAuthPackageId;
335 } MSV1_0_SUBAUTH_LOGON, * PMSV1_0_SUBAUTH_LOGON;
336 typedef struct _MSV1_0_LM20_LOGON_PROFILE {
337   MSV1_0_PROFILE_BUFFER_TYPE MessageType;
338   LARGE_INTEGER KickOffTime;
339   LARGE_INTEGER LogoffTime;
340   ULONG UserFlags;
341   UCHAR UserSessionKey[MSV1_0_USER_SESSION_KEY_LENGTH];
342   UNICODE_STRING LogonDomainName;
343   UCHAR LanmanSessionKey[MSV1_0_LANMAN_SESSION_KEY_LENGTH];
344   UNICODE_STRING LogonServer;
345   UNICODE_STRING UserParameters;
346 } MSV1_0_LM20_LOGON_PROFILE, * PMSV1_0_LM20_LOGON_PROFILE;
347 typedef struct _MSV1_0_SUPPLEMENTAL_CREDENTIAL {
348   ULONG Version;
349   ULONG Flags;
350   UCHAR LmPassword[MSV1_0_OWF_PASSWORD_LENGTH];
351   UCHAR NtPassword[MSV1_0_OWF_PASSWORD_LENGTH];
352 } MSV1_0_SUPPLEMENTAL_CREDENTIAL, *PMSV1_0_SUPPLEMENTAL_CREDENTIAL;
353 typedef struct _MSV1_0_NTLM3_RESPONSE {
354   UCHAR Response[MSV1_0_NTLM3_RESPONSE_LENGTH];
355   UCHAR RespType;
356   UCHAR HiRespType;
357   USHORT Flags;
358   ULONG MsgWord;
359   ULONGLONG TimeStamp;
360   UCHAR ChallengeFromClient[MSV1_0_CHALLENGE_LENGTH];
361   ULONG AvPairsOff;
362   UCHAR Buffer[1];
363 } MSV1_0_NTLM3_RESPONSE, *PMSV1_0_NTLM3_RESPONSE;
364 typedef struct  _MSV1_0_AV_PAIR {
365   USHORT AvId;
366   USHORT AvLen;
367 } MSV1_0_AV_PAIR, *PMSV1_0_AV_PAIR;
368 typedef struct _MSV1_0_CHANGEPASSWORD_REQUEST {
369   MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
370   UNICODE_STRING DomainName;
371   UNICODE_STRING AccountName;
372   UNICODE_STRING OldPassword;
373   UNICODE_STRING NewPassword;
374   BOOLEAN Impersonating;
375 } MSV1_0_CHANGEPASSWORD_REQUEST, *PMSV1_0_CHANGEPASSWORD_REQUEST;
376 typedef struct _MSV1_0_CHANGEPASSWORD_RESPONSE {
377   MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
378   BOOLEAN PasswordInfoValid;
379   DOMAIN_PASSWORD_INFORMATION DomainPasswordInfo;
380 } MSV1_0_CHANGEPASSWORD_RESPONSE, *PMSV1_0_CHANGEPASSWORD_RESPONSE;
381 typedef struct _MSV1_0_SUBAUTH_REQUEST{
382   MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
383   ULONG SubAuthPackageId;
384   ULONG SubAuthInfoLength;
385   PUCHAR SubAuthSubmitBuffer;
386 } MSV1_0_SUBAUTH_REQUEST, *PMSV1_0_SUBAUTH_REQUEST;
387 typedef struct _MSV1_0_SUBAUTH_RESPONSE{
388   MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
389   ULONG SubAuthInfoLength;
390   PUCHAR SubAuthReturnBuffer;
391 } MSV1_0_SUBAUTH_RESPONSE, *PMSV1_0_SUBAUTH_RESPONSE;
392 #define MSV1_0_DERIVECRED_TYPE_SHA1 0
393 typedef struct _MSV1_0_DERIVECRED_REQUEST {
394   MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
395   LUID LogonId;
396   ULONG DeriveCredType;
397   ULONG DeriveCredInfoLength;
398   UCHAR DeriveCredSubmitBuffer[1];
399 } MSV1_0_DERIVECRED_REQUEST, *PMSV1_0_DERIVECRED_REQUEST;
400 typedef struct _MSV1_0_DERIVECRED_RESPONSE {
401   MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
402   ULONG DeriveCredInfoLength;
403   UCHAR DeriveCredReturnBuffer[1];
404 } MSV1_0_DERIVECRED_RESPONSE, *PMSV1_0_DERIVECRED_RESPONSE;
405 typedef ULONG POLICY_AUDIT_EVENT_OPTIONS, *PPOLICY_AUDIT_EVENT_OPTIONS;
406 typedef struct _POLICY_PRIVILEGE_DEFINITION {
407   LSA_UNICODE_STRING Name;
408   LUID LocalValue;
409 } POLICY_PRIVILEGE_DEFINITION, *PPOLICY_PRIVILEGE_DEFINITION;
410 typedef struct _POLICY_AUDIT_LOG_INFO {
411   ULONG AuditLogPercentFull;
412   ULONG MaximumLogSize;
413   LARGE_INTEGER AuditRetentionPeriod;
414   BOOLEAN AuditLogFullShutdownInProgress;
415   LARGE_INTEGER TimeToShutdown;
416   ULONG NextAuditRecordId;
417 } POLICY_AUDIT_LOG_INFO, *PPOLICY_AUDIT_LOG_INFO;
418 typedef struct _POLICY_AUDIT_EVENTS_INFO {
419   BOOLEAN AuditingMode;
420   PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions;
421   ULONG MaximumAuditEventCount;
422 } POLICY_AUDIT_EVENTS_INFO, *PPOLICY_AUDIT_EVENTS_INFO;
423 typedef struct _POLICY_ACCOUNT_DOMAIN_INFO {
424   LSA_UNICODE_STRING DomainName;
425   PSID DomainSid;
426 } POLICY_ACCOUNT_DOMAIN_INFO, *PPOLICY_ACCOUNT_DOMAIN_INFO;
427 typedef struct _POLICY_PRIMARY_DOMAIN_INFO {
428   LSA_UNICODE_STRING Name;
429   PSID Sid;
430 } POLICY_PRIMARY_DOMAIN_INFO, *PPOLICY_PRIMARY_DOMAIN_INFO;
431 typedef struct _POLICY_DNS_DOMAIN_INFO {
432   LSA_UNICODE_STRING Name;
433   LSA_UNICODE_STRING DnsDomainName;
434   LSA_UNICODE_STRING DnsForestName;
435   GUID DomainGuid;
436   PSID Sid;
437 } POLICY_DNS_DOMAIN_INFO, *PPOLICY_DNS_DOMAIN_INFO;
438 typedef struct _POLICY_PD_ACCOUNT_INFO {
439   LSA_UNICODE_STRING Name;
440 } POLICY_PD_ACCOUNT_INFO, *PPOLICY_PD_ACCOUNT_INFO;
441 typedef struct _POLICY_LSA_SERVER_ROLE_INFO {
442   POLICY_LSA_SERVER_ROLE LsaServerRole;
443 } POLICY_LSA_SERVER_ROLE_INFO, *PPOLICY_LSA_SERVER_ROLE_INFO;
444 typedef struct _POLICY_REPLICA_SOURCE_INFO {
445   LSA_UNICODE_STRING ReplicaSource;
446   LSA_UNICODE_STRING ReplicaAccountName;
447 } POLICY_REPLICA_SOURCE_INFO, *PPOLICY_REPLICA_SOURCE_INFO;
448 typedef struct _POLICY_DEFAULT_QUOTA_INFO {
449   QUOTA_LIMITS QuotaLimits;
450 } POLICY_DEFAULT_QUOTA_INFO, *PPOLICY_DEFAULT_QUOTA_INFO;
451 typedef struct _POLICY_MODIFICATION_INFO {
452   LARGE_INTEGER ModifiedId;
453   LARGE_INTEGER DatabaseCreationTime;
454 } POLICY_MODIFICATION_INFO, *PPOLICY_MODIFICATION_INFO;
455 typedef struct _POLICY_AUDIT_FULL_SET_INFO {
456   BOOLEAN ShutDownOnFull;
457 } POLICY_AUDIT_FULL_SET_INFO, *PPOLICY_AUDIT_FULL_SET_INFO;
458 typedef struct _POLICY_AUDIT_FULL_QUERY_INFO {
459   BOOLEAN ShutDownOnFull;
460   BOOLEAN LogIsFull;
461 } POLICY_AUDIT_FULL_QUERY_INFO, *PPOLICY_AUDIT_FULL_QUERY_INFO;
462 typedef struct _POLICY_EFS_INFO {
463   ULONG InfoLength;
464   PUCHAR EfsBlob;
465 } POLICY_EFS_INFO, *PPOLICY_EFS_INFO;
466 typedef struct _POLICY_LOCAL_IPSEC_REFERENCE_INFO {
467   LSA_UNICODE_STRING ObjectPath;
468 } POLICY_LOCAL_IPSEC_REFERENCE_INFO, *PPOLICY_LOCAL_IPSEC_REFERENCE_INFO;
469 typedef struct _POLICY_LOCAL_MACHINE_PASSWORD_INFO {
470   LARGE_INTEGER PasswordChangeInterval;
471 } POLICY_LOCAL_MACHINE_PASSWORD_INFO, *PPOLICY_LOCAL_MACHINE_PASSWORD_INFO;
472 typedef struct _POLICY_LOCAL_POLICY_LOCATION_INFO {
473   ULONG PolicyLocation;
474 } POLICY_LOCAL_POLICY_LOCATION_INFO, *PPOLICY_LOCAL_POLICY_LOCATION_INFO;
475 typedef struct _POLICY_LOCAL_QUALITY_OF_SERVICE_INFO {
476   ULONG QualityOfService;
477 } POLICY_LOCAL_QUALITY_OF_SERVICE_INFO, *PPOLICY_LOCAL_QUALITY_OF_SERVICE_INFO;
478 typedef struct _POLICY_LOCAL_QUALITY_OF_SERVICE_INFO POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO;
479 typedef struct _POLICY_LOCAL_QUALITY_OF_SERVICE_INFO *PPOLICY_DOMAIN_QUALITY_OF_SERVICE_INFO;
480 typedef struct _POLICY_DOMAIN_PUBLIC_KEY_INFO {
481   ULONG InfoLength;
482   PUCHAR PublicKeyInfo;
483 } POLICY_DOMAIN_PUBLIC_KEY_INFO, *PPOLICY_DOMAIN_PUBLIC_KEY_INFO;
484 typedef struct _POLICY_DOMAIN_LOCKOUT_INFO {
485   LARGE_INTEGER LockoutDuration;
486   LARGE_INTEGER LockoutObservationWindow;
487   USHORT LockoutThreshold;
488 } POLICY_DOMAIN_LOCKOUT_INFO, *PPOLICY_DOMAIN_LOCKOUT_INFO;
489 typedef struct _POLICY_DOMAIN_PASSWORD_INFO {
490   USHORT MinPasswordLength;
491   USHORT PasswordHistoryLength;
492   ULONG PasswordProperties;
493   LARGE_INTEGER MaxPasswordAge;
494   LARGE_INTEGER MinPasswordAge;
495 } POLICY_DOMAIN_PASSWORD_INFO, *PPOLICY_DOMAIN_PASSWORD_INFO;
496 typedef struct _POLICY_DOMAIN_KERBEROS_TICKET_INFO {
497   ULONG AuthenticationOptions;
498   LARGE_INTEGER MinTicketAge;
499   LARGE_INTEGER MaxTicketAge;
500   LARGE_INTEGER MaxRenewAge;
501   LARGE_INTEGER ProxyLifetime;
502   LARGE_INTEGER ForceLogoff;
503 } POLICY_DOMAIN_KERBEROS_TICKET_INFO, *PPOLICY_DOMAIN_KERBEROS_TICKET_INFO;
504 typedef PVOID LSA_HANDLE, *PLSA_HANDLE;
505 typedef struct _TRUSTED_DOMAIN_NAME_INFO {
506   LSA_UNICODE_STRING Name;
507 } TRUSTED_DOMAIN_NAME_INFO, *PTRUSTED_DOMAIN_NAME_INFO;
508 typedef struct _TRUSTED_CONTROLLERS_INFO {
509   ULONG Entries;
510   PLSA_UNICODE_STRING Names;
511 } TRUSTED_CONTROLLERS_INFO, *PTRUSTED_CONTROLLERS_INFO;
512 typedef struct _TRUSTED_POSIX_OFFSET_INFO {
513   ULONG Offset;
514 } TRUSTED_POSIX_OFFSET_INFO, *PTRUSTED_POSIX_OFFSET_INFO;
515 typedef struct _TRUSTED_PASSWORD_INFO {
516   LSA_UNICODE_STRING Password;
517   LSA_UNICODE_STRING OldPassword;
518 } TRUSTED_PASSWORD_INFO, *PTRUSTED_PASSWORD_INFO;
519 typedef  LSA_TRUST_INFORMATION TRUSTED_DOMAIN_INFORMATION_BASIC;
520 typedef PLSA_TRUST_INFORMATION *PTRUSTED_DOMAIN_INFORMATION_BASIC;
521 typedef struct _TRUSTED_DOMAIN_INFORMATION_EX {
522   LSA_UNICODE_STRING Name;
523   LSA_UNICODE_STRING FlatName;
524   PSID Sid;
525   ULONG TrustDirection;
526   ULONG TrustType;
527   ULONG TrustAttributes;
528 } TRUSTED_DOMAIN_INFORMATION_EX, *PTRUSTED_DOMAIN_INFORMATION_EX;
529 typedef struct _LSA_AUTH_INFORMATION {
530   LARGE_INTEGER LastUpdateTime;
531   ULONG AuthType;
532   ULONG AuthInfoLength;
533   PUCHAR AuthInfo;
534 } LSA_AUTH_INFORMATION, *PLSA_AUTH_INFORMATION;
535 typedef struct _TRUSTED_DOMAIN_AUTH_INFORMATION {
536   ULONG IncomingAuthInfos;
537   PLSA_AUTH_INFORMATION IncomingAuthenticationInformation;
538   PLSA_AUTH_INFORMATION IncomingPreviousAuthenticationInformation;
539   ULONG OutgoingAuthInfos;
540   PLSA_AUTH_INFORMATION OutgoingAuthenticationInformation;
541   PLSA_AUTH_INFORMATION OutgoingPreviousAuthenticationInformation;
542 } TRUSTED_DOMAIN_AUTH_INFORMATION, *PTRUSTED_DOMAIN_AUTH_INFORMATION;
543 typedef struct _TRUSTED_DOMAIN_FULL_INFORMATION {
544   TRUSTED_DOMAIN_INFORMATION_EX Information;
545   TRUSTED_POSIX_OFFSET_INFO PosixOffset;
546   TRUSTED_DOMAIN_AUTH_INFORMATION AuthInformation;
547 } TRUSTED_DOMAIN_FULL_INFORMATION, *PTRUSTED_DOMAIN_FULL_INFORMATION;
548 NTSTATUS NTAPI LsaAddAccountRights(LSA_HANDLE,PSID,PLSA_UNICODE_STRING,ULONG);
549 NTSTATUS NTAPI LsaCallAuthenticationPackage(HANDLE,ULONG,PVOID,ULONG,PVOID*,
550                             PULONG,PNTSTATUS);
551 NTSTATUS NTAPI LsaClose(LSA_HANDLE);
552 NTSTATUS NTAPI LsaConnectUntrusted(PHANDLE);
553 NTSTATUS NTAPI LsaCreateTrustedDomainEx(LSA_HANDLE,
554                             PTRUSTED_DOMAIN_INFORMATION_EX,
555                             PTRUSTED_DOMAIN_AUTH_INFORMATION,ACCESS_MASK,
556                             PLSA_HANDLE);
557 NTSTATUS NTAPI LsaDeleteTrustedDomain(LSA_HANDLE,PSID);
558 NTSTATUS NTAPI LsaDeregisterLogonProcess(HANDLE);
559 NTSTATUS NTAPI LsaEnumerateAccountRights(LSA_HANDLE,PSID,PLSA_UNICODE_STRING*,PULONG);
560 NTSTATUS NTAPI LsaEnumerateAccountsWithUserRight(LSA_HANDLE,PLSA_UNICODE_STRING,
561                             PVOID*,PULONG);
562 NTSTATUS NTAPI LsaEnumerateTrustedDomains(LSA_HANDLE,PLSA_ENUMERATION_HANDLE,
563                             PVOID*,ULONG,PULONG);
564 NTSTATUS NTAPI LsaEnumerateTrustedDomainsEx(LSA_HANDLE,PLSA_ENUMERATION_HANDLE,
565                             TRUSTED_INFORMATION_CLASS,PVOID*,ULONG,PULONG);
566 NTSTATUS NTAPI LsaFreeMemory(PVOID);
567 NTSTATUS NTAPI LsaFreeReturnBuffer(PVOID);
568 NTSTATUS NTAPI LsaLogonUser(HANDLE,PLSA_STRING,SECURITY_LOGON_TYPE,ULONG,PVOID,
569                             ULONG,PTOKEN_GROUPS,PTOKEN_SOURCE,PVOID*,PULONG,
570                             PLUID,PHANDLE,PQUOTA_LIMITS,PNTSTATUS);
571 NTSTATUS NTAPI LsaLookupAuthenticationPackage(HANDLE,PLSA_STRING,PULONG);
572 NTSTATUS NTAPI LsaLookupNames(LSA_HANDLE,ULONG,PLSA_UNICODE_STRING,
573                             PLSA_REFERENCED_DOMAIN_LIST*,PLSA_TRANSLATED_SID*);
574 NTSTATUS NTAPI LsaLookupSids(LSA_HANDLE,ULONG,PSID*,
575                             PLSA_REFERENCED_DOMAIN_LIST*,PLSA_TRANSLATED_NAME*);
576 ULONG NTAPI LsaNtStatusToWinError(NTSTATUS);
577 NTSTATUS NTAPI LsaOpenPolicy(PLSA_UNICODE_STRING,PLSA_OBJECT_ATTRIBUTES,
578                             ACCESS_MASK,PLSA_HANDLE);
579 NTSTATUS NTAPI LsaQueryDomainInformationPolicy(LSA_HANDLE,
580                             POLICY_DOMAIN_INFORMATION_CLASS,PVOID*);
581 NTSTATUS NTAPI LsaQueryInformationPolicy(LSA_HANDLE,POLICY_INFORMATION_CLASS,PVOID*);
582 NTSTATUS NTAPI LsaQueryLocalInformationPolicy(LSA_HANDLE,
583                             POLICY_LOCAL_INFORMATION_CLASS,PVOID*);
584 NTSTATUS NTAPI LsaQueryTrustedDomainInfo(LSA_HANDLE,PSID,
585                             TRUSTED_INFORMATION_CLASS,PVOID*);
586 NTSTATUS NTAPI LsaQueryTrustedDomainInfoByName(LSA_HANDLE,PLSA_UNICODE_STRING,
587                             TRUSTED_INFORMATION_CLASS,PVOID*);
588 NTSTATUS NTAPI LsaRegisterLogonProcess(PLSA_STRING,PHANDLE,PLSA_OPERATIONAL_MODE);
589 NTSTATUS NTAPI LsaRemoveAccountRights(LSA_HANDLE,PSID,BOOLEAN,
590                             PLSA_UNICODE_STRING,ULONG);
591 NTSTATUS NTAPI LsaRetrievePrivateData(LSA_HANDLE,PLSA_UNICODE_STRING,
592                             PLSA_UNICODE_STRING*);
593 NTSTATUS NTAPI LsaSetDomainInformationPolicy(LSA_HANDLE,
594                             POLICY_DOMAIN_INFORMATION_CLASS,PVOID);
595 NTSTATUS NTAPI LsaSetInformationPolicy(LSA_HANDLE,POLICY_INFORMATION_CLASS, PVOID);
596 NTSTATUS NTAPI LsaSetLocalInformationPolicy(LSA_HANDLE,
597                             POLICY_LOCAL_INFORMATION_CLASS,PVOID);
598 NTSTATUS NTAPI LsaSetTrustedDomainInformation(LSA_HANDLE,PSID,
599                             TRUSTED_INFORMATION_CLASS,PVOID);
600 NTSTATUS NTAPI LsaSetTrustedDomainInfoByName(LSA_HANDLE,PLSA_UNICODE_STRING,
601                             TRUSTED_INFORMATION_CLASS,PVOID);
602 NTSTATUS NTAPI LsaStorePrivateData(LSA_HANDLE,PLSA_UNICODE_STRING,
603                             PLSA_UNICODE_STRING);
604 typedef NTSTATUS (*PSAM_PASSWORD_NOTIFICATION_ROUTINE)(PUNICODE_STRING,
605                             ULONG,PUNICODE_STRING);
606 typedef BOOLEAN (*PSAM_INIT_NOTIFICATION_ROUTINE)(void);
607 typedef BOOLEAN (*PSAM_PASSWORD_FILTER_ROUTINE)(PUNICODE_STRING,PUNICODE_STRING,
608                             PUNICODE_STRING,BOOLEAN);
609 #ifdef __cplusplus
610 }
611 #endif
612 #endif /* _NTSECAPI_H */