home *** CD-ROM | disk | FTP | other *** search
/ Beginning C++ Through Gam…rogramming (2nd Edition) / BCGP2E.ISO / bloodshed / devcpp-4.9.9.2_setup.exe / subauth.h < prev    next >
C/C++ Source or Header  |  2005-01-29  |  7KB  |  210 lines

  1. #ifndef _SUBAUTH_H
  2. #define _SUBAUTH_H
  3. #if __GNUC__ >=3
  4. #pragma GCC system_header
  5. #endif
  6.  
  7. #ifdef __cplusplus
  8. extern "C" {
  9. #endif
  10. #ifndef NT_SUCCESS
  11. #define NT_SUCCESS(x) ((x)>=0)
  12. #define STATUS_SUCCESS 0 
  13. #endif
  14. #define CYPHER_BLOCK_LENGTH 8
  15. #define USER_SESSION_KEY_LENGTH (CYPHER_BLOCK_LENGTH*2)
  16. #define CLEAR_BLOCK_LENGTH 8
  17. #define MSV1_0_PASSTHRU 1
  18. #define MSV1_0_GUEST_LOGON 2
  19. #define MSV1_0_VALIDATION_LOGOFF_TIME 1
  20. #define MSV1_0_VALIDATION_KICKOFF_TIME 2
  21. #define MSV1_0_VALIDATION_LOGON_SERVER 4
  22. #define MSV1_0_VALIDATION_LOGON_DOMAIN 8
  23. #define MSV1_0_VALIDATION_SESSION_KEY 16
  24. #define MSV1_0_VALIDATION_USER_FLAGS 32
  25. #define MSV1_0_VALIDATION_USER_ID 64
  26. #define MSV1_0_SUBAUTH_ACCOUNT_DISABLED 1
  27. #define MSV1_0_SUBAUTH_PASSWORD 2
  28. #define MSV1_0_SUBAUTH_WORKSTATIONS 4
  29. #define MSV1_0_SUBAUTH_LOGON_HOURS 8
  30. #define MSV1_0_SUBAUTH_ACCOUNT_EXPIRY 16
  31. #define MSV1_0_SUBAUTH_PASSWORD_EXPIRY 32
  32. #define MSV1_0_SUBAUTH_ACCOUNT_TYPE 64
  33. #define MSV1_0_SUBAUTH_LOCKOUT 128
  34. #define NEXT_FREE_ACCOUNT_CONTROL_BIT 131072
  35. #define SAM_DAYS_PER_WEEK 7
  36. #define SAM_HOURS_PER_WEEK 168
  37. #define SAM_MINUTES_PER_WEEK 10080
  38. #define STATUS_INVALID_INFO_CLASS 0xC0000003L
  39. #define STATUS_NO_SUCH_USER 0xC0000064L
  40. #define STATUS_WRONG_PASSWORD 0xC000006AL
  41. #define STATUS_PASSWORD_RESTRICTION 0xC000006CL
  42. #define STATUS_LOGON_FAILURE 0xC000006DL
  43. #define STATUS_ACCOUNT_RESTRICTION 0xC000006EL
  44. #define STATUS_INVALID_LOGON_HOURS 0xC000006FL
  45. #define STATUS_INVALID_WORKSTATION 0xC0000070L
  46. #define STATUS_PASSWORD_EXPIRED 0xC0000071L
  47. #define STATUS_ACCOUNT_DISABLED 0xC0000072L
  48. #define STATUS_INSUFFICIENT_RESOURCES 0xC000009AL
  49. #define STATUS_ACCOUNT_EXPIRED 0xC0000193L
  50. #define STATUS_PASSWORD_MUST_CHANGE 0xC0000224L
  51. #define STATUS_ACCOUNT_LOCKED_OUT 0xC0000234L
  52. #define USER_ACCOUNT_DISABLED 1
  53. #define USER_HOME_DIRECTORY_REQUIRED 2
  54. #define USER_PASSWORD_NOT_REQUIRED 4
  55. #define USER_TEMP_DUPLICATE_ACCOUNT 8
  56. #define USER_NORMAL_ACCOUNT 16
  57. #define USER_MNS_LOGON_ACCOUNT 32
  58. #define USER_INTERDOMAIN_TRUST_ACCOUNT 64
  59. #define USER_WORKSTATION_TRUST_ACCOUNT 128
  60. #define USER_SERVER_TRUST_ACCOUNT 256
  61. #define USER_DONT_EXPIRE_PASSWORD 512
  62. #define USER_ACCOUNT_AUTO_LOCKED 1024
  63. #define USER_ENCRYPTED_TEXT_PASSWORD_ALLOWED 2048
  64. #define USER_SMARTCARD_REQUIRED 4096
  65. #define USER_TRUSTED_FOR_DELEGATION 8192
  66. #define USER_NOT_DELEGATED 16384
  67. #define USER_USE_DES_KEY_ONLY 32768
  68. #define USER_DONT_REQUIRE_PREAUTH 65536
  69. #define USER_MACHINE_ACCOUNT_MASK 448
  70. #define USER_ACCOUNT_TYPE_MASK 472
  71. #define USER_ALL_PARAMETERS 2097152
  72. #if !defined(_NTDEF_H) && !defined(_NTSECAPI_H)
  73. typedef LONG NTSTATUS, *PNTSTATUS;
  74. typedef struct _UNICODE_STRING {
  75.   USHORT Length;
  76.   USHORT MaximumLength;
  77.   PWSTR Buffer;
  78. } UNICODE_STRING, *PUNICODE_STRING;
  79. typedef struct _STRING {
  80.   USHORT Length;
  81.   USHORT MaximumLength;
  82.   PCHAR Buffer;
  83. } STRING, *PSTRING;
  84. #endif
  85. typedef PVOID SAM_HANDLE, *PSAM_HANDLE;  
  86. typedef struct _OLD_LARGE_INTEGER {
  87.   ULONG LowPart;
  88.   LONG HighPart;
  89. } OLD_LARGE_INTEGER, *POLD_LARGE_INTEGER;
  90. typedef enum _NETLOGON_LOGON_INFO_CLASS {
  91.   NetlogonInteractiveInformation = 1,NetlogonNetworkInformation,
  92.   NetlogonServiceInformation,NetlogonGenericInformation,
  93.   NetlogonInteractiveTransitiveInformation,NetlogonNetworkTransitiveInformation,
  94.   NetlogonServiceTransitiveInformation
  95. } NETLOGON_LOGON_INFO_CLASS;
  96. typedef struct _CYPHER_BLOCK {
  97.   CHAR data[CYPHER_BLOCK_LENGTH];
  98. } CYPHER_BLOCK, *PCYPHER_BLOCK;
  99. typedef struct _CLEAR_BLOCK {
  100.   CHAR data[CLEAR_BLOCK_LENGTH];
  101. } CLEAR_BLOCK, *PCLEAR_BLOCK;
  102. typedef struct _LM_OWF_PASSWORD {
  103.   CYPHER_BLOCK data[2];
  104. } LM_OWF_PASSWORD, *PLM_OWF_PASSWORD;
  105. typedef struct _USER_SESSION_KEY {
  106.   CYPHER_BLOCK data[2];
  107. } USER_SESSION_KEY, *PUSER_SESSION_KEY;
  108. typedef CLEAR_BLOCK LM_CHALLENGE, *PLM_CHALLENGE;
  109. typedef LM_OWF_PASSWORD NT_OWF_PASSWORD, *PNT_OWF_PASSWORD;
  110. typedef LM_CHALLENGE NT_CHALLENGE, *PNT_CHALLENGE;
  111. typedef struct _LOGON_HOURS {
  112.   USHORT UnitsPerWeek;
  113.   PUCHAR LogonHours;
  114. } LOGON_HOURS, *PLOGON_HOURS;
  115. typedef struct _SR_SECURITY_DESCRIPTOR {
  116.   ULONG Length;
  117.   PUCHAR SecurityDescriptor;
  118. } SR_SECURITY_DESCRIPTOR, *PSR_SECURITY_DESCRIPTOR;
  119. #pragma pack(push,4)
  120. typedef struct _USER_ALL_INFORMATION {
  121.   LARGE_INTEGER LastLogon;
  122.   LARGE_INTEGER LastLogoff;
  123.   LARGE_INTEGER PasswordLastSet;
  124.   LARGE_INTEGER AccountExpires;
  125.   LARGE_INTEGER PasswordCanChange;
  126.   LARGE_INTEGER PasswordMustChange;
  127.   UNICODE_STRING UserName;
  128.   UNICODE_STRING FullName;
  129.   UNICODE_STRING HomeDirectory;
  130.   UNICODE_STRING HomeDirectoryDrive;
  131.   UNICODE_STRING ScriptPath;
  132.   UNICODE_STRING ProfilePath;
  133.   UNICODE_STRING AdminComment;
  134.   UNICODE_STRING WorkStations;
  135.   UNICODE_STRING UserComment;
  136.   UNICODE_STRING Parameters;
  137.   UNICODE_STRING LmPassword;
  138.   UNICODE_STRING NtPassword;
  139.   UNICODE_STRING PrivateData;
  140.   SR_SECURITY_DESCRIPTOR SecurityDescriptor;
  141.   ULONG UserId;
  142.   ULONG PrimaryGroupId;
  143.   ULONG UserAccountControl;
  144.   ULONG WhichFields;
  145.   LOGON_HOURS LogonHours;
  146.   USHORT BadPasswordCount;
  147.   USHORT LogonCount;
  148.   USHORT CountryCode;
  149.   USHORT CodePage;
  150.   BOOLEAN LmPasswordPresent;
  151.   BOOLEAN NtPasswordPresent;
  152.   BOOLEAN PasswordExpired;
  153.   BOOLEAN PrivateDataSensitive;
  154. } USER_ALL_INFORMATION, *PUSER_ALL_INFORMATION;
  155. #pragma pack(pop)
  156. typedef struct _MSV1_0_VALIDATION_INFO {
  157.   LARGE_INTEGER LogoffTime;
  158.   LARGE_INTEGER KickoffTime;
  159.   UNICODE_STRING LogonServer;
  160.   UNICODE_STRING LogonDomainName;
  161.   USER_SESSION_KEY SessionKey;
  162.   BOOLEAN Authoritative;
  163.   ULONG UserFlags;
  164.   ULONG WhichFields;
  165.   ULONG UserId;
  166. } MSV1_0_VALIDATION_INFO, *PMSV1_0_VALIDATION_INFO;
  167. typedef struct _NETLOGON_LOGON_IDENTITY_INFO {
  168.   UNICODE_STRING LogonDomainName;
  169.   ULONG ParameterControl;
  170.   OLD_LARGE_INTEGER LogonId;
  171.   UNICODE_STRING UserName;
  172.   UNICODE_STRING Workstation;
  173. } NETLOGON_LOGON_IDENTITY_INFO, *PNETLOGON_LOGON_IDENTITY_INFO;
  174. typedef struct _NETLOGON_INTERACTIVE_INFO {
  175.   NETLOGON_LOGON_IDENTITY_INFO Identity;
  176.   LM_OWF_PASSWORD LmOwfPassword;
  177.   NT_OWF_PASSWORD NtOwfPassword;
  178. } NETLOGON_INTERACTIVE_INFO, *PNETLOGON_INTERACTIVE_INFO;
  179. typedef struct _NETLOGON_GENERIC_INFO {
  180.   NETLOGON_LOGON_IDENTITY_INFO Identity;
  181.   UNICODE_STRING PackageName;
  182.   ULONG DataLength;
  183.   PUCHAR LogonData;
  184. } NETLOGON_GENERIC_INFO, *PNETLOGON_GENERIC_INFO;
  185. typedef struct _NETLOGON_NETWORK_INFO {
  186.   NETLOGON_LOGON_IDENTITY_INFO Identity;
  187.   LM_CHALLENGE LmChallenge;
  188.   STRING NtChallengeResponse;
  189.   STRING LmChallengeResponse;
  190. } NETLOGON_NETWORK_INFO, *PNETLOGON_NETWORK_INFO;
  191. typedef struct _NETLOGON_SERVICE_INFO {
  192.   NETLOGON_LOGON_IDENTITY_INFO Identity;
  193.   LM_OWF_PASSWORD LmOwfPassword;
  194.   NT_OWF_PASSWORD NtOwfPassword;
  195. } NETLOGON_SERVICE_INFO, *PNETLOGON_SERVICE_INFO;
  196. NTSTATUS NTAPI Msv1_0SubAuthenticationRoutine(NETLOGON_LOGON_INFO_CLASS,PVOID,
  197.                               ULONG,PUSER_ALL_INFORMATION,PULONG,PULONG,
  198.                               PBOOLEAN,PLARGE_INTEGER,PLARGE_INTEGER);
  199. NTSTATUS NTAPI Msv1_0SubAuthenticationFilter(NETLOGON_LOGON_INFO_CLASS,PVOID,
  200.                               ULONG,PUSER_ALL_INFORMATION,PULONG,PULONG,
  201.                               PBOOLEAN,PLARGE_INTEGER,PLARGE_INTEGER);
  202. NTSTATUS NTAPI Msv1_0SubAuthenticationRoutineGeneric(PVOID,ULONG,PULONG,PVOID*);
  203. NTSTATUS NTAPI Msv1_0SubAuthenticationRoutineEx(NETLOGON_LOGON_INFO_CLASS,PVOID,
  204.                               ULONG,PUSER_ALL_INFORMATION,SAM_HANDLE,
  205.                               PMSV1_0_VALIDATION_INFO,PULONG);
  206. #ifdef __cplusplus
  207. }
  208. #endif
  209. #endif /* _SUBAUTH_H */
  210.