* Local Security Authority interface definition
*/
-#include "include/reactos/idl/wtypes.idl"
+#include <ms-dtyp.idl>
-#define LSA_HANDLE unsigned long
-#define NTSTATUS unsigned int
+typedef [handle] LPWSTR PLSAPR_SERVER_NAME;
+
+typedef [context_handle] PVOID LSAPR_HANDLE;
+typedef LSAPR_HANDLE *PLSAPR_HANDLE;
+
+cpp_quote("#ifndef _WINNT_H")
+typedef struct _LUID {
+ ULONG LowPart;
+ LONG HighPart;
+} LUID, *PLUID;
+cpp_quote("#endif")
+
+cpp_quote("#ifndef _NTDEF_")
+typedef long NTSTATUS;
+typedef struct _STRING {
+ WORD Length;
+ WORD MaximumLength;
+ [size_is(MaximumLength), length_is(Length)] LPSTR Buffer;
+} STRING, *PSTRING;
+
+cpp_quote("#endif")
+
+typedef struct _LSAPR_ACL {
+ BYTE AclRevision;
+ BYTE Sbz1;
+ WORD AclSize;
+ [size_is(AclSize - 4)] BYTE Dummy1[*];
+} LSAPR_ACL, *PLSAPR_ACL;
+
+cpp_quote("#ifndef _WINNT_H")
+typedef WORD SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL;
+cpp_quote("#endif")
+
+typedef struct _LSAPR_SECURITY_DESCRIPTOR {
+ BYTE Revision;
+ BYTE Sbz1;
+ SECURITY_DESCRIPTOR_CONTROL Control;
+ PRPC_SID Owner;
+ PRPC_SID Group;
+ LSAPR_ACL *Sacl;
+ /* FIXME: should be PLSAPR_ACL Sacl; */
+ LSAPR_ACL *Dacl;
+ /* FIXME: should be PLSAPR_ACL Dacl; */
+} LSAPR_SECURITY_DESCRIPTOR, *PLSAPR_SECURITY_DESCRIPTOR;
+
+cpp_quote("#if 0")
+
+typedef enum _SECURITY_IMPERSONATION_LEVEL {
+ SecurityAnonymous = 0,
+ SecurityIdentification,
+ SecurityImpersonation,
+ SecurityDelegation,
+} SECURITY_IMPERSONATION_LEVEL, *PSECURITY_IMPERSONATION_LEVEL;
+
+typedef BYTE SECURITY_CONTEXT_TRACKING_MODE, *PSECURITY_CONTEXT_TRACKING_MODE;
+
+typedef struct _SECURITY_QUALITY_OF_SERVICE {
+ DWORD Length;
+ SECURITY_IMPERSONATION_LEVEL ImpersonationLevel;
+ SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode;
+ BYTE EffectiveOnly;
+} SECURITY_QUALITY_OF_SERVICE, *PSECURITY_QUALITY_OF_SERVICE;
+
+cpp_quote("#endif")
+
+typedef struct _LSAPR_OBJECT_ATTRIBUTES {
+ DWORD Length;
+ BYTE *RootDirectory;
+ PSTRING ObjectName;
+ DWORD Attributes;
+ PLSAPR_SECURITY_DESCRIPTOR SecurityDescriptor;
+ PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService;
+} LSAPR_OBJECT_ATTRIBUTES, *PLSAPR_OBJECT_ATTRIBUTES;
+
+typedef struct _LSAPR_POLICY_PRIVILEGE_DEF {
+ RPC_UNICODE_STRING Name;
+ LUID LocalValue;
+} LSAPR_POLICY_PRIVILEGE_DEF, *PLSAPR_POLICY_PRIVILEGE_DEF;
+
+typedef struct _LSAPR_PRIVILEGE_ENUM_BUFFER {
+ DWORD Entries;
+ [size_is(Entries)] PLSAPR_POLICY_PRIVILEGE_DEF Privileges;
+} LSAPR_PRIVILEGE_ENUM_BUFFER, *PLSAPR_PRIVILEGE_ENUM_BUFFER;
+
+typedef struct _LSAPR_ACCOUNT_INFORMATION {
+ PRPC_SID Sid;
+} LSAPR_ACCOUNT_INFORMATION, *PLSAPR_ACCOUNT_INFORMATION;
+
+typedef struct _LSAPR_ACCOUNT_ENUM_BUFFER {
+ DWORD EntriesRead;
+ [size_is(EntriesRead)] PLSAPR_ACCOUNT_INFORMATION Information;
+} LSAPR_ACCOUNT_ENUM_BUFFER, *PLSAPR_ACCOUNT_ENUM_BUFFER;
+
+cpp_quote("#ifndef _NTSECAPI_H")
+typedef RPC_UNICODE_STRING LSA_UNICODE_STRING, *PLSA_UNICODE_STRING;
+cpp_quote("#endif")
+
+typedef struct _LSAPR_TRUST_INFORMATION {
+ RPC_UNICODE_STRING Name;
+ PRPC_SID Sid;
+} LSAPR_TRUST_INFORMATION, *PLSAPR_TRUST_INFORMATION;
+
+typedef struct _LSAPR_REFERENCED_DOMAIN_LIST {
+ DWORD Entries;
+ [size_is(Entries)] PLSAPR_TRUST_INFORMATION Domains;
+ DWORD MaxEntries;
+} LSAPR_REFERENCED_DOMAIN_LIST, *PLSAPR_REFERENCED_DOMAIN_LIST;
+
+cpp_quote("#if 0")
+
+typedef enum _SID_NAME_USE {
+ SidTypeUser = 1,
+ SidTypeGroup,
+ SidTypeDomain,
+ SidTypeAlias,
+ SidTypeWellKnownGroup,
+ SidTypeDeletedAccount,
+ SidTypeInvalid,
+ SidTypeUnknown,
+ SidTypeComputer,
+ SidTypeLabel,
+} SID_NAME_USE, *PSID_NAME_USE;
+
+cpp_quote("#endif")
+
+cpp_quote("#ifndef _NTDEF_")
+
+typedef struct _LSA_TRANSLATED_SID {
+ SID_NAME_USE Use;
+ DWORD RelativeId;
+ LONG DomainIndex;
+} LSA_TRANSLATED_SID, *PLSA_TRANSLATED_SID;
+
+cpp_quote("#endif")
+
+typedef struct _LSAPR_TRANSLATED_SIDS {
+ DWORD Entries;
+ [size_is(Entries)] PLSA_TRANSLATED_SID Sids;
+} LSAPR_TRANSLATED_SIDS, *PLSAPR_TRANSLATED_SIDS;
+
+typedef enum _LSAP_LOOKUP_LEVEL {
+ LsapLookupWksta = 1,
+ LsapLookupPDC,
+ LsapLookupTDL,
+ LsapLookupGC,
+ LsapLookupXForestReferral,
+ LsapLookupXForestResolve,
+ LsapLookupRODCReferralToFullDC,
+} LSAP_LOOKUP_LEVEL, *PLSAP_LOOKUP_LEVEL;
+
+typedef struct _LSAPR_SID_INFORMATION {
+ PRPC_SID Sid;
+} LSAPR_SID_INFORMATION, *PLSAPR_SID_INFORMATION;
+
+typedef struct _LSAPR_SID_ENUM_BUFFER {
+ DWORD Entries;
+ [size_is(Entries)] PLSAPR_SID_INFORMATION SidInfo;
+} LSAPR_SID_ENUM_BUFFER, *PLSAPR_SID_ENUM_BUFFER;
+
+typedef struct _LSAPR_TRANSLATED_NAME {
+ SID_NAME_USE Use;
+ RPC_UNICODE_STRING Name;
+ LONG DomainIndex;
+} LSAPR_TRANSLATED_NAME, *PLSAPR_TRANSLATED_NAME;
+
+typedef struct _LSAPR_TRANSLATED_NAMES {
+ DWORD Entries;
+ [size_is(Entries)] PLSAPR_TRANSLATED_NAME Names;
+} LSAPR_TRANSLATED_NAMES, *PLSAPR_TRANSLATED_NAMES;
+
+typedef struct _LSAPR_TRANSLATED_NAME_EX {
+ SID_NAME_USE Use;
+ RPC_UNICODE_STRING Name;
+ LONG DomainIndex;
+ DWORD Flags;
+} LSAPR_TRANSLATED_NAME_EX, *PLSAPR_TRANSLATED_NAME_EX;
+
+typedef struct _LSAPR_TRANSLATED_NAMES_EX {
+ DWORD Entries;
+ [size_is(Entries)] PLSAPR_TRANSLATED_NAME_EX Names;
+} LSAPR_TRANSLATED_NAMES_EX, *PLSAPR_TRANSLATED_NAMES_EX;
+
+typedef struct _LSAPR_TRANSLATED_SID_EX {
+ SID_NAME_USE Use;
+ DWORD RelativeId;
+ LONG DomainIndex;
+ DWORD Flags;
+} LSAPR_TRANSLATED_SID_EX, *PLSAPR_TRANSLATED_SID_EX;
+
+typedef struct _LSAPR_TRANSLATED_SIDS_EX {
+ DWORD Entries;
+ [size_is(Entries)] PLSAPR_TRANSLATED_SID_EX Sids;
+} LSAPR_TRANSLATED_SIDS_EX, *PLSAPR_TRANSLATED_SIDS_EX;
+
+typedef struct _LSAPR_TRANSLATED_SID_EX2 {
+ SID_NAME_USE Use;
+ PRPC_SID Sid;
+ LONG DomainIndex;
+ DWORD Flags;
+} LSAPR_TRANSLATED_SID_EX2, *PLSAPR_TRANSLATED_SID_EX2;
+
+typedef struct _LSAPR_TRANSLATED_SIDS_EX2 {
+ DWORD Entries;
+ [size_is(Entries)] PLSAPR_TRANSLATED_SID_EX2 Sids;
+} LSAPR_TRANSLATED_SIDS_EX2, *PLSAPR_TRANSLATED_SIDS_EX2;
+
+typedef LSAPR_TRUST_INFORMATION LSAPR_TRUSTED_DOMAIN_INFORMATION_BASIC;
+
+typedef struct _LSAPR_SR_SECURITY_DESCRIPTOR {
+ DWORD Length;
+ [size_is(Length)] BYTE *SecurityDescriptor;
+} LSAPR_SR_SECURITY_DESCRIPTOR, *PLSAPR_SR_SECURITY_DESCRIPTOR;
+
+cpp_quote("#ifndef _NTSECAPI_H")
+typedef enum _POLICY_INFORMATION_CLASS {
+ PolicyAuditLogInformation = 1,
+ PolicyAuditEventsInformation,
+ PolicyPrimaryDomainInformation,
+ PolicyPdAccountInformation,
+ PolicyAccountDomainInformation,
+ PolicyLsaServerRoleInformation,
+ PolicyReplicaSourceInformation,
+ PolicyDefaultQuotaInformation,
+ PolicyModificationInformation,
+ PolicyAuditFullSetInformation,
+ PolicyAuditFullQueryInformation,
+ PolicyDnsDomainInformation,
+ PolicyDnsDomainInformationInt,
+ PolicyLocalAccountDomainInformation,
+ PolicyLastEntry,
+} POLICY_INFORMATION_CLASS, *PPOLICY_INFORMATION_CLASS;
+
+typedef struct _POLICY_AUDIT_LOG_INFO {
+ DWORD AuditLogPercentFull;
+ DWORD MaximumLogSize;
+ LARGE_INTEGER AuditRetentionPeriod;
+ BYTE AuditLogFullShutdownInProgress;
+ LARGE_INTEGER TimeToShutdown;
+ DWORD NextAuditRecordId;
+} POLICY_AUDIT_LOG_INFO, *PPOLICY_AUDIT_LOG_INFO;
+cpp_quote("#endif")
+
+typedef struct _LSAPR_POLICY_AUDIT_EVENTS_INFO {
+ BYTE AuditingMode;
+ [size_is(MaximumAuditEventCount)] DWORD *EventAuditingOptions;
+ DWORD MaximumAuditEventCount;
+} LSAPR_POLICY_AUDIT_EVENTS_INFO, *PLSAPR_POLICY_AUDIT_EVENTS_INFO;
+
+typedef struct _LSAPR_POLICY_PRIMARY_DOM_INFO {
+ RPC_UNICODE_STRING Name;
+ PRPC_SID Sid;
+} LSAPR_POLICY_PRIMARY_DOM_INFO, *PLSAPR_POLICY_PRIMARY_DOM_INFO;
+
+typedef struct _LSAPR_POLICY_ACCOUNT_DOM_INFO {
+ RPC_UNICODE_STRING DomainName;
+ PRPC_SID Sid;
+} LSAPR_POLICY_ACCOUNT_DOM_INFO, *PLSAPR_POLICY_ACCOUNT_DOM_INFO;
+
+typedef struct _LSAPR_POLICY_PD_ACCOUNT_INFO {
+ RPC_UNICODE_STRING Name;
+} LSAPR_POLICY_PD_ACCOUNT_INFO, *PLSAPR_POLICY_PD_ACCOUNT_INFO;
+
+cpp_quote("#ifndef _NTSECAPI_H")
+typedef enum _POLICY_LSA_SERVER_ROLE {
+ PolicyServerRoleBackup = 2,
+ PolicyServerRolePrimary,
+} POLICY_LSA_SERVER_ROLE, *PPOLICY_LSA_SERVER_ROLE;
+
+typedef struct _POLICY_LSA_SERVER_ROLE_INFO {
+ POLICY_LSA_SERVER_ROLE LsaServerRole;
+} POLICY_LSA_SERVER_ROLE_INFO, *PPOLICY_LSA_SERVER_ROLE_INFO;
+cpp_quote("#endif")
+
+typedef struct _POLICY_LSA_REPLICA_SRCE_INFO {
+ RPC_UNICODE_STRING ReplicaSource;
+ RPC_UNICODE_STRING ReplicaAccountName;
+} POLICY_LSA_REPLICA_SRCE_INFO, *PPOLICY_LSA_REPLICA_SRCE_INFO;
+
+cpp_quote("#ifndef _WINNT_H")
+typedef struct _QUOTA_LIMITS {
+ INT64 PagedPoolLimit;
+ INT64 NonPagedPoolLimit;
+ INT64 MinimumWorkingSetSize;
+ INT64 MaximumWorkingSetSize;
+ INT64 PagefileLimit;
+ LARGE_INTEGER TimeLimit;
+} QUOTA_LIMITS, *PQUOTA_LIMITS;
+cpp_quote("#endif")
+
+cpp_quote("#ifndef _NTSECAPI_H")
+typedef struct _POLICY_DEFAULT_QUOTA_INFO {
+ QUOTA_LIMITS QuotaLimits;
+} POLICY_DEFAULT_QUOTA_INFO, *PPOLICY_DEFAULT_QUOTA_INFO;
+
+typedef struct _POLICY_MODIFICATION_INFO {
+ LARGE_INTEGER ModifiedId;
+ LARGE_INTEGER DatabaseCreationTime;
+} POLICY_MODIFICATION_INFO, *PPOLICY_MODIFICATION_INFO;
+cpp_quote("#endif")
+
+typedef struct _POLICY_FULL_SET_INFO {
+ BOOL ShutDownOnFull;
+} POLICY_FULL_SET_INFO, *PPOLICY_FULL_SET_INFO;
+
+cpp_quote("#ifndef _NTSECAPI_H")
+typedef struct _POLICY_AUDIT_FULL_QUERY_INFO {
+ BOOL ShutDownOnFull;
+ BOOL LogIsFull;
+} POLICY_AUDIT_FULL_QUERY_INFO, *PPOLICY_AUDIT_FULL_QUERY_INFO;
+cpp_quote("#endif")
+
+typedef struct _LSAPR_POLICY_DNS_DOMAIN_INFO {
+ RPC_UNICODE_STRING Name;
+ RPC_UNICODE_STRING DnsDomainName;
+ RPC_UNICODE_STRING DnsForestName;
+ GUID DomainGuid;
+ PRPC_SID Sid;
+} LSAPR_POLICY_DNS_DOMAIN_INFO, *PLSAPR_POLICY_DNS_DOMAIN_INFO;
+
+/*typedef
+[switch_type(POLICY_INFORMATION_CLASS)] union _LSAPR_POLICY_INFORMATION {
+ [case(PolicyAuditLogInformation)] POLICY_AUDIT_LOG_INFO PolicyAuditLogInfo;
+ [case(PolicyAuditEventsInformation)] POLICY_AUDIT_EVENTS_INFO PolicyAuditEventsInfo;
+ [case(PolicyPrimaryDomainInformation)] POLICY_PRIMARY_DOM_INFO PolicyPrimaryDomInfo;
+ [case(PolicyPdAccountInformation)] POLICY_PD_ACCOUNT_INFO PolicyPdAccountInfo;
+ [case(PolicyAccountDomainInformation)] POLICY_ACCOUNT_DOM_INFO PolicyAccountDomainInfo;
+ [case(PolicyLsaServerRoleInformation)] POLICY_LSA_SERVER_ROLE_INFO PolicyServerRoleInfo;
+ [case(PolicyReplicaSourceInformation)] POLICY_REPLICA_SRCE_INFO PolicyReplicaSourceInfo;
+ [case(PolicyDefaultQuotaInformation)] POLICY_DEFAULT_QUOTA_INFO PolicyDefaultQuotaInfo;
+ [case(PolicyModificationInformation)] POLICY_MODIFICATION_INFO PolicyModificationInfo;
+ [case(PolicyAuditFullSetInformation)] POLICY_AUDIT_FULL_SET_INFO PolicyAuditFullSetInfo;
+ [case(PolicyAuditFullQueryInformation)] POLICY_AUDIT_FULL_QUERY_INFO PolicyAuditFullQueryInfo;
+ [case(PolicyDnsDomainInformation)] LSAPR_DNS_DOMAIN_INFO PolicyDnsDomainInfo;
+ [case(PolicyDnsDomainInformationInt)] LSAPR_DNS_DOMAIN_INFO PolicyDnsDomainInfoInt;
+ [case(PolicyLocalAccountDomainInformation)] LSAPR_POLICY_ACCOUNT_DOM_INFO PolicyLocalAccountDomainInfo;
+} LSAPR_POLICY_INFORMATION, *PLSAPR_POLICY_INFORMATION;*/
+
+typedef struct _LSAPR_TRUSTED_ENUM_BUFFER {
+ DWORD EntriesRead;
+ [size_is(EntriesRead)] PLSAPR_TRUST_INFORMATION Information;
+} LSAPR_TRUSTED_ENUM_BUFFER, *PLSAPR_TRUSTED_ENUM_BUFFER;
+
+cpp_quote("#ifndef _NTSECAPI_H")
+typedef enum _TRUSTED_INFORMATION_CLASS {
+ TrustedDomainNameInformation = 1,
+ TrustedControllersInformation,
+ TrustedPosixOffsetInformation,
+ TrustedPasswordInformation,
+ TrustedDomainInformationBasic,
+ TrustedDomainInformationEx,
+ TrustedDomainAuthInformation,
+ TrustedDomainFullInformation,
+ TrustedDomainAuthInformationInternal,
+ TrustedDomainFullInformationInternal,
+ TrustedDomainInformationEx2Internal,
+ TrustedDomainFullInformation2Internal,
+ TrustedDomainSupportedEncryptionTypes,
+} TRUSTED_INFORMATION_CLASS, *PTRUSTED_INFORMATION_CLASS;
+cpp_quote("#endif")
+
+typedef struct _LSAPR_TRUSTED_DOMAIN_NAME_INFO {
+ RPC_UNICODE_STRING Name;
+} LSAPR_TRUSTED_DOMAIN_NAME_INFO, *PLSAPR_TRUSTED_DOMAIN_NAME_INFO;
+
+typedef struct _LSAPR_TRUSTED_CONTROLLERS_INFO {
+ DWORD Entries;
+ [size_is(Entries)] PRPC_UNICODE_STRING Names;
+} LSAPR_TRUSTED_CONTROLLERS_INFO, *PLSAPR_TRUSTED_CONTROLLERS_INFO;
+
+cpp_quote("#ifndef _NTSECAPI_H")
+typedef struct _TRUSTED_POSIX_OFFSET_INFO {
+ DWORD Offset;
+} TRUSTED_POSIX_OFFSET_INFO, *PTRUSTED_POSIX_OFFSET_INFO;
+cpp_quote("#endif")
+
+typedef struct _LSAPR_CR_CIPHER_VALUE {
+ DWORD Length;
+ DWORD MaximumLength;
+ [size_is(MaximumLength), length_is(Length)] BYTE *Buffer;
+} LSAPR_CR_CIPHER_VALUE, *PLSAPR_CR_CIPHER_VALUE;
+
+typedef struct _LSAPR_TRUSTED_PASSWORD_INFO {
+ PLSAPR_CR_CIPHER_VALUE Password;
+ PLSAPR_CR_CIPHER_VALUE OldPassword;
+} LSAPR_TRUSTED_PASSWORD_INFO, *PLSAPR_TRUSTED_PASSWORD_INFO;
+
+typedef struct _LSAPR_USER_RIGHT_SET {
+ DWORD Entries;
+ [size_is(Entries)] PRPC_UNICODE_STRING UserRights;
+} LSAPR_USER_RIGHT_SET, *PLSAPR_USER_RIGHT_SET;
+
+cpp_quote("#ifndef _NTSECAPI_H")
+typedef enum _POLICY_DOMAIN_INFORMATION_CLASS {
+ PolicyDomainQualityOfServiceInformation = 1,
+ PolicyDomainEfsInformation = 2,
+ PolicyDomainKerberosTicketInformation = 3,
+} POLICY_DOMAIN_INFORMATION_CLASS, *PPOLICY_DOMAIN_INFORMATION_CLASS;
+
+typedef struct _POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO {
+ DWORD QualityOfService;
+} POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO, *PPOLICY_DOMAIN_QUALITY_OF_SERVICE_INFO;
+cpp_quote("#endif")
+
+typedef struct _LSAPR_POLICY_DOMAIN_EFS_INFO {
+ DWORD InfoLength;
+ [size_is(InfoLength)] BYTE *EfsBlob;
+} LSAPR_POLICY_DOMAIN_EFS_INFO, *PLSAPR_POLICY_DOMAIN_EFS_INFO;
+
+cpp_quote("#ifndef _NTSECAPI_H")
+typedef struct _POLICY_DOMAIN_KERBEROS_TICKET_INFO {
+ DWORD AuthenticationOptions;
+ LARGE_INTEGER MaxServiceTicketAge;
+ LARGE_INTEGER MaxTicketAge;
+ LARGE_INTEGER MaxRenewAge;
+ LARGE_INTEGER MaxClockSkew;
+ LARGE_INTEGER Reserved;
+} POLICY_DOMAIN_KERBEROS_TICKET_INFO, *PPOLICY_DOMAIN_KERBEROS_TICKET_INFO;
+cpp_quote("#endif")
+
+typedef
+[switch_type(POLICY_DOMAIN_INFORMATION_CLASS)] union _LSAPR_POLICY_DOMAIN_INFORMATION {
+ [case(PolicyDomainQualityOfServiceInformation)] POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO PolicyDomainQualityOfServiceInfo;
+ [case(PolicyDomainEfsInformation)] LSAPR_POLICY_DOMAIN_EFS_INFO PolicyDomainEfsInfo;
+ [case(PolicyDomainKerberosTicketInformation)] POLICY_DOMAIN_KERBEROS_TICKET_INFO PolicyDomainKerbTicketInfo;
+} LSAPR_POLICY_DOMAIN_INFORMATION, *PLSAPR_POLICY_DOMAIN_INFORMATION;
+
+typedef struct _LSAPR_TRUSTED_DOMAIN_INFORMATION_EX {
+ RPC_UNICODE_STRING Name;
+ RPC_UNICODE_STRING FlatName;
+ PRPC_SID Sid;
+ DWORD TrustDirection;
+ DWORD TrustType;
+ DWORD TrustAttributes;
+} LSAPR_TRUSTED_DOMAIN_INFORMATION_EX, *PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX;
+
+typedef struct _LSAPR_TRUSTED_ENUM_BUFFER_EX {
+ DWORD EntriesRead;
+ [size_is(EntriesRead)] PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX EnumerationBuffer;
+} LSAPR_TRUSTED_ENUM_BUFFER_EX, *PLSAPR_TRUSTED_ENUM_BUFFER_EX;
+
+typedef struct _LSAPR_TRUSTED_DOMAIN_INFORMATION_EX2 {
+ RPC_UNICODE_STRING Name;
+ RPC_UNICODE_STRING FlatName;
+ PRPC_SID Sid;
+ DWORD TrustDirection;
+ DWORD TrustType;
+ DWORD TrustAttributes;
+ DWORD ForestTrustLength;
+ [size_is(ForestTrustLength)] BYTE *ForestTrustInfo;
+} LSAPR_TRUSTED_DOMAIN_INFORMATION_EX2, *PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX2;
+
+typedef struct _LSAPR_AUTH_INFORMATION {
+ LARGE_INTEGER LastUpdateTime;
+ DWORD AuthType;
+ DWORD AuthInfoLength;
+ [size_is(AuthInfoLength)] BYTE *AuthInfo;
+} LSAPR_AUTH_INFORMATION, *PLSAPR_AUTH_INFORMATION;
+
+typedef struct _LSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION {
+ DWORD IncomingAuthInfos;
+ PLSAPR_AUTH_INFORMATION IncomingAuthenticationInformation;
+ PLSAPR_AUTH_INFORMATION IncomingPreviousAuthenticationInformation;
+ DWORD OutgoingAuthInfos;
+ PLSAPR_AUTH_INFORMATION OutgoingAuthenticationInformation;
+ PLSAPR_AUTH_INFORMATION OutgoingPreviousAuthenticationInformation;
+} LSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION, *PLSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION;
+
+typedef struct _LSAPR_TRUSTED_DOMAIN_AUTH_BLOB {
+ DWORD AuthSize;
+ [size_is(AuthSize)] BYTE *AuthBlob;
+} LSAPR_TRUSTED_DOMAIN_AUTH_BLOB, *PLSAPR_TRUSTED_DOMAIN_AUTH_BLOB;
+
+typedef struct _LSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION_INTERNAL {
+ LSAPR_TRUSTED_DOMAIN_AUTH_BLOB AuthBlob;
+} LSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION_INTERNAL, *PLSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION_INTERNAL;
+
+typedef struct _LSAPR_TRUSTED_DOMAIN_FULL_INFORMATION {
+ LSAPR_TRUSTED_DOMAIN_INFORMATION_EX Information;
+ TRUSTED_POSIX_OFFSET_INFO PosixOffset;
+ LSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION AuthInformation;
+} LSAPR_TRUSTED_DOMAIN_FULL_INFORMATION, *PLSAPR_TRUSTED_DOMAIN_FULL_INFORMATION;
+
+typedef struct _LSAPR_TRUSTED_DOMAIN_FULL_INFORMATION_INTERNAL {
+ LSAPR_TRUSTED_DOMAIN_INFORMATION_EX Information;
+ TRUSTED_POSIX_OFFSET_INFO PosixOffset;
+ LSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION_INTERNAL AuthInformation;
+} LSAPR_TRUSTED_DOMAIN_FULL_INFORMATION_INTERNAL, *PLSAPR_TRUSTED_DOMAIN_FULL_INFORMATION_INTERNAL;
+
+typedef struct _LSAPR_TRUSTED_DOMAIN_FULL_INFORMATION2 {
+ LSAPR_TRUSTED_DOMAIN_INFORMATION_EX2 Information;
+ TRUSTED_POSIX_OFFSET_INFO PosixOffset;
+ LSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION AuthInformation;
+} LSAPR_TRUSTED_DOMAIN_FULL_INFORMATION2, *PLSAPR_TRUSTED_DOMAIN_FULL_INFORMATION2;
+
+typedef struct _TRUSTED_DOMAIN_SUPPORTED_ENCRYPTION_TYPES {
+ DWORD SupportedEncryptionTypes;
+} TRUSTED_DOMAIN_SUPPORTED_ENCRYPTION_TYPES, *PTRUSTED_DOMAIN_SUPPORTED_ENCRYPTION_TYPES;
+
+typedef
+[switch_type(TRUSTED_INFORMATION_CLASS)] union _LSAPR_TRUSTED_DOMAIN_INFO {
+ [case(TrustedDomainNameInformation)] LSAPR_TRUSTED_DOMAIN_NAME_INFO TrustedDomainNameInfo;
+ [case(TrustedControllersInformation)] LSAPR_TRUSTED_CONTROLLERS_INFO TrustedControllersInfo;
+ [case(TrustedPosixOffsetInformation)] TRUSTED_POSIX_OFFSET_INFO TrustedPosixOffsetInfo;
+ [case(TrustedPasswordInformation)] LSAPR_TRUSTED_PASSWORD_INFO TrustedPasswordInfo;
+ [case(TrustedDomainInformationBasic)] LSAPR_TRUSTED_DOMAIN_INFORMATION_BASIC TrustedDomainInfoBasic;
+ [case(TrustedDomainInformationEx)] LSAPR_TRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInfoEx;
+ [case(TrustedDomainAuthInformation)] LSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION TrustedAuthInfo;
+ [case(TrustedDomainFullInformation)] LSAPR_TRUSTED_DOMAIN_FULL_INFORMATION TrustedFullInfo;
+ [case(TrustedDomainAuthInformationInternal)] LSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION_INTERNAL TrustedAuthInfoInternal;
+ [case(TrustedDomainFullInformationInternal)] LSAPR_TRUSTED_DOMAIN_FULL_INFORMATION_INTERNAL TrustedFullInfoInternal;
+ [case(TrustedDomainInformationEx2Internal)] LSAPR_TRUSTED_DOMAIN_INFORMATION_EX2 TrustedDomainInfoEx2;
+ [case(TrustedDomainFullInformation2Internal)] LSAPR_TRUSTED_DOMAIN_FULL_INFORMATION2 TrustedFullInfo2;
+ [case(TrustedDomainSupportedEncryptionTypes)] TRUSTED_DOMAIN_SUPPORTED_ENCRYPTION_TYPES TrustedDomainSETs;
+} LSAPR_TRUSTED_DOMAIN_INFO, *PLSAPR_TRUSTED_DOMAIN_INFO;
+
+typedef struct _LSAPR_LUID_AND_ATTRIBUTES {
+ LUID Luid;
+ DWORD Attributes;
+} LSAPR_LUID_AND_ATTRIBUTES, *PLSAPR_LUID_AND_ATTRIBUTES;
+
+typedef struct _LSAPR_PRIVILEGE_SET {
+ DWORD PrivilegeCount;
+ DWORD Control;
+ [size_is(PrivilegeCount)] LSAPR_LUID_AND_ATTRIBUTES Privilege[*];
+} LSAPR_PRIVILEGE_SET, *PLSAPR_PRIVILEGE_SET;
+
+cpp_quote("#ifndef _NTSECAPI_H")
+typedef enum _LSA_FOREST_TRUST_RECORD_TYPE {
+ ForestTrustTopLevelName = 0,
+ ForestTrustTopLevelNameEx = 1,
+ ForestTrustDomainInfo = 2,
+} LSA_FOREST_TRUST_RECORD_TYPE;
+
+typedef struct _LSA_FOREST_TRUST_BINARY_DATA {
+ DWORD Length;
+ [size_is(Length)] BYTE *Buffer;
+} LSA_FOREST_TRUST_BINARY_DATA, *PLSA_FOREST_TRUST_BINARY_DATA;
+
+typedef struct _LSA_FOREST_TRUST_DOMAIN_INFO {
+ PRPC_SID Sid;
+ LSA_UNICODE_STRING DnsName;
+ LSA_UNICODE_STRING NetbiosName;
+} LSA_FOREST_TRUST_DOMAIN_INFO, *PLSA_FOREST_TRUST_DOMAIN_INFO;
+
+typedef struct _LSA_FOREST_TRUST_RECORD {
+ DWORD Flags;
+ LSA_FOREST_TRUST_RECORD_TYPE ForestTrustType;
+ LARGE_INTEGER Time;
+ [switch_type(LSA_FOREST_TRUST_RECORD_TYPE), switch_is(ForestTrustType)] union {
+ [case(ForestTrustTopLevelName, ForestTrustTopLevelNameEx)] LSA_UNICODE_STRING TopLevelName;
+ [case(ForestTrustDomainInfo)] LSA_FOREST_TRUST_DOMAIN_INFO DomainInfo;
+ [default] LSA_FOREST_TRUST_BINARY_DATA Data;
+ } ForestTrustData;
+} LSA_FOREST_TRUST_RECORD, *PLSA_FOREST_TRUST_RECORD;
+
+typedef struct _LSA_FOREST_TRUST_INFORMATION {
+ DWORD RecordCount;
+ [size_is(RecordCount)] PLSA_FOREST_TRUST_RECORD *Entries;
+} LSA_FOREST_TRUST_INFORMATION, *PLSA_FOREST_TRUST_INFORMATION;
+
+typedef enum _LSA_FOREST_TRUST_COLLISION_RECORD_TYPE {
+ CollisionTdo = 0,
+ CollisionXref,
+ CollisionOther,
+} LSA_FOREST_TRUST_COLLISION_RECORD_TYPE;
+
+typedef struct _LSA_FOREST_TRUST_COLLISION_RECORD {
+ DWORD Index;
+ LSA_FOREST_TRUST_COLLISION_RECORD_TYPE Type;
+ DWORD Flags;
+ LSA_UNICODE_STRING Name;
+} LSA_FOREST_TRUST_COLLISION_RECORD, *PLSA_FOREST_TRUST_COLLISION_RECORD;
+
+typedef struct _LSA_FOREST_TRUST_COLLISION_INFORMATION {
+ DWORD RecordCount;
+ [size_is(RecordCount)] PLSA_FOREST_TRUST_COLLISION_RECORD *Entries;
+} LSA_FOREST_TRUST_COLLISION_INFORMATION, *PLSA_FOREST_TRUST_COLLISION_INFORMATION;
+cpp_quote("#endif")
[
uuid(12345778-1234-abcd-ef00-0123456789ab),
]
interface lsarpc
{
-/*
- cpp_quote("#if 0")
- typedef [handle, unique] wchar_t *LPWSTR;
- typedef [handle, unique] char *LPSTR;
- cpp_quote("#endif")
- typedef [context_handle] void *LSA_HANDLE;
- typedef LSA_HANDLE *PLSA_HANDLE;
- typedef unsigned int NTSTATUS;
-*/
-
- cpp_quote("#if 0")
- typedef struct _LSA_UNICODE_STRING {
- unsigned short Length;
- unsigned short MaximumLength;
- [size_is(MaximumLength)] wchar_t *Buffer;
- } LSA_UNICODE_STRING, *PLSA_UNICODE_STRING;
- cpp_quote("#endif")
-
/* Function 0 */
- NTSTATUS LsarClose(handle_t BindingHandle,
- [in] LSA_HANDLE ObjectHandle);
+ NTSTATUS LsarClose(
+ [in, out] LSAPR_HANDLE *ObjectHandle);
/* Function 1 */
- NTSTATUS LsarDelete(handle_t BindingHandle,
- [in] LSA_HANDLE ObjectHandle);
+ NTSTATUS LsarDelete(
+ [in] LSAPR_HANDLE ObjectHandle);
+
+ /* Function 2 */
+ NTSTATUS LsarEnumeratePrivileges(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in, out] DWORD *EnumerationContext,
+ [out] PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer,
+ [in] DWORD PreferedMaximumLength);
+
+ /* Function 3 */
+ NTSTATUS LsarQuerySecurityObject(
+ [in] LSAPR_HANDLE ObjectHandle,
+ [in] SECURITY_INFORMATION SecurityInformation,
+ [out] PLSAPR_SR_SECURITY_DESCRIPTOR *SecurityDescriptor);
+
+ /* Function 4 */
+ NTSTATUS LsarSetSecurityObject(
+ [in] LSAPR_HANDLE ObjectHandle,
+ [in] SECURITY_INFORMATION SecurityInformation,
+ [in] PLSAPR_SR_SECURITY_DESCRIPTOR SecurityDescriptor);
+
+ /* Function 5 */
+ NTSTATUS LsarChangePassword(
+ [in] handle_t hBinding, /* FIXME */
+ [in] PRPC_UNICODE_STRING String1,
+ [in] PRPC_UNICODE_STRING String2,
+ [in] PRPC_UNICODE_STRING String3,
+ [in] PRPC_UNICODE_STRING String4,
+ [in] PRPC_UNICODE_STRING String5);
+
+ /* Function 6 */
+ NTSTATUS LsarOpenPolicy(
+ [in, unique] PLSAPR_SERVER_NAME SystemName,
+ [in] PLSAPR_OBJECT_ATTRIBUTES ObjectAttributes,
+ [in] ACCESS_MASK DesiredAccess,
+ [out] LSAPR_HANDLE *PolicyHandle);
+
+ /* Function 7 */
+ NTSTATUS LsarQueryInformationPolicy(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] POLICY_INFORMATION_CLASS InformationClass,
+ [in] unsigned long PolicyInformation);
+ /* FIXME: should be [in, switch_is(InformationClass)] PLSAPR_POLICY_INFORMATION PolicyInformation); */
+
+ /* Function 8 */
+ NTSTATUS LsarSetInformationPolicy(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] POLICY_INFORMATION_CLASS InformationClass,
+ [out] unsigned long *PolicyInformation);
+ /* FIXME: should be [out, switch_is(InformationClass)] PLSAPR_POLICY_INFORMATION *PolicyInformation); */
+
+ /* Function 9 */
+ NTSTATUS LsarClearAuditLog(
+ [in] LSAPR_HANDLE ObjectHandle);
+
+ /* Function 10 */
+ NTSTATUS LsarCreateAccount(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] PRPC_SID AccountSid,
+ [in] ACCESS_MASK DesiredAccess,
+ [out] LSAPR_HANDLE *AccountHandle);
+
+ /* Function 11 */
+ NTSTATUS LsarEnumerateAccounts(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in, out] DWORD *EnumerationContext,
+ [out] PLSAPR_ACCOUNT_ENUM_BUFFER EnumerationBuffer,
+ [in] DWORD PreferedMaximumLength);
+
+ /* Function 12 */
+ NTSTATUS LsarCreateTrustedDomain(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] PLSAPR_TRUST_INFORMATION TrustedDomainInformation,
+ [in] ACCESS_MASK DesiredAccess,
+ [out] LSAPR_HANDLE *TrustedDomainHandle);
+
+ /* Function 13 */
+ NTSTATUS LsarEnumerateTrustedDomains(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in, out] DWORD *EnumerationContext,
+ [out] PLSAPR_TRUSTED_ENUM_BUFFER EnumerationBuffer,
+ [in] DWORD PreferedMaximumLength);
+
+ /* Function 14 */
+ NTSTATUS LsarLookupNames(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] DWORD Count,
+ [in, size_is(Count)] PRPC_UNICODE_STRING Names,
+ [out] PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains,
+ [in, out] PLSAPR_TRANSLATED_SIDS TranslatedSids,
+ [in] LSAP_LOOKUP_LEVEL LookupLevel,
+ [in, out] DWORD *MappedCount);
+
+ /* Function 15 */
+ NTSTATUS LsarLookupSids(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] PLSAPR_SID_ENUM_BUFFER SidEnumBuffer,
+ [out] PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains,
+ [in, out] PLSAPR_TRANSLATED_NAMES TranslatedNames,
+ [in] LSAP_LOOKUP_LEVEL LookupLevel,
+ [in, out] DWORD *MappedCount);
+
+ /* Function 16 */
+ NTSTATUS LsarCreateSecret(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] PRPC_UNICODE_STRING SecretName,
+ [in] ACCESS_MASK DesiredAccess,
+ [out] LSAPR_HANDLE *SecretHandle);
+
+ /* Function 17 */
+ NTSTATUS LsarOpenAccount(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] PRPC_SID AccountSid,
+ [in] ACCESS_MASK DesiredAccess,
+ [out] LSAPR_HANDLE *AccountHandle);
+
+ /* Function 18 */
+ NTSTATUS LsarEnumeratePrivilegesAccount(
+ [in] LSAPR_HANDLE AccountHandle,
+ [out] PLSAPR_PRIVILEGE_SET *Privileges);
+
+ /* Function 19 */
+ NTSTATUS LsarAddPrivilegesToAccount(
+ [in] LSAPR_HANDLE AccountHandle,
+ [in] PLSAPR_PRIVILEGE_SET Privileges);
+
+ /* Function 20 */
+ NTSTATUS LsarRemovePrivilegesFromAccount(
+ [in] LSAPR_HANDLE AccountHandle,
+ [in] BOOL AllPrivileges,
+ [in, unique] PLSAPR_PRIVILEGE_SET Privileges);
+
+ /* Function 21 */
+ NTSTATUS LsarGetQuotasForAccount(
+ [in] LSAPR_HANDLE AccountHandle,
+ [out] PQUOTA_LIMITS QuotaLimits);
+
+ /* Function 22 */
+ NTSTATUS LsarSetQuotasForAccount(
+ [in] LSAPR_HANDLE AccountHandle,
+ [in] PQUOTA_LIMITS QuotaLimits);
+
+ /* Function 23 */
+ NTSTATUS LsarGetSystemAccessAccount(
+ [in] LSAPR_HANDLE AccountHandle,
+ [out] ACCESS_MASK *SystemAccess);
+
+ /* Function 24 */
+ NTSTATUS LsarSetSystemAccessAccount(
+ [in] LSAPR_HANDLE AccountHandle,
+ [in] ACCESS_MASK SystemAccess);
+
+ /* Function 25 */
+ NTSTATUS LsarOpenTrustedDomain(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] PRPC_SID TrustedDomainSid,
+ [in] ACCESS_MASK DesiredAccess,
+ [out] LSAPR_HANDLE *TrustedDomainHandle);
+
+ /* Function 26 */
+ NTSTATUS LsarQueryInfoTrustedDomain(
+ [in] LSAPR_HANDLE TrustedDomainHandle,
+ [in] TRUSTED_INFORMATION_CLASS InformationClass,
+ [out, switch_is(InformationClass)] PLSAPR_TRUSTED_DOMAIN_INFO *TrustedDomainInformation);
+
+ /* Function 27 */
+ NTSTATUS LsarSetInformationTrustedDomain(
+ [in] LSAPR_HANDLE TrustedDomainHandle,
+ [in] TRUSTED_INFORMATION_CLASS InformationClass,
+ [in, switch_is(InformationClass)] PLSAPR_TRUSTED_DOMAIN_INFO TrustedDomainInformation);
+
+ /* Function 28 */
+ NTSTATUS LsarOpenSecret(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] PRPC_UNICODE_STRING SecretName,
+ [in] ACCESS_MASK DesiredAccess,
+ [out] LSAPR_HANDLE *SecretHandle);
+
+ /* Function 29 */
+ NTSTATUS LsarSetSecret(
+ [in] LSAPR_HANDLE *SecretHandle,
+ [in, unique] PLSAPR_CR_CIPHER_VALUE EncryptedCurrentValue,
+ [in, unique] PLSAPR_CR_CIPHER_VALUE EncryptedOldValue);
+
+ /* Function 30 */
+ NTSTATUS LsarQuerySecret(
+ [in] LSAPR_HANDLE SecretHandle,
+ [in, out, unique] PLSAPR_CR_CIPHER_VALUE *EncryptedCurrentValue,
+ [in, out, unique] PLARGE_INTEGER CurrentValueSetTime,
+ [in, out, unique] PLSAPR_CR_CIPHER_VALUE *EncryptedOldValue,
+ [in, out, unique] PLARGE_INTEGER OldValueSetTime);
+
+ /* Function 31 */
+ NTSTATUS LsarLookupPrivilegeValue(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] PRPC_UNICODE_STRING Name,
+ [out] PLUID Value);
+
+ /* Function 32 */
+ NTSTATUS LsarLookupPrivilegeName(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] PLUID Value,
+ [out] PRPC_UNICODE_STRING *Name);
+
+ /* Function 33 */
+ NTSTATUS LsarLookupPrivilegeDisplayName(
+ [in] LSAPR_HANDLE PolicyHandle, /* FIXME */
+ /*[in] PRPC_UNICODE_STRING Name,
+ [in] USHORT ClientLanguage,
+ [in] USHORT ClientSystemDefaultLanguage,
+ [out] PRPC_UNICODE_STRING *DisplayName,*/
+ [out] USHORT *LanguageReturned);
+
+ /* Function 34 */
+ NTSTATUS LsarDeleteObject(
+ [in, out] LSAPR_HANDLE *ObjectHandle);
+
+cpp_quote("#if _WIN32_WINNT >= 0x0351")
+
+ /* Function 35 */
+ NTSTATUS LsarEnumerateAccountsWithUserRight(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in, unique] PRPC_UNICODE_STRING UserRight,
+ [out] PLSAPR_ACCOUNT_ENUM_BUFFER EnumerationBuffer);
+
+ /* Function 36 */
+ NTSTATUS LsarEnmuerateAccountRights(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] PRPC_SID AccountSid,
+ [out] PLSAPR_USER_RIGHT_SET UserRights);
+
+ /* Function 37 */
+ NTSTATUS LsarAddAccountRights(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] PRPC_SID AccountSid,
+ [in] PLSAPR_USER_RIGHT_SET UserRights);
+
+ /* Function 38 */
+ NTSTATUS LsarRemoveAccountRights(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] PRPC_SID AccountSid,
+ [in] BOOL AllRights,
+ [in] PLSAPR_USER_RIGHT_SET UserRights);
+
+ /* Function 39 */
+ NTSTATUS LsarQueryTrustedDomainInfo(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] PRPC_SID TrustedDomainSid,
+ [in] TRUSTED_INFORMATION_CLASS InformationClass,
+ [out, switch_is(InformationClass)] PLSAPR_TRUSTED_DOMAIN_INFO *TrustedDomainInformation);
+
+ /* Function 40 */
+ NTSTATUS LsarSetTrustedDomainInfo(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] PRPC_SID TrustedDomainSid,
+ [in] TRUSTED_INFORMATION_CLASS InformationClass,
+ [in, switch_is(InformationClass)] PLSAPR_TRUSTED_DOMAIN_INFO TrustedDomainInformation);
+
+ /* Function 41 */
+ NTSTATUS LsarDeleteTrustedDomain(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] PRPC_SID TrustedDomainSid);
+
+ /* Function 42 */
+ NTSTATUS LsarStorePrivateData(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] PRPC_UNICODE_STRING KeyName,
+ [in, unique] PLSAPR_CR_CIPHER_VALUE EncryptedData);
+
+ /* Function 43 */
+ NTSTATUS LsarRetrievePrivateData(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] PRPC_UNICODE_STRING KeyName,
+ [in, out] PLSAPR_CR_CIPHER_VALUE *EncryptedData);
+
+ /* Function 44 */
+ NTSTATUS LsarOpenPolicy2(
+ [in, unique, string] PLSAPR_SERVER_NAME SystemName,
+ [in] PLSAPR_OBJECT_ATTRIBUTES ObjectAttributes,
+ [in] ACCESS_MASK DesiredAccess,
+ [out] LSAPR_HANDLE *PolicyHandle);
+
+ /* Function 45 */
+ NTSTATUS LsarGetUserName(
+ [in, unique, string] PLSAPR_SERVER_NAME SystemName,
+ [in, out] PRPC_UNICODE_STRING *UserName,
+ [in, out, unique] PRPC_UNICODE_STRING *DomainName);
+
+cpp_quote("#if _WIN32_WINNT >= 0x0500")
+
+ /* Function 46 */
+ NTSTATUS LsarQueryInformationPolicy2(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] POLICY_INFORMATION_CLASS InformationClass,
+ [out] unsigned long *PolicyInformation);
+ /* FIXME: should be [out, switch_is(InformationClass)] PLSAPR_POLICY_INFORMATION *PolicyInformation); */
+
+ /* Function 47 */
+ NTSTATUS LsarSetInformationPolicy2(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] POLICY_INFORMATION_CLASS InformationClass,
+ [in] unsigned long PolicyInformation);
+ /* FIXME: should be [in, switch_is(InformationClass)] PLSAPR_POLICY_INFORMATION PolicyInformation); */
+
+ /* Function 48 */
+ NTSTATUS LsarQueryTrustedDomainInfoByName(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] PRPC_UNICODE_STRING TrustedDomainName,
+ [in] POLICY_INFORMATION_CLASS InformationClass,
+ [out] unsigned long *PolicyInformation);
+ /* FIXME: should be [out, switch_is(InformationClass)] PLSAPR_POLICY_INFORMATION *PolicyInformation); */
+
+ /* Function 49 */
+ NTSTATUS LsarSetTrustedDomainInfoByName(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] PRPC_UNICODE_STRING TrustedDomainName,
+ [in] POLICY_INFORMATION_CLASS InformationClass,
+ [in] unsigned long PolicyInformation);
+ /* FIXME: should be [in, switch_is(InformationClass)] PLSAPR_POLICY_INFORMATION PolicyInformation); */
+
+ /* Function 50 */
+ NTSTATUS LsarEnumerateTrustedDomainsEx(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in, out] DWORD *EnumerationContext,
+ [out] PLSAPR_TRUSTED_ENUM_BUFFER_EX EnumerationBuffer,
+ [in] DWORD PreferedMaximumLength);
+
+ /* Function 51 */
+ NTSTATUS LsarCreateTrustedDomainEx(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation,
+ [in] PLSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION AuthentificationInformation,
+ [in] ACCESS_MASK DesiredAccess,
+ [out] LSAPR_HANDLE *TrustedDomainHandle);
+
+ /* Function 52 */
+ NTSTATUS LsarSetPolicyReplicationHandle(
+ [in, out] PLSAPR_HANDLE PolicyHandle);
+
+ /* Function 53 */
+ NTSTATUS LsarQueryDomainInformationPolicy(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] POLICY_INFORMATION_CLASS InformationClass,
+ [out] unsigned long *PolicyInformation);
+ /* FIXME: should be [out, switch_is(InformationClass)] PLSAPR_POLICY_INFORMATION *PolicyInformation); */
+
+ /* Function 54 */
+ NTSTATUS LsarSetDomainInformationPolicy(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] POLICY_INFORMATION_CLASS InformationClass,
+ [in] unsigned long PolicyInformation);
+ /* FIXME: should be [in, switch_is(InformationClass)] PLSAPR_POLICY_INFORMATION PolicyInformation); */
+
+ /* Function 55 */
+ NTSTATUS LsarOpenTrustedDomainByName(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] PRPC_UNICODE_STRING TrustedDomainName,
+ [in] ACCESS_MASK DesiredAccess,
+ [out] LSAPR_HANDLE *TrustedDomainHandle);
+
+ /* Function 56 */
+ NTSTATUS LsarTestCall(
+ [in] handle_t hBinding); /* FIXME */
+
+ /* Function 57 */
+ NTSTATUS LsarLookupSids2(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] PLSAPR_SID_ENUM_BUFFER SidEnumBuffer,
+ [out] PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains,
+ [in, out] PLSAPR_TRANSLATED_NAMES_EX TranslatedNames,
+ [in] LSAP_LOOKUP_LEVEL LookupLevel,
+ [in, out] DWORD *MappedCount,
+ [in] DWORD LookupOptions,
+ [in] DWORD ClientRevision);
+
+ /* Function 58 */
+ NTSTATUS LsarLookupNames2(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] DWORD Count,
+ [in, size_is(Count)] PRPC_UNICODE_STRING Names,
+ [out] PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains,
+ [in, out] PLSAPR_TRANSLATED_SID_EX TranslatedSids,
+ [in] LSAP_LOOKUP_LEVEL LookupLevel,
+ [in, out] DWORD *MappedCount,
+ [in] DWORD LookupOptions,
+ [in] DWORD ClientRevision);
+
+ /* Function 59 */
+ NTSTATUS LsarCreateTrustedDomainEx2(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation,
+ [in] PLSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION_INTERNAL AuthentificationInformation,
+ [in] ACCESS_MASK DesiredAccess,
+ [out] LSAPR_HANDLE *TrustedDomainHandle);
+
+cpp_quote("#if _WIN32_WINNT >= 0x0501")
+
+ /* Function 60 */
+ NTSTATUS CredrWrite(
+ [in] handle_t hBinding); /* FIXME */
+
+ /* Function 61 */
+ NTSTATUS CredrRead(
+ [in] handle_t hBinding); /* FIXME */
+
+ /* Function 62 */
+ NTSTATUS CredrEnumerate(
+ [in] handle_t hBinding); /* FIXME */
+
+ /* Function 63 */
+ NTSTATUS CredrWriteDomainCredentials(
+ [in] handle_t hBinding); /* FIXME */
+
+ /* Function 64 */
+ NTSTATUS CredrReadDomainCredentials(
+ [in] handle_t hBinding); /* FIXME */
+
+ /* Function 65 */
+ NTSTATUS CredrDelete(
+ [in] handle_t hBinding); /* FIXME */
+
+ /* Function 66 */
+ NTSTATUS CredrGetTargetInfo(
+ [in] handle_t hBinding); /* FIXME */
+
+ /* Function 67 */
+ NTSTATUS CredrProfileLoaded(
+ [in] handle_t hBinding); /* FIXME */
+
+ /* Function 68 */
+ NTSTATUS LsarLookupNames3(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] DWORD Count,
+ [in, size_is(Count)] PRPC_UNICODE_STRING Names,
+ [out] PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains,
+ [in, out] PLSAPR_TRANSLATED_SID_EX2 TranslatedSids,
+ [in] LSAP_LOOKUP_LEVEL LookupLevel,
+ [in, out] DWORD *MappedCount,
+ [in] DWORD LookupOptions,
+ [in] DWORD ClientRevision);
+
+ /* Function 69 */
+ NTSTATUS CredrGetSessionTypes(
+ [in] handle_t hBinding); /* FIXME */
+
+ /* Function 70 */
+ NTSTATUS LsarRegisterAuditEvent(
+ [in] handle_t hBinding); /* FIXME */
+
+ /* Function 71 */
+ NTSTATUS LsarGenAuditEvent(
+ [in] handle_t hBinding); /* FIXME */
+
+ /* Function 72 */
+ NTSTATUS LsarUnregisterAuditEvent(
+ [in] handle_t hBinding); /* FIXME */
+
+ /* Function 73 */
+ NTSTATUS LsarQueryForestTrustInformation(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] PLSA_UNICODE_STRING TrustedDomainName,
+ [in] LSA_FOREST_TRUST_RECORD_TYPE HighestRecordType,
+ [out] PLSA_FOREST_TRUST_INFORMATION *ForestTrustInfo);
+
+ /* Function 74 */
+ NTSTATUS LsarSetForestTrustInformation(
+ [in] LSAPR_HANDLE PolicyHandle,
+ [in] PLSA_UNICODE_STRING TrustedDomainName,
+ [in] LSA_FOREST_TRUST_RECORD_TYPE HighestRecordType,
+ [in] PLSA_FOREST_TRUST_INFORMATION ForestTrustInfo,
+ [in] BOOL CheckOnly,
+ [out] PLSA_FOREST_TRUST_COLLISION_INFORMATION *CollisionInfo);
+
+ /* Function 75 */
+ NTSTATUS CredrRename(
+ [in] handle_t hBinding); /* FIXME */
+
+ /* Function 76 */
+ NTSTATUS LsarLookupSids3(
+ [in] handle_t hBinding, /* FIXME */
+ [in] PLSAPR_SID_ENUM_BUFFER SidEnumBuffer,
+ [out] PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains,
+ [in, out] PLSAPR_TRANSLATED_NAMES_EX TranslatedNames,
+ [in] LSAP_LOOKUP_LEVEL LookupLevel,
+ [in, out] DWORD *MappedCount,
+ [in] DWORD LookupOptions,
+ [in] DWORD ClientRevision);
+
+ /* Function 77 */
+ NTSTATUS LsarLookupNames4(
+ [in] handle_t hBinding, /* FIXME */
+ [in] handle_t RpcHandle,
+ [in] DWORD Count,
+ [in, size_is(Count)] PRPC_UNICODE_STRING Names,
+ [out] PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains,
+ [in, out] PLSAPR_TRANSLATED_SID_EX2 TranslatedSids,
+ [in] LSAP_LOOKUP_LEVEL LookupLevel,
+ [in, out] DWORD *MappedCount,
+ [in] DWORD LookupOptions,
+ [in] DWORD ClientRevision);
+
+ /* Function 78 */
+ NTSTATUS LsarOpenPolicySce(
+ [in] handle_t hBinding); /* FIXME */
+
+ /* Function 79 */
+ NTSTATUS LsarAdtRegisterSecurityEventSource(
+ [in] handle_t hBinding); /* FIXME */
+
+ /* Function 80 */
+ NTSTATUS LsarAdtUnregisterSecurityEventSource(
+ [in] handle_t hBinding); /* FIXME */
+
+ /* Function 81 */
+ NTSTATUS LsarAdtReportSecurityEvent(
+ [in] handle_t hBinding); /* FIXME */
+
+cpp_quote("#endif /* _WIN32_WINNT >= 0x0501 */")
+cpp_quote("#endif /* _WIN32_WINNT >= 0x0500 */")
+cpp_quote("#endif /* _WIN32_WINNT >= 0x0351 */")
+
}