1 /** 2 * Windows API header module 3 * 4 * Translated from MinGW Windows headers 5 * 6 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) 7 * Source: $(DRUNTIMESRC core/sys/windows/_subauth.d) 8 */ 9 /// Automatically imported and edited from the druntime module 10 /// core.sys.windows.subauth for the auto-generated win32 package. 11 module win32.subauth; 12 //version (Windows): 13 @system: 14 15 import win32.ntdef, win32.windef; 16 17 /+ 18 alias LONG NTSTATUS; 19 alias NTSTATUS* PNTSTATUS; 20 +/ 21 22 enum : ULONG { 23 MSV1_0_PASSTHRU = 1, 24 MSV1_0_GUEST_LOGON = 2 25 } 26 27 // USER_ALL_INFORMATION.WhichFields (Undocumented) 28 enum ULONG 29 MSV1_0_VALIDATION_LOGOFF_TIME = 1, 30 MSV1_0_VALIDATION_KICKOFF_TIME = 2, 31 MSV1_0_VALIDATION_LOGON_SERVER = 4, 32 MSV1_0_VALIDATION_LOGON_DOMAIN = 8, 33 MSV1_0_VALIDATION_SESSION_KEY = 16, 34 MSV1_0_VALIDATION_USER_FLAGS = 32, 35 MSV1_0_VALIDATION_USER_ID = 64; 36 37 // ?ActionsPerformed? (Undocumented) 38 enum MSV1_0_SUBAUTH_ACCOUNT_DISABLED = 1; 39 enum MSV1_0_SUBAUTH_PASSWORD = 2; 40 enum MSV1_0_SUBAUTH_WORKSTATIONS = 4; 41 enum MSV1_0_SUBAUTH_LOGON_HOURS = 8; 42 enum MSV1_0_SUBAUTH_ACCOUNT_EXPIRY = 16; 43 enum MSV1_0_SUBAUTH_PASSWORD_EXPIRY = 32; 44 enum MSV1_0_SUBAUTH_ACCOUNT_TYPE = 64; 45 enum MSV1_0_SUBAUTH_LOCKOUT = 128; 46 47 enum NEXT_FREE_ACCOUNT_CONTROL_BIT = 131072; 48 49 enum SAM_DAYS_PER_WEEK = 7; 50 enum SAM_HOURS_PER_WEEK = 168; 51 enum SAM_MINUTES_PER_WEEK = 10080; 52 53 enum : NTSTATUS { 54 STATUS_SUCCESS = 0, 55 STATUS_INVALID_INFO_CLASS = 0xC0000003, 56 STATUS_NO_SUCH_USER = 0xC0000064, 57 STATUS_WRONG_PASSWORD = 0xC000006A, 58 STATUS_PASSWORD_RESTRICTION = 0xC000006C, 59 STATUS_LOGON_FAILURE = 0xC000006D, 60 STATUS_ACCOUNT_RESTRICTION = 0xC000006E, 61 STATUS_INVALID_LOGON_HOURS = 0xC000006F, 62 STATUS_INVALID_WORKSTATION = 0xC0000070, 63 STATUS_PASSWORD_EXPIRED = 0xC0000071, 64 STATUS_ACCOUNT_DISABLED = 0xC0000072, 65 STATUS_INSUFFICIENT_RESOURCES = 0xC000009A, 66 STATUS_ACCOUNT_EXPIRED = 0xC0000193, 67 STATUS_PASSWORD_MUST_CHANGE = 0xC0000224, 68 STATUS_ACCOUNT_LOCKED_OUT = 0xC0000234 69 } 70 71 // Note: undocumented in MSDN 72 // USER_ALL_INFORMATION.UserAccountControl 73 enum ULONG 74 USER_ACCOUNT_DISABLED = 1, 75 USER_HOME_DIRECTORY_REQUIRED = 2, 76 USER_PASSWORD_NOT_REQUIRED = 4, 77 USER_TEMP_DUPLICATE_ACCOUNT = 8, 78 USER_NORMAL_ACCOUNT = 16, 79 USER_MNS_LOGON_ACCOUNT = 32, 80 USER_INTERDOMAIN_TRUST_ACCOUNT = 64, 81 USER_WORKSTATION_TRUST_ACCOUNT = 128, 82 USER_SERVER_TRUST_ACCOUNT = 256, 83 USER_DONT_EXPIRE_PASSWORD = 512, 84 USER_ACCOUNT_AUTO_LOCKED = 1024, 85 USER_ENCRYPTED_TEXT_PASSWORD_ALLOWED = 2048, 86 USER_SMARTCARD_REQUIRED = 4096, 87 USER_TRUSTED_FOR_DELEGATION = 8192, 88 USER_NOT_DELEGATED = 16384, 89 USER_USE_DES_KEY_ONLY = 32768, 90 USER_DONT_REQUIRE_PREAUTH = 65536, 91 92 USER_MACHINE_ACCOUNT_MASK = 448, 93 USER_ACCOUNT_TYPE_MASK = 472, 94 USER_ALL_PARAMETERS = 2097152; 95 96 /+ 97 struct UNICODE_STRING { 98 USHORT Length; 99 USHORT MaximumLength; 100 PWSTR Buffer; 101 } 102 alias UNICODE_STRING* PUNICODE_STRING; 103 104 struct STRING { 105 USHORT Length; 106 USHORT MaximumLength; 107 PCHAR Buffer; 108 } 109 alias STRING* PSTRING; 110 +/ 111 112 mixin DECLARE_HANDLE!("SAM_HANDLE"); 113 alias SAM_HANDLE* PSAM_HANDLE; 114 115 struct OLD_LARGE_INTEGER { 116 ULONG LowPart; 117 LONG HighPart; 118 } 119 alias OLD_LARGE_INTEGER* POLD_LARGE_INTEGER; 120 121 enum NETLOGON_LOGON_INFO_CLASS { 122 NetlogonInteractiveInformation = 1, 123 NetlogonNetworkInformation, 124 NetlogonServiceInformation, 125 NetlogonGenericInformation, 126 NetlogonInteractiveTransitiveInformation, 127 NetlogonNetworkTransitiveInformation, 128 NetlogonServiceTransitiveInformation 129 } 130 131 132 enum CYPHER_BLOCK_LENGTH = 8; 133 enum USER_SESSION_KEY_LENGTH = CYPHER_BLOCK_LENGTH * 2; 134 enum CLEAR_BLOCK_LENGTH = 8; 135 136 struct CYPHER_BLOCK { 137 CHAR[CYPHER_BLOCK_LENGTH] data = 0; 138 } 139 alias CYPHER_BLOCK* PCYPHER_BLOCK; 140 141 struct CLEAR_BLOCK { 142 CHAR[CLEAR_BLOCK_LENGTH] data = 0; 143 } 144 alias CLEAR_BLOCK* PCLEAR_BLOCK; 145 146 struct LM_OWF_PASSWORD { 147 CYPHER_BLOCK[2] data; 148 } 149 alias LM_OWF_PASSWORD* PLM_OWF_PASSWORD; 150 151 struct USER_SESSION_KEY { 152 CYPHER_BLOCK[2] data; 153 } 154 alias USER_SESSION_KEY* PUSER_SESSION_KEY; 155 156 alias CLEAR_BLOCK LM_CHALLENGE; 157 alias LM_CHALLENGE* PLM_CHALLENGE; 158 159 alias LM_OWF_PASSWORD NT_OWF_PASSWORD; 160 alias NT_OWF_PASSWORD* PNT_OWF_PASSWORD; 161 alias LM_CHALLENGE NT_CHALLENGE; 162 alias NT_CHALLENGE* PNT_CHALLENGE; 163 164 struct LOGON_HOURS { 165 USHORT UnitsPerWeek; 166 PUCHAR LogonHours; 167 } 168 alias LOGON_HOURS* PLOGON_HOURS; 169 170 struct SR_SECURITY_DESCRIPTOR { 171 ULONG Length; 172 PUCHAR SecurityDescriptor; 173 } 174 alias SR_SECURITY_DESCRIPTOR* PSR_SECURITY_DESCRIPTOR; 175 176 align(4): 177 struct USER_ALL_INFORMATION { 178 LARGE_INTEGER LastLogon; 179 LARGE_INTEGER LastLogoff; 180 LARGE_INTEGER PasswordLastSet; 181 LARGE_INTEGER AccountExpires; 182 LARGE_INTEGER PasswordCanChange; 183 LARGE_INTEGER PasswordMustChange; 184 UNICODE_STRING UserName; 185 UNICODE_STRING FullName; 186 UNICODE_STRING HomeDirectory; 187 UNICODE_STRING HomeDirectoryDrive; 188 UNICODE_STRING ScriptPath; 189 UNICODE_STRING ProfilePath; 190 UNICODE_STRING AdminComment; 191 UNICODE_STRING WorkStations; 192 UNICODE_STRING UserComment; 193 UNICODE_STRING Parameters; 194 UNICODE_STRING LmPassword; 195 UNICODE_STRING NtPassword; 196 UNICODE_STRING PrivateData; 197 SR_SECURITY_DESCRIPTOR SecurityDescriptor; 198 ULONG UserId; 199 ULONG PrimaryGroupId; 200 ULONG UserAccountControl; 201 ULONG WhichFields; 202 LOGON_HOURS LogonHours; 203 USHORT BadPasswordCount; 204 USHORT LogonCount; 205 USHORT CountryCode; 206 USHORT CodePage; 207 BOOLEAN LmPasswordPresent; 208 BOOLEAN NtPasswordPresent; 209 BOOLEAN PasswordExpired; 210 BOOLEAN PrivateDataSensitive; 211 } 212 alias USER_ALL_INFORMATION* PUSER_ALL_INFORMATION; 213 align: 214 215 struct MSV1_0_VALIDATION_INFO { 216 LARGE_INTEGER LogoffTime; 217 LARGE_INTEGER KickoffTime; 218 UNICODE_STRING LogonServer; 219 UNICODE_STRING LogonDomainName; 220 USER_SESSION_KEY SessionKey; 221 BOOLEAN Authoritative; 222 ULONG UserFlags; 223 ULONG WhichFields; 224 ULONG UserId; 225 } 226 alias MSV1_0_VALIDATION_INFO* PMSV1_0_VALIDATION_INFO; 227 228 struct NETLOGON_LOGON_IDENTITY_INFO { 229 UNICODE_STRING LogonDomainName; 230 ULONG ParameterControl; 231 OLD_LARGE_INTEGER LogonId; 232 UNICODE_STRING UserName; 233 UNICODE_STRING Workstation; 234 } 235 alias NETLOGON_LOGON_IDENTITY_INFO* PNETLOGON_LOGON_IDENTITY_INFO; 236 237 struct NETLOGON_INTERACTIVE_INFO { 238 NETLOGON_LOGON_IDENTITY_INFO Identity; 239 LM_OWF_PASSWORD LmOwfPassword; 240 NT_OWF_PASSWORD NtOwfPassword; 241 } 242 alias NETLOGON_INTERACTIVE_INFO* PNETLOGON_INTERACTIVE_INFO; 243 244 struct NETLOGON_GENERIC_INFO { 245 NETLOGON_LOGON_IDENTITY_INFO Identity; 246 UNICODE_STRING PackageName; 247 ULONG DataLength; 248 PUCHAR LogonData; 249 } 250 alias NETLOGON_GENERIC_INFO* PNETLOGON_GENERIC_INFO; 251 252 struct NETLOGON_NETWORK_INFO { 253 NETLOGON_LOGON_IDENTITY_INFO Identity; 254 LM_CHALLENGE LmChallenge; 255 STRING NtChallengeResponse; 256 STRING LmChallengeResponse; 257 } 258 alias NETLOGON_NETWORK_INFO* PNETLOGON_NETWORK_INFO; 259 260 struct NETLOGON_SERVICE_INFO { 261 NETLOGON_LOGON_IDENTITY_INFO Identity; 262 LM_OWF_PASSWORD LmOwfPassword; 263 NT_OWF_PASSWORD NtOwfPassword; 264 } 265 alias NETLOGON_SERVICE_INFO* PNETLOGON_SERVICE_INFO; 266 267 extern (Windows) { 268 NTSTATUS Msv1_0SubAuthenticationRoutine(NETLOGON_LOGON_INFO_CLASS,PVOID, 269 ULONG,PUSER_ALL_INFORMATION,PULONG,PULONG, 270 PBOOLEAN,PLARGE_INTEGER,PLARGE_INTEGER); 271 NTSTATUS Msv1_0SubAuthenticationFilter(NETLOGON_LOGON_INFO_CLASS,PVOID, 272 ULONG,PUSER_ALL_INFORMATION,PULONG,PULONG, 273 PBOOLEAN,PLARGE_INTEGER,PLARGE_INTEGER); 274 NTSTATUS Msv1_0SubAuthenticationRoutineGeneric(PVOID,ULONG,PULONG,PVOID*); 275 NTSTATUS Msv1_0SubAuthenticationRoutineEx(NETLOGON_LOGON_INFO_CLASS,PVOID, 276 ULONG,PUSER_ALL_INFORMATION,SAM_HANDLE, 277 PMSV1_0_VALIDATION_INFO,PULONG); 278 }