00001 /* 00002 Unix SMB/CIFS implementation. 00003 SMB parameters and setup 00004 Copyright (C) Andrew Tridgell 1992-1997 00005 Copyright (C) Luke Kenneth Casson Leighton 1996-1997 00006 Copyright (C) Paul Ashton 1997 00007 Copyright (C) Gerald (Jerry) Carter 2005 00008 00009 This program is free software; you can redistribute it and/or modify 00010 it under the terms of the GNU General Public License as published by 00011 the Free Software Foundation; either version 2 of the License, or 00012 (at your option) any later version. 00013 00014 This program is distributed in the hope that it will be useful, 00015 but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00017 GNU General Public License for more details. 00018 00019 You should have received a copy of the GNU General Public License 00020 along with this program; if not, write to the Free Software 00021 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 00022 */ 00023 00024 #ifndef _RPC_LSA_H /* _RPC_LSA_H */ 00025 #define _RPC_LSA_H 00026 00027 /* Opcodes available on PIPE_LSARPC */ 00028 00029 #define LSA_CLOSE 0x00 00030 #define LSA_DELETE 0x01 00031 #define LSA_ENUM_PRIVS 0x02 00032 #define LSA_QUERYSECOBJ 0x03 00033 #define LSA_SETSECOBJ 0x04 00034 #define LSA_CHANGEPASSWORD 0x05 00035 #define LSA_OPENPOLICY 0x06 00036 #define LSA_QUERYINFOPOLICY 0x07 00037 #define LSA_SETINFOPOLICY 0x08 00038 #define LSA_CLEARAUDITLOG 0x09 00039 #define LSA_CREATEACCOUNT 0x0a 00040 #define LSA_ENUM_ACCOUNTS 0x0b 00041 #define LSA_CREATETRUSTDOM 0x0c /* TODO: implement this one -- jerry */ 00042 #define LSA_ENUMTRUSTDOM 0x0d 00043 #define LSA_LOOKUPNAMES 0x0e 00044 #define LSA_LOOKUPSIDS 0x0f 00045 #define LSA_CREATESECRET 0x10 /* TODO: implement this one -- jerry */ 00046 #define LSA_OPENACCOUNT 0x11 00047 #define LSA_ENUMPRIVSACCOUNT 0x12 00048 #define LSA_ADDPRIVS 0x13 00049 #define LSA_REMOVEPRIVS 0x14 00050 #define LSA_GETQUOTAS 0x15 00051 #define LSA_SETQUOTAS 0x16 00052 #define LSA_GETSYSTEMACCOUNT 0x17 00053 #define LSA_SETSYSTEMACCOUNT 0x18 00054 #define LSA_OPENTRUSTDOM 0x19 00055 #define LSA_QUERYTRUSTDOMINFO 0x1a 00056 #define LSA_SETINFOTRUSTDOM 0x1b 00057 #define LSA_OPENSECRET 0x1c /* TODO: implement this one -- jerry */ 00058 #define LSA_SETSECRET 0x1d /* TODO: implement this one -- jerry */ 00059 #define LSA_QUERYSECRET 0x1e 00060 #define LSA_LOOKUPPRIVVALUE 0x1f 00061 #define LSA_LOOKUPPRIVNAME 0x20 00062 #define LSA_PRIV_GET_DISPNAME 0x21 00063 #define LSA_DELETEOBJECT 0x22 /* TODO: implement this one -- jerry */ 00064 #define LSA_ENUMACCTWITHRIGHT 0x23 /* TODO: implement this one -- jerry */ 00065 #define LSA_ENUMACCTRIGHTS 0x24 00066 #define LSA_ADDACCTRIGHTS 0x25 00067 #define LSA_REMOVEACCTRIGHTS 0x26 00068 #define LSA_QUERYTRUSTDOMINFOBYSID 0x27 00069 #define LSA_SETTRUSTDOMINFO 0x28 00070 #define LSA_DELETETRUSTDOM 0x29 00071 #define LSA_STOREPRIVDATA 0x2a 00072 #define LSA_RETRPRIVDATA 0x2b 00073 #define LSA_OPENPOLICY2 0x2c 00074 #define LSA_UNK_GET_CONNUSER 0x2d /* LsaGetConnectedCredentials ? */ 00075 #define LSA_QUERYINFO2 0x2e 00076 #define LSA_QUERYTRUSTDOMINFOBYNAME 0x30 00077 #define LSA_QUERYDOMINFOPOL 0x35 00078 #define LSA_OPENTRUSTDOMBYNAME 0x37 00079 00080 #define LSA_LOOKUPSIDS2 0x39 00081 #define LSA_LOOKUPNAMES2 0x3a 00082 #define LSA_LOOKUPNAMES3 0x44 00083 #define LSA_LOOKUPSIDS3 0x4c 00084 #define LSA_LOOKUPNAMES4 0x4d 00085 00086 /* XXXX these are here to get a compile! */ 00087 #define LSA_LOOKUPRIDS 0xFD 00088 00089 #define LSA_AUDIT_NUM_CATEGORIES_NT4 7 00090 #define LSA_AUDIT_NUM_CATEGORIES_WIN2K 9 00091 00092 #define LSA_AUDIT_NUM_CATEGORIES LSA_AUDIT_NUM_CATEGORIES_NT4 00093 00094 #define LSA_AUDIT_POLICY_NONE 0x00 00095 #define LSA_AUDIT_POLICY_SUCCESS 0x01 00096 #define LSA_AUDIT_POLICY_FAILURE 0x02 00097 #define LSA_AUDIT_POLICY_ALL (LSA_AUDIT_POLICY_SUCCESS|LSA_AUDIT_POLICY_FAILURE) 00098 #define LSA_AUDIT_POLICY_CLEAR 0x04 00099 00100 enum lsa_audit_categories { 00101 LSA_AUDIT_CATEGORY_SYSTEM = 0, 00102 LSA_AUDIT_CATEGORY_LOGON = 1, 00103 LSA_AUDIT_CATEGORY_FILE_AND_OBJECT_ACCESS, 00104 LSA_AUDIT_CATEGORY_USE_OF_USER_RIGHTS, 00105 LSA_AUDIT_CATEGORY_PROCCESS_TRACKING, 00106 LSA_AUDIT_CATEGORY_SECURITY_POLICY_CHANGES, 00107 LSA_AUDIT_CATEGORY_ACCOUNT_MANAGEMENT, 00108 LSA_AUDIT_CATEGORY_DIRECTORY_SERVICE_ACCESS, /* only in win2k/2k3 */ 00109 LSA_AUDIT_CATEGORY_ACCOUNT_LOGON /* only in win2k/2k3 */ 00110 }; 00111 00112 /* level 1 is auditing settings */ 00113 typedef struct dom_query_1 00114 { 00115 uint32 percent_full; 00116 uint32 log_size; 00117 NTTIME retention_time; 00118 uint8 shutdown_in_progress; 00119 NTTIME time_to_shutdown; 00120 uint32 next_audit_record; 00121 uint32 unknown; 00122 } DOM_QUERY_1; 00123 00124 00125 /* level 2 is auditing settings */ 00126 typedef struct dom_query_2 00127 { 00128 uint32 auditing_enabled; 00129 uint32 count1; /* usualy 7, at least on nt4sp4 */ 00130 uint32 count2; /* the same */ 00131 uint32 ptr; 00132 uint32 *auditsettings; 00133 } DOM_QUERY_2; 00134 00135 /* DOM_QUERY - info class 3 and 5 LSA Query response */ 00136 typedef struct dom_query_info_3 00137 { 00138 uint16 uni_dom_max_len; /* domain name string length * 2 */ 00139 uint16 uni_dom_str_len; /* domain name string length * 2 */ 00140 uint32 buffer_dom_name; /* undocumented domain name string buffer pointer */ 00141 uint32 buffer_dom_sid; /* undocumented domain SID string buffer pointer */ 00142 UNISTR2 uni_domain_name; /* domain name (unicode string) */ 00143 DOM_SID2 dom_sid; /* domain SID */ 00144 00145 } DOM_QUERY_3; 00146 00147 /* level 5 is same as level 3. */ 00148 typedef DOM_QUERY_3 DOM_QUERY_5; 00149 00150 /* level 6 is server role information */ 00151 typedef struct dom_query_6 00152 { 00153 uint16 server_role; /* 2=backup, 3=primary */ 00154 } DOM_QUERY_6; 00155 00156 /* level 10 is audit full set info */ 00157 typedef struct dom_query_10 00158 { 00159 uint8 shutdown_on_full; 00160 } DOM_QUERY_10; 00161 00162 /* level 11 is audit full query info */ 00163 typedef struct dom_query_11 00164 { 00165 uint16 unknown; 00166 uint8 shutdown_on_full; 00167 uint8 log_is_full; 00168 } DOM_QUERY_11; 00169 00170 /* level 12 is DNS domain info */ 00171 typedef struct lsa_dns_dom_info 00172 { 00173 UNIHDR hdr_nb_dom_name; /* netbios domain name */ 00174 UNIHDR hdr_dns_dom_name; 00175 UNIHDR hdr_forest_name; 00176 00177 struct GUID dom_guid; /* domain GUID */ 00178 00179 UNISTR2 uni_nb_dom_name; 00180 UNISTR2 uni_dns_dom_name; 00181 UNISTR2 uni_forest_name; 00182 00183 uint32 ptr_dom_sid; 00184 DOM_SID2 dom_sid; /* domain SID */ 00185 } DOM_QUERY_12; 00186 00187 typedef struct seq_qos_info 00188 { 00189 uint32 len; /* 12 */ 00190 uint16 sec_imp_level; /* 0x02 - impersonation level */ 00191 uint8 sec_ctxt_mode; /* 0x01 - context tracking mode */ 00192 uint8 effective_only; /* 0x00 - effective only */ 00193 00194 } LSA_SEC_QOS; 00195 00196 typedef struct obj_attr_info 00197 { 00198 uint32 len; /* 0x18 - length (in bytes) inc. the length field. */ 00199 uint32 ptr_root_dir; /* 0 - root directory (pointer) */ 00200 uint32 ptr_obj_name; /* 0 - object name (pointer) */ 00201 uint32 attributes; /* 0 - attributes (undocumented) */ 00202 uint32 ptr_sec_desc; /* 0 - security descriptior (pointer) */ 00203 uint32 ptr_sec_qos; /* security quality of service */ 00204 LSA_SEC_QOS *sec_qos; 00205 00206 } LSA_OBJ_ATTR; 00207 00208 /* LSA_Q_OPEN_POL - LSA Query Open Policy */ 00209 typedef struct lsa_q_open_pol_info 00210 { 00211 uint32 ptr; /* undocumented buffer pointer */ 00212 uint16 system_name; /* 0x5c - system name */ 00213 LSA_OBJ_ATTR attr ; /* object attributes */ 00214 00215 uint32 des_access; /* desired access attributes */ 00216 00217 } LSA_Q_OPEN_POL; 00218 00219 /* LSA_R_OPEN_POL - response to LSA Open Policy */ 00220 typedef struct lsa_r_open_pol_info 00221 { 00222 POLICY_HND pol; /* policy handle */ 00223 NTSTATUS status; /* return code */ 00224 00225 } LSA_R_OPEN_POL; 00226 00227 /* LSA_Q_OPEN_POL2 - LSA Query Open Policy */ 00228 typedef struct lsa_q_open_pol2_info 00229 { 00230 uint32 ptr; /* undocumented buffer pointer */ 00231 UNISTR2 uni_server_name; /* server name, starting with two '\'s */ 00232 LSA_OBJ_ATTR attr ; /* object attributes */ 00233 00234 uint32 des_access; /* desired access attributes */ 00235 00236 } LSA_Q_OPEN_POL2; 00237 00238 /* LSA_R_OPEN_POL2 - response to LSA Open Policy */ 00239 typedef struct lsa_r_open_pol2_info 00240 { 00241 POLICY_HND pol; /* policy handle */ 00242 NTSTATUS status; /* return code */ 00243 00244 } LSA_R_OPEN_POL2; 00245 00246 00247 #define POLICY_VIEW_LOCAL_INFORMATION 0x00000001 00248 #define POLICY_VIEW_AUDIT_INFORMATION 0x00000002 00249 #define POLICY_GET_PRIVATE_INFORMATION 0x00000004 00250 #define POLICY_TRUST_ADMIN 0x00000008 00251 #define POLICY_CREATE_ACCOUNT 0x00000010 00252 #define POLICY_CREATE_SECRET 0x00000020 00253 #define POLICY_CREATE_PRIVILEGE 0x00000040 00254 #define POLICY_SET_DEFAULT_QUOTA_LIMITS 0x00000080 00255 #define POLICY_SET_AUDIT_REQUIREMENTS 0x00000100 00256 #define POLICY_AUDIT_LOG_ADMIN 0x00000200 00257 #define POLICY_SERVER_ADMIN 0x00000400 00258 #define POLICY_LOOKUP_NAMES 0x00000800 00259 00260 #define POLICY_ALL_ACCESS ( STANDARD_RIGHTS_REQUIRED_ACCESS |\ 00261 POLICY_VIEW_LOCAL_INFORMATION |\ 00262 POLICY_VIEW_AUDIT_INFORMATION |\ 00263 POLICY_GET_PRIVATE_INFORMATION |\ 00264 POLICY_TRUST_ADMIN |\ 00265 POLICY_CREATE_ACCOUNT |\ 00266 POLICY_CREATE_SECRET |\ 00267 POLICY_CREATE_PRIVILEGE |\ 00268 POLICY_SET_DEFAULT_QUOTA_LIMITS |\ 00269 POLICY_SET_AUDIT_REQUIREMENTS |\ 00270 POLICY_AUDIT_LOG_ADMIN |\ 00271 POLICY_SERVER_ADMIN |\ 00272 POLICY_LOOKUP_NAMES ) 00273 00274 00275 #define POLICY_READ ( STANDARD_RIGHTS_READ_ACCESS |\ 00276 POLICY_VIEW_AUDIT_INFORMATION |\ 00277 POLICY_GET_PRIVATE_INFORMATION) 00278 00279 #define POLICY_WRITE ( STD_RIGHT_READ_CONTROL_ACCESS |\ 00280 POLICY_TRUST_ADMIN |\ 00281 POLICY_CREATE_ACCOUNT |\ 00282 POLICY_CREATE_SECRET |\ 00283 POLICY_CREATE_PRIVILEGE |\ 00284 POLICY_SET_DEFAULT_QUOTA_LIMITS |\ 00285 POLICY_SET_AUDIT_REQUIREMENTS |\ 00286 POLICY_AUDIT_LOG_ADMIN |\ 00287 POLICY_SERVER_ADMIN) 00288 00289 #define POLICY_EXECUTE ( STANDARD_RIGHTS_EXECUTE_ACCESS |\ 00290 POLICY_VIEW_LOCAL_INFORMATION |\ 00291 POLICY_LOOKUP_NAMES ) 00292 00293 /* LSA_Q_QUERY_SEC_OBJ - LSA query security */ 00294 typedef struct lsa_query_sec_obj_info 00295 { 00296 POLICY_HND pol; /* policy handle */ 00297 uint32 sec_info; 00298 00299 } LSA_Q_QUERY_SEC_OBJ; 00300 00301 /* LSA_R_QUERY_SEC_OBJ - probably an open */ 00302 typedef struct r_lsa_query_sec_obj_info 00303 { 00304 uint32 ptr; 00305 SEC_DESC_BUF *buf; 00306 00307 NTSTATUS status; /* return status */ 00308 00309 } LSA_R_QUERY_SEC_OBJ; 00310 00311 /* LSA_Q_QUERY_INFO - LSA query info policy */ 00312 typedef struct lsa_query_info 00313 { 00314 POLICY_HND pol; /* policy handle */ 00315 uint16 info_class; /* info class */ 00316 00317 } LSA_Q_QUERY_INFO; 00318 00319 /* LSA_INFO_CTR */ 00320 typedef struct lsa_info_ctr 00321 { 00322 uint16 info_class; 00323 union { 00324 DOM_QUERY_1 id1; 00325 DOM_QUERY_2 id2; 00326 DOM_QUERY_3 id3; 00327 DOM_QUERY_5 id5; 00328 DOM_QUERY_6 id6; 00329 DOM_QUERY_10 id10; 00330 DOM_QUERY_11 id11; 00331 DOM_QUERY_12 id12; 00332 } info; 00333 00334 } LSA_INFO_CTR; 00335 00336 typedef LSA_INFO_CTR LSA_INFO_CTR2; 00337 00338 /* LSA_Q_SET_INFO - LSA set info policy */ 00339 typedef struct lsa_set_info 00340 { 00341 POLICY_HND pol; /* policy handle */ 00342 uint16 info_class; /* info class */ 00343 LSA_INFO_CTR ctr; 00344 00345 } LSA_Q_SET_INFO; 00346 00347 /* LSA_R_SET_INFO - response to LSA set info policy */ 00348 typedef struct lsa_r_set_info 00349 { 00350 NTSTATUS status; /* return code */ 00351 00352 } LSA_R_SET_INFO; 00353 00354 /* LSA_R_QUERY_INFO - response to LSA query info policy */ 00355 typedef struct lsa_r_query_info 00356 { 00357 uint32 dom_ptr; /* undocumented buffer pointer */ 00358 LSA_INFO_CTR ctr; 00359 NTSTATUS status; /* return code */ 00360 00361 } LSA_R_QUERY_INFO; 00362 00363 typedef LSA_Q_QUERY_INFO LSA_Q_QUERY_INFO2; 00364 typedef LSA_R_QUERY_INFO LSA_R_QUERY_INFO2; 00365 00366 /*******************************************************/ 00367 00368 typedef struct { 00369 POLICY_HND pol; 00370 uint32 enum_context; 00371 uint32 preferred_len; /* preferred maximum length */ 00372 } LSA_Q_ENUM_TRUST_DOM; 00373 00374 typedef struct { 00375 UNISTR4 name; 00376 DOM_SID2 *sid; 00377 } DOMAIN_INFO; 00378 00379 typedef struct { 00380 uint32 count; 00381 DOMAIN_INFO *domains; 00382 } DOMAIN_LIST; 00383 00384 typedef struct { 00385 uint32 enum_context; 00386 uint32 count; 00387 DOMAIN_LIST *domlist; 00388 NTSTATUS status; 00389 } LSA_R_ENUM_TRUST_DOM; 00390 00391 /*******************************************************/ 00392 00393 /* LSA_Q_CLOSE */ 00394 typedef struct lsa_q_close_info 00395 { 00396 POLICY_HND pol; /* policy handle */ 00397 00398 } LSA_Q_CLOSE; 00399 00400 /* LSA_R_CLOSE */ 00401 typedef struct lsa_r_close_info 00402 { 00403 POLICY_HND pol; /* policy handle. should be all zeros. */ 00404 00405 NTSTATUS status; /* return code */ 00406 00407 } LSA_R_CLOSE; 00408 00409 00410 #define MAX_REF_DOMAINS 32 00411 00412 /* DOM_TRUST_HDR */ 00413 typedef struct dom_trust_hdr 00414 { 00415 UNIHDR hdr_dom_name; /* referenced domain unicode string headers */ 00416 uint32 ptr_dom_sid; 00417 00418 } DOM_TRUST_HDR; 00419 00420 /* DOM_TRUST_INFO */ 00421 typedef struct dom_trust_info 00422 { 00423 UNISTR2 uni_dom_name; /* domain name unicode string */ 00424 DOM_SID2 ref_dom ; /* referenced domain SID */ 00425 00426 } DOM_TRUST_INFO; 00427 00428 /* DOM_R_REF */ 00429 typedef struct dom_ref_info 00430 { 00431 uint32 num_ref_doms_1; /* num referenced domains */ 00432 uint32 ptr_ref_dom; /* pointer to referenced domains */ 00433 uint32 max_entries; /* 32 - max number of entries */ 00434 uint32 num_ref_doms_2; /* num referenced domains */ 00435 00436 DOM_TRUST_HDR hdr_ref_dom[MAX_REF_DOMAINS]; /* referenced domains */ 00437 DOM_TRUST_INFO ref_dom [MAX_REF_DOMAINS]; /* referenced domains */ 00438 00439 } DOM_R_REF; 00440 00441 /* the domain_idx points to a SID associated with the name */ 00442 00443 /* LSA_TRANS_NAME - translated name */ 00444 typedef struct lsa_trans_name_info 00445 { 00446 uint16 sid_name_use; /* value is 5 for a well-known group; 2 for a domain group; 1 for a user... */ 00447 UNIHDR hdr_name; 00448 uint32 domain_idx; /* index into DOM_R_REF array of SIDs */ 00449 00450 } LSA_TRANS_NAME; 00451 00452 /* LSA_TRANS_NAME2 - translated name */ 00453 typedef struct lsa_trans_name_info2 00454 { 00455 uint16 sid_name_use; /* value is 5 for a well-known group; 2 for a domain group; 1 for a user... */ 00456 UNIHDR hdr_name; 00457 uint32 domain_idx; /* index into DOM_R_REF array of SIDs */ 00458 uint32 unknown; 00459 00460 } LSA_TRANS_NAME2; 00461 00462 /* This number is based on Win2k and later maximum response allowed */ 00463 #define MAX_LOOKUP_SIDS 20480 /* 0x5000 */ 00464 00465 /* LSA_TRANS_NAME_ENUM - LSA Translated Name Enumeration container */ 00466 typedef struct lsa_trans_name_enum_info 00467 { 00468 uint32 num_entries; 00469 uint32 ptr_trans_names; 00470 uint32 num_entries2; 00471 00472 LSA_TRANS_NAME *name; /* translated names */ 00473 UNISTR2 *uni_name; 00474 00475 } LSA_TRANS_NAME_ENUM; 00476 00477 /* LSA_TRANS_NAME_ENUM2 - LSA Translated Name Enumeration container 2 */ 00478 typedef struct lsa_trans_name_enum_info2 00479 { 00480 uint32 num_entries; 00481 uint32 ptr_trans_names; 00482 uint32 num_entries2; 00483 00484 LSA_TRANS_NAME2 *name; /* translated names */ 00485 UNISTR2 *uni_name; 00486 00487 } LSA_TRANS_NAME_ENUM2; 00488 00489 /* LSA_SID_ENUM - LSA SID enumeration container */ 00490 typedef struct lsa_sid_enum_info 00491 { 00492 uint32 num_entries; 00493 uint32 ptr_sid_enum; 00494 uint32 num_entries2; 00495 00496 uint32 *ptr_sid; /* domain SID pointers to be looked up. */ 00497 DOM_SID2 *sid; /* domain SIDs to be looked up. */ 00498 00499 } LSA_SID_ENUM; 00500 00501 /* LSA_Q_LOOKUP_SIDS - LSA Lookup SIDs */ 00502 typedef struct lsa_q_lookup_sids 00503 { 00504 POLICY_HND pol; /* policy handle */ 00505 LSA_SID_ENUM sids; 00506 LSA_TRANS_NAME_ENUM names; 00507 uint16 level; 00508 uint32 mapped_count; 00509 00510 } LSA_Q_LOOKUP_SIDS; 00511 00512 /* LSA_R_LOOKUP_SIDS - response to LSA Lookup SIDs */ 00513 typedef struct lsa_r_lookup_sids 00514 { 00515 uint32 ptr_dom_ref; 00516 DOM_R_REF *dom_ref; /* domain reference info */ 00517 00518 LSA_TRANS_NAME_ENUM names; 00519 uint32 mapped_count; 00520 00521 NTSTATUS status; /* return code */ 00522 00523 } LSA_R_LOOKUP_SIDS; 00524 00525 /* LSA_Q_LOOKUP_SIDS2 - LSA Lookup SIDs 2*/ 00526 typedef struct lsa_q_lookup_sids2 00527 { 00528 POLICY_HND pol; /* policy handle */ 00529 LSA_SID_ENUM sids; 00530 LSA_TRANS_NAME_ENUM2 names; 00531 uint16 level; 00532 uint32 mapped_count; 00533 uint32 unknown1; 00534 uint32 unknown2; 00535 00536 } LSA_Q_LOOKUP_SIDS2; 00537 00538 /* LSA_R_LOOKUP_SIDS2 - response to LSA Lookup SIDs 2*/ 00539 typedef struct lsa_r_lookup_sids2 00540 { 00541 uint32 ptr_dom_ref; 00542 DOM_R_REF *dom_ref; /* domain reference info */ 00543 00544 LSA_TRANS_NAME_ENUM2 names; 00545 uint32 mapped_count; 00546 00547 NTSTATUS status; /* return code */ 00548 00549 } LSA_R_LOOKUP_SIDS2; 00550 00551 /* LSA_Q_LOOKUP_SIDS3 - LSA Lookup SIDs 3 */ 00552 typedef struct lsa_q_lookup_sids3 00553 { 00554 LSA_SID_ENUM sids; 00555 LSA_TRANS_NAME_ENUM2 names; 00556 uint16 level; 00557 uint32 mapped_count; 00558 uint32 unknown1; 00559 uint32 unknown2; 00560 00561 } LSA_Q_LOOKUP_SIDS3; 00562 00563 /* LSA_R_LOOKUP_SIDS3 - response to LSA Lookup SIDs 3 */ 00564 typedef struct lsa_r_lookup_sids3 00565 { 00566 uint32 ptr_dom_ref; 00567 DOM_R_REF *dom_ref; /* domain reference info */ 00568 00569 LSA_TRANS_NAME_ENUM2 names; 00570 uint32 mapped_count; 00571 00572 NTSTATUS status; /* return code */ 00573 00574 } LSA_R_LOOKUP_SIDS3; 00575 00576 /* LSA_Q_LOOKUP_NAMES - LSA Lookup NAMEs */ 00577 typedef struct lsa_q_lookup_names 00578 { 00579 POLICY_HND pol; /* policy handle */ 00580 uint32 num_entries; 00581 uint32 num_entries2; 00582 UNIHDR *hdr_name; /* name buffer pointers */ 00583 UNISTR2 *uni_name; /* names to be looked up */ 00584 00585 uint32 num_trans_entries; 00586 uint32 ptr_trans_sids; /* undocumented domain SID buffer pointer */ 00587 uint16 lookup_level; 00588 uint32 mapped_count; 00589 00590 } LSA_Q_LOOKUP_NAMES; 00591 00592 /* LSA_R_LOOKUP_NAMES - response to LSA Lookup NAMEs by name */ 00593 typedef struct lsa_r_lookup_names 00594 { 00595 uint32 ptr_dom_ref; 00596 DOM_R_REF *dom_ref; /* domain reference info */ 00597 00598 uint32 num_entries; 00599 uint32 ptr_entries; 00600 uint32 num_entries2; 00601 DOM_RID *dom_rid; /* domain RIDs being looked up */ 00602 00603 uint32 mapped_count; 00604 00605 NTSTATUS status; /* return code */ 00606 } LSA_R_LOOKUP_NAMES; 00607 00608 /* LSA_Q_LOOKUP_NAMES2 - LSA Lookup NAMEs 2*/ 00609 typedef struct lsa_q_lookup_names2 00610 { 00611 POLICY_HND pol; /* policy handle */ 00612 uint32 num_entries; 00613 uint32 num_entries2; 00614 UNIHDR *hdr_name; /* name buffer pointers */ 00615 UNISTR2 *uni_name; /* names to be looked up */ 00616 00617 uint32 num_trans_entries; 00618 uint32 ptr_trans_sids; /* undocumented domain SID buffer pointer */ 00619 uint16 lookup_level; 00620 uint32 mapped_count; 00621 uint32 unknown1; 00622 uint32 unknown2; 00623 00624 } LSA_Q_LOOKUP_NAMES2; 00625 00626 /* LSA_R_LOOKUP_NAMES2 - response to LSA Lookup NAMEs by name 2 */ 00627 typedef struct lsa_r_lookup_names2 00628 { 00629 uint32 ptr_dom_ref; 00630 DOM_R_REF *dom_ref; /* domain reference info */ 00631 00632 uint32 num_entries; 00633 uint32 ptr_entries; 00634 uint32 num_entries2; 00635 DOM_RID2 *dom_rid; /* domain RIDs being looked up */ 00636 00637 uint32 mapped_count; 00638 00639 NTSTATUS status; /* return code */ 00640 } LSA_R_LOOKUP_NAMES2; 00641 00642 /* LSA_Q_LOOKUP_NAMES3 - LSA Lookup NAMEs 3 */ 00643 typedef struct lsa_q_lookup_names3 00644 { 00645 POLICY_HND pol; /* policy handle */ 00646 uint32 num_entries; 00647 uint32 num_entries2; 00648 UNIHDR *hdr_name; /* name buffer pointers */ 00649 UNISTR2 *uni_name; /* names to be looked up */ 00650 00651 uint32 num_trans_entries; 00652 uint32 ptr_trans_sids; /* undocumented domain SID buffer pointer */ 00653 uint16 lookup_level; 00654 uint32 mapped_count; 00655 uint32 unknown1; 00656 uint32 unknown2; 00657 00658 } LSA_Q_LOOKUP_NAMES3; 00659 00660 /* Sid type used in lookupnames3 and lookupnames4. */ 00661 typedef struct lsa_translatedsid3 { 00662 uint8 sid_type; 00663 DOM_SID2 *sid2; 00664 uint32 sid_idx; 00665 uint32 unknown; 00666 } LSA_TRANSLATED_SID3; 00667 00668 /* LSA_R_LOOKUP_NAMES3 - response to LSA Lookup NAMEs by name 3 */ 00669 typedef struct lsa_r_lookup_names3 00670 { 00671 uint32 ptr_dom_ref; 00672 DOM_R_REF *dom_ref; /* domain reference info */ 00673 00674 uint32 num_entries; 00675 uint32 ptr_entries; 00676 uint32 num_entries2; 00677 LSA_TRANSLATED_SID3 *trans_sids; 00678 00679 uint32 mapped_count; 00680 00681 NTSTATUS status; /* return code */ 00682 } LSA_R_LOOKUP_NAMES3; 00683 00684 /* LSA_Q_LOOKUP_NAMES4 - LSA Lookup NAMEs 4 */ 00685 typedef struct lsa_q_lookup_names4 00686 { 00687 uint32 num_entries; 00688 uint32 num_entries2; 00689 UNIHDR *hdr_name; /* name buffer pointers */ 00690 UNISTR2 *uni_name; /* names to be looked up */ 00691 00692 uint32 num_trans_entries; 00693 uint32 ptr_trans_sids; /* undocumented domain SID buffer pointer */ 00694 uint16 lookup_level; 00695 uint32 mapped_count; 00696 uint32 unknown1; 00697 uint32 unknown2; 00698 00699 } LSA_Q_LOOKUP_NAMES4; 00700 00701 /* LSA_R_LOOKUP_NAMES3 - response to LSA Lookup NAMEs by name 4 */ 00702 typedef struct lsa_r_lookup_names4 00703 { 00704 uint32 ptr_dom_ref; 00705 DOM_R_REF *dom_ref; /* domain reference info */ 00706 00707 uint32 num_entries; 00708 uint32 ptr_entries; 00709 uint32 num_entries2; 00710 LSA_TRANSLATED_SID3 *trans_sids; 00711 00712 uint32 mapped_count; 00713 00714 NTSTATUS status; /* return code */ 00715 } LSA_R_LOOKUP_NAMES4; 00716 00717 typedef struct lsa_enum_priv_entry 00718 { 00719 UNIHDR hdr_name; 00720 uint32 luid_low; 00721 uint32 luid_high; 00722 UNISTR2 name; 00723 00724 } LSA_PRIV_ENTRY; 00725 00726 /* LSA_Q_ENUM_PRIVS - LSA enum privileges */ 00727 typedef struct lsa_q_enum_privs 00728 { 00729 POLICY_HND pol; /* policy handle */ 00730 uint32 enum_context; 00731 uint32 pref_max_length; 00732 } LSA_Q_ENUM_PRIVS; 00733 00734 typedef struct lsa_r_enum_privs 00735 { 00736 uint32 enum_context; 00737 uint32 count; 00738 uint32 ptr; 00739 uint32 count1; 00740 00741 LSA_PRIV_ENTRY *privs; 00742 00743 NTSTATUS status; 00744 } LSA_R_ENUM_PRIVS; 00745 00746 /* LSA_Q_ENUM_ACCT_RIGHTS - LSA enum account rights */ 00747 typedef struct 00748 { 00749 POLICY_HND pol; /* policy handle */ 00750 DOM_SID2 sid; 00751 } LSA_Q_ENUM_ACCT_RIGHTS; 00752 00753 /* LSA_R_ENUM_ACCT_RIGHTS - LSA enum account rights */ 00754 typedef struct 00755 { 00756 uint32 count; 00757 UNISTR4_ARRAY *rights; 00758 NTSTATUS status; 00759 } LSA_R_ENUM_ACCT_RIGHTS; 00760 00761 00762 /* LSA_Q_ADD_ACCT_RIGHTS - LSA add account rights */ 00763 typedef struct 00764 { 00765 POLICY_HND pol; /* policy handle */ 00766 DOM_SID2 sid; 00767 uint32 count; 00768 UNISTR4_ARRAY *rights; 00769 } LSA_Q_ADD_ACCT_RIGHTS; 00770 00771 /* LSA_R_ADD_ACCT_RIGHTS - LSA add account rights */ 00772 typedef struct 00773 { 00774 NTSTATUS status; 00775 } LSA_R_ADD_ACCT_RIGHTS; 00776 00777 00778 /* LSA_Q_REMOVE_ACCT_RIGHTS - LSA remove account rights */ 00779 typedef struct 00780 { 00781 POLICY_HND pol; /* policy handle */ 00782 DOM_SID2 sid; 00783 uint32 removeall; 00784 uint32 count; 00785 UNISTR4_ARRAY *rights; 00786 } LSA_Q_REMOVE_ACCT_RIGHTS; 00787 00788 /* LSA_R_REMOVE_ACCT_RIGHTS - LSA remove account rights */ 00789 typedef struct 00790 { 00791 NTSTATUS status; 00792 } LSA_R_REMOVE_ACCT_RIGHTS; 00793 00794 00795 /* LSA_Q_PRIV_GET_DISPNAME - LSA get privilege display name */ 00796 typedef struct lsa_q_priv_get_dispname 00797 { 00798 POLICY_HND pol; /* policy handle */ 00799 UNIHDR hdr_name; 00800 UNISTR2 name; 00801 uint16 lang_id; 00802 uint16 lang_id_sys; 00803 } LSA_Q_PRIV_GET_DISPNAME; 00804 00805 typedef struct lsa_r_priv_get_dispname 00806 { 00807 uint32 ptr_info; 00808 UNIHDR hdr_desc; 00809 UNISTR2 desc; 00810 /* Don't align ! */ 00811 uint16 lang_id; 00812 /* align */ 00813 NTSTATUS status; 00814 } LSA_R_PRIV_GET_DISPNAME; 00815 00816 /* LSA_Q_ENUM_ACCOUNTS */ 00817 typedef struct lsa_q_enum_accounts 00818 { 00819 POLICY_HND pol; /* policy handle */ 00820 uint32 enum_context; 00821 uint32 pref_max_length; 00822 } LSA_Q_ENUM_ACCOUNTS; 00823 00824 /* LSA_R_ENUM_ACCOUNTS */ 00825 typedef struct lsa_r_enum_accounts 00826 { 00827 uint32 enum_context; 00828 LSA_SID_ENUM sids; 00829 NTSTATUS status; 00830 } LSA_R_ENUM_ACCOUNTS; 00831 00832 /* LSA_Q_UNK_GET_CONNUSER - gets username\domain of connected user 00833 called when "Take Ownership" is clicked -SK */ 00834 typedef struct lsa_q_unk_get_connuser 00835 { 00836 uint32 ptr_srvname; 00837 UNISTR2 uni2_srvname; 00838 uint32 unk1; /* 3 unknown uint32's are seen right after uni2_srvname */ 00839 uint32 unk2; /* unk2 appears to be a ptr, unk1 = unk3 = 0 usually */ 00840 uint32 unk3; 00841 } LSA_Q_UNK_GET_CONNUSER; 00842 00843 /* LSA_R_UNK_GET_CONNUSER */ 00844 typedef struct lsa_r_unk_get_connuser 00845 { 00846 uint32 ptr_user_name; 00847 UNIHDR hdr_user_name; 00848 UNISTR2 uni2_user_name; 00849 00850 uint32 unk1; 00851 00852 uint32 ptr_dom_name; 00853 UNIHDR hdr_dom_name; 00854 UNISTR2 uni2_dom_name; 00855 00856 NTSTATUS status; 00857 } LSA_R_UNK_GET_CONNUSER; 00858 00859 00860 typedef struct lsa_q_createaccount 00861 { 00862 POLICY_HND pol; /* policy handle */ 00863 DOM_SID2 sid; 00864 uint32 access; /* access */ 00865 } LSA_Q_CREATEACCOUNT; 00866 00867 typedef struct lsa_r_createaccount 00868 { 00869 POLICY_HND pol; /* policy handle */ 00870 NTSTATUS status; 00871 } LSA_R_CREATEACCOUNT; 00872 00873 00874 typedef struct lsa_q_openaccount 00875 { 00876 POLICY_HND pol; /* policy handle */ 00877 DOM_SID2 sid; 00878 uint32 access; /* desired access */ 00879 } LSA_Q_OPENACCOUNT; 00880 00881 typedef struct lsa_r_openaccount 00882 { 00883 POLICY_HND pol; /* policy handle */ 00884 NTSTATUS status; 00885 } LSA_R_OPENACCOUNT; 00886 00887 typedef struct lsa_q_enumprivsaccount 00888 { 00889 POLICY_HND pol; /* policy handle */ 00890 } LSA_Q_ENUMPRIVSACCOUNT; 00891 00892 typedef struct lsa_r_enumprivsaccount 00893 { 00894 uint32 ptr; 00895 uint32 count; 00896 PRIVILEGE_SET set; 00897 NTSTATUS status; 00898 } LSA_R_ENUMPRIVSACCOUNT; 00899 00900 typedef struct lsa_q_getsystemaccount 00901 { 00902 POLICY_HND pol; /* policy handle */ 00903 } LSA_Q_GETSYSTEMACCOUNT; 00904 00905 typedef struct lsa_r_getsystemaccount 00906 { 00907 uint32 access; 00908 NTSTATUS status; 00909 } LSA_R_GETSYSTEMACCOUNT; 00910 00911 00912 typedef struct lsa_q_setsystemaccount 00913 { 00914 POLICY_HND pol; /* policy handle */ 00915 uint32 access; 00916 } LSA_Q_SETSYSTEMACCOUNT; 00917 00918 typedef struct lsa_r_setsystemaccount 00919 { 00920 NTSTATUS status; 00921 } LSA_R_SETSYSTEMACCOUNT; 00922 00923 typedef struct { 00924 UNIHDR hdr; 00925 UNISTR2 unistring; 00926 } LSA_STRING; 00927 00928 typedef struct { 00929 POLICY_HND pol; /* policy handle */ 00930 LSA_STRING privname; 00931 } LSA_Q_LOOKUP_PRIV_VALUE; 00932 00933 typedef struct { 00934 LUID luid; 00935 NTSTATUS status; 00936 } LSA_R_LOOKUP_PRIV_VALUE; 00937 00938 typedef struct lsa_q_addprivs 00939 { 00940 POLICY_HND pol; /* policy handle */ 00941 uint32 count; 00942 PRIVILEGE_SET set; 00943 } LSA_Q_ADDPRIVS; 00944 00945 typedef struct lsa_r_addprivs 00946 { 00947 NTSTATUS status; 00948 } LSA_R_ADDPRIVS; 00949 00950 00951 typedef struct lsa_q_removeprivs 00952 { 00953 POLICY_HND pol; /* policy handle */ 00954 uint32 allrights; 00955 uint32 ptr; 00956 uint32 count; 00957 PRIVILEGE_SET set; 00958 } LSA_Q_REMOVEPRIVS; 00959 00960 typedef struct lsa_r_removeprivs 00961 { 00962 NTSTATUS status; 00963 } LSA_R_REMOVEPRIVS; 00964 00965 /*******************************************************/ 00966 #if 0 /* jerry, I think this not correct - gd */ 00967 typedef struct { 00968 POLICY_HND handle; 00969 uint32 count; /* ??? this is what ethereal calls it */ 00970 DOM_SID sid; 00971 } LSA_Q_OPEN_TRUSTED_DOMAIN; 00972 #endif 00973 00974 /* LSA_Q_OPEN_TRUSTED_DOMAIN - LSA Query Open Trusted Domain */ 00975 typedef struct lsa_q_open_trusted_domain 00976 { 00977 POLICY_HND pol; /* policy handle */ 00978 DOM_SID2 sid; /* domain sid */ 00979 uint32 access_mask; /* access mask */ 00980 00981 } LSA_Q_OPEN_TRUSTED_DOMAIN; 00982 00983 /* LSA_R_OPEN_TRUSTED_DOMAIN - response to LSA Query Open Trusted Domain */ 00984 typedef struct { 00985 POLICY_HND handle; /* trustdom policy handle */ 00986 NTSTATUS status; /* return code */ 00987 } LSA_R_OPEN_TRUSTED_DOMAIN; 00988 00989 00990 /*******************************************************/ 00991 00992 /* LSA_Q_OPEN_TRUSTED_DOMAIN_BY_NAME - LSA Query Open Trusted Domain by Name*/ 00993 typedef struct lsa_q_open_trusted_domain_by_name 00994 { 00995 POLICY_HND pol; /* policy handle */ 00996 LSA_STRING name; /* domain name */ 00997 uint32 access_mask; /* access mask */ 00998 00999 } LSA_Q_OPEN_TRUSTED_DOMAIN_BY_NAME; 01000 01001 /* LSA_R_OPEN_TRUSTED_DOMAIN_BY_NAME - response to LSA Query Open Trusted Domain by Name */ 01002 typedef struct { 01003 POLICY_HND handle; /* trustdom policy handle */ 01004 NTSTATUS status; /* return code */ 01005 } LSA_R_OPEN_TRUSTED_DOMAIN_BY_NAME; 01006 01007 01008 /*******************************************************/ 01009 01010 01011 typedef struct { 01012 POLICY_HND handle; 01013 UNISTR4 secretname; 01014 uint32 access; 01015 } LSA_Q_OPEN_SECRET; 01016 01017 typedef struct { 01018 POLICY_HND handle; 01019 NTSTATUS status; 01020 } LSA_R_OPEN_SECRET; 01021 01022 01023 /*******************************************************/ 01024 01025 typedef struct { 01026 POLICY_HND handle; 01027 } LSA_Q_DELETE_OBJECT; 01028 01029 typedef struct { 01030 NTSTATUS status; 01031 } LSA_R_DELETE_OBJECT; 01032 01033 01034 /*******************************************************/ 01035 01036 typedef struct { 01037 POLICY_HND handle; 01038 UNISTR4 secretname; 01039 uint32 access; 01040 } LSA_Q_CREATE_SECRET; 01041 01042 typedef struct { 01043 POLICY_HND handle; 01044 NTSTATUS status; 01045 } LSA_R_CREATE_SECRET; 01046 01047 01048 /*******************************************************/ 01049 01050 typedef struct { 01051 POLICY_HND handle; 01052 UNISTR4 secretname; 01053 uint32 access; 01054 } LSA_Q_CREATE_TRUSTED_DOMAIN; 01055 01056 typedef struct { 01057 POLICY_HND handle; 01058 NTSTATUS status; 01059 } LSA_R_CREATE_TRUSTED_DOMAIN; 01060 01061 01062 /*******************************************************/ 01063 01064 typedef struct { 01065 uint32 size; /* size is written on the wire twice so I 01066 can only assume that one is supposed to 01067 be a max length and one is a size */ 01068 UNISTR2 *data; /* not really a UNICODE string but the parsing 01069 is the same */ 01070 } LSA_DATA_BLOB; 01071 01072 typedef struct { 01073 POLICY_HND handle; 01074 LSA_DATA_BLOB *old_value; 01075 LSA_DATA_BLOB *new_value; 01076 } LSA_Q_SET_SECRET; 01077 01078 typedef struct { 01079 NTSTATUS status; 01080 } LSA_R_SET_SECRET; 01081 01082 /* LSA_Q_QUERY_TRUSTED_DOMAIN_INFO - LSA query trusted domain info */ 01083 typedef struct lsa_query_trusted_domain_info 01084 { 01085 POLICY_HND pol; /* policy handle */ 01086 uint16 info_class; /* info class */ 01087 01088 } LSA_Q_QUERY_TRUSTED_DOMAIN_INFO; 01089 01090 /* LSA_Q_QUERY_TRUSTED_DOMAIN_INFO_BY_SID - LSA query trusted domain info */ 01091 typedef struct lsa_query_trusted_domain_info_by_sid 01092 { 01093 POLICY_HND pol; /* policy handle */ 01094 DOM_SID2 dom_sid; /* domain sid */ 01095 uint16 info_class; /* info class */ 01096 01097 } LSA_Q_QUERY_TRUSTED_DOMAIN_INFO_BY_SID; 01098 01099 /* LSA_Q_QUERY_TRUSTED_DOMAIN_INFO_BY_NAME - LSA query trusted domain info */ 01100 typedef struct lsa_query_trusted_domain_info_by_name 01101 { 01102 POLICY_HND pol; /* policy handle */ 01103 LSA_STRING domain_name; /* domain name */ 01104 uint16 info_class; /* info class */ 01105 01106 } LSA_Q_QUERY_TRUSTED_DOMAIN_INFO_BY_NAME; 01107 01108 typedef struct trusted_domain_info_name { 01109 LSA_STRING netbios_name; 01110 } TRUSTED_DOMAIN_INFO_NAME; 01111 01112 typedef struct trusted_domain_info_posix_offset { 01113 uint32 posix_offset; 01114 } TRUSTED_DOMAIN_INFO_POSIX_OFFSET; 01115 01116 typedef struct lsa_data_buf { 01117 uint32 size; 01118 uint32 offset; 01119 uint32 length; 01120 uint8 *data; 01121 } LSA_DATA_BUF; 01122 01123 typedef struct lsa_data_buf_hdr { 01124 uint32 length; 01125 uint32 size; 01126 uint32 data_ptr; 01127 } LSA_DATA_BUF_HDR; 01128 01129 01130 typedef struct lsa_data_buf2 { 01131 uint32 size; 01132 uint8 *data; 01133 } LSA_DATA_BUF2; 01134 01135 typedef struct trusted_domain_info_password { 01136 uint32 ptr_password; 01137 uint32 ptr_old_password; 01138 LSA_DATA_BUF_HDR password_hdr; 01139 LSA_DATA_BUF_HDR old_password_hdr; 01140 LSA_DATA_BUF password; 01141 LSA_DATA_BUF old_password; 01142 } TRUSTED_DOMAIN_INFO_PASSWORD; 01143 01144 typedef struct trusted_domain_info_basic { 01145 LSA_STRING netbios_name; 01146 DOM_SID2 sid; 01147 } TRUSTED_DOMAIN_INFO_BASIC; 01148 01149 typedef struct trusted_domain_info_ex { 01150 LSA_STRING domain_name; 01151 LSA_STRING netbios_name; 01152 DOM_SID2 sid; 01153 uint32 trust_direction; 01154 uint32 trust_type; 01155 uint32 trust_attributes; 01156 } TRUSTED_DOMAIN_INFO_EX; 01157 01158 typedef struct trust_domain_info_buffer { 01159 NTTIME last_update_time; 01160 uint32 secret_type; 01161 LSA_DATA_BUF2 data; 01162 } LSA_TRUSTED_DOMAIN_INFO_BUFFER; 01163 01164 typedef struct trusted_domain_info_auth_info { 01165 uint32 incoming_count; 01166 LSA_TRUSTED_DOMAIN_INFO_BUFFER incoming_current_auth_info; 01167 LSA_TRUSTED_DOMAIN_INFO_BUFFER incoming_previous_auth_info; 01168 uint32 outgoing_count; 01169 LSA_TRUSTED_DOMAIN_INFO_BUFFER outgoing_current_auth_info; 01170 LSA_TRUSTED_DOMAIN_INFO_BUFFER outgoing_previous_auth_info; 01171 } TRUSTED_DOMAIN_INFO_AUTH_INFO; 01172 01173 typedef struct trusted_domain_info_full_info { 01174 TRUSTED_DOMAIN_INFO_EX info_ex; 01175 TRUSTED_DOMAIN_INFO_POSIX_OFFSET posix_offset; 01176 TRUSTED_DOMAIN_INFO_AUTH_INFO auth_info; 01177 } TRUSTED_DOMAIN_INFO_FULL_INFO; 01178 01179 typedef struct trusted_domain_info_11 { 01180 TRUSTED_DOMAIN_INFO_EX info_ex; 01181 LSA_DATA_BUF2 data1; 01182 } TRUSTED_DOMAIN_INFO_11; 01183 01184 typedef struct trusted_domain_info_all { 01185 TRUSTED_DOMAIN_INFO_EX info_ex; 01186 LSA_DATA_BUF2 data1; 01187 TRUSTED_DOMAIN_INFO_POSIX_OFFSET posix_offset; 01188 TRUSTED_DOMAIN_INFO_AUTH_INFO auth_info; 01189 } TRUSTED_DOMAIN_INFO_ALL; 01190 01191 /* LSA_TRUSTED_DOMAIN_INFO */ 01192 typedef union lsa_trusted_domain_info 01193 { 01194 uint16 info_class; 01195 TRUSTED_DOMAIN_INFO_NAME name; 01196 /* deprecated - gd 01197 TRUSTED_DOMAIN_INFO_CONTROLLERS_INFO controllers; */ 01198 TRUSTED_DOMAIN_INFO_POSIX_OFFSET posix_offset; 01199 TRUSTED_DOMAIN_INFO_PASSWORD password; 01200 TRUSTED_DOMAIN_INFO_BASIC basic; 01201 TRUSTED_DOMAIN_INFO_EX info_ex; 01202 TRUSTED_DOMAIN_INFO_AUTH_INFO auth_info; 01203 TRUSTED_DOMAIN_INFO_FULL_INFO full_info; 01204 TRUSTED_DOMAIN_INFO_11 info11; 01205 TRUSTED_DOMAIN_INFO_ALL info_all; 01206 01207 } LSA_TRUSTED_DOMAIN_INFO; 01208 01209 /* LSA_R_QUERY_TRUSTED_DOMAIN_INFO - LSA query trusted domain info */ 01210 typedef struct r_lsa_query_trusted_domain_info 01211 { 01212 LSA_TRUSTED_DOMAIN_INFO *info; 01213 NTSTATUS status; 01214 } LSA_R_QUERY_TRUSTED_DOMAIN_INFO; 01215 01216 typedef struct dom_info_kerberos { 01217 uint32 enforce_restrictions; 01218 NTTIME service_tkt_lifetime; 01219 NTTIME user_tkt_lifetime; 01220 NTTIME user_tkt_renewaltime; 01221 NTTIME clock_skew; 01222 NTTIME unknown6; 01223 } LSA_DOM_INFO_POLICY_KERBEROS; 01224 01225 typedef struct dom_info_efs { 01226 uint32 blob_len; 01227 UNISTR2 efs_blob; 01228 } LSA_DOM_INFO_POLICY_EFS; 01229 01230 typedef struct lsa_dom_info_union { 01231 uint16 info_class; 01232 LSA_DOM_INFO_POLICY_EFS efs_policy; 01233 LSA_DOM_INFO_POLICY_KERBEROS krb_policy; 01234 } LSA_DOM_INFO_UNION; 01235 01236 /* LSA_Q_QUERY_DOM_INFO_POLICY - LSA query info */ 01237 typedef struct lsa_q_query_dom_info_policy 01238 { 01239 POLICY_HND pol; /* policy handle */ 01240 uint16 info_class; /* info class */ 01241 } LSA_Q_QUERY_DOM_INFO_POLICY; 01242 01243 typedef struct lsa_r_query_dom_info_policy 01244 { 01245 LSA_DOM_INFO_UNION *info; 01246 NTSTATUS status; 01247 } LSA_R_QUERY_DOM_INFO_POLICY; 01248 01249 01250 #endif /* _RPC_LSA_H */
1.4.7