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.
|
|
/*****************************************************************************/
/* Copyright (c) 1999-2001 Microsoft Corporation, All Rights Reserved /
/*****************************************************************************/
//=================================================================
//
// AccessRights.CPP -- Base class for obtaining effective access
// rights.
//
// Copyright (c) 1999-2001 Microsoft Corporation, All Rights Reserved
//
// Revisions: 6/11/99 a-kevhu Created
//
//=================================================================
#ifndef _CACCESSRIGHTS_H_
#define _CACCESSRIGHTS_H_
#ifdef NTONLY
#define AR_GENERIC_FAILURE 0x00010001
#define AR_BAD_SID 0x00010002
#define AR_ACL_EMPTY 0x00010003
#define AR_BAD_ACL 0x00010004
#define AR_RET_CODE DWORD
#define USER void*
#define USER_SPECIFIER short
#define USER_IS_PSID 0
#define USER_IS_HANDLE 1
class CAccessRights { public:
// Constructors and destructor...
CAccessRights(bool fUseCurThrTok = false); CAccessRights(const USER user, USER_SPECIFIER usp); CAccessRights(const USER psid, const PACL pacl, USER_SPECIFIER usp); CAccessRights(const PACL pacl, bool fUseCurThrTok = false);
//CAccessRights(const CAccessRights &RAccessRights);
~CAccessRights(); // Utility functions...
bool SetUserToThisThread(); bool SetUser(const USER user, USER_SPECIFIER usp);
bool SetAcl(const PACL pacl);
AR_RET_CODE GetEffectiveAccessRights(PACCESS_MASK pAccessMask); DWORD GetError() { return m_dwError; }
bool GetCSid(CSid &csid, bool fResolve = false);
protected: DWORD m_dwError; private:
bool InitTrustee(bool fInitFromCurrentThread, const HANDLE hToken = NULL); bool InitSidFromToken(const HANDLE hThreadToken); AR_RET_CODE FillEmptyPACL(PACL *paclNew);
TRUSTEE m_trustee; CSid m_csid; CAccessEntryList m_ael;
};
#endif
#endif
|