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
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
|
|
|