1/* 2 Unix SMB/CIFS implementation. 3 SMB parameters and setup 4 Copyright (C) Andrew Tridgell 1992-1997 5 Copyright (C) Luke Kenneth Casson Leighton 1996-1997 6 Copyright (C) Paul Ashton 1997 7 8 This program is free software; you can redistribute it and/or modify 9 it under the terms of the GNU General Public License as published by 10 the Free Software Foundation; either version 2 of the License, or 11 (at your option) any later version. 12 13 This program is distributed in the hope that it will be useful, 14 but WITHOUT ANY WARRANTY; without even the implied warranty of 15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 GNU General Public License for more details. 17 18 You should have received a copy of the GNU General Public License 19 along with this program; if not, write to the Free Software 20 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 21*/ 22 23#ifndef _RPC_LSA_H /* _RPC_LSA_H */ 24#define _RPC_LSA_H 25 26#include "rpc_misc.h" 27 28/* Opcodes available on PIPE_LSARPC */ 29 30#if 0 /* UNIMPLEMENTED */ 31 32#define LSA_LOOKUPSIDS2 0x39 33 34#endif 35 36#define LSA_CLOSE 0x00 37#define LSA_DELETE 0x01 38#define LSA_ENUM_PRIVS 0x02 39#define LSA_QUERYSECOBJ 0x03 40#define LSA_SETSECOBJ 0x04 41#define LSA_CHANGEPASSWORD 0x05 42#define LSA_OPENPOLICY 0x06 43#define LSA_QUERYINFOPOLICY 0x07 44#define LSA_SETINFOPOLICY 0x08 45#define LSA_CLEARAUDITLOG 0x09 46#define LSA_CREATEACCOUNT 0x0a 47#define LSA_ENUM_ACCOUNTS 0x0b 48#define LSA_CREATETRUSTDOM 0x0c 49#define LSA_ENUMTRUSTDOM 0x0d 50#define LSA_LOOKUPNAMES 0x0e 51#define LSA_LOOKUPSIDS 0x0f 52#define LSA_CREATESECRET 0x10 53#define LSA_OPENACCOUNT 0x11 54#define LSA_ENUMPRIVSACCOUNT 0x12 55#define LSA_ADDPRIVS 0x13 56#define LSA_REMOVEPRIVS 0x14 57#define LSA_GETQUOTAS 0x15 58#define LSA_SETQUOTAS 0x16 59#define LSA_GETSYSTEMACCOUNT 0x17 60#define LSA_SETSYSTEMACCOUNT 0x18 61#define LSA_OPENTRUSTDOM 0x19 62#define LSA_QUERYTRUSTDOM 0x1a 63#define LSA_SETINFOTRUSTDOM 0x1b 64#define LSA_OPENSECRET 0x1c 65#define LSA_SETSECRET 0x1d 66#define LSA_QUERYSECRET 0x1e 67#define LSA_LOOKUPPRIVVALUE 0x1f 68#define LSA_LOOKUPPRIVNAME 0x20 69#define LSA_PRIV_GET_DISPNAME 0x21 70#define LSA_DELETEOBJECT 0x22 71#define LSA_ENUMACCTWITHRIGHT 0x23 72#define LSA_ENUMACCTRIGHTS 0x24 73#define LSA_ADDACCTRIGHTS 0x25 74#define LSA_REMOVEACCTRIGHTS 0x26 75#define LSA_QUERYTRUSTDOMINFO 0x27 76#define LSA_SETTRUSTDOMINFO 0x28 77#define LSA_DELETETRUSTDOM 0x29 78#define LSA_STOREPRIVDATA 0x2a 79#define LSA_RETRPRIVDATA 0x2b 80#define LSA_OPENPOLICY2 0x2c 81#define LSA_UNK_GET_CONNUSER 0x2d /* LsaGetConnectedCredentials ? */ 82#define LSA_QUERYINFO2 0x2e 83 84/* XXXX these are here to get a compile! */ 85#define LSA_LOOKUPRIDS 0xFD 86 87/* DOM_QUERY - info class 3 and 5 LSA Query response */ 88typedef struct dom_query_info 89{ 90 uint16 uni_dom_max_len; /* domain name string length * 2 */ 91 uint16 uni_dom_str_len; /* domain name string length * 2 */ 92 uint32 buffer_dom_name; /* undocumented domain name string buffer pointer */ 93 uint32 buffer_dom_sid; /* undocumented domain SID string buffer pointer */ 94 UNISTR2 uni_domain_name; /* domain name (unicode string) */ 95 DOM_SID2 dom_sid; /* domain SID */ 96 97} DOM_QUERY; 98 99/* level 5 is same as level 3. */ 100typedef DOM_QUERY DOM_QUERY_3; 101typedef DOM_QUERY DOM_QUERY_5; 102 103/* level 2 is auditing settings */ 104typedef struct dom_query_2 105{ 106 uint32 auditing_enabled; 107 uint32 count1; /* usualy 7, at least on nt4sp4 */ 108 uint32 count2; /* the same */ 109 uint32 *auditsettings; 110} DOM_QUERY_2; 111 112/* level 6 is server role information */ 113typedef struct dom_query_6 114{ 115 uint16 server_role; /* 2=backup, 3=primary */ 116} DOM_QUERY_6; 117 118typedef struct seq_qos_info 119{ 120 uint32 len; /* 12 */ 121 uint16 sec_imp_level; /* 0x02 - impersonation level */ 122 uint8 sec_ctxt_mode; /* 0x01 - context tracking mode */ 123 uint8 effective_only; /* 0x00 - effective only */ 124 125} LSA_SEC_QOS; 126 127typedef struct obj_attr_info 128{ 129 uint32 len; /* 0x18 - length (in bytes) inc. the length field. */ 130 uint32 ptr_root_dir; /* 0 - root directory (pointer) */ 131 uint32 ptr_obj_name; /* 0 - object name (pointer) */ 132 uint32 attributes; /* 0 - attributes (undocumented) */ 133 uint32 ptr_sec_desc; /* 0 - security descriptior (pointer) */ 134 uint32 ptr_sec_qos; /* security quality of service */ 135 LSA_SEC_QOS *sec_qos; 136 137} LSA_OBJ_ATTR; 138 139/* LSA_Q_OPEN_POL - LSA Query Open Policy */ 140typedef struct lsa_q_open_pol_info 141{ 142 uint32 ptr; /* undocumented buffer pointer */ 143 uint16 system_name; /* 0x5c - system name */ 144 LSA_OBJ_ATTR attr ; /* object attributes */ 145 146 uint32 des_access; /* desired access attributes */ 147 148} LSA_Q_OPEN_POL; 149 150/* LSA_R_OPEN_POL - response to LSA Open Policy */ 151typedef struct lsa_r_open_pol_info 152{ 153 POLICY_HND pol; /* policy handle */ 154 NTSTATUS status; /* return code */ 155 156} LSA_R_OPEN_POL; 157 158/* LSA_Q_OPEN_POL2 - LSA Query Open Policy */ 159typedef struct lsa_q_open_pol2_info 160{ 161 uint32 ptr; /* undocumented buffer pointer */ 162 UNISTR2 uni_server_name; /* server name, starting with two '\'s */ 163 LSA_OBJ_ATTR attr ; /* object attributes */ 164 165 uint32 des_access; /* desired access attributes */ 166 167} LSA_Q_OPEN_POL2; 168 169/* LSA_R_OPEN_POL2 - response to LSA Open Policy */ 170typedef struct lsa_r_open_pol2_info 171{ 172 POLICY_HND pol; /* policy handle */ 173 NTSTATUS status; /* return code */ 174 175} LSA_R_OPEN_POL2; 176 177 178#define POLICY_VIEW_LOCAL_INFORMATION 0x00000001 179#define POLICY_VIEW_AUDIT_INFORMATION 0x00000002 180#define POLICY_GET_PRIVATE_INFORMATION 0x00000004 181#define POLICY_TRUST_ADMIN 0x00000008 182#define POLICY_CREATE_ACCOUNT 0x00000010 183#define POLICY_CREATE_SECRET 0x00000020 184#define POLICY_CREATE_PRIVILEGE 0x00000040 185#define POLICY_SET_DEFAULT_QUOTA_LIMITS 0x00000080 186#define POLICY_SET_AUDIT_REQUIREMENTS 0x00000100 187#define POLICY_AUDIT_LOG_ADMIN 0x00000200 188#define POLICY_SERVER_ADMIN 0x00000400 189#define POLICY_LOOKUP_NAMES 0x00000800 190 191#define POLICY_ALL_ACCESS ( STANDARD_RIGHTS_REQUIRED_ACCESS |\ 192 POLICY_VIEW_LOCAL_INFORMATION |\ 193 POLICY_VIEW_AUDIT_INFORMATION |\ 194 POLICY_GET_PRIVATE_INFORMATION |\ 195 POLICY_TRUST_ADMIN |\ 196 POLICY_CREATE_ACCOUNT |\ 197 POLICY_CREATE_SECRET |\ 198 POLICY_CREATE_PRIVILEGE |\ 199 POLICY_SET_DEFAULT_QUOTA_LIMITS |\ 200 POLICY_SET_AUDIT_REQUIREMENTS |\ 201 POLICY_AUDIT_LOG_ADMIN |\ 202 POLICY_SERVER_ADMIN |\ 203 POLICY_LOOKUP_NAMES ) 204 205 206#define POLICY_READ ( STANDARD_RIGHTS_READ_ACCESS |\ 207 POLICY_VIEW_AUDIT_INFORMATION |\ 208 POLICY_GET_PRIVATE_INFORMATION) 209 210#define POLICY_WRITE ( STD_RIGHT_READ_CONTROL_ACCESS |\ 211 POLICY_TRUST_ADMIN |\ 212 POLICY_CREATE_ACCOUNT |\ 213 POLICY_CREATE_SECRET |\ 214 POLICY_CREATE_PRIVILEGE |\ 215 POLICY_SET_DEFAULT_QUOTA_LIMITS |\ 216 POLICY_SET_AUDIT_REQUIREMENTS |\ 217 POLICY_AUDIT_LOG_ADMIN |\ 218 POLICY_SERVER_ADMIN) 219 220#define POLICY_EXECUTE ( STANDARD_RIGHTS_EXECUTE_ACCESS |\ 221 POLICY_VIEW_LOCAL_INFORMATION |\ 222 POLICY_LOOKUP_NAMES ) 223 224/* LSA_Q_QUERY_SEC_OBJ - LSA query security */ 225typedef struct lsa_query_sec_obj_info 226{ 227 POLICY_HND pol; /* policy handle */ 228 uint32 sec_info; 229 230} LSA_Q_QUERY_SEC_OBJ; 231 232/* LSA_R_QUERY_SEC_OBJ - probably an open */ 233typedef struct r_lsa_query_sec_obj_info 234{ 235 uint32 ptr; 236 SEC_DESC_BUF *buf; 237 238 NTSTATUS status; /* return status */ 239 240} LSA_R_QUERY_SEC_OBJ; 241 242/* LSA_Q_QUERY_INFO - LSA query info policy */ 243typedef struct lsa_query_info 244{ 245 POLICY_HND pol; /* policy handle */ 246 uint16 info_class; /* info class */ 247 248} LSA_Q_QUERY_INFO; 249 250/* LSA_INFO_UNION */ 251typedef union lsa_info_union 252{ 253 DOM_QUERY_2 id2; 254 DOM_QUERY_3 id3; 255 DOM_QUERY_5 id5; 256 DOM_QUERY_6 id6; 257} LSA_INFO_UNION; 258 259/* LSA_R_QUERY_INFO - response to LSA query info policy */ 260typedef struct lsa_r_query_info 261{ 262 uint32 undoc_buffer; /* undocumented buffer pointer */ 263 uint16 info_class; /* info class (same as info class in request) */ 264 265 LSA_INFO_UNION dom; 266 267 NTSTATUS status; /* return code */ 268 269} LSA_R_QUERY_INFO; 270 271/* LSA_DNS_DOM_INFO - DNS domain info - info class 12*/ 272typedef struct lsa_dns_dom_info 273{ 274 UNIHDR hdr_nb_dom_name; /* netbios domain name */ 275 UNIHDR hdr_dns_dom_name; 276 UNIHDR hdr_forest_name; 277 278 struct uuid dom_guid; /* domain GUID */ 279 280 UNISTR2 uni_nb_dom_name; 281 UNISTR2 uni_dns_dom_name; 282 UNISTR2 uni_forest_name; 283 284 uint32 ptr_dom_sid; 285 DOM_SID2 dom_sid; /* domain SID */ 286} LSA_DNS_DOM_INFO; 287 288typedef union lsa_info2_union 289{ 290 LSA_DNS_DOM_INFO dns_dom_info; 291} LSA_INFO2_UNION; 292 293/* LSA_Q_QUERY_INFO2 - LSA query info */ 294typedef struct lsa_q_query_info2 295{ 296 POLICY_HND pol; /* policy handle */ 297 uint16 info_class; /* info class */ 298} LSA_Q_QUERY_INFO2; 299 300typedef struct lsa_r_query_info2 301{ 302 uint32 ptr; /* pointer to info struct */ 303 uint16 info_class; 304 LSA_INFO2_UNION info; /* so far the only one */ 305 NTSTATUS status; 306} LSA_R_QUERY_INFO2; 307 308/* LSA_Q_ENUM_TRUST_DOM - LSA enumerate trusted domains */ 309typedef struct lsa_enum_trust_dom_info 310{ 311 POLICY_HND pol; /* policy handle */ 312 uint32 enum_context; /* enumeration context handle */ 313 uint32 preferred_len; /* preferred maximum length */ 314 315} LSA_Q_ENUM_TRUST_DOM; 316 317/* LSA_R_ENUM_TRUST_DOM - response to LSA enumerate trusted domains */ 318typedef struct lsa_r_enum_trust_dom_info 319{ 320 uint32 enum_context; /* enumeration context handle */ 321 uint32 num_domains; /* number of domains */ 322 uint32 ptr_enum_domains; /* buffer pointer to num domains */ 323 324 /* this lot is only added if ptr_enum_domains is non-NULL */ 325 uint32 num_domains2; /* number of domains */ 326 UNIHDR2 *hdr_domain_name; 327 UNISTR2 *uni_domain_name; 328 DOM_SID2 *domain_sid; 329 330 NTSTATUS status; /* return code */ 331 332} LSA_R_ENUM_TRUST_DOM; 333 334/* LSA_Q_CLOSE */ 335typedef struct lsa_q_close_info 336{ 337 POLICY_HND pol; /* policy handle */ 338 339} LSA_Q_CLOSE; 340 341/* LSA_R_CLOSE */ 342typedef struct lsa_r_close_info 343{ 344 POLICY_HND pol; /* policy handle. should be all zeros. */ 345 346 NTSTATUS status; /* return code */ 347 348} LSA_R_CLOSE; 349 350 351#define MAX_REF_DOMAINS 32 352 353/* DOM_TRUST_HDR */ 354typedef struct dom_trust_hdr 355{ 356 UNIHDR hdr_dom_name; /* referenced domain unicode string headers */ 357 uint32 ptr_dom_sid; 358 359} DOM_TRUST_HDR; 360 361/* DOM_TRUST_INFO */ 362typedef struct dom_trust_info 363{ 364 UNISTR2 uni_dom_name; /* domain name unicode string */ 365 DOM_SID2 ref_dom ; /* referenced domain SID */ 366 367} DOM_TRUST_INFO; 368 369/* DOM_R_REF */ 370typedef struct dom_ref_info 371{ 372 uint32 num_ref_doms_1; /* num referenced domains */ 373 uint32 ptr_ref_dom; /* pointer to referenced domains */ 374 uint32 max_entries; /* 32 - max number of entries */ 375 uint32 num_ref_doms_2; /* num referenced domains */ 376 377 DOM_TRUST_HDR hdr_ref_dom[MAX_REF_DOMAINS]; /* referenced domains */ 378 DOM_TRUST_INFO ref_dom [MAX_REF_DOMAINS]; /* referenced domains */ 379 380} DOM_R_REF; 381 382/* the domain_idx points to a SID associated with the name */ 383 384/* LSA_TRANS_NAME - translated name */ 385typedef struct lsa_trans_name_info 386{ 387 uint16 sid_name_use; /* value is 5 for a well-known group; 2 for a domain group; 1 for a user... */ 388 UNIHDR hdr_name; 389 uint32 domain_idx; /* index into DOM_R_REF array of SIDs */ 390 391} LSA_TRANS_NAME; 392 393/* This number is based on Win2k and later maximum response allowed */ 394#define MAX_LOOKUP_SIDS 20480 395 396/* LSA_TRANS_NAME_ENUM - LSA Translated Name Enumeration container */ 397typedef struct lsa_trans_name_enum_info 398{ 399 uint32 num_entries; 400 uint32 ptr_trans_names; 401 uint32 num_entries2; 402 403 LSA_TRANS_NAME *name; /* translated names */ 404 UNISTR2 *uni_name; 405 406} LSA_TRANS_NAME_ENUM; 407 408/* LSA_SID_ENUM - LSA SID enumeration container */ 409typedef struct lsa_sid_enum_info 410{ 411 uint32 num_entries; 412 uint32 ptr_sid_enum; 413 uint32 num_entries2; 414 415 uint32 *ptr_sid; /* domain SID pointers to be looked up. */ 416 DOM_SID2 *sid; /* domain SIDs to be looked up. */ 417 418} LSA_SID_ENUM; 419 420/* LSA_Q_LOOKUP_SIDS - LSA Lookup SIDs */ 421typedef struct lsa_q_lookup_sids 422{ 423 POLICY_HND pol; /* policy handle */ 424 LSA_SID_ENUM sids; 425 LSA_TRANS_NAME_ENUM names; 426 LOOKUP_LEVEL level; 427 uint32 mapped_count; 428 429} LSA_Q_LOOKUP_SIDS; 430 431/* LSA_R_LOOKUP_SIDS - response to LSA Lookup SIDs */ 432typedef struct lsa_r_lookup_sids 433{ 434 uint32 ptr_dom_ref; 435 DOM_R_REF *dom_ref; /* domain reference info */ 436 437 LSA_TRANS_NAME_ENUM *names; 438 uint32 mapped_count; 439 440 NTSTATUS status; /* return code */ 441 442} LSA_R_LOOKUP_SIDS; 443 444/* LSA_Q_LOOKUP_NAMES - LSA Lookup NAMEs */ 445typedef struct lsa_q_lookup_names 446{ 447 POLICY_HND pol; /* policy handle */ 448 uint32 num_entries; 449 uint32 num_entries2; 450 UNIHDR *hdr_name; /* name buffer pointers */ 451 UNISTR2 *uni_name; /* names to be looked up */ 452 453 uint32 num_trans_entries; 454 uint32 ptr_trans_sids; /* undocumented domain SID buffer pointer */ 455 uint32 lookup_level; 456 uint32 mapped_count; 457 458} LSA_Q_LOOKUP_NAMES; 459 460/* LSA_R_LOOKUP_NAMES - response to LSA Lookup NAMEs by name */ 461typedef struct lsa_r_lookup_names 462{ 463 uint32 ptr_dom_ref; 464 DOM_R_REF *dom_ref; /* domain reference info */ 465 466 uint32 num_entries; 467 uint32 ptr_entries; 468 uint32 num_entries2; 469 DOM_RID2 *dom_rid; /* domain RIDs being looked up */ 470 471 uint32 mapped_count; 472 473 NTSTATUS status; /* return code */ 474} LSA_R_LOOKUP_NAMES; 475 476/* This is probably a policy handle but at the moment we 477 never read it - so use a dummy struct. */ 478 479typedef struct lsa_q_open_secret 480{ 481 uint32 dummy; 482} LSA_Q_OPEN_SECRET; 483 484/* We always return "not found" at present - so just marshal the minimum. */ 485 486typedef struct lsa_r_open_secret 487{ 488 uint32 dummy1; 489 uint32 dummy2; 490 uint32 dummy3; 491 uint32 dummy4; 492 NTSTATUS status; 493} LSA_R_OPEN_SECRET; 494 495typedef struct lsa_enum_priv_entry 496{ 497 UNIHDR hdr_name; 498 uint32 luid_low; 499 uint32 luid_high; 500 UNISTR2 name; 501 502} LSA_PRIV_ENTRY; 503 504/* LSA_Q_ENUM_PRIVS - LSA enum privileges */ 505typedef struct lsa_q_enum_privs 506{ 507 POLICY_HND pol; /* policy handle */ 508 uint32 enum_context; 509 uint32 pref_max_length; 510} LSA_Q_ENUM_PRIVS; 511 512typedef struct lsa_r_enum_privs 513{ 514 uint32 enum_context; 515 uint32 count; 516 uint32 ptr; 517 uint32 count1; 518 519 LSA_PRIV_ENTRY *privs; 520 521 NTSTATUS status; 522} LSA_R_ENUM_PRIVS; 523 524/* LSA_Q_ENUM_ACCT_RIGHTS - LSA enum account rights */ 525typedef struct 526{ 527 POLICY_HND pol; /* policy handle */ 528 DOM_SID2 sid; 529} LSA_Q_ENUM_ACCT_RIGHTS; 530 531/* LSA_R_ENUM_ACCT_RIGHTS - LSA enum account rights */ 532typedef struct 533{ 534 uint32 count; 535 UNISTR2_ARRAY rights; 536 NTSTATUS status; 537} LSA_R_ENUM_ACCT_RIGHTS; 538 539 540/* LSA_Q_ADD_ACCT_RIGHTS - LSA add account rights */ 541typedef struct 542{ 543 POLICY_HND pol; /* policy handle */ 544 DOM_SID2 sid; 545 UNISTR2_ARRAY rights; 546 uint32 count; 547} LSA_Q_ADD_ACCT_RIGHTS; 548 549/* LSA_R_ADD_ACCT_RIGHTS - LSA add account rights */ 550typedef struct 551{ 552 NTSTATUS status; 553} LSA_R_ADD_ACCT_RIGHTS; 554 555 556/* LSA_Q_REMOVE_ACCT_RIGHTS - LSA remove account rights */ 557typedef struct 558{ 559 POLICY_HND pol; /* policy handle */ 560 DOM_SID2 sid; 561 uint32 removeall; 562 UNISTR2_ARRAY rights; 563 uint32 count; 564} LSA_Q_REMOVE_ACCT_RIGHTS; 565 566/* LSA_R_REMOVE_ACCT_RIGHTS - LSA remove account rights */ 567typedef struct 568{ 569 NTSTATUS status; 570} LSA_R_REMOVE_ACCT_RIGHTS; 571 572 573/* LSA_Q_PRIV_GET_DISPNAME - LSA get privilege display name */ 574typedef struct lsa_q_priv_get_dispname 575{ 576 POLICY_HND pol; /* policy handle */ 577 UNIHDR hdr_name; 578 UNISTR2 name; 579 uint16 lang_id; 580 uint16 lang_id_sys; 581} LSA_Q_PRIV_GET_DISPNAME; 582 583typedef struct lsa_r_priv_get_dispname 584{ 585 uint32 ptr_info; 586 UNIHDR hdr_desc; 587 UNISTR2 desc; 588 /* Don't align ! */ 589 uint16 lang_id; 590 /* align */ 591 NTSTATUS status; 592} LSA_R_PRIV_GET_DISPNAME; 593 594/* LSA_Q_ENUM_ACCOUNTS */ 595typedef struct lsa_q_enum_accounts 596{ 597 POLICY_HND pol; /* policy handle */ 598 uint32 enum_context; 599 uint32 pref_max_length; 600} LSA_Q_ENUM_ACCOUNTS; 601 602/* LSA_R_ENUM_ACCOUNTS */ 603typedef struct lsa_r_enum_accounts 604{ 605 uint32 enum_context; 606 LSA_SID_ENUM sids; 607 NTSTATUS status; 608} LSA_R_ENUM_ACCOUNTS; 609 610/* LSA_Q_UNK_GET_CONNUSER - gets username\domain of connected user 611 called when "Take Ownership" is clicked -SK */ 612typedef struct lsa_q_unk_get_connuser 613{ 614 uint32 ptr_srvname; 615 UNISTR2 uni2_srvname; 616 uint32 unk1; /* 3 unknown uint32's are seen right after uni2_srvname */ 617 uint32 unk2; /* unk2 appears to be a ptr, unk1 = unk3 = 0 usually */ 618 uint32 unk3; 619} LSA_Q_UNK_GET_CONNUSER; 620 621/* LSA_R_UNK_GET_CONNUSER */ 622typedef struct lsa_r_unk_get_connuser 623{ 624 uint32 ptr_user_name; 625 UNIHDR hdr_user_name; 626 UNISTR2 uni2_user_name; 627 628 uint32 unk1; 629 630 uint32 ptr_dom_name; 631 UNIHDR hdr_dom_name; 632 UNISTR2 uni2_dom_name; 633 634 NTSTATUS status; 635} LSA_R_UNK_GET_CONNUSER; 636 637 638typedef struct lsa_q_createaccount 639{ 640 POLICY_HND pol; /* policy handle */ 641 DOM_SID2 sid; 642 uint32 access; /* access */ 643} LSA_Q_CREATEACCOUNT; 644 645typedef struct lsa_r_createaccount 646{ 647 POLICY_HND pol; /* policy handle */ 648 NTSTATUS status; 649} LSA_R_CREATEACCOUNT; 650 651 652typedef struct lsa_q_openaccount 653{ 654 POLICY_HND pol; /* policy handle */ 655 DOM_SID2 sid; 656 uint32 access; /* desired access */ 657} LSA_Q_OPENACCOUNT; 658 659typedef struct lsa_r_openaccount 660{ 661 POLICY_HND pol; /* policy handle */ 662 NTSTATUS status; 663} LSA_R_OPENACCOUNT; 664 665typedef struct lsa_q_enumprivsaccount 666{ 667 POLICY_HND pol; /* policy handle */ 668} LSA_Q_ENUMPRIVSACCOUNT; 669 670typedef struct lsa_r_enumprivsaccount 671{ 672 uint32 ptr; 673 uint32 count; 674 PRIVILEGE_SET set; 675 NTSTATUS status; 676} LSA_R_ENUMPRIVSACCOUNT; 677 678typedef struct lsa_q_getsystemaccount 679{ 680 POLICY_HND pol; /* policy handle */ 681} LSA_Q_GETSYSTEMACCOUNT; 682 683typedef struct lsa_r_getsystemaccount 684{ 685 uint32 access; 686 NTSTATUS status; 687} LSA_R_GETSYSTEMACCOUNT; 688 689 690typedef struct lsa_q_setsystemaccount 691{ 692 POLICY_HND pol; /* policy handle */ 693 uint32 access; 694} LSA_Q_SETSYSTEMACCOUNT; 695 696typedef struct lsa_r_setsystemaccount 697{ 698 NTSTATUS status; 699} LSA_R_SETSYSTEMACCOUNT; 700 701typedef struct { 702 UNIHDR hdr; 703 UNISTR2 unistring; 704} LSA_STRING; 705 706typedef struct { 707 POLICY_HND pol; /* policy handle */ 708 LSA_STRING privname; 709} LSA_Q_LOOKUP_PRIV_VALUE; 710 711typedef struct { 712 LUID luid; 713 NTSTATUS status; 714} LSA_R_LOOKUP_PRIV_VALUE; 715 716typedef struct lsa_q_addprivs 717{ 718 POLICY_HND pol; /* policy handle */ 719 uint32 count; 720 PRIVILEGE_SET set; 721} LSA_Q_ADDPRIVS; 722 723typedef struct lsa_r_addprivs 724{ 725 NTSTATUS status; 726} LSA_R_ADDPRIVS; 727 728 729typedef struct lsa_q_removeprivs 730{ 731 POLICY_HND pol; /* policy handle */ 732 uint32 allrights; 733 uint32 ptr; 734 uint32 count; 735 PRIVILEGE_SET set; 736} LSA_Q_REMOVEPRIVS; 737 738typedef struct lsa_r_removeprivs 739{ 740 NTSTATUS status; 741} LSA_R_REMOVEPRIVS; 742 743#endif /* _RPC_LSA_H */ 744