6 Appendix A: Full IDL
For ease of implementation, the full IDL is provided, where ms-dtyp.idl is the IDL specified in [MS-DTYP] Appendix A.
Note The lsarpc interface is shared between this protocol and the Local Security Authority (Translation Methods) Remote Protocol [MS-LSAT]. For convenience, the IDL definitions that appear below and the IDL definitions in [MS-LSAT] section 6 have been merged and are available for download. For more information, see [MSFT-LSA-IDL].
-
import "ms-dtyp.idl"; [ uuid(12345778-1234-ABCD-EF00-0123456789AB), version(0.0), ms_union, pointer_default(unique) ] interface lsarpc { // // Type definitions. // // // Start of common types. //
-
#define MAX_CIPHER_SIZE ( 2 * ( ( 64 * 1024 ) + 8 ) )
-
typedef [context_handle] void * LSAPR_HANDLE; typedef unsigned char SECURITY_CONTEXT_TRACKING_MODE, *PSECURITY_CONTEXT_TRACKING_MODE; typedef unsigned short SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL; typedef struct _STRING { unsigned short Length; unsigned short MaximumLength; [size_is(MaximumLength), length_is(Length)] char * Buffer; } STRING, *PSTRING; typedef struct _LSAPR_ACL { unsigned char AclRevision; unsigned char Sbz1; unsigned short AclSize; [size_is(AclSize - 4)] unsigned char Dummy1[*]; } LSAPR_ACL, *PLSAPR_ACL; typedef struct _LSAPR_SECURITY_DESCRIPTOR { unsigned char Revision; unsigned char Sbz1; SECURITY_DESCRIPTOR_CONTROL Control; PRPC_SID Owner; PRPC_SID Group; PLSAPR_ACL Sacl; PLSAPR_ACL Dacl; } LSAPR_SECURITY_DESCRIPTOR, *PLSAPR_SECURITY_DESCRIPTOR; typedef enum _SECURITY_IMPERSONATION_LEVEL { SecurityAnonymous = 0, SecurityIdentification = 1, SecurityImpersonation = 2, SecurityDelegation = 3 } SECURITY_IMPERSONATION_LEVEL, * PSECURITY_IMPERSONATION_LEVEL; typedef struct _SECURITY_QUALITY_OF_SERVICE { unsigned long Length; SECURITY_IMPERSONATION_LEVEL ImpersonationLevel; SECURITY_CONTEXT_TRACKING_MODE ContextTrackingMode; unsigned char EffectiveOnly; } SECURITY_QUALITY_OF_SERVICE, * PSECURITY_QUALITY_OF_SERVICE; typedef struct _LSAPR_OBJECT_ATTRIBUTES { unsigned long Length; unsigned char * RootDirectory; PSTRING ObjectName; unsigned long Attributes; PLSAPR_SECURITY_DESCRIPTOR SecurityDescriptor; PSECURITY_QUALITY_OF_SERVICE SecurityQualityOfService; } LSAPR_OBJECT_ATTRIBUTES, *PLSAPR_OBJECT_ATTRIBUTES; typedef struct _LSAPR_TRUST_INFORMATION { RPC_UNICODE_STRING Name; PRPC_SID Sid; } LSAPR_TRUST_INFORMATION, *PLSAPR_TRUST_INFORMATION; // // End of common types. // typedef enum _POLICY_INFORMATION_CLASS { PolicyAuditLogInformation = 1, PolicyAuditEventsInformation, PolicyPrimaryDomainInformation, PolicyPdAccountInformation, PolicyAccountDomainInformation, PolicyLsaServerRoleInformation, PolicyReplicaSourceInformation, PolicyInformationNotUsedOnWire, PolicyModificationInformation, PolicyAuditFullSetInformation, PolicyAuditFullQueryInformation, PolicyDnsDomainInformation, PolicyDnsDomainInformationInt, PolicyLocalAccountDomainInformation, PolicyMachineAccountInformation, PolicyLastEntry } POLICY_INFORMATION_CLASS, *PPOLICY_INFORMATION_CLASS; typedef enum _POLICY_AUDIT_EVENT_TYPE { AuditCategorySystem = 0, AuditCategoryLogon, AuditCategoryObjectAccess, AuditCategoryPrivilegeUse, AuditCategoryDetailedTracking, AuditCategoryPolicyChange, AuditCategoryAccountManagement, AuditCategoryDirectoryServiceAccess, AuditCategoryAccountLogon } POLICY_AUDIT_EVENT_TYPE, *PPOLICY_AUDIT_EVENT_TYPE; typedef RPC_UNICODE_STRING LSA_UNICODE_STRING, *PLSA_UNICODE_STRING; typedef struct _POLICY_AUDIT_LOG_INFO { unsigned long AuditLogPercentFull; unsigned long MaximumLogSize; LARGE_INTEGER AuditRetentionPeriod; unsigned char AuditLogFullShutdownInProgress; LARGE_INTEGER TimeToShutdown; unsigned long NextAuditRecordId; } POLICY_AUDIT_LOG_INFO, *PPOLICY_AUDIT_LOG_INFO; 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; typedef struct _POLICY_MODIFICATION_INFO { LARGE_INTEGER ModifiedId; LARGE_INTEGER DatabaseCreationTime; } POLICY_MODIFICATION_INFO, *PPOLICY_MODIFICATION_INFO; typedef struct _POLICY_AUDIT_FULL_SET_INFO { unsigned char ShutDownOnFull; } POLICY_AUDIT_FULL_SET_INFO, *PPOLICY_AUDIT_FULL_SET_INFO; typedef struct _POLICY_AUDIT_FULL_QUERY_INFO { unsigned char ShutDownOnFull; unsigned char LogIsFull; } POLICY_AUDIT_FULL_QUERY_INFO, *PPOLICY_AUDIT_FULL_QUERY_INFO; typedef enum _POLICY_DOMAIN_INFORMATION_CLASS { PolicyDomainQualityOfServiceInformation = 1, PolicyDomainEfsInformation = 2, PolicyDomainKerberosTicketInformation = 3 } POLICY_DOMAIN_INFORMATION_CLASS, *PPOLICY_DOMAIN_INFORMATION_CLASS; typedef struct _POLICY_DOMAIN_KERBEROS_TICKET_INFO { unsigned long 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; typedef struct _TRUSTED_POSIX_OFFSET_INFO { unsigned long Offset; } TRUSTED_POSIX_OFFSET_INFO, *PTRUSTED_POSIX_OFFSET_INFO; typedef enum _TRUSTED_INFORMATION_CLASS { TrustedDomainNameInformation = 1, TrustedControllersInformation, TrustedPosixOffsetInformation, TrustedPasswordInformation, TrustedDomainInformationBasic, TrustedDomainInformationEx, TrustedDomainAuthInformation, TrustedDomainFullInformation, TrustedDomainAuthInformationInternal, TrustedDomainFullInformationInternal, TrustedDomainInformationEx2Internal, TrustedDomainFullInformation2Internal, TrustedDomainSupportedEncryptionTypes, TrustedDomainAuthInformationInternalAes, TrustedDomainFullInformationInternalAes } TRUSTED_INFORMATION_CLASS, *PTRUSTED_INFORMATION_CLASS; typedef enum _LSA_FOREST_TRUST_RECORD_TYPE { ForestTrustTopLevelName = 0, ForestTrustTopLevelNameEx = 1, ForestTrustDomainInfo = 2, ForestTrustBinaryInfo = 3, ForestTrustScannerInfo = 4, ForestTrustRecordTypeLast = ForestTrustDomainInfo } LSA_FOREST_TRUST_RECORD_TYPE; typedef struct _LSA_FOREST_TRUST_BINARY_DATA { [range(0, 131072)] unsigned long Length; [size_is( Length )] unsigned char * 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_SCANNER_INFO { PRPC_SID DomainSid; LSA_UNICODE_STRING DnsName; LSA_UNICODE_STRING NetbiosName; } LSA_FOREST_TRUST_SCANNER_INFO, * PLSA_FOREST_TRUST_SCANNER_INFO;
-
typedef struct _LSA_FOREST_TRUST_RECORD { unsigned long 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; [case( ForestTrustScannerInfo )] LSA_FOREST_TRUST_SCANNER_INFO ScannerInfo; [default] LSA_FOREST_TRUST_BINARY_DATA Data; } ForestTrustData; } LSA_FOREST_TRUST_RECORD, *PLSA_FOREST_TRUST_RECORD;
-
typedef struct _LSA_FOREST_TRUST_RECORD2 { unsigned long 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; [case( ForestTrustBinaryInfo )] LSA_FOREST_TRUST_BINARY_DATA BinaryData; [case( ForestTrustScannerInfo )] LSA_FOREST_TRUST_SCANNER_INFO ScannerInfo; } ForestTrustData; } LSA_FOREST_TRUST_RECORD2, * PLSA_FOREST_TRUST_RECORD2;
-
typedef struct _LSA_FOREST_TRUST_INFORMATION { [range(0,4000)] unsigned long RecordCount; [size_is( RecordCount )] PLSA_FOREST_TRUST_RECORD * Entries; } LSA_FOREST_TRUST_INFORMATION, *PLSA_FOREST_TRUST_INFORMATION;
-
typedef struct _LSA_FOREST_TRUST_INFORMATION2 { [range(0, 4000)] unsigned long RecordCount; [size_is(RecordCount)] PLSA_FOREST_TRUST_RECORD2* Entries; } LSA_FOREST_TRUST_INFORMATION2, * PLSA_FOREST_TRUST_INFORMATION2;
-
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 { unsigned long Index; LSA_FOREST_TRUST_COLLISION_RECORD_TYPE Type; unsigned long Flags; LSA_UNICODE_STRING Name; } LSA_FOREST_TRUST_COLLISION_RECORD, *PLSA_FOREST_TRUST_COLLISION_RECORD; typedef struct _LSA_FOREST_TRUST_COLLISION_INFORMATION { unsigned long RecordCount; [size_is( RecordCount )] PLSA_FOREST_TRUST_COLLISION_RECORD * Entries; } LSA_FOREST_TRUST_COLLISION_INFORMATION, *PLSA_FOREST_TRUST_COLLISION_INFORMATION; typedef LSAPR_HANDLE *PLSAPR_HANDLE; typedef struct _LSAPR_ACCOUNT_INFORMATION { PRPC_SID Sid; } LSAPR_ACCOUNT_INFORMATION, *PLSAPR_ACCOUNT_INFORMATION; typedef struct _LSAPR_ACCOUNT_ENUM_BUFFER { unsigned long EntriesRead; [size_is(EntriesRead)] PLSAPR_ACCOUNT_INFORMATION Information; } LSAPR_ACCOUNT_ENUM_BUFFER, *PLSAPR_ACCOUNT_ENUM_BUFFER; typedef struct _LSAPR_SR_SECURITY_DESCRIPTOR { [range(0,262144)] unsigned long Length; [size_is(Length)] unsigned char * SecurityDescriptor; } LSAPR_SR_SECURITY_DESCRIPTOR, *PLSAPR_SR_SECURITY_DESCRIPTOR; typedef struct _LSAPR_LUID_AND_ATTRIBUTES { LUID Luid; unsigned long Attributes; } LSAPR_LUID_AND_ATTRIBUTES, * PLSAPR_LUID_AND_ATTRIBUTES; typedef struct _LSAPR_PRIVILEGE_SET { [range(0,1000)] unsigned long PrivilegeCount; unsigned long Control; [size_is(PrivilegeCount)] LSAPR_LUID_AND_ATTRIBUTES Privilege[*]; } LSAPR_PRIVILEGE_SET, *PLSAPR_PRIVILEGE_SET; 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 { unsigned long Entries; [size_is(Entries)] PLSAPR_POLICY_PRIVILEGE_DEF Privileges; } LSAPR_PRIVILEGE_ENUM_BUFFER, *PLSAPR_PRIVILEGE_ENUM_BUFFER; typedef struct _LSAPR_CR_CIPHER_VALUE { [range(0, 131088)] unsigned long Length; [range(0, 131088)] unsigned long MaximumLength; [size_is(MaximumLength), length_is(Length)] unsigned char *Buffer; } LSAPR_CR_CIPHER_VALUE, *PLSAPR_CR_CIPHER_VALUE;
-
typedef struct _LSAPR_AES_CIPHER_VALUE { UCHAR AuthData[64]; UCHAR Salt[16]; [range(0, MAX_CIPHER_SIZE)] ULONG cbCipher; [size_is(cbCipher)] PUCHAR Cipher; } LSAPR_AES_CIPHER_VALUE, *PLSAPR_AES_CIPHER_VALUE;
-
typedef struct _LSAPR_TRUSTED_ENUM_BUFFER { unsigned long EntriesRead; [size_is(EntriesRead)] PLSAPR_TRUST_INFORMATION Information; } LSAPR_TRUSTED_ENUM_BUFFER, *PLSAPR_TRUSTED_ENUM_BUFFER; typedef struct _LSAPR_POLICY_ACCOUNT_DOM_INFO { RPC_UNICODE_STRING DomainName; PRPC_SID DomainSid; } LSAPR_POLICY_ACCOUNT_DOM_INFO, *PLSAPR_POLICY_ACCOUNT_DOM_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_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 struct _LSAPR_POLICY_PD_ACCOUNT_INFO { RPC_UNICODE_STRING Name; } LSAPR_POLICY_PD_ACCOUNT_INFO, *PLSAPR_POLICY_PD_ACCOUNT_INFO; typedef struct _LSAPR_POLICY_REPLICA_SRCE_INFO { RPC_UNICODE_STRING ReplicaSource; RPC_UNICODE_STRING ReplicaAccountName; } LSAPR_POLICY_REPLICA_SRCE_INFO, *PLSAPR_POLICY_REPLICA_SRCE_INFO; typedef struct _LSAPR_POLICY_AUDIT_EVENTS_INFO { unsigned char AuditingMode; [size_is(MaximumAuditEventCount)] unsigned long *EventAuditingOptions; [range(0,1000)] unsigned long MaximumAuditEventCount; } LSAPR_POLICY_AUDIT_EVENTS_INFO, *PLSAPR_POLICY_AUDIT_EVENTS_INFO; typedef struct _LSAPR_POLICY_MACHINE_ACCT_INFO { unsigned long Rid; PRPC_SID Sid; } LSAPR_POLICY_MACHINE_ACCT_INFO, *PLSAPR_POLICY_MACHINE_ACCT_INFO; typedef [switch_type(POLICY_INFORMATION_CLASS)] union _LSAPR_POLICY_INFORMATION { [case(PolicyAuditLogInformation)] POLICY_AUDIT_LOG_INFO PolicyAuditLogInfo; [case(PolicyAuditEventsInformation)] LSAPR_POLICY_AUDIT_EVENTS_INFO PolicyAuditEventsInfo; [case(PolicyPrimaryDomainInformation)] LSAPR_POLICY_PRIMARY_DOM_INFO PolicyPrimaryDomainInfo; [case(PolicyAccountDomainInformation)] LSAPR_POLICY_ACCOUNT_DOM_INFO PolicyAccountDomainInfo; [case(PolicyPdAccountInformation)] LSAPR_POLICY_PD_ACCOUNT_INFO PolicyPdAccountInfo; [case(PolicyLsaServerRoleInformation)] POLICY_LSA_SERVER_ROLE_INFO PolicyServerRoleInfo; [case(PolicyReplicaSourceInformation)] LSAPR_POLICY_REPLICA_SRCE_INFO PolicyReplicaSourceInfo; [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_POLICY_DNS_DOMAIN_INFO PolicyDnsDomainInfo; [case(PolicyDnsDomainInformationInt)] LSAPR_POLICY_DNS_DOMAIN_INFO PolicyDnsDomainInfoInt; [case(PolicyLocalAccountDomainInformation)] LSAPR_POLICY_ACCOUNT_DOM_INFO PolicyLocalAccountDomainInfo; [case(PolicyMachineAccountInformation)] LSAPR_POLICY_MACHINE_ACCT_INFO PolicyMachineAccountInfo; } LSAPR_POLICY_INFORMATION, *PLSAPR_POLICY_INFORMATION; typedef struct _POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO { unsigned long QualityOfService; } POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO, *PPOLICY_DOMAIN_QUALITY_OF_SERVICE_INFO; typedef struct _LSAPR_POLICY_DOMAIN_EFS_INFO { unsigned long InfoLength; [size_is(InfoLength)] unsigned char * EfsBlob; } LSAPR_POLICY_DOMAIN_EFS_INFO, *PLSAPR_POLICY_DOMAIN_EFS_INFO; 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_NAME_INFO { RPC_UNICODE_STRING Name; } LSAPR_TRUSTED_DOMAIN_NAME_INFO, *PLSAPR_TRUSTED_DOMAIN_NAME_INFO; typedef struct _LSAPR_TRUSTED_CONTROLLERS_INFO { [range(0,5)] unsigned long Entries; [size_is(Entries)] PRPC_UNICODE_STRING Names; } LSAPR_TRUSTED_CONTROLLERS_INFO, *PLSAPR_TRUSTED_CONTROLLERS_INFO; 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_TRUSTED_DOMAIN_INFORMATION_EX { RPC_UNICODE_STRING Name; RPC_UNICODE_STRING FlatName; PRPC_SID Sid; unsigned long TrustDirection; unsigned long TrustType; unsigned long TrustAttributes; } LSAPR_TRUSTED_DOMAIN_INFORMATION_EX, *PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX; typedef struct _LSAPR_AUTH_INFORMATION { LARGE_INTEGER LastUpdateTime; unsigned long AuthType; [range(0,65536)] unsigned long AuthInfoLength; [size_is(AuthInfoLength)] unsigned char * AuthInfo; } LSAPR_AUTH_INFORMATION, *PLSAPR_AUTH_INFORMATION; typedef struct _LSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION { [range(0,1)] unsigned long IncomingAuthInfos; PLSAPR_AUTH_INFORMATION IncomingAuthenticationInformation; PLSAPR_AUTH_INFORMATION IncomingPreviousAuthenticationInformation; [range(0,1)] unsigned long OutgoingAuthInfos; PLSAPR_AUTH_INFORMATION OutgoingAuthenticationInformation; PLSAPR_AUTH_INFORMATION OutgoingPreviousAuthenticationInformation; } LSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION, *PLSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION; 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 LSAPR_TRUST_INFORMATION LSAPR_TRUSTED_DOMAIN_INFORMATION_BASIC; typedef struct _LSAPR_TRUSTED_DOMAIN_AUTH_BLOB { [range(0, 65536)] unsigned long AuthSize; [size_is( AuthSize )] unsigned char * 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_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;
-
#define MAX_AUTHBLOB_SIZE ( 64 * 1024 ) typedef struct _LSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION_INTERNAL_AES { UCHAR AuthData[64]; UCHAR Salt[16]; [range(0, MAX_AUTHBLOB_SIZE)] ULONG cbCipher; [size_is(cbCipher)] PUCHAR Cipher; } LSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION_INTERNAL_AES, *PLSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION_INTERNAL_AES; typedef struct _LSAPR_TRUSTED_DOMAIN_FULL_INFORMATION_INTERNAL_AES { LSAPR_TRUSTED_DOMAIN_INFORMATION_EX Information; TRUSTED_POSIX_OFFSET_INFO PosixOffset; LSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION_INTERNAL_AES AuthInformation; } LSAPR_TRUSTED_DOMAIN_FULL_INFORMATION_INTERNAL_AES, *PLSAPR_TRUSTED_DOMAIN_FULL_INFORMATION_INTERNAL_AES;
-
typedef struct _LSAPR_TRUSTED_DOMAIN_INFORMATION_EX2 { RPC_UNICODE_STRING Name; RPC_UNICODE_STRING FlatName; PRPC_SID Sid; unsigned long TrustDirection; unsigned long TrustType; unsigned long TrustAttributes; unsigned long ForestTrustLength; [size_is(ForestTrustLength)] unsigned char * ForestTrustInfo; } LSAPR_TRUSTED_DOMAIN_INFORMATION_EX2, *PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX2; 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 { unsigned long 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; [case(TrustedDomainAuthInformationInternalAes)] LSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION_INTERNAL_AES TrustedAuthInfoInternalAes; [case(TrustedDomainFullInformationInternalAes)] LSAPR_TRUSTED_DOMAIN_FULL_INFORMATION_INTERNAL_AES TrustedFullInfoInternalAes; } LSAPR_TRUSTED_DOMAIN_INFO, *PLSAPR_TRUSTED_DOMAIN_INFO; typedef struct _LSAPR_USER_RIGHT_SET { [range(0,256)] unsigned long Entries; [size_is(Entries)] PRPC_UNICODE_STRING UserRights; } LSAPR_USER_RIGHT_SET, *PLSAPR_USER_RIGHT_SET; typedef struct _LSAPR_TRUSTED_ENUM_BUFFER_EX { unsigned long EntriesRead; [size_is(EntriesRead)] PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX EnumerationBuffer; } LSAPR_TRUSTED_ENUM_BUFFER_EX, *PLSAPR_TRUSTED_ENUM_BUFFER_EX; // // Methods // // // The following notation conventions are used for some IDL methods: // // void // Lsar_LSA_TM_XX( void ); // // (where XX represents the opnum.) // // This notation indicates that the method is defined in this // interface but is described in the // Local Security Authority (Translation Methods) protocol // specification. // // void OpnumXXNotUsedOnWire(void); // // (where XX represents the opnum.) // // This notation indicates that the method is defined in this // interface but is not seen on the wire. // // Opnum 0 NTSTATUS LsarClose( [in,out] LSAPR_HANDLE *ObjectHandle ); // Opnum 1 void Opnum1NotUsedOnWire(void); // Opnum 2 NTSTATUS LsarEnumeratePrivileges( [in] LSAPR_HANDLE PolicyHandle, [in, out] unsigned long *EnumerationContext, [out] PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer, [in] unsigned long PreferedMaximumLength ); // Opnum 3 NTSTATUS LsarQuerySecurityObject( [in] LSAPR_HANDLE ObjectHandle, [in] SECURITY_INFORMATION SecurityInformation, [out] PLSAPR_SR_SECURITY_DESCRIPTOR *SecurityDescriptor ); // Opnum 4 NTSTATUS LsarSetSecurityObject( [in] LSAPR_HANDLE ObjectHandle, [in] SECURITY_INFORMATION SecurityInformation, [in] PLSAPR_SR_SECURITY_DESCRIPTOR SecurityDescriptor ); // Opnum 5 void Opnum5NotUsedOnWire(void); // Opnum 6 NTSTATUS LsarOpenPolicy( [in,unique] wchar_t *SystemName, [in] PLSAPR_OBJECT_ATTRIBUTES ObjectAttributes, [in] ACCESS_MASK DesiredAccess, [out] LSAPR_HANDLE *PolicyHandle ); // Opnum 7 NTSTATUS LsarQueryInformationPolicy( [in] LSAPR_HANDLE PolicyHandle, [in] POLICY_INFORMATION_CLASS InformationClass, [out, switch_is(InformationClass)] PLSAPR_POLICY_INFORMATION *PolicyInformation ); // Opnum 8 NTSTATUS LsarSetInformationPolicy( [in] LSAPR_HANDLE PolicyHandle, [in] POLICY_INFORMATION_CLASS InformationClass, [in, switch_is(InformationClass)] PLSAPR_POLICY_INFORMATION PolicyInformation ); // Opnum 9 void Opnum9NotUsedOnWire(void); // Opnum 10 NTSTATUS LsarCreateAccount( [in] LSAPR_HANDLE PolicyHandle, [in] PRPC_SID AccountSid, [in] ACCESS_MASK DesiredAccess, [out] LSAPR_HANDLE *AccountHandle ); // Opnum 11 NTSTATUS LsarEnumerateAccounts( [in] LSAPR_HANDLE PolicyHandle, [in] [out] unsigned long *EnumerationContext, [out] PLSAPR_ACCOUNT_ENUM_BUFFER EnumerationBuffer, [in] unsigned long PreferedMaximumLength ); // Opnum 12 NTSTATUS LsarCreateTrustedDomain( [in] LSAPR_HANDLE PolicyHandle, [in] PLSAPR_TRUST_INFORMATION TrustedDomainInformation, [in] ACCESS_MASK DesiredAccess, [out] LSAPR_HANDLE *TrustedDomainHandle ); // Opnum 13 NTSTATUS LsarEnumerateTrustedDomains( [in] LSAPR_HANDLE PolicyHandle, [in] [out] unsigned long *EnumerationContext, [out] PLSAPR_TRUSTED_ENUM_BUFFER EnumerationBuffer, [in] unsigned long PreferedMaximumLength ); // Opnum 14 void Lsar_LSA_TM_14( void ); // Opnum 15 void Lsar_LSA_TM_15( void ); // Opnum 16 NTSTATUS LsarCreateSecret( [in] LSAPR_HANDLE PolicyHandle, [in] PRPC_UNICODE_STRING SecretName, [in] ACCESS_MASK DesiredAccess, [out] LSAPR_HANDLE *SecretHandle ); // Opnum 17 NTSTATUS LsarOpenAccount( [in] LSAPR_HANDLE PolicyHandle, [in] PRPC_SID AccountSid, [in] ACCESS_MASK DesiredAccess, [out] LSAPR_HANDLE *AccountHandle ); // Opnum 18 NTSTATUS LsarEnumeratePrivilegesAccount( [in] LSAPR_HANDLE AccountHandle, [out] PLSAPR_PRIVILEGE_SET *Privileges ); // Opnum 19 NTSTATUS LsarAddPrivilegesToAccount( [in] LSAPR_HANDLE AccountHandle, [in] PLSAPR_PRIVILEGE_SET Privileges ); // Opnum 20 NTSTATUS LsarRemovePrivilegesFromAccount( [in] LSAPR_HANDLE AccountHandle, [in] unsigned char AllPrivileges, [in, unique] PLSAPR_PRIVILEGE_SET Privileges ); // Opnum 21 void Opnum21NotUsedOnWire(void); // Opnum 22 void Opnum22NotUsedOnWire(void); // Opnum 23 NTSTATUS LsarGetSystemAccessAccount( [in] LSAPR_HANDLE AccountHandle, [out] unsigned long *SystemAccess ); // Opnum 24 NTSTATUS LsarSetSystemAccessAccount( [in] LSAPR_HANDLE AccountHandle, [in] unsigned long SystemAccess ); // Opnum 25 NTSTATUS LsarOpenTrustedDomain( [in] LSAPR_HANDLE PolicyHandle, [in] PRPC_SID TrustedDomainSid, [in] ACCESS_MASK DesiredAccess, [out] LSAPR_HANDLE *TrustedDomainHandle ); // Opnum 26 NTSTATUS LsarQueryInfoTrustedDomain( [in] LSAPR_HANDLE TrustedDomainHandle, [in] TRUSTED_INFORMATION_CLASS InformationClass, [out, switch_is(InformationClass)] PLSAPR_TRUSTED_DOMAIN_INFO *TrustedDomainInformation ); // Opnum 27 NTSTATUS LsarSetInformationTrustedDomain( [in] LSAPR_HANDLE TrustedDomainHandle, [in] TRUSTED_INFORMATION_CLASS InformationClass, [in, switch_is(InformationClass)] PLSAPR_TRUSTED_DOMAIN_INFO TrustedDomainInformation ); // Opnum 28 NTSTATUS LsarOpenSecret( [in] LSAPR_HANDLE PolicyHandle, [in] PRPC_UNICODE_STRING SecretName, [in] ACCESS_MASK DesiredAccess, [out] LSAPR_HANDLE *SecretHandle ); // Opnum 29 NTSTATUS LsarSetSecret( [in] LSAPR_HANDLE SecretHandle, [in, unique] PLSAPR_CR_CIPHER_VALUE EncryptedCurrentValue, [in, unique] PLSAPR_CR_CIPHER_VALUE EncryptedOldValue ); // Opnum 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 ); // Opnum 31 NTSTATUS LsarLookupPrivilegeValue( [in] LSAPR_HANDLE PolicyHandle, [in] PRPC_UNICODE_STRING Name, [out] PLUID Value ); // Opnum 32 NTSTATUS LsarLookupPrivilegeName( [in] LSAPR_HANDLE PolicyHandle, [in] PLUID Value, [out] PRPC_UNICODE_STRING *Name ); // Opnum 33 NTSTATUS LsarLookupPrivilegeDisplayName( [in] LSAPR_HANDLE PolicyHandle, [in] PRPC_UNICODE_STRING Name, [in] short ClientLanguage, [in] short ClientSystemDefaultLanguage, [out] PRPC_UNICODE_STRING *DisplayName, [out] unsigned short *LanguageReturned ); // Opnum 34 NTSTATUS LsarDeleteObject( [in,out] LSAPR_HANDLE *ObjectHandle ); // Opnum 35 NTSTATUS LsarEnumerateAccountsWithUserRight( [in] LSAPR_HANDLE PolicyHandle, [in,unique] PRPC_UNICODE_STRING UserRight, [out] PLSAPR_ACCOUNT_ENUM_BUFFER EnumerationBuffer ); // Opnum 36 NTSTATUS LsarEnumerateAccountRights( [in] LSAPR_HANDLE PolicyHandle, [in] PRPC_SID AccountSid, [out] PLSAPR_USER_RIGHT_SET UserRights ); // Opnum 37 NTSTATUS LsarAddAccountRights( [in] LSAPR_HANDLE PolicyHandle, [in] PRPC_SID AccountSid, [in] PLSAPR_USER_RIGHT_SET UserRights ); // Opnum 38 NTSTATUS LsarRemoveAccountRights( [in] LSAPR_HANDLE PolicyHandle, [in] PRPC_SID AccountSid, [in] unsigned char AllRights, [in] PLSAPR_USER_RIGHT_SET UserRights ); // Opnum 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 ); // Opnum 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 ); // Opnum 41 NTSTATUS LsarDeleteTrustedDomain( [in] LSAPR_HANDLE PolicyHandle, [in] PRPC_SID TrustedDomainSid ); // Opnum 42 NTSTATUS LsarStorePrivateData( [in] LSAPR_HANDLE PolicyHandle, [in] PRPC_UNICODE_STRING KeyName, [in,unique] PLSAPR_CR_CIPHER_VALUE EncryptedData ); // Opnum 43 NTSTATUS LsarRetrievePrivateData( [in] LSAPR_HANDLE PolicyHandle, [in] PRPC_UNICODE_STRING KeyName, [in, out] PLSAPR_CR_CIPHER_VALUE *EncryptedData ); // Opnum 44 NTSTATUS LsarOpenPolicy2( [in,unique,string] wchar_t *SystemName, [in] PLSAPR_OBJECT_ATTRIBUTES ObjectAttributes, [in] ACCESS_MASK DesiredAccess, [out] LSAPR_HANDLE *PolicyHandle ); // Opnum 45 void Lsar_LSA_TM_45( void ); // Opnum 46 NTSTATUS LsarQueryInformationPolicy2( [in] LSAPR_HANDLE PolicyHandle, [in] POLICY_INFORMATION_CLASS InformationClass, [out, switch_is(InformationClass)] PLSAPR_POLICY_INFORMATION *PolicyInformation ); // Opnum 47 NTSTATUS LsarSetInformationPolicy2( [in] LSAPR_HANDLE PolicyHandle, [in] POLICY_INFORMATION_CLASS InformationClass, [in, switch_is(InformationClass)] PLSAPR_POLICY_INFORMATION PolicyInformation ); // Opnum 48 NTSTATUS LsarQueryTrustedDomainInfoByName( [in] LSAPR_HANDLE PolicyHandle, [in] PRPC_UNICODE_STRING TrustedDomainName, [in] TRUSTED_INFORMATION_CLASS InformationClass, [out, switch_is(InformationClass)] PLSAPR_TRUSTED_DOMAIN_INFO *TrustedDomainInformation ); // Opnum 49 NTSTATUS LsarSetTrustedDomainInfoByName( [in] LSAPR_HANDLE PolicyHandle, [in] PRPC_UNICODE_STRING TrustedDomainName, [in] TRUSTED_INFORMATION_CLASS InformationClass, [in, switch_is(InformationClass)] PLSAPR_TRUSTED_DOMAIN_INFO TrustedDomainInformation ); // Opnum 50 NTSTATUS LsarEnumerateTrustedDomainsEx( [in] LSAPR_HANDLE PolicyHandle, [in, out] unsigned long *EnumerationContext, [out] PLSAPR_TRUSTED_ENUM_BUFFER_EX EnumerationBuffer, [in] unsigned long PreferedMaximumLength ); // Opnum 51 NTSTATUS LsarCreateTrustedDomainEx( [in] LSAPR_HANDLE PolicyHandle, [in] PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation, [in] PLSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION AuthenticationInformation, [in] ACCESS_MASK DesiredAccess, [out] LSAPR_HANDLE *TrustedDomainHandle ); // Opnum 52 void Opnum52NotUsedOnWire(void); // Opnum 53 NTSTATUS LsarQueryDomainInformationPolicy( [in] LSAPR_HANDLE PolicyHandle, [in] POLICY_DOMAIN_INFORMATION_CLASS InformationClass, [out, switch_is(InformationClass)] PLSAPR_POLICY_DOMAIN_INFORMATION *PolicyDomainInformation ); // Opnum 54 NTSTATUS LsarSetDomainInformationPolicy( [in] LSAPR_HANDLE PolicyHandle, [in] POLICY_DOMAIN_INFORMATION_CLASS InformationClass, [in, unique, switch_is(InformationClass)] PLSAPR_POLICY_DOMAIN_INFORMATION PolicyDomainInformation ); // Opnum 55 NTSTATUS LsarOpenTrustedDomainByName( [in] LSAPR_HANDLE PolicyHandle, [in] PRPC_UNICODE_STRING TrustedDomainName, [in] ACCESS_MASK DesiredAccess, [out] LSAPR_HANDLE *TrustedDomainHandle ); // Opnum 56 void Opnum56NotUsedOnWire(void); // Opnum 57 void Lsar_LSA_TM_57( void ); // Opnum 58 void Lsar_LSA_TM_58( void ); // Opnum 59 NTSTATUS LsarCreateTrustedDomainEx2( [in] LSAPR_HANDLE PolicyHandle, [in] PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation, [in] PLSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION_INTERNAL AuthenticationInformation, [in] ACCESS_MASK DesiredAccess, [out] LSAPR_HANDLE *TrustedDomainHandle ); // Opnum 60 void Opnum60NotUsedOnWire(void); // Opnum 61 void Opnum61NotUsedOnWire(void); // Opnum 62 void Opnum62NotUsedOnWire(void); // Opnum 63 void Opnum63NotUsedOnWire(void); // Opnum 64 void Opnum64NotUsedOnWire(void); // Opnum 65 void Opnum65NotUsedOnWire(void); // Opnum 66 void Opnum66NotUsedOnWire(void); // Opnum 67 void Opnum67NotUsedOnWire(void); // Opnum 68 void Lsar_LSA_TM_68( void ); // Opnum 69 void Opnum69NotUsedOnWire(void); // Opnum 70 void Opnum70NotUsedOnWire(void); // Opnum 71 void Opnum71NotUsedOnWire(void); // Opnum 72 void Opnum72NotUsedOnWire(void); // Opnum 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 ); // Opnum 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] unsigned char CheckOnly, [out] PLSA_FOREST_TRUST_COLLISION_INFORMATION * CollisionInfo ); // Opnum 75 void Opnum75NotUsedOnWire(void); // Opnum 76 void Opnum76NotUsedOnWire(void); // Opnum 77 void Opnum77NotUsedOnWire(void); // Opnum 78 void Opnum78NotUsedOnWire(void); // Opnum 79 void Opnum79NotUsedOnWire(void); // Opnum 80 void Opnum80NotUsedOnWire(void); // Opnum 81 void Opnum81NotUsedOnWire(void); // Opnum 82 void Opnum82NotUsedOnWire(void); // Opnum 83 void Opnum83NotUsedOnWire(void); // Opnum 84 void Opnum84NotUsedOnWire(void); // Opnum 85 void Opnum85NotUsedOnWire(void); // Opnum 86 void Opnum86NotUsedOnWire(void); // Opnum 87 void Opnum87NotUsedOnWire(void); // Opnum 88 void Opnum88NotUsedOnWire(void); // Opnum 89 void Opnum89NotUsedOnWire(void); // Opnum 90 void Opnum90NotUsedOnWire(void); // Opnum 91 void Opnum91NotUsedOnWire(void); // Opnum 92 void Opnum92NotUsedOnWire(void); // Opnum 93 void Opnum93NotUsedOnWire(void); // Opnum 94 void Opnum94NotUsedOnWire(void); // Opnum 95 void Opnum95NotUsedOnWire(void); // Opnum 96 void Opnum96NotUsedOnWire(void); // Opnum 97 void Opnum97NotUsedOnWire(void); // Opnum 98 void Opnum98NotUsedOnWire(void); // Opnum 99 void Opnum99NotUsedOnWire(void); // Opnum 100 void Opnum100NotUsedOnWire(void); // Opnum 101 void Opnum101NotUsedOnWire(void); // Opnum 102 void Opnum102NotUsedOnWire(void); // Opnum 103 void Opnum103NotUsedOnWire(void); // Opnum 104 void Opnum104NotUsedOnWire(void); // Opnum 105 void Opnum105NotUsedOnWire(void); // Opnum 106 void Opnum106NotUsedOnWire(void); // Opnum 107 void Opnum107NotUsedOnWire(void); // Opnum 108 void Opnum108NotUsedOnWire(void); // Opnum 109 void Opnum109NotUsedOnWire(void); // Opnum 110 void Opnum110NotUsedOnWire(void); // Opnum 111 void Opnum111NotUsedOnWire(void); // Opnum 112 void Opnum112NotUsedOnWire(void); // Opnum 113 void Opnum113NotUsedOnWire(void); // Opnum 114 void Opnum114NotUsedOnWire(void); // Opnum 115 void Opnum115NotUsedOnWire(void); // Opnum 116 void Opnum116NotUsedOnWire(void); // Opnum 117 void Opnum117NotUsedOnWire(void); // Opnum 118 void Opnum118NotUsedOnWire(void); // Opnum 119 void Opnum119NotUsedOnWire(void); // Opnum 120 void Opnum120NotUsedOnWire(void); // Opnum 121 void Opnum121NotUsedOnWire(void); // Opnum 122 void Opnum122NotUsedOnWire(void); // Opnum 123 void Opnum123NotUsedOnWire(void); // Opnum 124 void Opnum124NotUsedOnWire(void); // Opnum 125 void Opnum125NotUsedOnWire(void); // Opnum 126 void Opnum126NotUsedOnWire(void); // Opnum 127 void Opnum127NotUsedOnWire(void); // Opnum 128 void Opnum128NotUsedOnWire(void);
-
// Opnum 129 NTSTATUS LsarCreateTrustedDomainEx3( [in] LSAPR_HANDLE PolicyHandle, [in] PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation, [in] PLSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION_INTERNAL_AES AuthenticationInformation, [in] ACCESS_MASK DesiredAccess, [out] LSAPR_HANDLE* TrustedDomainHandle ); // Opnum 130 typedef [handle] LPWSTR PLSAPR_SERVER_NAME, *PPLSAPR_SERVER_NAME; typedef struct _LSAPR_REVISION_INFO_V1 { ULONG Revision; ULONG SupportedFeatures; } LSAPR_REVISION_INFO_V1, *PLSAPR_REVISION_INFO_V1; typedef [switch_type(ULONG)] union { [case(1)] LSAPR_REVISION_INFO_V1 V1; } LSAPR_REVISION_INFO, *PLSAPR_REVISION_INFO; NTSTATUS LsarOpenPolicy3( [in,unique,string] PLSAPR_SERVER_NAME SystemName, [in] PLSAPR_OBJECT_ATTRIBUTES ObjectAttributes, [in] ACCESS_MASK DesiredAccess, [in] ULONG InVersion, [in] [switch_is(InVersion)] LSAPR_REVISION_INFO* InRevisionInfo, [out] ULONG* OutVersion, [out] [switch_is(*OutVersion)] LSAPR_REVISION_INFO* OutRevisionInfo, [out] LSAPR_HANDLE* PolicyHandle );
-
// Opnum 131 void Opnum131NotUsedOnWire(void); // Opnum 132 NTSTATUS LsarQueryForestTrustInformation2( [in] LSAPR_HANDLE PolicyHandle, [in] PLSA_UNICODE_STRING TrustedDomainName, [in] LSA_FOREST_TRUST_RECORD_TYPE HighestRecordType, [out] PLSA_FOREST_TRUST_INFORMATION2* ForestTrustInfo2 ); // Opnum 133 NTSTATUS LsarSetForestTrustInformation2( [in] LSAPR_HANDLE PolicyHandle, [in] PLSA_UNICODE_STRING TrustedDomainName, [in] LSA_FOREST_TRUST_RECORD_TYPE HighestRecordType, [in] PLSA_FOREST_TRUST_INFORMATION2 ForestTrustInfo2, [in] unsigned char CheckOnly, [out] PLSA_FOREST_TRUST_COLLISION_INFORMATION* CollisionInfo ); // Opnum 134 void Opnum134NotUsedOnWire(void); // Opnum 135 NTSTATUS LsarOpenPolicyWithCreds( [in] handle_t BindingHandle, [in] PLSAPR_OBJECT_ATTRIBUTES ObjectAttributes, [in] ACCESS_MASK DesiredAccess, [in] ULONG InVersion, [in] [switch_is(InVersion)] LSAPR_REVISION_INFO* InRevisionInfo, [out] ULONG* OutVersion, [out] [switch_is(*OutVersion)] LSAPR_REVISION_INFO* OutRevisionInfo, [out] LSAPR_HANDLE* PolicyHandle );
-
// Opnum 136 NTSTATUS LsarOpenSecret2( [in] LSAPR_HANDLE PolicyHandle, [in] PLSAPR_AES_CIPHER_VALUE EncryptedSecretName, [in] ACCESS_MASK DesiredAccess, [out] LSAPR_HANDLE *SecretHandle ); // Opnum 137 NTSTATUS LsarCreateSecret2( [in] LSAPR_HANDLE PolicyHandle, [in] PLSAPR_AES_CIPHER_VALUE EncryptedSecretName, [in] ACCESS_MASK DesiredAccess, [out] LSAPR_HANDLE *SecretHandle ); // Opnum 138 NTSTATUS LsarSetSecret2( [in] LSAPR_HANDLE SecretHandle, [in, unique] PLSAPR_AES_CIPHER_VALUE EncryptedCurrentValue, [in, unique] PLSAPR_AES_CIPHER_VALUE EncryptedOldValue ); // Opnum 139 NTSTATUS LsarQuerySecret2( [in] LSAPR_HANDLE SecretHandle, [in, out, unique] PLSAPR_AES_CIPHER_VALUE *EncryptedCurrentValue, [in, out, unique] PLARGE_INTEGER CurrentValueSetTime, [in, out, unique] PLSAPR_AES_CIPHER_VALUE *EncryptedOldValue, [in, out, unique] PLARGE_INTEGER OldValueSetTime ); // Opnum 140 NTSTATUS LsarStorePrivateData2( [in] LSAPR_HANDLE PolicyHandle, [in] PLSAPR_AES_CIPHER_VALUE EncryptedKeyName, [in,unique] PLSAPR_AES_CIPHER_VALUE EncryptedData ); // Opnum 141 NTSTATUS LsarRetrievePrivateData2( [in] LSAPR_HANDLE PolicyHandle, [in] PLSAPR_AES_CIPHER_VALUE EncryptedKeyName, [in, out, unique] PLSAPR_AES_CIPHER_VALUE *EncryptedData );
-
}