windows-nt/Source/XPSP1/NT/sdktools/cacls/daclwrap.hxx
2020-09-26 16:20:57 +08:00

72 lines
1.8 KiB
C++

//+-------------------------------------------------------------------
//
// Copyright (C) 1995, Microsoft Corporation.
//
// File: daclwrap.hxx
//
// Contents: class encapsulating file security.
//
// Classes: CDaclWrap
//
// History: Nov-93 Created DaveMont
//
//--------------------------------------------------------------------
#ifndef __DACLWRAP__
#define __DACLWRAP__
#include <t2.hxx>
#include <accacc.hxx>
//+-------------------------------------------------------------------
//
// Class: CDaclWrap
//
// Purpose: encapsulation of File security (ie. a wrapper around a
// DACL) This class provides methods to build a new acl,
// with intent to merge it with an existing DACL on a file.
//
//--------------------------------------------------------------------
typedef struct
{
CAccountAccess *pcaa;
ULONG option;
} SACCOUNTANDOPTIONS;
class CDaclWrap
{
public:
CDaclWrap();
~CDaclWrap();
// building the new dacl, based on previous SetAccess inputs and
// the input DACL
ULONG BuildAcl(ACL **pnewdacl, ACL *poldacl, UCHAR revision, BOOL fdir);
// adding, replacing and removing aces
ULONG SetAccess(ULONG option, WCHAR *Name, WCHAR *System, ULONG access);
private:
ULONG _GetNewAclSize(ULONG *caclsize, ACL *poldacl, BOOL fdir);
ULONG _SetDeniedAce(ACL *dacl, ACCESS_MASK mask, SID *psid, BOOL fdir);
ULONG _SetAllowedAce(ACL *dacl, ACCESS_MASK mask, SID *psid, BOOL fdir);
ULONG _FillNewAcl(ACL *pnewdacl, ACL *poldacl, BOOL fdir);
ULONG _AllocateNewAcl(ACL **pnewdacl, ULONG caclsize, ULONG revision);
ULONG _acessize ;
ULONG _ccaa ;
SACCOUNTANDOPTIONS _aaa[CMAXACES] ;
};
#endif // __DACLWRAP__