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.
 
 
 
 
 
 

168 lines
5.0 KiB

#ifndef __UTIL_H__
#define __UTIL_H__
#include "resource.h"
extern INT g_iDebugOutputLevel;
void DumpFriendlyName(CIISObject * pObj);
HRESULT DumpAllScopeItems(CComPtr<IConsoleNameSpace> pConsoleNameSpace, IN HSCOPEITEM hParent, IN int iTreeLevel);
HRESULT DumpAllResultItems(IResultData * pResultData);
HRESULT IsValidDomainUser(LPCTSTR szDomainUser,LPTSTR szFullName,DWORD cch);
BOOL IsLocalHost(LPCTSTR szHostName,BOOL* pbIsHost);
#if defined(_DEBUG) || DBG
#define DEBUG_PREPEND_STRING _T("---")
typedef CMap< DWORD_PTR, DWORD_PTR, CString, LPCTSTR> CMyMapPointerToString;
class CDebug_IISObject
{
public:
CDebug_IISObject()
{
m_strClassName = _T("CDebug_IISObject");
};
~CDebug_IISObject(){};
public:
CString m_strClassName;
void Init()
{
DebugList_IISObject.RemoveAll();
DebugList_PointersToFriendly.RemoveAll();
}
void Add(CIISObject * pItem)
{
if (g_iDebugOutputLevel & DEBUG_FLAG_CIISOBJECT)
{
DebugTrace(_T("%s%s>:Add:[%3d] %p\r\n"),m_strClassName,DEBUG_PREPEND_STRING,DebugList_IISObject.GetCount(),pItem);
}
DebugList_IISObject.AddTail(pItem);
}
void Del(CIISObject * pItem)
{
INT_PTR iCount = DebugList_IISObject.GetCount();
iCount--;
CString strDescription;
// See if we can find this pointer in our list of pointers to friendlynames..
DWORD_PTR dwPtr = (DWORD_PTR) pItem;
DebugList_PointersToFriendly.Lookup(dwPtr,strDescription);
POSITION pos = DebugList_IISObject.Find(pItem);
if (pos)
{
DebugList_IISObject.RemoveAt(pos);
if (g_iDebugOutputLevel & DEBUG_FLAG_CIISOBJECT)
{
DebugTrace(_T("%s<%s:Del:[%3d] %p (%s)\r\n"),m_strClassName,DEBUG_PREPEND_STRING,iCount,pItem,strDescription);
}
}
else
{
if (g_iDebugOutputLevel & DEBUG_FLAG_CIISOBJECT)
{
DebugTrace(_T("%s<%s:Del:[%3d] %p (%s) (not found)\r\n"),m_strClassName,DEBUG_PREPEND_STRING,iCount,pItem,strDescription);
}
}
}
void Dump(INT iVerboseLevel)
{
int iCount = 0;
int iUseCount = 0;
BOOL bPropertySheetOpen = FALSE;
CString strGUIDName;
CString strBigString;
GUID * MyGUID = NULL;
CIISObject * pItemFromList = NULL;
if (!(g_iDebugOutputLevel & DEBUG_FLAG_CIISOBJECT))
{
return;
}
if (iVerboseLevel)
{
DebugTrace(_T("%s%s:Dump: -------------- start (count=%d)\r\n"),m_strClassName,DEBUG_PREPEND_STRING,DebugList_IISObject.GetCount());
}
POSITION pos = DebugList_IISObject.GetHeadPosition();
while (pos)
{
pItemFromList = DebugList_IISObject.GetNext(pos);
if (pItemFromList)
{
iCount++;
// Get GUID Name
MyGUID = (GUID*) pItemFromList->GetNodeType();
if (MyGUID)
{
GetFriendlyGuidName(*MyGUID,strGUIDName);
}
// Get ref count
iUseCount = pItemFromList->UseCount();
// Get Propertysheet open flag
bPropertySheetOpen = FALSE;
if (pItemFromList->IsMyPropertySheetOpen())
{
bPropertySheetOpen = TRUE;
}
// Get FriendlyName
LPOLESTR pTempFriendly = pItemFromList->QueryDisplayName();
if (0 == iVerboseLevel)
{
// Just update the display info
} else if (1 == iVerboseLevel)
{
DebugTrace(_T("%s%s:Dump:[%3d][%3d]%s %p (%s)\r\n"),m_strClassName,DEBUG_PREPEND_STRING,iCount,iUseCount,bPropertySheetOpen ? _T("P") : _T("."),pItemFromList,
strGUIDName);
}
else if (2 >= iVerboseLevel)
{
DebugTrace(_T("%s%s:Dump:[%3d][%3d]%s %p (%s) '%s'\r\n"),m_strClassName,DEBUG_PREPEND_STRING,iCount,iUseCount,bPropertySheetOpen ? _T("P") : _T("."),pItemFromList,
strGUIDName,
pTempFriendly);
}
else
{
DebugTrace(_T("%s%s:Dump:[%3d][%3d]%s %p\r\n"),m_strClassName,DEBUG_PREPEND_STRING,iCount,iUseCount,bPropertySheetOpen ? _T("P") : _T("."),pItemFromList);
}
DWORD_PTR dwPtr = (DWORD_PTR) pItemFromList;
strBigString = strGUIDName;
if (pTempFriendly)
{
strBigString += _T(" '");
strBigString += pTempFriendly;
strBigString += _T("'");
}
DebugList_PointersToFriendly.SetAt(dwPtr,strGUIDName);
}
}
if (iVerboseLevel)
{
DebugTrace(_T("%s%s:Dump: -------------- end\r\n"),m_strClassName,DEBUG_PREPEND_STRING);
}
}
void Dump()
{
Dump(2);
}
private:
CIISObjectList DebugList_IISObject;
CMyMapPointerToString DebugList_PointersToFriendly;
};
#endif // DEBUG
#endif // __UTIL_H__