27 #define COMPLETION_BUFFER_SIZE 4096 46 pszUnique = pszUnique?(pszUnique+1):pszText;
58 ASSERT(pszText <= pszUnique);
59 s = pszUnique - pszText;
221 if (!pNode->
Init(pszText))
255 unsigned __int64 nRelativeIndex = 0;
262 if ((nRelativeIndex > nIndex)||(nRelativeIndex >
m_nCount-nIndex-1))
266 if (!pNode && (nIndex <=
m_nCount/2))
270 nRelativeIndex = nIndex;
282 if (nRelativeIndex == 0)
338 DWORD dwMaxSubkeyNameLength;
340 DWORD dwMaxValueNameSize;
361 size_t nKeyNameSize = 0;
364 nKeyNameSize =
_tcslen(pszKey);
369 if (blnCompletionOnKeys)
371 nError =
Key.GetSubkeyNameMaxLength(dwMaxSubkeyNameLength);
375 pszSubkeyName =
new (std::nothrow)
TCHAR[nKeyNameSize+dwMaxSubkeyNameLength+1];
382 Key.InitSubkeyEnumeration(pszSubkeyName+nKeyNameSize,dwMaxSubkeyNameLength);
396 if (blnCompletionOnValues)
398 nError =
Key.GetMaxValueNameLength(dwMaxValueNameSize);
405 pszValueName =
new (std::nothrow)
TCHAR[nKeyNameSize+dwMaxValueNameSize+1];
412 Key.InitValueEnumeration(pszValueName+nKeyNameSize,dwMaxValueNameSize,
NULL,0,
NULL);
427 delete[] pszValueName;
429 delete[] pszSubkeyName;
433 delete[] pszValueName;
435 delete[] pszSubkeyName;
440 const BOOL *pblnForward,
441 const TCHAR *pszContext,
442 const TCHAR *pszBegin)
447 while(*pszContext &&
_istspace(*pszContext))
457 if (blnNewCompletion)
461 TCHAR *pszSeparator = pszBuffer;
474 if (nTotalItems == 0)
477 if (rnIndex >= nTotalItems)
478 rnIndex = nTotalItems-1;
485 if (rnIndex >= nTotalItems)
498 rnIndex = nTotalItems-1;
CCompletionMatch * m_pNext
BOOL Init(const TCHAR *pszText)
#define ERROR_NO_MORE_ITEMS
int _tcscmp(const _TCHAR *s1, const _TCHAR *s2)
const TCHAR * GetCurrentPath() const
const TCHAR * Get(unsigned __int64 nIndex, BOOL &rblnIsKey)
_TCHAR * _tcsncpy(_TCHAR *dst, const _TCHAR *src, size_t n)
_TCHAR * _tcscpy(_TCHAR *to, const _TCHAR *from)
BOOL IsNewCompletion(const TCHAR *pszContext, const TCHAR *pszBegin, BOOL &rblnNew)
BOOL g_blnCompletionCycle
#define COMPLETION_BUFFER_SIZE
BOOL FillCompletion(const TCHAR *pszKey)
BOOL GetKey(const TCHAR *pchRelativePath, REGSAM DesiredAccess, CRegistryKey &rKey)
const TCHAR * GetContext()
size_t __cdecl _tcslen(const _TCHAR *str)
_Must_inspect_result_ _In_ WDFDEVICE _In_ ULONG _In_ ACCESS_MASK _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFKEY * Key
class CCompletionList g_Completion
_TCHAR * _tcschr(const _TCHAR *s, _XINT c)
GLboolean GLboolean GLboolean b
unsigned __int64 m_nCount
CCompletionMatch * m_pPrev
unsigned __int64 GetCount()
CCompletionMatch * m_pHead
CCompletionMatch * m_pLastSearched
BOOL Add(const TCHAR *pszText, BOOL blnIsKey)
CCompletionMatch * m_pTail
unsigned int m_nLastSearched
_TCHAR * _tcscat(_TCHAR *s, const _TCHAR *append)
_TCHAR * _tcsrchr(const _TCHAR *s, _XINT c)
const TCHAR * CompletionCallback(unsigned __int64 &rnIndex, const BOOL *pblnForward, const TCHAR *pszContext, const TCHAR *pszBegin)
void InvalidateCompletion()
#define KEY_ENUMERATE_SUB_KEYS