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.
 
 
 
 
 
 

74 lines
2.5 KiB

/////////////////////////////////////////////////////////////////////////////
// Copyright (C) 1993-1998 Microsoft Corporation. All Rights Reserved.
//
// MODULE: mru.h
//
// PURPOSE:
//
#pragma once
class CMRUList;
/////////////////////////////////////////////////////////////////////////////
// Types
// Flags
#define MRU_CACHEWRITE 0x0002
#define MRU_ANSI 0x0004
#define MRU_ORDERDIRTY 0x0008
#define MRU_LAZY 0x8000
/////////////////////////////////////////////////////////////////////////////
// class MRU List definition
//
class CMRUList
{
public:
/////////////////////////////////////////////////////////////////////////
// Construction and Initialization
//
CMRUList();
~CMRUList();
/////////////////////////////////////////////////////////////////////////
// public MRU List functions
//
BOOL CreateList(UINT uMaxEntries, UINT fFlags, LPCSTR pszSubKey);
void FreeList(void);
int AddString(LPCSTR psz);
int RemoveString(LPCSTR psz);
int EnumList(int nItem, LPTSTR psz, UINT uLen);
int AddData(const void *pData, UINT cbData);
int FindData(const void *pData, UINT cbData, LPINT piSlot);
BOOL CreateListLazy(UINT uMaxEntries, UINT fFlags, LPCSTR pszSubKey, const void *pData, UINT cbData, LPINT piSlot);
private:
/////////////////////////////////////////////////////////////////////////
// Utility Functions
//
void _GetIndexStrFromIndex(DWORD dwIndex, LPTSTR pszIndexStr, DWORD cchIndexStrSize)
{
wnsprintf(pszIndexStr, cchIndexStrSize, TEXT("%d"), dwIndex);
}
int CDECL _IMemCmp(const void *pBuf1, const void *pBuf2, size_t cb);
BOOL _IsSameData(BYTE FAR *pVal, const void FAR *pData, UINT cbData);
LPDWORD _GetMRUValue(HKEY hkeySubKey, LPCTSTR pszRegValue);
HRESULT _SetMRUValue(HKEY hkeySubKey, LPCTSTR pszRegValue, LPDWORD pData);
BOOL _SetPtr(LPSTR * ppszCurrent, LPCSTR pszNew);
private:
/////////////////////////////////////////////////////////////////////////
// Class data
//
UINT m_uMax; // Maxiumum number of entries in the MRU list
UINT m_fFlags; // Flags
HKEY m_hKey; // Reg key where we write
LPSTR m_pszSubKey; // Sub key where the MRU data is stashed
LPTSTR *m_rgpszMRU; // List of entries
LPTSTR m_pszOrder; // Order array
};