102 lines
2.5 KiB
C++
102 lines
2.5 KiB
C++
// This is a part of the Microsoft Management Console.
|
|
// Copyright 1995 - 1997 Microsoft Corporation
|
|
// All rights reserved.
|
|
//
|
|
// This source code is only intended as a supplement to the
|
|
// Microsoft Management Console and related
|
|
// electronic documentation provided with the interfaces.
|
|
|
|
#ifndef _SERVICE_H
|
|
#define _SERVICE_H
|
|
|
|
// Forward declarations
|
|
class CSnapin;
|
|
|
|
#define SCOPE_ITEM 111
|
|
#define RESULT_ITEM 222
|
|
|
|
// Internal structure used for cookies
|
|
struct FOLDER_DATA
|
|
{
|
|
wchar_t* szName;
|
|
wchar_t* szSize;
|
|
wchar_t* szType;
|
|
|
|
FOLDER_TYPES type;
|
|
};
|
|
|
|
struct RESULT_DATA
|
|
{
|
|
DWORD itemType; // used for debug purpose only
|
|
FOLDER_TYPES parentType;
|
|
|
|
wchar_t* szName;
|
|
wchar_t* szSize;
|
|
wchar_t* szType;
|
|
};
|
|
|
|
|
|
class CFolder
|
|
{
|
|
DWORD itemType; // Used for debug purpose only. This should be the first
|
|
// member. The class should not have any virtual fuctions.
|
|
|
|
friend class CSnapin;
|
|
friend class CComponentDataImpl;
|
|
|
|
public:
|
|
// UNINITIALIZED is an invalid memory address and is a good cookie initializer
|
|
CFolder()
|
|
{
|
|
itemType = SCOPE_ITEM; // used for debug purpose only
|
|
|
|
m_cookie = UNINITIALIZED;
|
|
m_enumed = FALSE;
|
|
m_pScopeItem = NULL;
|
|
m_type = NONE;
|
|
m_pszName = NULL;
|
|
};
|
|
|
|
~CFolder() { delete m_pScopeItem; CoTaskMemFree(m_pszName); };
|
|
|
|
// Interface
|
|
public:
|
|
BOOL IsEnumerated() { return m_enumed; };
|
|
void Set(BOOL state) { m_enumed = state; };
|
|
void SetCookie(MMC_COOKIE cookie) { m_cookie = cookie; }
|
|
FOLDER_TYPES GetType() { ASSERT(m_type != NONE); return m_type; };
|
|
BOOL operator == (const CFolder& rhs) const { return rhs.m_cookie == m_cookie; };
|
|
BOOL operator == (MMC_COOKIE cookie) const { return cookie == m_cookie; };
|
|
void SetName(LPWSTR pszIn)
|
|
{
|
|
UINT len = wcslen(pszIn) + 1;
|
|
LPWSTR psz = (LPWSTR)CoTaskMemAlloc(len * sizeof(WCHAR));
|
|
if (psz != NULL)
|
|
{
|
|
wcscpy(psz, pszIn);
|
|
CoTaskMemFree(m_pszName);
|
|
m_pszName = psz;
|
|
}
|
|
}
|
|
|
|
HSCOPEITEM GetItemID()
|
|
{
|
|
return m_pScopeItem->ID;
|
|
}
|
|
|
|
// Implementation
|
|
private:
|
|
void Create(LPWSTR szName, int nImage, int nOpenImage,
|
|
FOLDER_TYPES type, BOOL bHasChildren = FALSE);
|
|
|
|
// Attributes
|
|
private:
|
|
LPSCOPEDATAITEM m_pScopeItem;
|
|
MMC_COOKIE m_cookie;
|
|
BOOL m_enumed;
|
|
FOLDER_TYPES m_type;
|
|
LPOLESTR m_pszName;
|
|
};
|
|
|
|
#endif
|