/*++ Copyright (C) Microsoft Corporation, 1996 - 1999 Module Name: hndlcach.hxx Abstract: The handle cache. Author: Kamen Moutafov [KamenM] Revision History: --*/ #ifndef __HNDLCACH_HXX #define __HNDLCACH_HXX const INT DEFAULT_CACHE_SIZE = 2; class HandleCache { public: inline HandleCache(void) { Init(); } ~HandleCache(void); inline void Init(void) { int i; for (i = 0; i < DEFAULT_CACHE_SIZE; i ++) { cacheSlots[i] = NULL; } } // not synchronized HANDLE CheckOutHandle(void); // synchronized between multiple threads. Will zero out the handle if it // was saved in the cache. If the cache is empty, this call has defined // FIFO semantics. This is significant in the NPFS case. void CheckinHandle(HANDLE *ph); #if defined(DBG) || defined(_DEBUG) // not synchornized BOOL IsSecondHandleUsed(void); #endif private: HANDLE cacheSlots[DEFAULT_CACHE_SIZE]; }; #endif // __HNDLCACH_HXX