windows-nt/Source/XPSP1/NT/admin/wmi/wbem/winmgmt/esscli/wmiauthz.h

87 lines
2.1 KiB
C
Raw Normal View History

2020-09-26 03:20:57 -05:00
#ifndef __WMIAUTHZ_H__
#define __WMIAUTHZ_H__
#include <wbemint.h>
#include <authz.h>
#include <unk.h>
#include <sync.h>
class CWmiAuthzApi;
/**************************************************************************
CWmiAuthz
***************************************************************************/
class CWmiAuthz : public CUnkBase<IWbemTokenCache, &IID_IWbemTokenCache>
{
CCritSec m_cs;
BOOL m_bInit;
AUTHZ_RESOURCE_MANAGER_HANDLE m_hResMgr;
CWmiAuthzApi* m_pApi;
PSID m_pLocalSystemSid, m_pAdministratorsSid;
HRESULT EnsureInitialized();
public:
CWmiAuthz( CLifeControl* pControl );
~CWmiAuthz();
CWmiAuthzApi* GetApi() { return m_pApi; }
STDMETHOD(GetToken)( const BYTE* pSid, IWbemToken** ppToken );
STDMETHOD(Shutdown)();
};
/***************************************************************************
CWmiAuthzToken
****************************************************************************/
class CWmiAuthzToken : public CUnkBase<IWbemToken, &IID_IWbemToken>
{
AUTHZ_CLIENT_CONTEXT_HANDLE m_hCtx;
CWmiAuthz* m_pOwner;
public:
CWmiAuthzToken( CWmiAuthz* pOwner, AUTHZ_CLIENT_CONTEXT_HANDLE hCtx );
~CWmiAuthzToken();
STDMETHOD(AccessCheck)( DWORD dwDesiredAccess,
const BYTE* pSD,
DWORD* pdwGrantedAccess);
};
/****************************************************************************
WILL NOT BE COMPILED IN PRESENCE OF AUTHZ LIBRARY
*****************************************************************************/
#ifndef __AUTHZ_H__
/***************************************************************************
CWmiNoAuthzToken
****************************************************************************/
class CWmiNoAuthzToken : public CUnkBase<IWbemToken, &IID_IWbemToken>
{
CNtSid m_Sid;
public:
CWmiNoAuthzToken( PSID pSid ) : m_Sid( pSid ) {}
STDMETHOD( AccessCheck )( DWORD dwDesiredAccess,
const BYTE* pSD,
DWORD* pdwGrantedAccess );
};
#endif
#endif __WMIAUTHZ_H__