Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (C) Microsoft Corporation, 2002
Module Name:
sidcache.hxx
Abstract:
Header for the SID_CACHE class.
Author:
Maurice Flanagan (mauricf) June 27, 2002
Revision History:
--*/
RPC_STATUS InitializeSIDCache( );
RPC_STATUS QuerySIDCache( IN RPC_CHAR *ServerPrincipalName, OUT PSID *Sid );
RPC_STATUS AddToSIDCache( IN RPC_CHAR *ServerPrincipalName, IN PSID Sid );
RPC_STATUS RemoveFromSIDCache( IN RPC_CHAR *ServerPrincipalName );
struct SID_CACHE_ENTRY { RPC_CHAR *SPN; // This is used as the index into the table, if NULL then this is an empty slot
PSID SID; // IF the SPN is NULL, the SID must be NULL, if the SPN is not NULL, the SID must be non NULL
DWORD Age; };
class SID_CACHE { private: SID_CACHE_ENTRY Cache[4]; MUTEX CacheMutex;
public:
SID_CACHE ( RPC_STATUS *Status );
~SID_CACHE ( );
RPC_STATUS Query ( IN RPC_CHAR *ServerPrincipalName, OUT PSID *Sid );
RPC_STATUS Add ( IN RPC_CHAR *ServerPrincipalName, IN PSID Sid );
RPC_STATUS Remove ( IN RPC_CHAR *ServerPrincipalName ); };
#define CacheSize 4
extern SID_CACHE *SIDCache;
inline SID_CACHE::SID_CACHE ( RPC_STATUS *Status ) : CacheMutex(Status) { DWORD idx;
for (idx = 0; idx < CacheSize; idx++) { Cache[idx].Age = 0; Cache[idx].SID = NULL; Cache[idx].SPN = NULL; } }
inline SID_CACHE::~SID_CACHE () { DWORD idx;
for (idx = 0; idx < CacheSize; idx++) { delete [] Cache[idx].SID; delete [] Cache[idx].SPN; Cache[idx].Age = 0; Cache[idx].SID = NULL; Cache[idx].SPN = NULL; } }
|