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) 1995, Microsoft Corporation
//
// File: seccache.hxx
//
// Contents: Security descriptor caches maps sdids to granted/denied
//
// Class: CSecurityCache
//
// History: 25-Sep-95 dlee Created
// 22 Jan 96 Alanw Modified for use in user mode
//
//----------------------------------------------------------------------------
#pragma once
class PCatalog;
// There will almost always be just one security descriptor for the
// objects returned in a given query. If there are more, the cache
// will be grown.
const unsigned cDefaultSecurityDescriptorEntries = 4;
//+-------------------------------------------------------------------------
//
// Class: CSecurityCache
//
// Purpose: Saves results of access check calls.
//
// Notes:
//
//--------------------------------------------------------------------------
class CSecurityCache { public: CSecurityCache( PCatalog & rCat );
~CSecurityCache();
BOOL IsGranted( ULONG sdidOrdinal, ACCESS_MASK am );
HANDLE GetToken( void ) { Win4Assert( INVALID_HANDLE_VALUE != _hToken ); return _hToken; }
private:
BOOL _IsCached( ULONG sdidOrd, ACCESS_MASK am, BOOL & fGranted ) const;
void InitToken( void );
class CDescriptorEntry { public: ULONG sdidOrd; ACCESS_MASK am; BOOL fGranted; };
CMutexSem _mutex;
CDynArrayInPlace<CDescriptorEntry> _aEntries;
HANDLE _hToken; // security token
PCatalog & _Cat; // for SDID mapping
};
|