3 much of this was derived from the ethereal sources - thanks to everyone
10 uuid(12345678-1234-abcd-ef00-01234567cffb),
12 pointer_default(unique)
33 time_t pw_must_change;
40 WERROR netr_LogonUasLogon(
41 [in] unistr *server_name,
43 [in] unistr workstation,
44 [out] netr_UasInfo *info
56 WERROR netr_LogonUasLogoff(
57 [in] unistr *server_name,
59 [in] unistr workstation,
60 [out] netr_UasLogoffInfo info
67 typedef [flag(NDR_PAHEX)] struct {
71 typedef [flag(NDR_PAHEX)] struct {
75 netr_Credential client;
76 netr_Credential server;
77 } netr_CredentialState;
80 [value(strlen_m(r->string)*2)] uint16 size;
81 [value(r->size)] uint16 length;
82 unistr_noterm *string;
85 /* in netr_AcctLockStr size seems to be be 24, and rrenard thinks
86 that the structure of the bindata looks like this:
88 ULONG8 lockout_duration;
90 uint32 bad_attempt_lockout;
93 but it doesn't look as though this structure is reflected at the
94 NDR level. Maybe it is left to the application to decode the bindata array.
99 [size_is(size/2),length_is(length/2)] uint16 *bindata;
103 netr_String domain_name;
104 uint32 parameter_control;
106 uint32 logon_id_high;
107 netr_String username;
108 netr_String workstation;
111 typedef [flag(NDR_PAHEX)] struct {
116 netr_IdentityInfo identity_info;
117 netr_Password lmpassword;
118 netr_Password ntpassword;
121 typedef [flag(NDR_PAHEX)] struct {
123 [value(r->length)] uint16 size;
124 [size_is(size),length_is(length)] uint8 *data;
125 } netr_ChallengeResponse;
127 typedef [flag(NDR_PAHEX)] struct {
128 netr_IdentityInfo logon_info;
130 netr_ChallengeResponse nt;
131 netr_ChallengeResponse lm;
135 [case(1)] netr_PasswordInfo *interactive;
136 [case(2)] netr_NetworkInfo *network;
137 [case(3)] netr_PasswordInfo *service;
141 netr_Credential cred;
143 } netr_Authenticator;
148 } netr_GroupMembership;
150 typedef [flag(NDR_PAHEX)] struct {
152 } netr_UserSessionKey;
154 typedef [flag(NDR_PAHEX)] struct {
162 NTTIME passwd_last_set;
163 NTTIME passwd_can_change;
164 NTTIME passwd_must_change;
165 netr_String account_name;
166 netr_String full_name;
167 netr_String logon_script;
168 netr_String profile_path;
169 netr_String home_dir;
170 netr_String home_drive;
172 uint16 bad_passwd_count;
174 uint32 primary_group;
176 [size_is(group_count)] netr_GroupMembership *groupids;
178 netr_UserSessionKey key;
179 netr_String logon_server;
181 dom_sid2 *domain_sid;
182 netr_LMSessionKey LMSessKey;
183 uint32 AccountControl;
184 uint32 expansionroom[7];
196 NTTIME passwd_last_set;
197 NTTIME passwd_can_change;
198 NTTIME passwd_must_change;
199 netr_String account_name;
200 netr_String full_name;
201 netr_String logon_script;
202 netr_String profile_path;
203 netr_String home_dir;
204 netr_String home_drive;
206 uint16 bad_passwd_count;
208 uint32 primary_group;
210 [size_is(group_count)] netr_GroupMembership *groupids;
212 netr_UserSessionKey key;
213 netr_String logon_server;
215 dom_sid2 *domain_sid;
216 netr_LMSessionKey LMSessKey;
217 uint32 AccountControl;
218 uint32 expansionroom[7];
220 [size_is(sidcount)] netr_SidAttr *sids;
225 [size_is(pac_size)] uint8 *pac;
226 netr_String logon_domain;
227 netr_String logon_server;
228 netr_String principal_name;
230 [size_is(auth_size)] uint8 *auth;
231 netr_UserSessionKey user_session_key;
232 uint32 expansionroom[10];
233 netr_String unknown1;
234 netr_String unknown2;
235 netr_String unknown3;
236 netr_String unknown4;
240 [case(2)] netr_SamInfo *sam;
241 [case(3)] netr_SamInfo2 *sam2;
242 [case(4)] netr_PacInfo *pac;
243 [case(5)] netr_PacInfo *pac2;
246 NTSTATUS netr_LogonSamLogon(
247 [in] unistr *server_name,
248 [in] unistr *workstation,
249 [in] netr_Authenticator *credential,
250 [in][out] netr_Authenticator *authenticator,
251 [in] uint16 logon_level,
252 [in] [switch_is(logon_level)] netr_LogonLevel logon,
253 [in] uint16 validation_level,
254 [out] [switch_is(validation_level)] netr_Validation validation,
255 [out] uint32 authoritative
262 NTSTATUS netr_LogonSamLogoff(
263 [in] unistr *server_name,
264 [in] unistr *computer_name,
265 [in] netr_Authenticator *credential,
266 [in][out] netr_Authenticator *return_authenticator,
267 [in] uint16 logon_level,
268 [in] [switch_is(logon_level)] netr_LogonLevel logon
276 NTSTATUS netr_ServerReqChallenge(
277 [in] unistr *server_name,
278 [in] unistr computer_name,
279 [in][out] netr_Credential credentials
286 /* secure channel types */
287 const int SEC_CHAN_WKSTA = 2;
288 const int SEC_CHAN_DOMAIN = 4;
289 const int SEC_CHAN_BDC = 6;
291 NTSTATUS netr_ServerAuthenticate(
292 [in] unistr *server_name,
293 [in] unistr username,
294 [in] uint16 secure_channel_type,
295 [in] unistr computer_name,
296 [in,out] netr_Credential credentials
303 NTSTATUS netr_ServerPasswordSet(
304 [in] unistr *server_name,
305 [in] unistr username,
306 [in] uint16 secure_channel_type,
307 [in] unistr computer_name,
308 [in] netr_Authenticator credential,
309 [in] netr_Password new_password,
310 [out] netr_Authenticator return_authenticator
319 netr_String unknown1;
320 netr_String unknown2;
321 netr_String unknown3;
322 netr_String unknown4;
327 } netr_DELTA_DELETE_USER;
330 bool8 SensitiveDataFlag;
332 [size_is(DataLength)] uint8 *SensitiveData;
333 } netr_USER_PRIVATE_INFO;
336 netr_String account_name;
337 netr_String full_name;
339 uint32 primary_group;
340 netr_String home_dir;
341 netr_String home_drive;
342 netr_String logon_script;
343 netr_String description;
344 netr_String workstations;
347 samr_LogonHours logon_hours;
351 NTTIME AccountExpires;
352 uint32 AccountControl;
358 netr_String UserComment;
359 netr_String Parameters;
362 netr_USER_PRIVATE_INFO user_private_info;
363 uint32 SecurityInformation;
365 netr_String profile_path;
366 netr_String unknown2;
367 netr_String unknown3;
368 netr_String unknown4;
376 netr_String DomainName;
380 uint16 passwdhistorylen;
381 ULONG8 pwd_must_change_time;
382 ULONG8 pwd_can_change_time;
384 NTTIME domain_create_time;
385 uint32 SecurityInformation;
387 netr_AcctLockStr account_lockout;
388 netr_String unknown2;
389 netr_String unknown3;
390 netr_String unknown4;
398 netr_String groupname;
399 netr_GroupMembership group_membership;
401 uint32 SecurityInformation;
403 netr_String unknown1;
404 netr_String unknown2;
405 netr_String unknown3;
406 netr_String unknown4;
416 netr_String unknown1;
417 netr_String unknown2;
418 netr_String unknown3;
419 netr_String unknown4;
427 [size_is(num_rids)] uint32 *rids;
428 [size_is(num_rids)] uint32 *attribs;
434 } netr_DELTA_GROUP_MEMBER;
437 netr_String alias_name;
439 uint32 SecurityInformation;
441 netr_String unknown1;
442 netr_String unknown2;
443 netr_String unknown3;
444 netr_String unknown4;
457 } netr_DELTA_ALIAS_MEMBER;
460 uint32 pagedpoollimit;
461 uint32 nonpagedpoollimit;
462 uint32 minimumworkingsetsize;
463 uint32 maximumworkingsetsize;
464 uint32 pagefilelimit;
470 NTTIME auditretentionperiod;
472 uint32 maxauditeventcount;
473 [size_is(maxauditeventcount+1)] uint32 *eventauditoptions;
474 netr_String primarydomainname;
476 netr_QUOTA_LIMITS quota_limits;
477 NTTIME db_modify_time;
478 NTTIME db_create_time;
479 uint32 SecurityInformation;
481 netr_String unknown1;
482 netr_String unknown2;
483 netr_String unknown3;
484 netr_String unknown4;
492 netr_String DomainName;
493 uint32 num_controllers;
494 [size_is(num_controllers)] netr_String *controller_names;
495 uint32 SecurityInformation;
497 netr_String unknown1;
498 netr_String unknown2;
499 netr_String unknown3;
500 netr_String unknown4;
505 } netr_DELTA_TRUSTED_DOMAINS;
509 } netr_DELTA_DELETE_TRUST;
512 uint32 privilege_entries;
513 uint32 privilege_control;
514 [size_is(privilege_entries)] uint32 *privilege_attrib;
515 [size_is(privilege_entries)] netr_String *privilege_name;
516 netr_QUOTA_LIMITS quotalimits;
518 uint32 SecurityInformation;
520 netr_String unknown1;
521 netr_String unknown2;
522 netr_String unknown3;
523 netr_String unknown4;
528 } netr_DELTA_ACCOUNTS;
532 } netr_DELTA_DELETE_ACCOUNT;
536 } netr_DELTA_DELETE_SECRET;
541 [size_is(maxlen)][length_is(len)] uint8 *cipher_data;
545 netr_CIPHER_VALUE current_cipher;
546 NTTIME current_cipher_set_time;
547 netr_CIPHER_VALUE old_cipher;
548 NTTIME old_cipher_set_time;
549 uint32 SecurityInformation;
551 netr_String unknown1;
552 netr_String unknown2;
553 netr_String unknown3;
554 netr_String unknown4;
562 NETR_DELTA_DOMAIN = 1,
563 NETR_DELTA_GROUP = 2,
564 NETR_DELTA_DELETE_GROUP = 3,
565 NETR_DELTA_RENAME_GROUP = 4,
567 NETR_DELTA_DELETE_USER = 6,
568 NETR_DELTA_RENAME_USER = 7,
569 NETR_DELTA_GROUP_MEMBER = 8,
570 NETR_DELTA_ALIAS = 9,
571 NETR_DELTA_UNKNOWN1 = 10, /* maybe delete alias? */
572 NETR_DELTA_RENAME_ALIAS = 11,
573 NETR_DELTA_ALIAS_MEMBER = 12,
574 NETR_DELTA_POLICY = 13,
575 NETR_DELTA_TRUSTED_DOMAINS = 14,
576 NETR_DELTA_DELETE_TRUST = 15,
577 NETR_DELTA_ACCOUNTS = 16,
578 NETR_DELTA_DELETE_ACCOUNT = 17,
579 NETR_DELTA_SECRET = 18,
580 NETR_DELTA_DELETE_SECRET = 19,
581 NETR_DELTA_DELETE_GROUP2 = 20,
582 NETR_DELTA_DELETE_USER2 = 21,
583 NETR_DELTA_MODIFY_COUNT = 22
587 [case(NETR_DELTA_DOMAIN)] netr_DELTA_DOMAIN *domain;
588 [case(NETR_DELTA_GROUP)] netr_DELTA_GROUP *group;
589 [case(NETR_DELTA_DELETE_GROUP)] ; /* rid only */
590 [case(NETR_DELTA_RENAME_GROUP)] netr_DELTA_RENAME *rename_group;
591 [case(NETR_DELTA_USER)] netr_DELTA_USER *user;
592 [case(NETR_DELTA_DELETE_USER)] ; /* rid only */
593 [case(NETR_DELTA_RENAME_USER)] netr_DELTA_RENAME *rename_user;
594 [case(NETR_DELTA_GROUP_MEMBER)] netr_DELTA_GROUP_MEMBER *group_member;
595 [case(NETR_DELTA_ALIAS)] netr_DELTA_ALIAS *alias;
596 [case(NETR_DELTA_RENAME_ALIAS)] netr_DELTA_RENAME *rename_alias;
597 [case(NETR_DELTA_ALIAS_MEMBER)] netr_DELTA_ALIAS_MEMBER *alias_member;
598 [case(NETR_DELTA_POLICY)] netr_DELTA_POLICY *policy;
599 [case(NETR_DELTA_TRUSTED_DOMAINS)] netr_DELTA_TRUSTED_DOMAINS *trusted_domains;
600 [case(NETR_DELTA_DELETE_TRUST)] netr_DELTA_DELETE_TRUST delete_trust;
601 [case(NETR_DELTA_ACCOUNTS)] netr_DELTA_ACCOUNTS *accounts;
602 [case(NETR_DELTA_DELETE_ACCOUNT)] netr_DELTA_DELETE_ACCOUNT delete_account;
603 [case(NETR_DELTA_SECRET)] netr_DELTA_SECRET *secret;
604 [case(NETR_DELTA_DELETE_SECRET)] netr_DELTA_DELETE_SECRET delete_secret;
605 [case(NETR_DELTA_DELETE_GROUP2)] netr_DELTA_DELETE_USER *delete_group;
606 [case(NETR_DELTA_DELETE_USER2)] netr_DELTA_DELETE_USER *delete_user;
607 [case(NETR_DELTA_MODIFY_COUNT)] ULONG8 *modified_count;
611 [case(NETR_DELTA_DOMAIN)] uint32 rid;
612 [case(NETR_DELTA_GROUP)] uint32 rid;
613 [case(NETR_DELTA_DELETE_GROUP)] uint32 rid;
614 [case(NETR_DELTA_RENAME_GROUP)] uint32 rid;
615 [case(NETR_DELTA_USER)] uint32 rid;
616 [case(NETR_DELTA_DELETE_USER)] uint32 rid;
617 [case(NETR_DELTA_RENAME_USER)] uint32 rid;
618 [case(NETR_DELTA_GROUP_MEMBER)] uint32 rid;
619 [case(NETR_DELTA_ALIAS)] uint32 rid;
620 [case(NETR_DELTA_UNKNOWN1)] uint32 rid;
621 [case(NETR_DELTA_RENAME_ALIAS)] uint32 rid;
622 [case(NETR_DELTA_ALIAS_MEMBER)] uint32 rid;
623 [case(NETR_DELTA_POLICY)] dom_sid2 *sid;
624 [case(NETR_DELTA_TRUSTED_DOMAINS)] dom_sid2 *sid;
625 [case(NETR_DELTA_DELETE_TRUST)] dom_sid2 *sid;
626 [case(NETR_DELTA_ACCOUNTS)] dom_sid2 *sid;
627 [case(NETR_DELTA_DELETE_ACCOUNT)] dom_sid2 *sid;
628 [case(NETR_DELTA_SECRET)] unistr *name;
629 [case(NETR_DELTA_DELETE_SECRET)] unistr *name;
630 [case(NETR_DELTA_DELETE_GROUP2)] unistr *name;
631 [case(NETR_DELTA_DELETE_USER2)] uint32 rid;
632 [case(NETR_DELTA_MODIFY_COUNT)] uint32 rid;
633 } netr_DELTA_ID_UNION;
637 [switch_is(delta_type)] netr_DELTA_ID_UNION delta_id_union;
638 [switch_is(delta_type)] netr_DELTA_UNION delta_union;
643 [size_is(num_deltas)] netr_DELTA_ENUM *delta_enum;
644 } netr_DELTA_ENUM_ARRAY;
647 NTSTATUS netr_DatabaseDeltas(
648 [in] unistr logon_server,
649 [in] unistr computername,
650 [in] netr_Authenticator credential,
651 [in,out] netr_Authenticator return_authenticator,
652 [in] uint32 database_id,
653 [in,out] ULONG8 sequence_num,
654 [in] uint32 preferredmaximumlength,
655 [out] netr_DELTA_ENUM_ARRAY *delta_enum_array
662 NTSTATUS netr_DatabaseSync(
663 [in] unistr logon_server,
664 [in] unistr computername,
665 [in] netr_Authenticator credential,
666 [in,out] netr_Authenticator return_authenticator,
667 [in] uint32 database_id,
668 [in,out] uint32 sync_context,
669 [in] uint32 preferredmaximumlength,
670 [out] netr_DELTA_ENUM_ARRAY *delta_enum_array
677 /* w2k3 returns NT_STATUS_NOT_IMPLEMENTED for this call */
679 typedef [flag(NDR_PAHEX)] struct {
680 uint8 computer_name[16];
682 uint32 serial_number;
686 [flag(NDR_REMAINING)] DATA_BLOB blob;
687 } netr_AccountBuffer;
689 NTSTATUS netr_AccountDeltas(
690 [in] unistr *logon_server,
691 [in] unistr computername,
692 [in] netr_Authenticator credential,
693 [in,out] netr_Authenticator return_authenticator,
694 [in] netr_UAS_INFO_0 uas,
697 [in] uint32 buffersize,
698 [out,subcontext(4)] netr_AccountBuffer buffer,
699 [out] uint32 count_returned,
700 [out] uint32 total_entries,
701 [out] netr_UAS_INFO_0 recordid
708 NTSTATUS netr_AccountSync(
709 [in] unistr *logon_server,
710 [in] unistr computername,
711 [in] netr_Authenticator credential,
712 [in,out] netr_Authenticator return_authenticator,
713 [in] uint32 reference,
715 [in] uint32 buffersize,
716 [out,subcontext(4)] netr_AccountBuffer buffer,
717 [out] uint32 count_returned,
718 [out] uint32 total_entries,
719 [out] uint32 next_reference,
720 [in,out] netr_UAS_INFO_0 recordid
727 NTSTATUS netr_GetDcName(
728 [in] unistr logon_server,
729 [in] unistr *domainname,
740 uint32 pdc_connection_status;
741 } netr_NETLOGON_INFO_1;
745 uint32 pdc_connection_status;
746 unistr trusted_dc_name;
747 uint32 tc_connection_status;
748 } netr_NETLOGON_INFO_2;
752 uint32 logon_attempts;
758 } netr_NETLOGON_INFO_3;
761 [case(1)] netr_NETLOGON_INFO_1 *info1;
762 [case(2)] netr_NETLOGON_INFO_2 *info2;
763 [case(3)] netr_NETLOGON_INFO_3 *info3;
764 } netr_CONTROL_QUERY_INFORMATION;
766 /* function_code values */
767 const int NETLOGON_CONTROL_REDISCOVER = 5;
768 const int NETLOGON_CONTROL_TC_QUERY = 6;
769 const int NETLOGON_CONTROL_TRANSPORT_NOTIFY = 7;
770 const int NETLOGON_CONTROL_SET_DBFLAG = 65534;
772 WERROR netr_LogonControl(
773 [in] unistr *logon_server,
774 [in] uint32 function_code,
776 [out,switch_is(level)] netr_CONTROL_QUERY_INFORMATION info
783 WERROR netr_GetAnyDCName(
784 [in] unistr *logon_server,
785 [in] unistr *domainname,
794 [case(NETLOGON_CONTROL_REDISCOVER)] unistr *domain;
795 [case(NETLOGON_CONTROL_TC_QUERY)] unistr *domain;
796 [case(NETLOGON_CONTROL_TRANSPORT_NOTIFY)] unistr *domain;
797 [case(NETLOGON_CONTROL_SET_DBFLAG)] uint32 debug_level;
798 } netr_CONTROL_DATA_INFORMATION;
800 WERROR netr_LogonControl2(
801 [in] unistr *logon_server,
802 [in] uint32 function_code,
804 [in][switch_is(function_code)] netr_CONTROL_DATA_INFORMATION data,
805 [out][switch_is(level)] netr_CONTROL_QUERY_INFORMATION query
812 NTSTATUS netr_ServerAuthenticate2(
813 [in] unistr *server_name,
814 [in] unistr username,
815 [in] uint16 secure_channel_type,
816 [in] unistr computer_name,
817 [in,out] netr_Credential credentials,
818 [in,out,ref] uint32 *negotiate_flags
825 NTSTATUS netr_DatabaseSync2(
826 [in] unistr logon_server,
827 [in] unistr computername,
828 [in] netr_Authenticator credential,
829 [in,out] netr_Authenticator return_authenticator,
830 [in] uint32 database_id,
831 [in] uint16 restart_state,
832 [in,out] uint32 sync_context,
833 [in] uint32 preferredmaximumlength,
834 [out] netr_DELTA_ENUM_ARRAY *delta_enum_array
841 /* i'm not at all sure how this call works */
843 NTSTATUS netr_DatabaseRedo(
844 [in] unistr logon_server,
845 [in] unistr computername,
846 [in] netr_Authenticator credential,
847 [in,out] netr_Authenticator return_authenticator,
848 [in][size_is(change_log_entry_size)] uint8 *change_log_entry,
849 [in] uint32 change_log_entry_size,
850 [out] netr_DELTA_ENUM_ARRAY *delta_enum_array
857 WERROR netr_LogonControl2Ex(
858 [in] unistr *logon_server,
859 [in] uint32 function_code,
861 [in][switch_is(function_code)] netr_CONTROL_DATA_INFORMATION data,
862 [out][switch_is(level)] netr_CONTROL_QUERY_INFORMATION query