mingw-5.1.4/win32/include/ntsecapi.h
changeset 0 76b1f169d9fe
equal deleted inserted replaced
-1:000000000000 0:76b1f169d9fe
       
     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 */