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.
 
 
 
 
 
 

256 lines
5.0 KiB

/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
handle.hxx
Abstract:
Handle Class for IIS MetaBase.
Author:
Michael W. Thomas 18-Jun-96
Revision History:
--*/
#ifndef _metahandle_
#define _metahandle_
typedef struct _CHANGE_ENTRY {
CMDBaseObject *pboChanged;
DWORD dwChangeType;
DWORD dwNumDataIDs;
BUFFER *pbufDataIDs;
STRAU *pStrOrigName;
_CHANGE_ENTRY *NextPtr;
} CHANGE_ENTRY, *PCHANGE_ENTRY;
class CMDHandle
{
public:
CMDHandle(
CMDBaseObject *pboMDAssociated,
DWORD dwMDPermissions,
DWORD dwMDSystemChangeNumber,
METADATA_HANDLE mhMDHandleIdentifier,
BOOLEAN bSchemaKey)
:
m_mhMDHandleIdentifier (mhMDHandleIdentifier),
m_dwMDPermissions (dwMDPermissions),
m_dwMDSystemChangeNumber (dwMDSystemChangeNumber),
m_pboMDAssociated (pboMDAssociated),
m_pceChangeList (NULL),
m_SchemaHandle (bSchemaKey)
/*++
Routine Description:
Constructor for a handle.
Arguments:
MDAssociated - The meta object this handles is associated with.
MDPermissions - The handle permissions.
METADATA_PERMISSION_READ
METADATA_PERMISSION_WRITE
MDHandleIdentifier - The handle id.
Return Value:
--*/
{};
CMDHandle(CMDHandle *phoOriginal)
:
m_mhMDHandleIdentifier (phoOriginal->m_mhMDHandleIdentifier),
m_dwMDPermissions (phoOriginal->m_dwMDPermissions),
m_dwMDSystemChangeNumber (phoOriginal->m_dwMDSystemChangeNumber),
m_pboMDAssociated (phoOriginal->m_pboMDAssociated),
m_pceChangeList (phoOriginal->m_pceChangeList),
m_SchemaHandle (phoOriginal->m_SchemaHandle)
{
};
~CMDHandle();
VOID SetNextPtr(CMDHandle *NextPtr)
/*++
Routine Description:
Sets the pointer to the next handle object.
Arguments:
NextPtr - The next handle object, or NULL.
Return Value:
--*/
{
m_NextPtr = NextPtr;
};
CMDHandle *GetNextPtr()
/*++
Routine Description:
Gets the pointer to the next data object.
Arguments:
Return Value:
CMDHandle * - The next handle object, or NULL.
--*/
{
return m_NextPtr;
};
BOOLEAN IsSchemaHandle()
{
return m_SchemaHandle;
}
METADATA_HANDLE GetHandleIdentifier()
/*++
Routine Description:
Gets the handle identifier, or meta handle.
Arguments:
Return Value:
DWORD - The handle identifier.
--*/
{
return m_mhMDHandleIdentifier;
};
VOID SetPermissions(
DWORD dwMDPermissions)
/*++
Routine Description:
Sets the handle permissions.
Arguments:
MDPermissions - The new permissions.
METADATA_PERMISSION_READ
METADATA_PERMISSION_WRITE
Return Value:
--*/
{
m_dwMDPermissions = dwMDPermissions;
};
BOOL IsWriteAllowed()
/*++
Routine Description:
Determines if write permission is set.
Arguments:
Return Value:
BOOL - TRUE if write permission is set.
--*/
{
return (((m_dwMDPermissions & METADATA_PERMISSION_WRITE) != 0) ? TRUE : FALSE);
};
BOOL IsReadAllowed()
/*++
Routine Description:
Determines if read permission is set.
Arguments:
Return Value:
BOOL - TRUE if read permission is set.
--*/
{
return (((m_dwMDPermissions & METADATA_PERMISSION_READ) != 0) ? TRUE : FALSE);
};
CMDBaseObject *GetObject()
/*++
Routine Description:
Gets the associated meta object.
Arguments:
Return Value:
CMDBaseObejct * - The associated meta object.
--*/
{
return (m_pboMDAssociated);
};
VOID GetHandleInfo(PMETADATA_HANDLE_INFO pmdhiInfo)
{
pmdhiInfo->dwMDPermissions = m_dwMDPermissions;
pmdhiInfo->dwMDSystemChangeNumber = m_dwMDSystemChangeNumber;
};
DWORD
SetChangeData(CMDBaseObject *pboChanged,
DWORD dwChangeType,
DWORD dwDataID,
LPWSTR pszOldName = NULL);
PCHANGE_ENTRY
EnumChangeEntries(DWORD dwIndex);
DWORD
CMDHandle::GetNumChangeEntries();
VOID
RemoveNotifications();
VOID
ZeroChangeList()
{
m_pceChangeList = NULL;
};
private:
METADATA_HANDLE m_mhMDHandleIdentifier;
DWORD m_dwMDPermissions;
DWORD m_dwMDSystemChangeNumber;
CMDBaseObject *m_pboMDAssociated;
CMDHandle *m_NextPtr;
PCHANGE_ENTRY m_pceChangeList;
BOOLEAN m_SchemaHandle;
};
#endif