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.
 
 
 
 
 
 

40 lines
1.6 KiB

#ifndef HandleMgr_h
#define HandleMgr_h
// This class manages an impedance mismatch between IOCT processing and KS stream
// processing. Specifically, filters are passed KSPIN and IRP state, and keep
// per-filter instance data in parent filter "context." This information is unavailable
// to IOCT processing. However, the stream encryption and communication keys are
// needed in both.
// The common structure available in both worls is the FILE_HANDLE. This class contains
// a list of FILE_HANDLES that can be used to map between worlds.
// This is only used and referenced on IOCTL processing and for filter creation and
// destruction.
// todo - efficiency
//-----------------------------------------------------------------------------
struct ConnectStruct{
PVOID handleRef; // the FILE_HANDLE
STREAMKEY serverKey; // stream key for SAC in kernel
CBCKey serverCBCKey; // MAC key in kernel
CBCState serverCBCState; // MAC state
bool secureStreamStarted; // whether we're running encrypted
DWORD streamId; // StreamId
};
//-----------------------------------------------------------------------------
class HandleMgr{
public:
HandleMgr();
~HandleMgr();
bool newHandle(PVOID HandleRef, OUT ConnectStruct*& TheConnect);
bool deleteHandle(PVOID HandleRef);
ConnectStruct* getConnection(PVOID HandleRef);
KCritMgr& getCritMgr(){return critMgr;};
protected:
KList<ConnectStruct*> connects;
KCritMgr critMgr;
};
extern HandleMgr* TheHandleMgr;
#endif