home *** CD-ROM | disk | FTP | other *** search
/ H4CK3R 14 / hacker14.iso / programacao / cwin / c.exe / $INSTDIR / include / ntsecapi.h < prev    next >
Encoding:
C/C++ Source or Header  |  2003-12-15  |  23.9 KB  |  612 lines

  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 struct _STRING {
  133.   USHORT Length;
  134.   USHORT MaximumLength;
  135.   PCHAR Buffer;
  136. } STRING, *PSTRING;
  137. #endif
  138. typedef UNICODE_STRING LSA_UNICODE_STRING, *PLSA_UNICODE_STRING;
  139. typedef STRING LSA_STRING, *PLSA_STRING;
  140. typedef enum _MSV1_0_LOGON_SUBMIT_TYPE {
  141.   MsV1_0InteractiveLogon = 2,
  142.   MsV1_0Lm20Logon,
  143.   MsV1_0NetworkLogon,
  144.   MsV1_0SubAuthLogon,
  145.   MsV1_0WorkstationUnlockLogon = 7
  146. } MSV1_0_LOGON_SUBMIT_TYPE, *PMSV1_0_LOGON_SUBMIT_TYPE;
  147. typedef enum _MSV1_0_PROFILE_BUFFER_TYPE {
  148.   MsV1_0InteractiveProfile = 2,
  149.   MsV1_0Lm20LogonProfile,
  150.   MsV1_0SmartCardProfile
  151. } MSV1_0_PROFILE_BUFFER_TYPE, *PMSV1_0_PROFILE_BUFFER_TYPE;
  152. typedef enum {
  153.   MsvAvEOL,
  154.   MsvAvNbComputerName,
  155.   MsvAvNbDomainName,
  156.   MsvAvDnsComputerName,
  157.   MsvAvDnsDomainName
  158. } MSV1_0_AVID;
  159. typedef enum _MSV1_0_PROTOCOL_MESSAGE_TYPE {
  160.   MsV1_0Lm20ChallengeRequest = 0,
  161.   MsV1_0Lm20GetChallengeResponse,
  162.   MsV1_0EnumerateUsers,
  163.   MsV1_0GetUserInfo,
  164.   MsV1_0ReLogonUsers,
  165.   MsV1_0ChangePassword,
  166.   MsV1_0ChangeCachedPassword,
  167.   MsV1_0GenericPassthrough,
  168.   MsV1_0CacheLogon,
  169.   MsV1_0SubAuth,
  170.   MsV1_0DeriveCredential,
  171.   MsV1_0CacheLookup
  172. } MSV1_0_PROTOCOL_MESSAGE_TYPE, *PMSV1_0_PROTOCOL_MESSAGE_TYPE;
  173. typedef enum _POLICY_LSA_SERVER_ROLE {
  174.   PolicyServerRoleBackup = 2,
  175.   PolicyServerRolePrimary
  176. } POLICY_LSA_SERVER_ROLE, *PPOLICY_LSA_SERVER_ROLE;
  177. typedef enum _POLICY_SERVER_ENABLE_STATE {
  178.   PolicyServerEnabled = 2,
  179.   PolicyServerDisabled
  180. } POLICY_SERVER_ENABLE_STATE, *PPOLICY_SERVER_ENABLE_STATE;
  181. typedef enum _POLICY_INFORMATION_CLASS {
  182.   PolicyAuditLogInformation = 1,
  183.   PolicyAuditEventsInformation,
  184.   PolicyPrimaryDomainInformation,
  185.   PolicyPdAccountInformation,
  186.   PolicyAccountDomainInformation,
  187.   PolicyLsaServerRoleInformation,
  188.   PolicyReplicaSourceInformation,
  189.   PolicyDefaultQuotaInformation,
  190.   PolicyModificationInformation,
  191.   PolicyAuditFullSetInformation,
  192.   PolicyAuditFullQueryInformation,
  193.   PolicyDnsDomainInformation,
  194.   PolicyEfsInformation
  195. } POLICY_INFORMATION_CLASS, *PPOLICY_INFORMATION_CLASS;
  196. typedef enum _POLICY_AUDIT_EVENT_TYPE {
  197.   AuditCategorySystem,
  198.   AuditCategoryLogon,
  199.   AuditCategoryObjectAccess,
  200.   AuditCategoryPrivilegeUse,
  201.   AuditCategoryDetailedTracking,
  202.   AuditCategoryPolicyChange,
  203.   AuditCategoryAccountManagement,
  204.   AuditCategoryDirectoryServiceAccess,
  205.   AuditCategoryAccountLogon
  206. } POLICY_AUDIT_EVENT_TYPE, *PPOLICY_AUDIT_EVENT_TYPE;
  207. typedef enum _POLICY_LOCAL_INFORMATION_CLASS {
  208.   PolicyLocalAuditEventsInformation = 1,
  209.   PolicyLocalPdAccountInformation,
  210.   PolicyLocalAccountDomainInformation,
  211.   PolicyLocalLsaServerRoleInformation,
  212.   PolicyLocalReplicaSourceInformation,
  213.   PolicyLocalModificationInformation,
  214.   PolicyLocalAuditFullSetInformation,
  215.   PolicyLocalAuditFullQueryInformation,
  216.   PolicyLocalDnsDomainInformation,
  217.   PolicyLocalIPSecReferenceInformation,
  218.   PolicyLocalMachinePasswordInformation,
  219.   PolicyLocalQualityOfServiceInformation,
  220.   PolicyLocalPolicyLocationInformation
  221. } POLICY_LOCAL_INFORMATION_CLASS, *PPOLICY_LOCAL_INFORMATION_CLASS;
  222. typedef enum _POLICY_DOMAIN_INFORMATION_CLASS {
  223.   PolicyDomainIPSecReferenceInformation = 1,
  224.   PolicyDomainQualityOfServiceInformation,
  225.   PolicyDomainEfsInformation,
  226.   PolicyDomainPublicKeyInformation,
  227.   PolicyDomainPasswordPolicyInformation,
  228.   PolicyDomainLockoutInformation,
  229.   PolicyDomainKerberosTicketInformation
  230. } POLICY_DOMAIN_INFORMATION_CLASS, *PPOLICY_DOMAIN_INFORMATION_CLASS;
  231. typedef enum _SECURITY_LOGON_TYPE {
  232.   Interactive = 2,
  233.   Network,
  234.   Batch,
  235.   Service,
  236.   Proxy,
  237.   Unlock
  238. } SECURITY_LOGON_TYPE, *PSECURITY_LOGON_TYPE;
  239. typedef enum _TRUSTED_INFORMATION_CLASS {
  240.   TrustedDomainNameInformation = 1,
  241.   TrustedControllersInformation,
  242.   TrustedPosixOffsetInformation,
  243.   TrustedPasswordInformation,
  244.   TrustedDomainInformationBasic,
  245.   TrustedDomainInformationEx,
  246.   TrustedDomainAuthInformation,
  247.   TrustedDomainFullInformation
  248. } TRUSTED_INFORMATION_CLASS, *PTRUSTED_INFORMATION_CLASS;
  249. typedef struct _DOMAIN_PASSWORD_INFORMATION {
  250.   USHORT MinPasswordLength;
  251.   USHORT PasswordHistoryLength;
  252.   ULONG PasswordProperties;
  253.   LARGE_INTEGER MaxPasswordAge;
  254.   LARGE_INTEGER MinPasswordAge;
  255. } DOMAIN_PASSWORD_INFORMATION, *PDOMAIN_PASSWORD_INFORMATION;
  256. typedef ULONG LSA_ENUMERATION_HANDLE, *PLSA_ENUMERATION_HANDLE;
  257. typedef struct _LSA_ENUMERATION_INFORMATION {
  258.   PSID Sid;
  259. } LSA_ENUMERATION_INFORMATION, *PLSA_ENUMERATION_INFORMATION;
  260. typedef ULONG LSA_OPERATIONAL_MODE, *PLSA_OPERATIONAL_MODE;
  261. #if !defined(_NTDEF_H)
  262. typedef struct _LSA_OBJECT_ATTRIBUTES {
  263.   ULONG Length;
  264.   HANDLE RootDirectory;
  265.   PLSA_UNICODE_STRING ObjectName;
  266.   ULONG Attributes;
  267.   PVOID SecurityDescriptor;
  268.   PVOID SecurityQualityOfService;
  269. } OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
  270. #endif
  271. typedef OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES, *PLSA_OBJECT_ATTRIBUTES;
  272. typedef struct _LSA_TRUST_INFORMATION {
  273.   LSA_UNICODE_STRING Name;
  274.   PSID Sid;
  275. } LSA_TRUST_INFORMATION, *PLSA_TRUST_INFORMATION;
  276. typedef struct _LSA_REFERENCED_DOMAIN_LIST {
  277.   ULONG Entries;
  278.   PLSA_TRUST_INFORMATION Domains;
  279. } LSA_REFERENCED_DOMAIN_LIST, *PLSA_REFERENCED_DOMAIN_LIST;
  280. typedef struct _LSA_TRANSLATED_SID {
  281.   SID_NAME_USE Use;
  282.   ULONG RelativeId;
  283.   LONG DomainIndex;
  284. } LSA_TRANSLATED_SID, *PLSA_TRANSLATED_SID;
  285. typedef struct _LSA_TRANSLATED_NAME {
  286.   SID_NAME_USE Use;
  287.   LSA_UNICODE_STRING Name;
  288.   LONG DomainIndex;
  289. } LSA_TRANSLATED_NAME, *PLSA_TRANSLATED_NAME;
  290. typedef struct _MSV1_0_INTERACTIVE_LOGON {
  291.   MSV1_0_LOGON_SUBMIT_TYPE MessageType;
  292.   UNICODE_STRING LogonDomainName;
  293.   UNICODE_STRING UserName;
  294.   UNICODE_STRING Password;
  295. } MSV1_0_INTERACTIVE_LOGON, *PMSV1_0_INTERACTIVE_LOGON;
  296. typedef struct _MSV1_0_INTERACTIVE_PROFILE {
  297.   MSV1_0_PROFILE_BUFFER_TYPE MessageType;
  298.   USHORT LogonCount;
  299.   USHORT BadPasswordCount;
  300.   LARGE_INTEGER LogonTime;
  301.   LARGE_INTEGER LogoffTime;
  302.   LARGE_INTEGER KickOffTime;
  303.   LARGE_INTEGER PasswordLastSet;
  304.   LARGE_INTEGER PasswordCanChange;
  305.   LARGE_INTEGER PasswordMustChange;
  306.   UNICODE_STRING LogonScript;
  307.   UNICODE_STRING HomeDirectory;
  308.   UNICODE_STRING FullName;
  309.   UNICODE_STRING ProfilePath;
  310.   UNICODE_STRING HomeDirectoryDrive;
  311.   UNICODE_STRING LogonServer;
  312.   ULONG UserFlags;
  313. } MSV1_0_INTERACTIVE_PROFILE, *PMSV1_0_INTERACTIVE_PROFILE;
  314. typedef struct _MSV1_0_LM20_LOGON {
  315.   MSV1_0_LOGON_SUBMIT_TYPE MessageType;
  316.   UNICODE_STRING LogonDomainName;
  317.   UNICODE_STRING UserName;
  318.   UNICODE_STRING Workstation;
  319.   UCHAR ChallengeToClient[MSV1_0_CHALLENGE_LENGTH];
  320.   STRING CaseSensitiveChallengeResponse;
  321.   STRING CaseInsensitiveChallengeResponse;
  322.   ULONG ParameterControl;
  323. } MSV1_0_LM20_LOGON, * PMSV1_0_LM20_LOGON;
  324. typedef struct _MSV1_0_SUBAUTH_LOGON{ /* W2K only */
  325.   MSV1_0_LOGON_SUBMIT_TYPE MessageType;
  326.   UNICODE_STRING LogonDomainName;
  327.   UNICODE_STRING UserName;
  328.   UNICODE_STRING Workstation;
  329.   UCHAR ChallengeToClient[MSV1_0_CHALLENGE_LENGTH];
  330.   STRING AuthenticationInfo1;
  331.   STRING AuthenticationInfo2;
  332.   ULONG ParameterControl;
  333.   ULONG SubAuthPackageId;
  334. } MSV1_0_SUBAUTH_LOGON, * PMSV1_0_SUBAUTH_LOGON;
  335. typedef struct _MSV1_0_LM20_LOGON_PROFILE {
  336.   MSV1_0_PROFILE_BUFFER_TYPE MessageType;
  337.   LARGE_INTEGER KickOffTime;
  338.   LARGE_INTEGER LogoffTime;
  339.   ULONG UserFlags;
  340.   UCHAR UserSessionKey[MSV1_0_USER_SESSION_KEY_LENGTH];
  341.   UNICODE_STRING LogonDomainName;
  342.   UCHAR LanmanSessionKey[MSV1_0_LANMAN_SESSION_KEY_LENGTH];
  343.   UNICODE_STRING LogonServer;
  344.   UNICODE_STRING UserParameters;
  345. } MSV1_0_LM20_LOGON_PROFILE, * PMSV1_0_LM20_LOGON_PROFILE;
  346. typedef struct _MSV1_0_SUPPLEMENTAL_CREDENTIAL {
  347.   ULONG Version;
  348.   ULONG Flags;
  349.   UCHAR LmPassword[MSV1_0_OWF_PASSWORD_LENGTH];
  350.   UCHAR NtPassword[MSV1_0_OWF_PASSWORD_LENGTH];
  351. } MSV1_0_SUPPLEMENTAL_CREDENTIAL, *PMSV1_0_SUPPLEMENTAL_CREDENTIAL;
  352. typedef struct _MSV1_0_NTLM3_RESPONSE {
  353.   UCHAR Response[MSV1_0_NTLM3_RESPONSE_LENGTH];
  354.   UCHAR RespType;
  355.   UCHAR HiRespType;
  356.   USHORT Flags;
  357.   ULONG MsgWord;
  358.   ULONGLONG TimeStamp;
  359.   UCHAR ChallengeFromClient[MSV1_0_CHALLENGE_LENGTH];
  360.   ULONG AvPairsOff;
  361.   UCHAR Buffer[1];
  362. } MSV1_0_NTLM3_RESPONSE, *PMSV1_0_NTLM3_RESPONSE;
  363. typedef struct  _MSV1_0_AV_PAIR {
  364.   USHORT AvId;
  365.   USHORT AvLen;
  366. } MSV1_0_AV_PAIR, *PMSV1_0_AV_PAIR;
  367. typedef struct _MSV1_0_CHANGEPASSWORD_REQUEST {
  368.   MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
  369.   UNICODE_STRING DomainName;
  370.   UNICODE_STRING AccountName;
  371.   UNICODE_STRING OldPassword;
  372.   UNICODE_STRING NewPassword;
  373.   BOOLEAN Impersonating;
  374. } MSV1_0_CHANGEPASSWORD_REQUEST, *PMSV1_0_CHANGEPASSWORD_REQUEST;
  375. typedef struct _MSV1_0_CHANGEPASSWORD_RESPONSE {
  376.   MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
  377.   BOOLEAN PasswordInfoValid;
  378.   DOMAIN_PASSWORD_INFORMATION DomainPasswordInfo;
  379. } MSV1_0_CHANGEPASSWORD_RESPONSE, *PMSV1_0_CHANGEPASSWORD_RESPONSE;
  380. typedef struct _MSV1_0_SUBAUTH_REQUEST{
  381.   MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
  382.   ULONG SubAuthPackageId;
  383.   ULONG SubAuthInfoLength;
  384.   PUCHAR SubAuthSubmitBuffer;
  385. } MSV1_0_SUBAUTH_REQUEST, *PMSV1_0_SUBAUTH_REQUEST;
  386. typedef struct _MSV1_0_SUBAUTH_RESPONSE{
  387.   MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
  388.   ULONG SubAuthInfoLength;
  389.   PUCHAR SubAuthReturnBuffer;
  390. } MSV1_0_SUBAUTH_RESPONSE, *PMSV1_0_SUBAUTH_RESPONSE;
  391. #define MSV1_0_DERIVECRED_TYPE_SHA1 0
  392. typedef struct _MSV1_0_DERIVECRED_REQUEST {
  393.   MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
  394.   LUID LogonId;
  395.   ULONG DeriveCredType;
  396.   ULONG DeriveCredInfoLength;
  397.   UCHAR DeriveCredSubmitBuffer[1];
  398. } MSV1_0_DERIVECRED_REQUEST, *PMSV1_0_DERIVECRED_REQUEST;
  399. typedef struct _MSV1_0_DERIVECRED_RESPONSE {
  400.   MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
  401.   ULONG DeriveCredInfoLength;
  402.   UCHAR DeriveCredReturnBuffer[1];
  403. } MSV1_0_DERIVECRED_RESPONSE, *PMSV1_0_DERIVECRED_RESPONSE;
  404. typedef ULONG POLICY_AUDIT_EVENT_OPTIONS, *PPOLICY_AUDIT_EVENT_OPTIONS;
  405. typedef struct _POLICY_PRIVILEGE_DEFINITION {
  406.   LSA_UNICODE_STRING Name;
  407.   LUID LocalValue;
  408. } POLICY_PRIVILEGE_DEFINITION, *PPOLICY_PRIVILEGE_DEFINITION;
  409. typedef struct _POLICY_AUDIT_LOG_INFO {
  410.   ULONG AuditLogPercentFull;
  411.   ULONG MaximumLogSize;
  412.   LARGE_INTEGER AuditRetentionPeriod;
  413.   BOOLEAN AuditLogFullShutdownInProgress;
  414.   LARGE_INTEGER TimeToShutdown;
  415.   ULONG NextAuditRecordId;
  416. } POLICY_AUDIT_LOG_INFO, *PPOLICY_AUDIT_LOG_INFO;
  417. typedef struct _POLICY_AUDIT_EVENTS_INFO {
  418.   BOOLEAN AuditingMode;
  419.   PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions;
  420.   ULONG MaximumAuditEventCount;
  421. } POLICY_AUDIT_EVENTS_INFO, *PPOLICY_AUDIT_EVENTS_INFO;
  422. typedef struct _POLICY_ACCOUNT_DOMAIN_INFO {
  423.   LSA_UNICODE_STRING DomainName;
  424.   PSID DomainSid;
  425. } POLICY_ACCOUNT_DOMAIN_INFO, *PPOLICY_ACCOUNT_DOMAIN_INFO;
  426. typedef struct _POLICY_PRIMARY_DOMAIN_INFO {
  427.   LSA_UNICODE_STRING Name;
  428.   PSID Sid;
  429. } POLICY_PRIMARY_DOMAIN_INFO, *PPOLICY_PRIMARY_DOMAIN_INFO;
  430. typedef struct _POLICY_DNS_DOMAIN_INFO {
  431.   LSA_UNICODE_STRING Name;
  432.   LSA_UNICODE_STRING DnsDomainName;
  433.   LSA_UNICODE_STRING DnsTreeName;
  434.   GUID DomainGuid;
  435.   PSID Sid;
  436. } POLICY_DNS_DOMAIN_INFO, *PPOLICY_DNS_DOMAIN_INFO;
  437. typedef struct _POLICY_PD_ACCOUNT_INFO {
  438.   LSA_UNICODE_STRING Name;
  439. } POLICY_PD_ACCOUNT_INFO, *PPOLICY_PD_ACCOUNT_INFO;
  440. typedef struct _POLICY_LSA_SERVER_ROLE_INFO {
  441.   POLICY_LSA_SERVER_ROLE LsaServerRole;
  442. } POLICY_LSA_SERVER_ROLE_INFO, *PPOLICY_LSA_SERVER_ROLE_INFO;
  443. typedef struct _POLICY_REPLICA_SOURCE_INFO {
  444.   LSA_UNICODE_STRING ReplicaSource;
  445.   LSA_UNICODE_STRING ReplicaAccountName;
  446. } POLICY_REPLICA_SOURCE_INFO, *PPOLICY_REPLICA_SOURCE_INFO;
  447. typedef struct _POLICY_DEFAULT_QUOTA_INFO {
  448.   QUOTA_LIMITS QuotaLimits;
  449. } POLICY_DEFAULT_QUOTA_INFO, *PPOLICY_DEFAULT_QUOTA_INFO;
  450. typedef struct _POLICY_MODIFICATION_INFO {
  451.   LARGE_INTEGER ModifiedId;
  452.   LARGE_INTEGER DatabaseCreationTime;
  453. } POLICY_MODIFICATION_INFO, *PPOLICY_MODIFICATION_INFO;
  454. typedef struct _POLICY_AUDIT_FULL_SET_INFO {
  455.   BOOLEAN ShutDownOnFull;
  456. } POLICY_AUDIT_FULL_SET_INFO, *PPOLICY_AUDIT_FULL_SET_INFO;
  457. typedef struct _POLICY_AUDIT_FULL_QUERY_INFO {
  458.   BOOLEAN ShutDownOnFull;
  459.   BOOLEAN LogIsFull;
  460. } POLICY_AUDIT_FULL_QUERY_INFO, *PPOLICY_AUDIT_FULL_QUERY_INFO;
  461. typedef struct _POLICY_EFS_INFO {
  462.   ULONG InfoLength;
  463.   PUCHAR EfsBlob;
  464. } POLICY_EFS_INFO, *PPOLICY_EFS_INFO;
  465. typedef struct _POLICY_LOCAL_IPSEC_REFERENCE_INFO {
  466.   LSA_UNICODE_STRING ObjectPath;
  467. } POLICY_LOCAL_IPSEC_REFERENCE_INFO, *PPOLICY_LOCAL_IPSEC_REFERENCE_INFO;
  468. typedef struct _POLICY_LOCAL_MACHINE_PASSWORD_INFO {
  469.   LARGE_INTEGER PasswordChangeInterval;
  470. } POLICY_LOCAL_MACHINE_PASSWORD_INFO, *PPOLICY_LOCAL_MACHINE_PASSWORD_INFO;
  471. typedef struct _POLICY_LOCAL_POLICY_LOCATION_INFO {
  472.   ULONG PolicyLocation;
  473. } POLICY_LOCAL_POLICY_LOCATION_INFO, *PPOLICY_LOCAL_POLICY_LOCATION_INFO;
  474. typedef struct _POLICY_LOCAL_QUALITY_OF_SERVICE_INFO {
  475.   ULONG QualityOfService;
  476. } POLICY_LOCAL_QUALITY_OF_SERVICE_INFO, *PPOLICY_LOCAL_QUALITY_OF_SERVICE_INFO;
  477. typedef struct _POLICY_LOCAL_QUALITY_OF_SERVICE_INFO POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO;
  478. typedef struct _POLICY_LOCAL_QUALITY_OF_SERVICE_INFO *PPOLICY_DOMAIN_QUALITY_OF_SERVICE_INFO;
  479. typedef struct _POLICY_DOMAIN_PUBLIC_KEY_INFO {
  480.   ULONG InfoLength;
  481.   PUCHAR PublicKeyInfo;
  482. } POLICY_DOMAIN_PUBLIC_KEY_INFO, *PPOLICY_DOMAIN_PUBLIC_KEY_INFO;
  483. typedef struct _POLICY_DOMAIN_LOCKOUT_INFO {
  484.   LARGE_INTEGER LockoutDuration;
  485.   LARGE_INTEGER LockoutObservationWindow;
  486.   USHORT LockoutThreshold;
  487. } POLICY_DOMAIN_LOCKOUT_INFO, *PPOLICY_DOMAIN_LOCKOUT_INFO;
  488. typedef struct _POLICY_DOMAIN_PASSWORD_INFO {
  489.   USHORT MinPasswordLength;
  490.   USHORT PasswordHistoryLength;
  491.   ULONG PasswordProperties;
  492.   LARGE_INTEGER MaxPasswordAge;
  493.   LARGE_INTEGER MinPasswordAge;
  494. } POLICY_DOMAIN_PASSWORD_INFO, *PPOLICY_DOMAIN_PASSWORD_INFO;
  495. typedef struct _POLICY_DOMAIN_KERBEROS_TICKET_INFO {
  496.   ULONG AuthenticationOptions;
  497.   LARGE_INTEGER MinTicketAge;
  498.   LARGE_INTEGER MaxTicketAge;
  499.   LARGE_INTEGER MaxRenewAge;
  500.   LARGE_INTEGER ProxyLifetime;
  501.   LARGE_INTEGER ForceLogoff;
  502. } POLICY_DOMAIN_KERBEROS_TICKET_INFO, *PPOLICY_DOMAIN_KERBEROS_TICKET_INFO;
  503. typedef PVOID LSA_HANDLE, *PLSA_HANDLE;
  504. typedef struct _TRUSTED_DOMAIN_NAME_INFO {
  505.   LSA_UNICODE_STRING Name;
  506. } TRUSTED_DOMAIN_NAME_INFO, *PTRUSTED_DOMAIN_NAME_INFO;
  507. typedef struct _TRUSTED_CONTROLLERS_INFO {
  508.   ULONG Entries;
  509.   PLSA_UNICODE_STRING Names;
  510. } TRUSTED_CONTROLLERS_INFO, *PTRUSTED_CONTROLLERS_INFO;
  511. typedef struct _TRUSTED_POSIX_OFFSET_INFO {
  512.   ULONG Offset;
  513. } TRUSTED_POSIX_OFFSET_INFO, *PTRUSTED_POSIX_OFFSET_INFO;
  514. typedef struct _TRUSTED_PASSWORD_INFO {
  515.   LSA_UNICODE_STRING Password;
  516.   LSA_UNICODE_STRING OldPassword;
  517. } TRUSTED_PASSWORD_INFO, *PTRUSTED_PASSWORD_INFO;
  518. typedef  LSA_TRUST_INFORMATION TRUSTED_DOMAIN_INFORMATION_BASIC;
  519. typedef PLSA_TRUST_INFORMATION *PTRUSTED_DOMAIN_INFORMATION_BASIC;
  520. typedef struct _TRUSTED_DOMAIN_INFORMATION_EX {
  521.   LSA_UNICODE_STRING Name;
  522.   LSA_UNICODE_STRING FlatName;
  523.   PSID Sid;
  524.   ULONG TrustDirection;
  525.   ULONG TrustType;
  526.   ULONG TrustAttributes;
  527. } TRUSTED_DOMAIN_INFORMATION_EX, *PTRUSTED_DOMAIN_INFORMATION_EX;
  528. typedef struct _LSA_AUTH_INFORMATION {
  529.   LARGE_INTEGER LastUpdateTime;
  530.   ULONG AuthType;
  531.   ULONG AuthInfoLength;
  532.   PUCHAR AuthInfo;
  533. } LSA_AUTH_INFORMATION, *PLSA_AUTH_INFORMATION;
  534. typedef struct _TRUSTED_DOMAIN_AUTH_INFORMATION {
  535.   ULONG IncomingAuthInfos;
  536.   PLSA_AUTH_INFORMATION IncomingAuthenticationInformation;
  537.   PLSA_AUTH_INFORMATION IncomingPreviousAuthenticationInformation;
  538.   ULONG OutgoingAuthInfos;
  539.   PLSA_AUTH_INFORMATION OutgoingAuthenticationInformation;
  540.   PLSA_AUTH_INFORMATION OutgoingPreviousAuthenticationInformation;
  541. } TRUSTED_DOMAIN_AUTH_INFORMATION, *PTRUSTED_DOMAIN_AUTH_INFORMATION;
  542. typedef struct _TRUSTED_DOMAIN_FULL_INFORMATION {
  543.   TRUSTED_DOMAIN_INFORMATION_EX Information;
  544.   TRUSTED_POSIX_OFFSET_INFO PosixOffset;
  545.   TRUSTED_DOMAIN_AUTH_INFORMATION AuthInformation;
  546. } TRUSTED_DOMAIN_FULL_INFORMATION, *PTRUSTED_DOMAIN_FULL_INFORMATION;
  547. NTSTATUS NTAPI LsaAddAccountRights(LSA_HANDLE,PSID,PLSA_UNICODE_STRING,ULONG);
  548. NTSTATUS NTAPI LsaCallAuthenticationPackage(HANDLE,ULONG,PVOID,ULONG,PVOID*,
  549.                             PULONG,PNTSTATUS);
  550. NTSTATUS NTAPI LsaClose(LSA_HANDLE);
  551. NTSTATUS NTAPI LsaConnectUntrusted(PHANDLE);
  552. NTSTATUS NTAPI LsaCreateTrustedDomainEx(LSA_HANDLE,
  553.                             PTRUSTED_DOMAIN_INFORMATION_EX,
  554.                             PTRUSTED_DOMAIN_AUTH_INFORMATION,ACCESS_MASK,
  555.                             PLSA_HANDLE);
  556. NTSTATUS NTAPI LsaDeleteTrustedDomain(LSA_HANDLE,PSID);
  557. NTSTATUS NTAPI LsaDeregisterLogonProcess(HANDLE);
  558. NTSTATUS NTAPI LsaEnumerateAccountRights(LSA_HANDLE,PSID,PLSA_UNICODE_STRING*,PULONG);
  559. NTSTATUS NTAPI LsaEnumerateAccountsWithUserRight(LSA_HANDLE,PLSA_UNICODE_STRING,
  560.                             PVOID*,PULONG);
  561. NTSTATUS NTAPI LsaEnumerateTrustedDomains(LSA_HANDLE,PLSA_ENUMERATION_HANDLE,
  562.                             PVOID*,ULONG,PULONG);
  563. NTSTATUS NTAPI LsaEnumerateTrustedDomainsEx(LSA_HANDLE,PLSA_ENUMERATION_HANDLE,
  564.                             TRUSTED_INFORMATION_CLASS,PVOID*,ULONG,PULONG);
  565. NTSTATUS NTAPI LsaFreeMemory(PVOID);
  566. NTSTATUS NTAPI LsaFreeReturnBuffer(PVOID);
  567. NTSTATUS NTAPI LsaLogonUser(HANDLE,PLSA_STRING,SECURITY_LOGON_TYPE,ULONG,PVOID,
  568.                             ULONG,PTOKEN_GROUPS,PTOKEN_SOURCE,PVOID*,PULONG,
  569.                             PLUID,PHANDLE,PQUOTA_LIMITS,PNTSTATUS);
  570. NTSTATUS NTAPI LsaLookupAuthenticationPackage(HANDLE,PLSA_STRING,PULONG);
  571. NTSTATUS NTAPI LsaLookupNames(LSA_HANDLE,ULONG,PLSA_UNICODE_STRING,
  572.                             PLSA_REFERENCED_DOMAIN_LIST*,PLSA_TRANSLATED_SID*);
  573. NTSTATUS NTAPI LsaLookupSids(LSA_HANDLE,ULONG,PSID*,
  574.                             PLSA_REFERENCED_DOMAIN_LIST*,PLSA_TRANSLATED_NAME*);
  575. ULONG NTAPI LsaNtStatusToWinError(NTSTATUS);
  576. NTSTATUS NTAPI LsaOpenPolicy(PLSA_UNICODE_STRING,PLSA_OBJECT_ATTRIBUTES,
  577.                             ACCESS_MASK,PLSA_HANDLE);
  578. NTSTATUS NTAPI LsaQueryDomainInformationPolicy(LSA_HANDLE,
  579.                             POLICY_DOMAIN_INFORMATION_CLASS,PVOID*);
  580. NTSTATUS NTAPI LsaQueryInformationPolicy(LSA_HANDLE,POLICY_INFORMATION_CLASS,PVOID*);
  581. NTSTATUS NTAPI LsaQueryLocalInformationPolicy(LSA_HANDLE,
  582.                             POLICY_LOCAL_INFORMATION_CLASS,PVOID*);
  583. NTSTATUS NTAPI LsaQueryTrustedDomainInfo(LSA_HANDLE,PSID,
  584.                             TRUSTED_INFORMATION_CLASS,PVOID*);
  585. NTSTATUS NTAPI LsaQueryTrustedDomainInfoByName(LSA_HANDLE,PLSA_UNICODE_STRING,
  586.                             TRUSTED_INFORMATION_CLASS,PVOID*);
  587. NTSTATUS NTAPI LsaRegisterLogonProcess(PLSA_STRING,PHANDLE,PLSA_OPERATIONAL_MODE);
  588. NTSTATUS NTAPI LsaRemoveAccountRights(LSA_HANDLE,PSID,BOOLEAN,
  589.                             PLSA_UNICODE_STRING,ULONG);
  590. NTSTATUS NTAPI LsaRetrievePrivateData(LSA_HANDLE,PLSA_UNICODE_STRING,
  591.                             PLSA_UNICODE_STRING*);
  592. NTSTATUS NTAPI LsaSetDomainInformationPolicy(LSA_HANDLE,
  593.                             POLICY_DOMAIN_INFORMATION_CLASS,PVOID);
  594. NTSTATUS NTAPI LsaSetInformationPolicy(LSA_HANDLE,POLICY_INFORMATION_CLASS, PVOID);
  595. NTSTATUS NTAPI LsaSetLocalInformationPolicy(LSA_HANDLE,
  596.                             POLICY_LOCAL_INFORMATION_CLASS,PVOID);
  597. NTSTATUS NTAPI LsaSetTrustedDomainInformation(LSA_HANDLE,PSID,
  598.                             TRUSTED_INFORMATION_CLASS,PVOID);
  599. NTSTATUS NTAPI LsaSetTrustedDomainInfoByName(LSA_HANDLE,PLSA_UNICODE_STRING,
  600.                             TRUSTED_INFORMATION_CLASS,PVOID);
  601. NTSTATUS NTAPI LsaStorePrivateData(LSA_HANDLE,PLSA_UNICODE_STRING,
  602.                             PLSA_UNICODE_STRING);
  603. typedef NTSTATUS (*PSAM_PASSWORD_NOTIFICATION_ROUTINE)(PUNICODE_STRING,
  604.                             ULONG,PUNICODE_STRING);
  605. typedef BOOLEAN (*PSAM_INIT_NOTIFICATION_ROUTINE)(void);
  606. typedef BOOLEAN (*PSAM_PASSWORD_FILTER_ROUTINE)(PUNICODE_STRING,PUNICODE_STRING,
  607.                             PUNICODE_STRING,BOOLEAN);
  608. #ifdef __cplusplus
  609. }
  610. #endif
  611. #endif /* _NTSECAPI_H */
  612.