+#include "idl_types.h"
+
/*
lsa interface definition
*/
[ uuid(12345778-1234-abcd-ef00-0123456789ab),
version(0.0),
+ endpoints(lsarpc,lsass),
pointer_default(unique)
] interface lsarpc
{
/* Function: 0x02 */
typedef struct {
- uint16 name_len;
- uint16 name_size;
+ [value(2*strlen_m(r->name))] uint16 name_len;
+ [value(r->name_len)] uint16 name_size;
unistr_noterm *name;
} lsa_Name;
[out,ref] lsa_PrivArray *privs
);
-
/******************/
/* Function: 0x03 */
- NTSTATUS lsa_QuerySecObj ();
+
+ typedef [public] struct {
+ uint32 size;
+ [subcontext(4)] security_descriptor *sd;
+ } sec_desc_buf;
+
+ NTSTATUS lsa_QuerySecObj (
+ [in,ref] policy_handle *handle,
+ [in] uint32 sec_info,
+ [out] sec_desc_buf *sd
+ );
/******************/
/******************/
/* Function: 0x06 */
typedef struct {
- [struct_len] uint32 _len;
+ uint32 len; /* ignored */
uint16 impersonation_level;
uint8 context_mode;
uint8 effective_only;
} lsa_QosInfo;
typedef struct {
- [struct_len] uint32 _len;
+ uint32 len; /* ignored */
uint8 *root_dir;
unistr *object_name;
uint32 attributes;
/******************/
/* Function: 0x07 */
- NTSTATUS lsa_QueryInfoPolicy ();
+
+ typedef struct {
+ uint32 percent_full;
+ uint32 log_size;
+ NTTIME retention_time;
+ uint8 shutdown_in_progress;
+ NTTIME time_to_shutdown;
+ uint32 next_audit_record;
+ uint32 unknown;
+ } lsa_AuditLogInfo;
+
+ typedef struct {
+ uint32 auditing_mode;
+ [size_is(count)] uint32 *settings;
+ uint32 count;
+ } lsa_AuditEventsInfo;
+
+ typedef struct {
+ lsa_Name name;
+ dom_sid2 *sid;
+ } lsa_DomainInfo;
+
+ typedef struct {
+ lsa_Name name;
+ } lsa_PDAccountInfo;
+
+ typedef struct {
+ uint16 unknown; /* an midl padding bug? */
+ uint16 role;
+ } lsa_ServerRole;
+
+ typedef struct {
+ lsa_Name source;
+ lsa_Name account;
+ } lsa_ReplicaSourceInfo;
+
+ typedef struct {
+ uint32 paged_pool;
+ uint32 non_paged_pool;
+ uint32 min_wss;
+ uint32 max_wss;
+ uint32 pagefile;
+ HYPER_T unknown;
+ } lsa_DefaultQuotaInfo;
+
+ typedef struct {
+ HYPER_T modified_id;
+ NTTIME db_create_time;
+ } lsa_ModificationInfo;
+
+ typedef struct {
+ uint8 shutdown_on_full;
+ } lsa_AuditFullSetInfo;
+
+ typedef struct {
+ uint16 unknown; /* an midl padding bug? */
+ uint8 shutdown_on_full;
+ uint8 log_is_full;
+ } lsa_AuditFullQueryInfo;
+
+ typedef struct {
+ lsa_Name name;
+ lsa_Name dns_domain;
+ lsa_Name dns_forest;
+ GUID domain_guid;
+ dom_sid2 *sid;
+ } lsa_DnsDomainInfo;
+
+ typedef enum {
+ LSA_POLICY_INFO_AUDIT_LOG=1,
+ LSA_POLICY_INFO_AUDIT_EVENTS=2,
+ LSA_POLICY_INFO_DOMAIN=3,
+ LSA_POLICY_INFO_PD=4,
+ LSA_POLICY_INFO_ACCOUNT_DOMAIN=5,
+ LSA_POLICY_INFO_ROLE=6,
+ LSA_POLICY_INFO_REPLICA=7,
+ LSA_POLICY_INFO_QUOTA=8,
+ LSA_POLICY_INFO_DB=9,
+ LSA_POLICY_INFO_AUDIT_FULL_SET=10,
+ LSA_POLICY_INFO_AUDIT_FULL_QUERY=11,
+ LSA_POLICY_INFO_DNS=12
+ } lsaPolicyInfo;
+
+ typedef union {
+ [case(1)] lsa_AuditLogInfo audit_log;
+ [case(2)] lsa_AuditEventsInfo audit_events;
+ [case(3)] lsa_DomainInfo domain;
+ [case(4)] lsa_PDAccountInfo pd;
+ [case(5)] lsa_DomainInfo account_domain;
+ [case(6)] lsa_ServerRole role;
+ [case(7)] lsa_ReplicaSourceInfo replica;
+ [case(8)] lsa_DefaultQuotaInfo quota;
+ [case(9)] lsa_ModificationInfo db;
+ [case(10)] lsa_AuditFullSetInfo auditfullset;
+ [case(11)] lsa_AuditFullQueryInfo auditfullquery;
+ [case(12)] lsa_DnsDomainInfo dns;
+ } lsa_PolicyInformation;
+
+ NTSTATUS lsa_QueryInfoPolicy (
+ [in,ref] policy_handle *handle,
+ [in] uint16 level,
+ [out,switch_is(level)] lsa_PolicyInformation *info
+ );
/******************/
/* Function: 0x08 */
/******************/
/* Function: 0x0a */
- NTSTATUS lsa_CreateAccount ();
-
+ NTSTATUS lsa_CreateAccount (
+ [in,ref] policy_handle *handle,
+ [in,ref] dom_sid2 *sid,
+ [in] uint32 desired_access,
+ [out,ref] policy_handle *acct_handle
+ );
/******************/
/* Function: 0x0b */
dom_sid2 *sid;
} lsa_SidPtr;
- typedef struct {
+ typedef [public] struct {
uint32 num_sids;
[size_is(num_sids)] lsa_SidPtr *sids;
} lsa_SidArray;
/*************************************************/
/* Function: 0x0c */
- NTSTATUS lsa_CreateTrustDom ();
+
+ typedef struct {
+ lsa_Name name;
+ dom_sid2 *sid;
+ } lsa_TrustInformation;
+
+ NTSTATUS lsa_CreateTrustedDomain(
+ [in,ref] policy_handle *handle,
+ [in,ref] lsa_TrustInformation *info,
+ [in] uint32 desired_access,
+ [out,ref] policy_handle *dom_handle
+ );
/******************/
[size_is(count)] lsa_TranslatedSid *sids;
} lsa_TransSidArray;
- typedef struct {
- lsa_Name name;
- dom_sid2 *sid;
- } lsa_TrustInformation;
-
typedef struct {
uint32 count;
[size_is(count)] lsa_TrustInformation *domains;
/* Function: 0x10 */
- NTSTATUS CREATESECRET ();
+ NTSTATUS lsa_CreateSecret(
+ [in,ref] policy_handle *handle,
+ [in] lsa_Name name,
+ [in] uint32 desired_access,
+ [out,ref] policy_handle *sec_handle
+ );
/*****************************************/
typedef struct {
uint32 count;
+ uint32 unknown;
[size_is(count)] lsa_LUIDAttribute set[*];
} lsa_PrivilegeSet;
NTSTATUS lsa_EnumPrivsAccount (
[in,ref] policy_handle *handle,
- [out] lsa_PrivilegeSet *privs,
- [out] uint32 unknown
+ [out] lsa_PrivilegeSet *privs
);
NTSTATUS QUERYTRUSTDOM ();
/* Function: 0x1b */
NTSTATUS SETINFOTRUSTDOM ();
+
/* Function: 0x1c */
- NTSTATUS OPENSECRET ();
+ NTSTATUS lsa_OpenSecret(
+ [in,ref] policy_handle *handle,
+ [in] lsa_Name name,
+ [in] uint32 desired_access,
+ [out,ref] policy_handle *sec_handle
+ );
+
/* Function: 0x1d */
NTSTATUS SETSECRET ();
/* Function: 0x1e */
NTSTATUS QUERYSECRET ();
+
/* Function: 0x1f */
NTSTATUS LOOKUPPRIVVALUE ();
+
+
/* Function: 0x20 */
- NTSTATUS LOOKUPPRIVNAME ();
+ NTSTATUS lsa_LookupPrivName (
+ [in,ref] policy_handle *handle,
+ [in,ref] lsa_LUID *luid,
+ [out] lsa_Name *name
+ );
+
+
/* Function: 0x21 */
NTSTATUS PRIV_GET_DISPNAME ();
/* Function: 0x22 */
NTSTATUS UNK_GET_CONNUSER ();
/* Function: 0x2e */
NTSTATUS QUERYINFO2 ();
+}
+[
+ uuid(3919286a-b10c-11d0-9ba8-00c04fd92ef5),
+ version(0.0),
+ endpoints(lsarpc,lsass),
+ pointer_default(unique)
+]
+interface lsads
+{
+
+ /*****************/
+ /* Function 0x00 */
+ void lsads_Unknown0();
}