Author: hpoussin Date: Sat Aug 2 10:45:59 2008 New Revision: 35040
URL: http://svn.reactos.org/svn/reactos?rev=35040&view=rev Log: Add lots of missing functions to LSA RPC interface Fix existing ones to have same prototypes as MS Windows
Modified: trunk/reactos/dll/win32/advapi32/sec/lsa.c trunk/reactos/dll/win32/lsasrv/lsarpc.c trunk/reactos/dll/win32/lsasrv/lsasrv.rbuild trunk/reactos/include/reactos/idl/lsa.idl
Modified: trunk/reactos/dll/win32/advapi32/sec/lsa.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/advapi32/sec/lsa.... ============================================================================== --- trunk/reactos/dll/win32/advapi32/sec/lsa.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/advapi32/sec/lsa.c [iso-8859-1] Sat Aug 2 10:45:59 2008 @@ -93,7 +93,7 @@ LSAHandleBind();
return LsarClose(LSABindingHandle, - (unsigned long)ObjectHandle); + (unsigned long *)&ObjectHandle); }
Modified: trunk/reactos/dll/win32/lsasrv/lsarpc.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/lsasrv/lsarpc.c?r... ============================================================================== --- trunk/reactos/dll/win32/lsasrv/lsarpc.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/lsasrv/lsarpc.c [iso-8859-1] Sat Aug 2 10:45:59 2008 @@ -8,8 +8,7 @@
#include "lsa_s.h"
-#define NDEBUG -#include <debug.h> +#include <wine/debug.h>
#define POLICY_DELETE (RTL_HANDLE_VALID << 1) typedef struct _LSAR_POLICY_HANDLE @@ -22,10 +21,12 @@ static RTL_CRITICAL_SECTION PolicyHandleTableLock; static RTL_HANDLE_TABLE PolicyHandleTable;
+WINE_DEFAULT_DEBUG_CHANNEL(lsasrv); + /* FUNCTIONS ***************************************************************/
-static NTSTATUS -ReferencePolicyHandle(IN LSA_HANDLE ObjectHandle, +/*static*/ NTSTATUS +ReferencePolicyHandle(IN LSAPR_HANDLE ObjectHandle, IN ACCESS_MASK DesiredAccess, OUT PLSAR_POLICY_HANDLE *Policy) { @@ -56,7 +57,7 @@ return Status; }
-static VOID +/*static*/ VOID DereferencePolicyHandle(IN OUT PLSAR_POLICY_HANDLE Policy, IN BOOLEAN Delete) { @@ -90,7 +91,7 @@ sizeof(LSAR_POLICY_HANDLE), &PolicyHandleTable);
- DPRINT("LsarStartRpcServer() called"); + TRACE("LsarStartRpcServer() called");
Status = RpcServerUseProtseqEpW(L"ncacn_np", 10, @@ -98,7 +99,7 @@ NULL); if (Status != RPC_S_OK) { - DPRINT1("RpcServerUseProtseqEpW() failed (Status %lx)\n", Status); + WARN("RpcServerUseProtseqEpW() failed (Status %lx)\n", Status); return; }
@@ -107,31 +108,33 @@ NULL); if (Status != RPC_S_OK) { - DPRINT1("RpcServerRegisterIf() failed (Status %lx)\n", Status); + WARN("RpcServerRegisterIf() failed (Status %lx)\n", Status); return; }
Status = RpcServerListen(1, 20, TRUE); if (Status != RPC_S_OK) { - DPRINT1("RpcServerListen() failed (Status %lx)\n", Status); + WARN("RpcServerListen() failed (Status %lx)\n", Status); return; }
- DPRINT("LsarStartRpcServer() done\n"); -} + TRACE("LsarStartRpcServer() done\n"); +} +
/* Function 0 */ -NTSTATUS -LsarClose(IN handle_t BindingHandle, - IN unsigned long ObjectHandle) -{ +NTSTATUS LsarClose( + handle_t hBinding, + LSAPR_HANDLE *ObjectHandle) +{ +#if 0 PLSAR_POLICY_HANDLE Policy = NULL; NTSTATUS Status;
- DPRINT("LsarClose(0x%p) called!\n", ObjectHandle); - - Status = ReferencePolicyHandle((LSA_HANDLE)ObjectHandle, + TRACE("0x%p\n", ObjectHandle); + + Status = ReferencePolicyHandle(*ObjectHandle, 0, &Policy); if (NT_SUCCESS(Status)) @@ -142,15 +145,974 @@ }
return Status; -} +#endif + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} +
/* Function 1 */ -NTSTATUS -LsarDelete(IN handle_t BindingHandle, - IN unsigned long ObjectHandle) -{ - DPRINT1("LsarDelete(0x%p) UNIMPLEMENTED!\n", ObjectHandle); - return STATUS_ACCESS_DENIED; -} +NTSTATUS LsarDelete( + handle_t hBinding, + LSAPR_HANDLE ObjectHandle) +{ + /* Deprecated */ + return STATUS_NOT_SUPPORTED; +} + + +/* Function 2 */ +NTSTATUS LsarEnumeratePrivileges( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + DWORD *EnumerationContext, + PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer, + DWORD PreferedMaximumLength) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 3 */ +NTSTATUS LsarQuerySecurityObject( + handle_t hBinding, + LSAPR_HANDLE ObjectHandle, + SECURITY_INFORMATION SecurityInformation, + PLSAPR_SR_SECURITY_DESCRIPTOR *SecurityDescriptor) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 4 */ +NTSTATUS LsarSetSecurityObject( + handle_t hBinding, + LSAPR_HANDLE ObjectHandle, + SECURITY_INFORMATION SecurityInformation, + PLSAPR_SR_SECURITY_DESCRIPTOR SecurityDescriptor) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 5 */ +NTSTATUS LsarChangePassword( + handle_t hBinding, + PRPC_UNICODE_STRING String1, + PRPC_UNICODE_STRING String2, + PRPC_UNICODE_STRING String3, + PRPC_UNICODE_STRING String4, + PRPC_UNICODE_STRING String5) +{ + /* Deprecated */ + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 6 */ +NTSTATUS LsarOpenPolicy( + handle_t hBinding, + LPWSTR SystemName, + PLSAPR_OBJECT_ATTRIBUTES ObjectAttributes, + ACCESS_MASK DesiredAccess, + LSAPR_HANDLE *PolicyHandle) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 7 */ +NTSTATUS LsarQueryInformationPolicy( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + POLICY_INFORMATION_CLASS InformationClass, + unsigned long PolicyInformation) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 8 */ +NTSTATUS LsarSetInformationPolicy( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + POLICY_INFORMATION_CLASS InformationClass, + unsigned long *PolicyInformation) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 9 */ +NTSTATUS LsarClearAuditLog( + handle_t hBinding, + LSAPR_HANDLE ObjectHandle) +{ + /* Deprecated */ + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 10 */ +NTSTATUS LsarCreateAccount( + handle_t hBinding, + PRPC_SID AccountSid, + ACCESS_MASK DesiredAccess, + LSAPR_HANDLE *AccountHandle) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 11 */ +NTSTATUS LsarEnumerateAccounts( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + DWORD *EnumerationContext, + PLSAPR_ACCOUNT_ENUM_BUFFER EnumerationBuffer, + DWORD PreferedMaximumLength) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 12 */ +NTSTATUS LsarCreateTrustedDomain( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + PLSAPR_TRUST_INFORMATION TrustedDomainInformation, + ACCESS_MASK DesiredAccess, + LSAPR_HANDLE *TrustedDomainHandle) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 13 */ +NTSTATUS LsarEnumerateTrustedDomains( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + DWORD *EnumerationContext, + PLSAPR_TRUSTED_ENUM_BUFFER EnumerationBuffer, + DWORD PreferedMaximumLength) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 14 */ +NTSTATUS LsarLookupNames( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + DWORD Count, + PRPC_UNICODE_STRING Names, + PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains, + PLSAPR_TRANSLATED_SIDS TranslatedSids, + LSAP_LOOKUP_LEVEL LookupLevel, + DWORD *MappedCount) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 15 */ +NTSTATUS LsarLookupSids( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + PLSAPR_SID_ENUM_BUFFER SidEnumBuffer, + PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains, + PLSAPR_TRANSLATED_NAMES TranslatedNames, + LSAP_LOOKUP_LEVEL LookupLevel, + DWORD *MappedCount) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 16 */ +NTSTATUS LsarCreateSecret( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + PRPC_UNICODE_STRING SecretName, + ACCESS_MASK DesiredAccess, + LSAPR_HANDLE *SecretHandle) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 17 */ +NTSTATUS LsarOpenAccount( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + PRPC_SID AccountSid, + ACCESS_MASK DesiredAccess, + LSAPR_HANDLE *AccountHandle) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 18 */ +NTSTATUS LsarEnumeratePrivilegesAccount( + handle_t hBinding, + LSAPR_HANDLE AccountHandle, + PLSAPR_PRIVILEGE_SET *Privileges) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 19 */ +NTSTATUS LsarAddPrivilegesToAccount( + handle_t hBinding, + LSAPR_HANDLE AccountHandle, + PLSAPR_PRIVILEGE_SET Privileges) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 20 */ +NTSTATUS LsarRemovePrivilegesFromAccount( + handle_t hBinding, + LSAPR_HANDLE AccountHandle, + BOOL AllPrivileges, + PLSAPR_PRIVILEGE_SET Privileges) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 21 */ +NTSTATUS LsarGetQuotasForAccount( + handle_t hBinding, + LSAPR_HANDLE AccountHandle, + PQUOTA_LIMITS QuotaLimits) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 22 */ +NTSTATUS LsarSetQuotasForAccount( + handle_t hBinding, + LSAPR_HANDLE AccountHandle, + PQUOTA_LIMITS QuotaLimits) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 23 */ +NTSTATUS LsarGetSystemAccessAccount( + handle_t hBinding, + LSAPR_HANDLE AccountHandle, + ACCESS_MASK *SystemAccess) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 24 */ +NTSTATUS LsarSetSystemAccessAccount( + handle_t hBinding, + LSAPR_HANDLE AccountHandle, + ACCESS_MASK SystemAccess) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 25 */ +NTSTATUS LsarOpenTrustedDomain( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + PRPC_SID TrustedDomainSid, + ACCESS_MASK DesiredAccess, + LSAPR_HANDLE *TrustedDomainHandle) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 26 */ +NTSTATUS LsarQueryInfoTrustedDomain( + handle_t hBinding, + LSAPR_HANDLE TrustedDomainHandle, + TRUSTED_INFORMATION_CLASS InformationClass, + PLSAPR_TRUSTED_DOMAIN_INFO *TrustedDomainInformation) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 27 */ +NTSTATUS LsarSetInformationTrustedDomain( + handle_t hBinding, + LSAPR_HANDLE TrustedDomainHandle, + TRUSTED_INFORMATION_CLASS InformationClass, + PLSAPR_TRUSTED_DOMAIN_INFO TrustedDomainInformation) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 28 */ +NTSTATUS LsarOpenSecret( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + PRPC_UNICODE_STRING SecretName, + ACCESS_MASK DesiredAccess, + LSAPR_HANDLE *SecretHandle) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 29 */ +NTSTATUS LsarSetSecret( + handle_t hBinding, + LSAPR_HANDLE *SecretHandle, + PLSAPR_CR_CIPHER_VALUE EncryptedCurrentValue, + PLSAPR_CR_CIPHER_VALUE EncryptedOldValue) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 30 */ +NTSTATUS LsarQuerySecret( + handle_t hBinding, + LSAPR_HANDLE SecretHandle, + PLSAPR_CR_CIPHER_VALUE *EncryptedCurrentValue, + PLARGE_INTEGER CurrentValueSetTime, + PLSAPR_CR_CIPHER_VALUE *EncryptedOldValue, + PLARGE_INTEGER OldValueSetTime) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 31 */ +NTSTATUS LsarLookupPrivilegeValue( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + PRPC_UNICODE_STRING Name, + PLUID Value) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 32 */ +NTSTATUS LsarLookupPrivilegeName( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + PLUID Value, + PRPC_UNICODE_STRING *Name) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 33 */ +NTSTATUS LsarLookupPrivilegeDisplayName( + handle_t hBinding, + USHORT *LanguageReturned) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 34 */ +NTSTATUS LsarDeleteObject( + handle_t hBinding, + LSAPR_HANDLE *ObjectHandle) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 35 */ +NTSTATUS LsarEnumerateAccountsWithUserRight( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + PRPC_UNICODE_STRING UserRight, + PLSAPR_ACCOUNT_ENUM_BUFFER EnumerationBuffer) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 36 */ +NTSTATUS LsarEnmuerateAccountRights( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + PRPC_SID AccountSid, + PLSAPR_USER_RIGHT_SET UserRights) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 37 */ +NTSTATUS LsarAddAccountRights( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + PRPC_SID AccountSid, + PLSAPR_USER_RIGHT_SET UserRights) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 38 */ +NTSTATUS LsarRemoveAccountRights( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + PRPC_SID AccountSid, + BOOL AllRights, + PLSAPR_USER_RIGHT_SET UserRights) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 39 */ +NTSTATUS LsarQueryTrustedDomainInfo( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + PRPC_SID TrustedDomainSid, + TRUSTED_INFORMATION_CLASS InformationClass, + PLSAPR_TRUSTED_DOMAIN_INFO *TrustedDomainInformation) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 40 */ +NTSTATUS LsarSetTrustedDomainInfo( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + PRPC_SID TrustedDomainSid, + TRUSTED_INFORMATION_CLASS InformationClass, + PLSAPR_TRUSTED_DOMAIN_INFO TrustedDomainInformation) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 41 */ +NTSTATUS LsarDeleteTrustedDomain( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + PRPC_SID TrustedDomainSid) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 42 */ +NTSTATUS LsarStorePrivateData( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + PRPC_UNICODE_STRING KeyName, + PLSAPR_CR_CIPHER_VALUE EncryptedData) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 43 */ +NTSTATUS LsarRetrievePrivateData( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + PRPC_UNICODE_STRING KeyName, + PLSAPR_CR_CIPHER_VALUE *EncryptedData) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 44 */ +NTSTATUS LsarOpenPolicy2( + handle_t hBinding, + LPWSTR SystemName, + PLSAPR_OBJECT_ATTRIBUTES ObjectAttributes, + ACCESS_MASK DesiredAccess, + LSAPR_HANDLE *PolicyHandle) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 45 */ +NTSTATUS LsarGetUserName( + handle_t hBinding, + LPWSTR SystemName, + PRPC_UNICODE_STRING *UserName, + PRPC_UNICODE_STRING *DomainName) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 46 */ +NTSTATUS LsarQueryInformationPolicy2( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + POLICY_INFORMATION_CLASS InformationClass, + unsigned long *PolicyInformation) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 47 */ +NTSTATUS LsarSetInformationPolicy2( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + POLICY_INFORMATION_CLASS InformationClass, + unsigned long PolicyInformation) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 48 */ +NTSTATUS LsarQueryTrustedDomainInfoByName( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + PRPC_UNICODE_STRING TrustedDomainName, + POLICY_INFORMATION_CLASS InformationClass, + unsigned long *PolicyInformation) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 49 */ +NTSTATUS LsarSetTrustedDomainInfoByName( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + PRPC_UNICODE_STRING TrustedDomainName, + POLICY_INFORMATION_CLASS InformationClass, + unsigned long PolicyInformation) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 50 */ +NTSTATUS LsarEnumerateTrustedDomainsEx( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + DWORD *EnumerationContext, + PLSAPR_TRUSTED_ENUM_BUFFER_EX EnumerationBuffer, + DWORD PreferedMaximumLength) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 51 */ +NTSTATUS LsarCreateTrustedDomainEx( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation, + PLSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION AuthentificationInformation, + ACCESS_MASK DesiredAccess, + LSAPR_HANDLE *TrustedDomainHandle) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 52 */ +NTSTATUS LsarSetPolicyReplicationHandle( + handle_t hBinding, + PLSAPR_HANDLE PolicyHandle) +{ + /* Deprecated */ + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 53 */ +NTSTATUS LsarQueryDomainInformationPolicy( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + POLICY_INFORMATION_CLASS InformationClass, + unsigned long *PolicyInformation) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 54 */ +NTSTATUS LsarSetDomainInformationPolicy( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + POLICY_INFORMATION_CLASS InformationClass, + unsigned long PolicyInformation) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 55 */ +NTSTATUS LsarOpenTrustedDomainByName( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + PRPC_UNICODE_STRING TrustedDomainName, + ACCESS_MASK DesiredAccess, + LSAPR_HANDLE *TrustedDomainHandle) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 56 */ +NTSTATUS LsarTestCall( + handle_t hBinding) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 57 */ +NTSTATUS LsarLookupSids2( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + PLSAPR_SID_ENUM_BUFFER SidEnumBuffer, + PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains, + PLSAPR_TRANSLATED_NAMES_EX TranslatedNames, + LSAP_LOOKUP_LEVEL LookupLevel, + DWORD *MappedCount, + DWORD LookupOptions, + DWORD ClientRevision) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 58 */ +NTSTATUS LsarLookupNames2( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + DWORD Count, + PRPC_UNICODE_STRING Names, + PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains, + PLSAPR_TRANSLATED_SID_EX TranslatedSids, + LSAP_LOOKUP_LEVEL LookupLevel, + DWORD *MappedCount, + DWORD LookupOptions, + DWORD ClientRevision) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 59 */ +NTSTATUS LsarCreateTrustedDomainEx2( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + PLSAPR_TRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation, + PLSAPR_TRUSTED_DOMAIN_AUTH_INFORMATION_INTERNAL AuthentificationInformation, + ACCESS_MASK DesiredAccess, + LSAPR_HANDLE *TrustedDomainHandle) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 60 */ +NTSTATUS CredrWrite( + handle_t hBinding) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 61 */ +NTSTATUS CredrRead( + handle_t hBinding) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 62 */ +NTSTATUS CredrEnumerate( + handle_t hBinding) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 63 */ +NTSTATUS CredrWriteDomainCredentials( + handle_t hBinding) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 64 */ +NTSTATUS CredrReadDomainCredentials( + handle_t hBinding) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 65 */ +NTSTATUS CredrDelete( + handle_t hBinding) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 66 */ +NTSTATUS CredrGetTargetInfo( + handle_t hBinding) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 67 */ +NTSTATUS CredrProfileLoaded( + handle_t hBinding) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 68 */ +NTSTATUS LsarLookupNames3( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + DWORD Count, + PRPC_UNICODE_STRING Names, + PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains, + PLSAPR_TRANSLATED_SID_EX2 TranslatedSids, + LSAP_LOOKUP_LEVEL LookupLevel, + DWORD *MappedCount, + DWORD LookupOptions, + DWORD ClientRevision) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 69 */ +NTSTATUS CredrGetSessionTypes( + handle_t hBinding) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 70 */ +NTSTATUS LsarRegisterAuditEvent( + handle_t hBinding) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 71 */ +NTSTATUS LsarGenAuditEvent( + handle_t hBinding) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 72 */ +NTSTATUS LsarUnregisterAuditEvent( + handle_t hBinding) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 73 */ +NTSTATUS LsarQueryForestTrustInformation( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + PLSA_UNICODE_STRING TrustedDomainName, + LSA_FOREST_TRUST_RECORD_TYPE HighestRecordType, + PLSA_FOREST_TRUST_INFORMATION *ForestTrustInfo) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 74 */ +NTSTATUS LsarSetForestTrustInformation( + handle_t hBinding, + LSAPR_HANDLE PolicyHandle, + PLSA_UNICODE_STRING TrustedDomainName, + LSA_FOREST_TRUST_RECORD_TYPE HighestRecordType, + PLSA_FOREST_TRUST_INFORMATION ForestTrustInfo, + BOOL CheckOnly, + PLSA_FOREST_TRUST_COLLISION_INFORMATION *CollisionInfo) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 75 */ +NTSTATUS CredrRename( + handle_t hBinding) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 76 */ +NTSTATUS LsarLookupSids3( + handle_t hBinding, + PLSAPR_SID_ENUM_BUFFER SidEnumBuffer, + PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains, + PLSAPR_TRANSLATED_NAMES_EX TranslatedNames, + LSAP_LOOKUP_LEVEL LookupLevel, + DWORD *MappedCount, + DWORD LookupOptions, + DWORD ClientRevision) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 77 */ +NTSTATUS LsarLookupNames4( + handle_t hBinding, + handle_t RpcHandle, + DWORD Count, + PRPC_UNICODE_STRING Names, + PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains, + PLSAPR_TRANSLATED_SID_EX2 TranslatedSids, + LSAP_LOOKUP_LEVEL LookupLevel, + DWORD *MappedCount, + DWORD LookupOptions, + DWORD ClientRevision) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 78 */ +NTSTATUS LsarOpenPolicySce( + handle_t hBinding) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 79 */ +NTSTATUS LsarAdtRegisterSecurityEventSource( + handle_t hBinding) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 80 */ +NTSTATUS LsarAdtUnregisterSecurityEventSource( + handle_t hBinding) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} + + +/* Function 81 */ +NTSTATUS LsarAdtReportSecurityEvent( + handle_t hBinding) +{ + UNIMPLEMENTED; + return STATUS_NOT_IMPLEMENTED; +} +
/* EOF */
Modified: trunk/reactos/dll/win32/lsasrv/lsasrv.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/lsasrv/lsasrv.rbu... ============================================================================== --- trunk/reactos/dll/win32/lsasrv/lsasrv.rbuild [iso-8859-1] (original) +++ trunk/reactos/dll/win32/lsasrv/lsasrv.rbuild [iso-8859-1] Sat Aug 2 10:45:59 2008 @@ -5,9 +5,10 @@ <define name="WINVER">0x600</define> <define name="_WIN32_WINNT">0x0600</define> <library>lsa_server</library> - <library>ntdll</library> + <library>wine</library> <library>kernel32</library> <library>rpcrt4</library> + <library>ntdll</library> <library>pseh</library> <file>lsarpc.c</file> <file>lsasrv.c</file>
Modified: trunk/reactos/include/reactos/idl/lsa.idl URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/idl/lsa.idl... ============================================================================== --- trunk/reactos/include/reactos/idl/lsa.idl [iso-8859-1] (original) +++ trunk/reactos/include/reactos/idl/lsa.idl [iso-8859-1] Sat Aug 2 10:45:59 2008 @@ -2,9 +2,590 @@ * Local Security Authority interface definition */
-#include "include/reactos/idl/wtypes.idl" - -#define LSA_HANDLE unsigned long +#include <ms-dtyp.idl> + +typedef [context_handle] unsigned long LSAPR_HANDLE; +typedef LSAPR_HANDLE *PLSAPR_HANDLE; + +cpp_quote("#ifndef _WINNT_H"); +typedef LARGE_INTEGER LUID; +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; + +typedef WORD SECURITY_DESCRIPTOR_CONTROL, *PSECURITY_DESCRIPTOR_CONTROL; + +typedef struct _LSAPR_SECURITY_DESCRIPTOR { + BYTE Revision; + BYTE Sbz1; + SECURITY_DESCRIPTOR_CONTROL Control; + PRPC_SID Owner; + PRPC_SID Group; + PLSAPR_ACL Sacl; + 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 unsigned long ACCESS_MASK; + +typedef unsigned long SECURITY_INFORMATION; + +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; + +cpp_quote("#ifndef _WINNT_H"); +typedef struct _LUID { + ULONG LowPart; + LONG HightPart; +} LUID, *PLUID; +cpp_quote("#endif"); + +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), @@ -16,29 +597,591 @@ ] 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] handle_t hBinding, + [in, out] LSAPR_HANDLE *ObjectHandle);
/* Function 1 */ - NTSTATUS LsarDelete(handle_t BindingHandle, - [in] LSA_HANDLE ObjectHandle); + NTSTATUS LsarDelete( + [in] handle_t hBinding, + [in] LSAPR_HANDLE ObjectHandle); + + /* Function 2 */ + NTSTATUS LsarEnumeratePrivileges( + [in] handle_t hBinding, + [in] LSAPR_HANDLE PolicyHandle, + [in, out] DWORD *EnumerationContext, + [out] PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer, + [in] DWORD PreferedMaximumLength); + + /* Function 3 */ + NTSTATUS LsarQuerySecurityObject( + [in] handle_t hBinding, + [in] LSAPR_HANDLE ObjectHandle, + [in] SECURITY_INFORMATION SecurityInformation, + [out] PLSAPR_SR_SECURITY_DESCRIPTOR *SecurityDescriptor); + + /* Function 4 */ + NTSTATUS LsarSetSecurityObject( + [in] handle_t hBinding, + [in] LSAPR_HANDLE ObjectHandle, + [in] SECURITY_INFORMATION SecurityInformation, + [in] PLSAPR_SR_SECURITY_DESCRIPTOR SecurityDescriptor); + + /* Function 5 */ + NTSTATUS LsarChangePassword( + [in] handle_t hBinding, + [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] handle_t hBinding, + [in, unique] LPWSTR SystemName, + [in] PLSAPR_OBJECT_ATTRIBUTES ObjectAttributes, + [in] ACCESS_MASK DesiredAccess, + [out] LSAPR_HANDLE *PolicyHandle); + + /* Function 7 */ + NTSTATUS LsarQueryInformationPolicy( + [in] handle_t hBinding, + [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] handle_t hBinding, + [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] handle_t hBinding, + [in] LSAPR_HANDLE ObjectHandle); + + /* Function 10 */ + NTSTATUS LsarCreateAccount( + [in] handle_t hBinding, + [in] PRPC_SID AccountSid, + [in] ACCESS_MASK DesiredAccess, + [out] LSAPR_HANDLE *AccountHandle); + + /* Function 11 */ + NTSTATUS LsarEnumerateAccounts( + [in] handle_t hBinding, + [in] LSAPR_HANDLE PolicyHandle, + [in, out] DWORD *EnumerationContext, + [out] PLSAPR_ACCOUNT_ENUM_BUFFER EnumerationBuffer, + [in] DWORD PreferedMaximumLength); + + /* Function 12 */ + NTSTATUS LsarCreateTrustedDomain( + [in] handle_t hBinding, + [in] LSAPR_HANDLE PolicyHandle, + [in] PLSAPR_TRUST_INFORMATION TrustedDomainInformation, + [in] ACCESS_MASK DesiredAccess, + [out] LSAPR_HANDLE *TrustedDomainHandle); + + /* Function 13 */ + NTSTATUS LsarEnumerateTrustedDomains( + [in] handle_t hBinding, + [in] LSAPR_HANDLE PolicyHandle, + [in, out] DWORD *EnumerationContext, + [out] PLSAPR_TRUSTED_ENUM_BUFFER EnumerationBuffer, + [in] DWORD PreferedMaximumLength); + + /* Function 14 */ + NTSTATUS LsarLookupNames( + [in] handle_t hBinding, + [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] handle_t hBinding, + [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] handle_t hBinding, + [in] LSAPR_HANDLE PolicyHandle, + [in] PRPC_UNICODE_STRING SecretName, + [in] ACCESS_MASK DesiredAccess, + [out] LSAPR_HANDLE *SecretHandle); + + /* Function 17 */ + NTSTATUS LsarOpenAccount( + [in] handle_t hBinding, + [in] LSAPR_HANDLE PolicyHandle, + [in] PRPC_SID AccountSid, + [in] ACCESS_MASK DesiredAccess, + [out] LSAPR_HANDLE *AccountHandle); + + /* Function 18 */ + NTSTATUS LsarEnumeratePrivilegesAccount( + [in] handle_t hBinding, + [in] LSAPR_HANDLE AccountHandle, + [out] PLSAPR_PRIVILEGE_SET *Privileges); + + /* Function 19 */ + NTSTATUS LsarAddPrivilegesToAccount( + [in] handle_t hBinding, + [in] LSAPR_HANDLE AccountHandle, + [in] PLSAPR_PRIVILEGE_SET Privileges); + + /* Function 20 */ + NTSTATUS LsarRemovePrivilegesFromAccount( + [in] handle_t hBinding, + [in] LSAPR_HANDLE AccountHandle, + [in] BOOL AllPrivileges, + [in, unique] PLSAPR_PRIVILEGE_SET Privileges); + + /* Function 21 */ + NTSTATUS LsarGetQuotasForAccount( + [in] handle_t hBinding, + [in] LSAPR_HANDLE AccountHandle, + [out] PQUOTA_LIMITS QuotaLimits); + + /* Function 22 */ + NTSTATUS LsarSetQuotasForAccount( + [in] handle_t hBinding, + [in] LSAPR_HANDLE AccountHandle, + [in] PQUOTA_LIMITS QuotaLimits); + + /* Function 23 */ + NTSTATUS LsarGetSystemAccessAccount( + [in] handle_t hBinding, + [in] LSAPR_HANDLE AccountHandle, + [out] ACCESS_MASK *SystemAccess); + + /* Function 24 */ + NTSTATUS LsarSetSystemAccessAccount( + [in] handle_t hBinding, + [in] LSAPR_HANDLE AccountHandle, + [in] ACCESS_MASK SystemAccess); + + /* Function 25 */ + NTSTATUS LsarOpenTrustedDomain( + [in] handle_t hBinding, + [in] LSAPR_HANDLE PolicyHandle, + [in] PRPC_SID TrustedDomainSid, + [in] ACCESS_MASK DesiredAccess, + [out] LSAPR_HANDLE *TrustedDomainHandle); + + /* Function 26 */ + NTSTATUS LsarQueryInfoTrustedDomain( + [in] handle_t hBinding, + [in] LSAPR_HANDLE TrustedDomainHandle, + [in] TRUSTED_INFORMATION_CLASS InformationClass, + [out, switch_is(InformationClass)] PLSAPR_TRUSTED_DOMAIN_INFO *TrustedDomainInformation); + + /* Function 27 */ + NTSTATUS LsarSetInformationTrustedDomain( + [in] handle_t hBinding, + [in] LSAPR_HANDLE TrustedDomainHandle, + [in] TRUSTED_INFORMATION_CLASS InformationClass, + [in, switch_is(InformationClass)] PLSAPR_TRUSTED_DOMAIN_INFO TrustedDomainInformation); + + /* Function 28 */ + NTSTATUS LsarOpenSecret( + [in] handle_t hBinding, + [in] LSAPR_HANDLE PolicyHandle, + [in] PRPC_UNICODE_STRING SecretName, + [in] ACCESS_MASK DesiredAccess, + [out] LSAPR_HANDLE *SecretHandle); + + /* Function 29 */ + NTSTATUS LsarSetSecret( + [in] handle_t hBinding, + [in] LSAPR_HANDLE *SecretHandle, + [in, unique] PLSAPR_CR_CIPHER_VALUE EncryptedCurrentValue, + [in, unique] PLSAPR_CR_CIPHER_VALUE EncryptedOldValue); + + /* Function 30 */ + NTSTATUS LsarQuerySecret( + [in] handle_t hBinding, + [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] handle_t hBinding, + [in] LSAPR_HANDLE PolicyHandle, + [in] PRPC_UNICODE_STRING Name, + [out] PLUID Value); + + /* Function 32 */ + NTSTATUS LsarLookupPrivilegeName( + [in] handle_t hBinding, + [in] LSAPR_HANDLE PolicyHandle, + [in] PLUID Value, + [out] PRPC_UNICODE_STRING *Name); + + /* Function 33 */ + NTSTATUS LsarLookupPrivilegeDisplayName( + [in] handle_t hBinding, + /*[in] LSAPR_HANDLE PolicyHandle, + [in] PRPC_UNICODE_STRING Name, + [in] USHORT ClientLanguage, + [in] USHORT ClientSystemDefaultLanguage, + [out] PRPC_UNICODE_STRING *DisplayName,*/ + [out] USHORT *LanguageReturned); + + /* Function 34 */ + NTSTATUS LsarDeleteObject( + [in] handle_t hBinding, + [in, out] LSAPR_HANDLE *ObjectHandle); + +cpp_quote("#if _WIN32_WINNT >= 0x0351") + + /* Function 35 */ + NTSTATUS LsarEnumerateAccountsWithUserRight( + [in] handle_t hBinding, + [in] LSAPR_HANDLE PolicyHandle, + [in, unique] PRPC_UNICODE_STRING UserRight, + [out] PLSAPR_ACCOUNT_ENUM_BUFFER EnumerationBuffer); + + /* Function 36 */ + NTSTATUS LsarEnmuerateAccountRights( + [in] handle_t hBinding, + [in] LSAPR_HANDLE PolicyHandle, + [in] PRPC_SID AccountSid, + [out] PLSAPR_USER_RIGHT_SET UserRights); + + /* Function 37 */ + NTSTATUS LsarAddAccountRights( + [in] handle_t hBinding, + [in] LSAPR_HANDLE PolicyHandle, + [in] PRPC_SID AccountSid, + [in] PLSAPR_USER_RIGHT_SET UserRights); + + /* Function 38 */ + NTSTATUS LsarRemoveAccountRights( + [in] handle_t hBinding, + [in] LSAPR_HANDLE PolicyHandle, + [in] PRPC_SID AccountSid, + [in] BOOL AllRights, + [in] PLSAPR_USER_RIGHT_SET UserRights); + + /* Function 39 */ + NTSTATUS LsarQueryTrustedDomainInfo( + [in] handle_t hBinding, + [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] handle_t hBinding, + [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] handle_t hBinding, + [in] LSAPR_HANDLE PolicyHandle, + [in] PRPC_SID TrustedDomainSid); + + /* Function 42 */ + NTSTATUS LsarStorePrivateData( + [in] handle_t hBinding, + [in] LSAPR_HANDLE PolicyHandle, + [in] PRPC_UNICODE_STRING KeyName, + [in, unique] PLSAPR_CR_CIPHER_VALUE EncryptedData); + + /* Function 43 */ + NTSTATUS LsarRetrievePrivateData( + [in] handle_t hBinding, + [in] LSAPR_HANDLE PolicyHandle, + [in] PRPC_UNICODE_STRING KeyName, + [in, out] PLSAPR_CR_CIPHER_VALUE *EncryptedData); + + /* Function 44 */ + NTSTATUS LsarOpenPolicy2( + [in] handle_t hBinding, + [in, unique, string] LPWSTR SystemName, + [in] PLSAPR_OBJECT_ATTRIBUTES ObjectAttributes, + [in] ACCESS_MASK DesiredAccess, + [out] LSAPR_HANDLE *PolicyHandle); + + /* Function 45 */ + NTSTATUS LsarGetUserName( + [in] handle_t hBinding, + [in, unique, string] LPWSTR 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] handle_t hBinding, + [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] handle_t hBinding, + [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] handle_t hBinding, + [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] handle_t hBinding, + [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] handle_t hBinding, + [in] LSAPR_HANDLE PolicyHandle, + [in, out] DWORD *EnumerationContext, + [out] PLSAPR_TRUSTED_ENUM_BUFFER_EX EnumerationBuffer, + [in] DWORD PreferedMaximumLength); + + /* Function 51 */ + NTSTATUS LsarCreateTrustedDomainEx( + [in] handle_t hBinding, + [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] handle_t hBinding, + [in, out] PLSAPR_HANDLE PolicyHandle); + + /* Function 53 */ + NTSTATUS LsarQueryDomainInformationPolicy( + [in] handle_t hBinding, + [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] handle_t hBinding, + [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] handle_t hBinding, + [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] handle_t hBinding, + [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] handle_t hBinding, + [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] handle_t hBinding, + [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] handle_t hBinding, + [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] handle_t hBinding, + [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] handle_t hBinding, + [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, + [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, + [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 */") + }