Source code of Windows XP (NT5)
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.
|
|
//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\//\\ //
// chanenum.h
//
// The definition of the channel enumerator.
//
// History:
//
// 8/6/97 edwardp Created.
//
////////////////////////////////////////////////////////////////////////////////
//
// Check for previous includes of this file.
//
#ifndef _CHANENUM_H_
#define _CHANENUM_H_
/*
//
// Defines
//
#define TSTR_CHANNEL_KEY TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Channels")
//
// Helper functions.
//
HKEY Reg_GetChannelKey(void); HRESULT Reg_WriteChannel(LPCTSTR pszPath,LPCTSTR pszURL); HRESULT Reg_RemoveChannel(LPCTSTR pszPath); */
//
// Structures.
//
typedef struct _tagSTACKENTRY { LPTSTR pszPath; _tagSTACKENTRY* pNext; } STACKENTRY;
typedef enum _tagINIVALUE { INI_GUID = 0, INI_URL = 1 } INIVALUE;
//
// Class definition for the channel enumerator class.
//
class CChannelEnum : public IEnumChannels {
//
// Methods
//
public:
// Constructor
CChannelEnum(DWORD dwEnumFlags, LPCWSTR pszURL);
// IUnknown
STDMETHODIMP QueryInterface(REFIID, void **); STDMETHODIMP_(ULONG) AddRef(void); STDMETHODIMP_(ULONG) Release(void);
// IEnumIDList
STDMETHODIMP Next(ULONG celt, CHANNELENUMINFO* rgInfo, ULONG *pceltFetched); STDMETHODIMP Skip(ULONG celt); STDMETHODIMP Reset(void); STDMETHODIMP Clone(IEnumChannels **ppenum); private:
// Destructor
~CChannelEnum(void);
// Helper methods
inline BOOL DirectoryStack_IsEmpty(void); void DirectoryStack_FreeEntry(STACKENTRY* pse); void DirectoryStack_FreeStack(void); STACKENTRY* DirectoryStack_Pop(void); BOOL DirectoryStack_Push(LPCTSTR pszPath); BOOL DirectoryStack_InitFromFlags(DWORD dwEnumFlags); BOOL DirectoryStack_PushSubdirectories(LPCTSTR pszPath);
BOOL FindNextChannel(CHANNELENUMINFO* pInfo); BOOL ReadChannelInfo(LPCTSTR pszPath, CHANNELENUMINFO* pInfo); BOOL ContainsChannelDesktopIni(LPCTSTR pszPath); BOOL URLMatchesIni(LPCTSTR pszPath, LPCTSTR pszURL); BOOL ReadFromIni(LPCTSTR pszPath, LPTSTR pszOut, int cch, INIVALUE iv); LPOLESTR OleAllocString(LPCTSTR psz);
SUBSCRIPTIONSTATE GetSubscriptionState(LPCTSTR pszURL);
//
// Member variables.
//
private:
ULONG m_cRef; STACKENTRY* m_pseDirectoryStack; LPTSTR m_pszURL; DWORD m_dwEnumFlags; };
#endif // _CHANENUM_H_
|