//+----------------------------------------------------------------------------- // // Microsoft Windows // // Copyright (c) Microsoft Corporation 1992 - 1994 // // File: sidcache.h // // Contents: types and prototypes for sid cache management // // // History: 15-May-1997 MikeSw Created // //------------------------------------------------------------------------------ #ifndef __SIDCACHE_H__ #define __SIDCACHE_H__ //////////////////////////////////////////////////////////////////////////////// // // Sid Cache Data types exported for lsaexts // //////////////////////////////////////////////////////////////////////////////// typedef struct _LSAP_DB_SID_CACHE_ENTRY { struct _LSAP_DB_SID_CACHE_ENTRY * Next; // // Cache data // PSID Sid; UNICODE_STRING AccountName; SID_NAME_USE SidType; PSID DomainSid; UNICODE_STRING DomainName; // // These time values are only used for SID cache // entries that aren't associated with an actual logon session. // LARGE_INTEGER ExpirationTime; LARGE_INTEGER RefreshTime; LARGE_INTEGER CreateTime; LARGE_INTEGER LastUse; ULONG Flags; // // InUseCount is only used for SID cache entries that are // currently associated with an actual logon session. As long as // InUseCount is nonzero, ExpirationTime will not be checked. // Once InUseCount is zero, ExpirationTime will be set. // LONG InUseCount; } LSAP_DB_SID_CACHE_ENTRY, *PLSAP_DB_SID_CACHE_ENTRY; // // Flags to describe the cache entry // // // The name in the AccountName and DomainName fields represents // a SAM account name // #define LSAP_SID_CACHE_SAM_ACCOUNT_NAME 0x00000001 // // The AccountName is a UPN // #define LSAP_SID_CACHE_UPN 0x00000002 //////////////////////////////////////////////////////////////////////////////// // // Exported Sid Cache functions // //////////////////////////////////////////////////////////////////////////////// NTSTATUS LsapDbInitSidCache( VOID ); VOID LsapSidCacheReadParameters( HKEY hKey ); VOID LsapDbUpdateCacheWithSids( IN PSID *Sids, IN ULONG Count, IN OUT PLSAPR_REFERENCED_DOMAIN_LIST ReferencedDomains, IN PLSA_TRANSLATED_NAME_EX TranslatedNames ); VOID LsapDbUpdateCacheWithNames( IN PUNICODE_STRING AccountNames, IN PUNICODE_STRING DomainNames, IN ULONG Count, IN OUT PLSAPR_REFERENCED_DOMAIN_LIST ReferencedDomains, IN PLSAPR_TRANSLATED_SID_EX2 TranslatedSids ); NTSTATUS LsapDbMapCachedSids( IN PSID *Sids, IN ULONG Count, IN BOOLEAN UseOldEntries, IN OUT PLSAPR_REFERENCED_DOMAIN_LIST ReferencedDomains, OUT PLSAPR_TRANSLATED_NAMES_EX TranslatedNames, OUT PULONG MappedCount ); NTSTATUS LsapDbMapCachedNames( IN ULONG LookupOptions, IN PUNICODE_STRING AccountNames, IN PUNICODE_STRING DomainNames, IN ULONG Count, IN BOOLEAN UseOldEntries, IN OUT PLSAPR_REFERENCED_DOMAIN_LIST ReferencedDomains, OUT PLSAPR_TRANSLATED_SIDS_EX2 TranslatedSids, OUT PULONG MappedCount ); VOID LsapDbAddLogonNameToCache( IN PUNICODE_STRING AccountName, IN PUNICODE_STRING DomainName, IN PSID AccountSid ); VOID LsapDbReleaseLogonNameFromCache( IN PSID Sid ); #endif // __SIDCACHE_H__