/**************************************************************************
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.
Copyright 1997 Microsoft Corporation. All Rights Reserved.
**************************************************************************/
/**************************************************************************
File: PidlMgr.h
Description: CPidlMgr definitions.
**************************************************************************/
#ifndef PIDLMGR_H
#define PIDLMGR_H
#include <windows.h>
#include <shlobj.h>
/**************************************************************************
data types
**************************************************************************/
typedef enum tagPIDLTYPE
{
PT_ROOTKEY = 0x00000000,
PT_SUBKEY = 0x00000001,
PT_VALUE = 0x00000002,
PT_TEXT = PT_SUBKEY | PT_VALUE
}PIDLTYPE;
typedef struct tagPIDLDATA
{
PIDLTYPE type;
union{
HKEY hRootKey;
TCHAR szText[1];
};
}PIDLDATA, FAR *LPPIDLDATA;
/**************************************************************************
global variables
**************************************************************************/
extern HINSTANCE g_hInst;
extern UINT g_DllRefCount;
/**************************************************************************
CPidlMgr class definition
**************************************************************************/
class CPidlMgr
{
public:
CPidlMgr();
~CPidlMgr();
LPITEMIDLIST CreateRootKey(HKEY);
LPITEMIDLIST CreateSubKey(LPCTSTR);
LPITEMIDLIST CreateValue(LPCTSTR);
void Delete(LPITEMIDLIST);
LPITEMIDLIST GetNextItem(LPCITEMIDLIST);
LPITEMIDLIST Copy(LPCITEMIDLIST);
UINT GetSize(LPCITEMIDLIST);
BOOL GetRootKey(LPCITEMIDLIST, HKEY*);
LPITEMIDLIST GetLastItem(LPCITEMIDLIST);
DWORD GetItemText(LPCITEMIDLIST, LPTSTR, USHORT);
BOOL IsRootKey(LPCITEMIDLIST);
BOOL IsSubKey(LPCITEMIDLIST);
BOOL IsValue(LPCITEMIDLIST);
BOOL HasSubKeys(HKEY, LPCTSTR, LPCITEMIDLIST);
DWORD GetSubKeyText(LPCITEMIDLIST, LPTSTR, DWORD);
DWORD GetValueText(LPCITEMIDLIST, LPTSTR, DWORD);
BOOL GetValueType(LPCITEMIDLIST, LPDWORD);
BOOL GetValueType(LPCITEMIDLIST, LPCITEMIDLIST, LPDWORD);
DWORD GetDataText(LPCITEMIDLIST, LPTSTR, DWORD);
DWORD GetDataText(LPCITEMIDLIST, LPCITEMIDLIST, LPTSTR, DWORD);
DWORD GetPidlPath(LPCITEMIDLIST, LPTSTR, DWORD);
LPITEMIDLIST Concatenate(LPCITEMIDLIST, LPCITEMIDLIST);
private:
LPMALLOC m_pMalloc;
LPITEMIDLIST Create(PIDLTYPE, LPVOID, USHORT);
DWORD GetData(PIDLTYPE, LPCITEMIDLIST, LPVOID, USHORT);
LPPIDLDATA GetDataPointer(LPCITEMIDLIST);
BOOL SeparateKeyAndValue(LPCITEMIDLIST, LPITEMIDLIST*, LPITEMIDLIST*);
};
typedef CPidlMgr FAR *LPPIDLMGR;
#endif //PIDLMGR_H