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.
 
 
 
 
 
 

160 lines
5.1 KiB

// Copyright (c) 2000-2001 Microsoft Corporation, All Rights Reserved
// CJobObjSecLimitInfoProps.h
#pragma once
//*****************************************************************************
// BEGIN: Declaration of Win32_JobObjectSecLimitInfo class properties.
//*****************************************************************************
#define IDS_Win32_NamedJobObjectSecLimitSetting L"Win32_NamedJobObjectSecLimitSetting"
#define IDS_GroupCount L"GroupCount"
#define IDS_Groups L"Groups"
#define IDS_Privileges L"Privileges"
#define IDS_PrivilegeCount L"PrivilegeCount"
#define IDS_SID L"SID"
#define IDS_AccountName L"AccountName"
#define IDS_ReferencedDomainName L"ReferencedDomainName"
#define IDS_Attributes L"Attributes"
#define IDS_LUID L"LUID"
#define IDS_Win32_TokenGroups L"Win32_TokenGroups"
#define IDS_Win32_TokenPrivileges L"Win32_TokenPrivileges"
#define IDS_Win32_SidAndAttributes L"Win32_SidAndAttributes"
#define IDS_Win32_LUIDAndAttributes L"Win32_LUIDAndAttributes"
#define IDS_Win32_Sid L"Win32_Sid"
#define IDS_Win32_LUID L"Win32_LUID"
#define IDS_HighPart L"HighPart"
#define IDS_LowPart L"LowPart"
#define PROP_ALL_REQUIRED 0xFFFFFFFF
#define PROP_NONE_REQUIRED 0x00000000
#define PROP_JOSecLimitInfoID 0x00000001
#define PROP_SecurityLimitFlags 0x00000002
#define PROP_SidsToDisable 0x00000004
#define PROP_PrivilagesToDelete 0x00000008
#define PROP_RestrictedSids 0x00000010
// The following enum is used to reference
// into the array that follows it. Hence,
// they must be kept in synch.
typedef enum tag_JOB_OBJ_SEC_LIMIT_INFO_PROPS
{
JOSECLMTPROP_ID = 0,
JOSECLMTPROP_SecurityLimitFlags,
JOSECLMTPROP_SidsToDisable,
JOSECLMTPROP_PrivilegesToDelete,
JOSECLMTPROP_RestrictedSids,
// used to keep track of how many props we have:
JOIOACTGPROP_JobObjSecLimitInfoPropertyCount
} JOB_OBJ_SEC_LIMIT_INFO_PROPS;
// WARNING!! MUST KEEP MEMBERS OF THE FOLLOWING ARRAY
// IN SYNCH WITH THE ENUMERATION DECLARED ABOVE!!!
extern LPCWSTR g_rgJobObjSecLimitInfoPropNames[];
//*****************************************************************************
// END: Declaration of Win32_JobObjectSecLimitInfo class properties.
//*****************************************************************************
class CJobObjSecLimitInfoProps : public CObjProps
{
public:
CJobObjSecLimitInfoProps();
CJobObjSecLimitInfoProps(CHString& chstrNamespace);
CJobObjSecLimitInfoProps(
HANDLE hJob,
CHString& chstrNamespace);
virtual ~CJobObjSecLimitInfoProps();
HRESULT SetKeysFromPath(
const BSTR ObjectPath,
IWbemContext __RPC_FAR *pCtx);
HRESULT SetKeysDirect(
std::vector<CVARIANT>& vecvKeys);
HRESULT GetWhichPropsReq(
CFrameworkQuery& cfwq);
HRESULT SetNonKeyReqProps();
HRESULT LoadPropertyValues(
IWbemClassObject* pIWCO,
IWbemContext* pCtx,
IWbemServices* pNamespace);
void SetHandle(const HANDLE hJob);
HANDLE& GetHandle();
HRESULT SetWin32JOSecLimitInfoProps(
IWbemClassObject __RPC_FAR *pInst);
private:
HANDLE m_hJob;
// Because many of the security limit info
// properties can't be directly represented
// as a variant type, we don't use our
// m_PropMap and other mechanisms for this
// class. Instead, we store the properties
// in this member variable.
PJOBOBJECT_SECURITY_LIMIT_INFORMATION m_pjosli;
// Helpers to set an outgoing instance...
HRESULT SetInstanceFromJOSLI(
IWbemClassObject* pIWCO,
IWbemContext* pCtx,
IWbemServices* pNamespace);
HRESULT SetInstanceSidsToDisable(
IWbemClassObject* pIWCO,
IWbemContext* pCtx,
IWbemServices* pNamespace);
HRESULT SetInstancePrivilegesToDelete(
IWbemClassObject* pIWCO,
IWbemContext* pCtx,
IWbemServices* pNamespace);
HRESULT SetInstanceRestrictedSids(
IWbemClassObject* pIWCO,
IWbemContext* pCtx,
IWbemServices* pNamespace);
HRESULT SetInstanceTokenGroups(
IWbemClassObject* pWin32TokenGroups,
PTOKEN_GROUPS ptg,
IWbemContext* pCtx,
IWbemServices* pNamespace);
HRESULT SetInstanceTokenPrivileges(
IWbemClassObject* pWin32TokenPrivileges,
PTOKEN_PRIVILEGES ptp,
IWbemContext* pCtx,
IWbemServices* pNamespace);
// Member meant to only be called
// by base class.
static DWORD CheckProps(
CFrameworkQuery& Query);
};