+#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;
uint32 unknown;
} lsa_AuditLogInfo;
-
- typedef struct {
- uint32 count;
- [size_is(count)] uint32 settings[*];
- } lsa_AuditSettings;
-
typedef struct {
uint32 auditing_mode;
- lsa_AuditSettings *settings;
+ [size_is(count)] uint32 *settings;
+ uint32 count;
} lsa_AuditEventsInfo;
typedef struct {
} lsa_PDAccountInfo;
typedef struct {
+ uint16 unknown; /* an midl padding bug? */
uint16 role;
} lsa_ServerRole;
} lsa_ModificationInfo;
typedef struct {
- uint32 shutdown_on_full;
+ uint8 shutdown_on_full;
} lsa_AuditFullSetInfo;
typedef struct {
- uint32 shutdown_on_full;
- uint32 log_is_full;
+ uint16 unknown; /* an midl padding bug? */
+ uint8 shutdown_on_full;
+ uint8 log_is_full;
} lsa_AuditFullQueryInfo;
typedef struct {
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;
+ [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 (
/******************/
/* 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
+ );
/*****************************************/
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 ();
+ typedef [flag(NDR_PAHEX)] struct {
+ uint32 length;
+ uint32 size;
+ [size_is(size),length_is(length)] uint8 *data;
+ } lsa_DATA_BUF;
+
+ NTSTATUS lsa_SetSecret(
+ [in,ref] policy_handle *handle,
+ [in] lsa_DATA_BUF *new_val,
+ [in] lsa_DATA_BUF *old_val
+ );
+
+ typedef struct {
+ lsa_DATA_BUF *buf;
+ } lsa_DATA_BUF_PTR;
+
/* Function: 0x1e */
- NTSTATUS QUERYSECRET ();
+ NTSTATUS lsa_QuerySecret (
+ [in,ref] policy_handle *handle,
+ [in,out] lsa_DATA_BUF_PTR *new_val,
+ [in,out] NTTIME *new_mtime,
+ [in,out] lsa_DATA_BUF_PTR *old_val,
+ [in,out] NTTIME *old_mtime
+ );
/* Function: 0x1f */
NTSTATUS LOOKUPPRIVVALUE ();
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();
}