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.
 
 
 
 
 
 

55 lines
1.5 KiB

//******************************************************************************
//
// Copyright (c) 1999-2000, Microsoft Corporation, All rights reserved
//
//*****************************************************************************
#ifndef __WBEM_TOKEN_CACHE__H_
#define __WBEM_TOKEN_CACHE__H_
#include <wbemcomn.h>
#include <wbemint.h>
#include <sync.h>
class CWmiToken;
class CTokenCache : public CUnkBase<IWbemTokenCache, &IID_IWbemTokenCache>
{
protected:
CCritSec m_cs;
CRefedPointerArray<CWmiToken> m_apTokens;
protected:
BOOL ConstructTokenFromHandle(HANDLE hToken, const BYTE* pSid,
IWbemToken** ppToken);
public:
CTokenCache(CLifeControl* pControl) :
CUnkBase<IWbemTokenCache, &IID_IWbemTokenCache>(pControl){}
HRESULT STDMETHODCALLTYPE GetToken(const BYTE* pSid, IWbemToken** ppToken);
HRESULT STDMETHODCALLTYPE Shutdown();
};
class CWmiToken : public CUnkBase<IWbemToken, &IID_IWbemToken>
{
protected:
HANDLE m_hToken;
CTokenCache* m_pCache;
PSID m_pSid;
bool m_bOwnHandle;
friend CTokenCache;
public:
CWmiToken(ADDREF CTokenCache* pCache, const PSID pSid,
ACQUIRE HANDLE hToken);
CWmiToken(READ_ONLY HANDLE hToken);
virtual ~CWmiToken();
HRESULT STDMETHODCALLTYPE AccessCheck(DWORD dwDesiredAccess,
const BYTE* pSD,
DWORD* pdwGrantedAccess);
};
#endif