ReactOS 0.4.15-dev-7906-g1b85a5f
find.c File Reference
#include "regedit.h"
Include dependency graph for find.c:

Go to the source code of this file.

Macros

#define RSF_WHOLESTRING   0x00000001
 
#define RSF_LOOKATKEYS   0x00000002
 
#define RSF_LOOKATVALUES   0x00000004
 
#define RSF_LOOKATDATA   0x00000008
 
#define RSF_MATCHCASE   0x00010000
 

Functions

VOID SetValueName (HWND hwndLV, LPCWSTR pszValueName)
 
BOOL DoEvents (VOID)
 
static LPWSTR lstrstri (LPCWSTR psz1, LPCWSTR psz2)
 
static BOOL CompareName (LPCWSTR pszName1, LPCWSTR pszName2)
 
static BOOL MatchString (LPCWCH pch1, INT cch1, LPCWCH pch2, INT cch2)
 
static BOOL MatchData (DWORD dwType, LPCVOID pv1, DWORD cb1)
 
int compare (const void *x, const void *y)
 
BOOL RegFindRecurse (HKEY hKey, LPCWSTR pszSubKey, LPCWSTR pszValueName, LPWSTR *ppszFoundSubKey, LPWSTR *ppszFoundValueName)
 
BOOL RegFindWalk (HKEY *phKey, LPCWSTR pszSubKey, LPCWSTR pszValueName, LPWSTR *ppszFoundSubKey, LPWSTR *ppszFoundValueName)
 
static DWORD GetFindFlags (void)
 
static void SetFindFlags (DWORD dwFlags)
 
static INT_PTR CALLBACK AbortFindDialogProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
BOOL FindNext (HWND hWnd)
 
static INT_PTR CALLBACK FindDialogProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
void FindNextMessageBox (HWND hWnd)
 
void FindDialog (HWND hWnd)
 

Variables

static WCHAR s_szFindWhat [256]
 
static const WCHAR s_szFindFlags [] = L"FindFlags"
 
static const WCHAR s_szFindFlagsR [] = L"FindFlagsReactOS"
 
static HWND s_hwndAbortDialog
 
static BOOL s_bAbort
 
static DWORD s_dwFlags
 
static WCHAR s_szName [MAX_PATH]
 
static DWORD s_cchName
 
static const WCHAR s_empty [] = L""
 
static const WCHAR s_backslash [] = L"\\"
 

Macro Definition Documentation

◆ RSF_LOOKATDATA

#define RSF_LOOKATDATA   0x00000008

Definition at line 24 of file find.c.

◆ RSF_LOOKATKEYS

#define RSF_LOOKATKEYS   0x00000002

Definition at line 22 of file find.c.

◆ RSF_LOOKATVALUES

#define RSF_LOOKATVALUES   0x00000004

Definition at line 23 of file find.c.

◆ RSF_MATCHCASE

#define RSF_MATCHCASE   0x00010000

Definition at line 25 of file find.c.

◆ RSF_WHOLESTRING

#define RSF_WHOLESTRING   0x00000001

Definition at line 21 of file find.c.

Function Documentation

◆ AbortFindDialogProc()

static INT_PTR CALLBACK AbortFindDialogProc ( HWND  hDlg,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)
static

Definition at line 594 of file find.c.

595{
598
599 switch(uMsg)
600 {
601 case WM_CLOSE:
602 s_bAbort = TRUE;
603 break;
604
605 case WM_COMMAND:
606 switch(HIWORD(wParam))
607 {
608 case BN_CLICKED:
609 switch(LOWORD(wParam))
610 {
611 case IDCANCEL:
612 s_bAbort = TRUE;
613 break;
614 }
615 break;
616 }
617 break;
618 }
619 return 0;
620}
static BOOL s_bAbort
Definition: find.c:31
WPARAM wParam
Definition: combotst.c:138
LPARAM lParam
Definition: combotst.c:139
#define TRUE
Definition: types.h:120
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:317
#define LOWORD(l)
Definition: pedump.c:82
#define HIWORD(l)
Definition: typedefs.h:247
#define WM_CLOSE
Definition: winuser.h:1621
#define IDCANCEL
Definition: winuser.h:831
#define WM_COMMAND
Definition: winuser.h:1740
#define BN_CLICKED
Definition: winuser.h:1925

Referenced by FindNext().

◆ compare()

int compare ( const void x,
const void y 
)

Definition at line 119 of file find.c.

120{
121 const LPCWSTR *a = (const LPCWSTR *)x;
122 const LPCWSTR *b = (const LPCWSTR *)y;
123 return _wcsicmp(*a, *b);
124}
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
GLboolean GLboolean GLboolean b
Definition: glext.h:6204
GLboolean GLboolean GLboolean GLboolean a
Definition: glext.h:6204
_Check_return_ _CRTIMP int __cdecl _wcsicmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185

◆ CompareName()

static BOOL CompareName ( LPCWSTR  pszName1,
LPCWSTR  pszName2 
)
static

Definition at line 72 of file find.c.

73{
75 {
77 return wcscmp(pszName1, pszName2) == 0;
78 else
79 return _wcsicmp(pszName1, pszName2) == 0;
80 }
81 else
82 {
84 return wcsstr(pszName1, pszName2) != NULL;
85 else
86 return lstrstri(pszName1, pszName2) != NULL;
87 }
88}
#define RSF_MATCHCASE
Definition: find.c:25
#define RSF_WHOLESTRING
Definition: find.c:21
static LPWSTR lstrstri(LPCWSTR psz1, LPCWSTR psz2)
Definition: find.c:57
static DWORD s_dwFlags
Definition: find.c:33
#define NULL
Definition: types.h:112
_CONST_RETURN wchar_t *__cdecl wcsstr(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_SubStr)
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)

Referenced by LdrGetDllHandleEx(), LdrpCompareResourceNames_U(), RegFindRecurse(), and RegFindWalk().

◆ DoEvents()

BOOL DoEvents ( VOID  )

Definition at line 41 of file find.c.

42{
43 MSG msg;
44 if (PeekMessageW(&msg, NULL, 0, 0, PM_REMOVE))
45 {
46 if (msg.message == WM_QUIT)
47 s_bAbort = TRUE;
49 {
52 }
53 }
54 return s_bAbort;
55}
#define msg(x)
Definition: auth_time.c:54
static HWND s_hwndAbortDialog
Definition: find.c:30
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1829
#define WM_QUIT
Definition: winuser.h:1623
BOOL WINAPI TranslateMessage(_In_ const MSG *)
BOOL WINAPI IsDialogMessageW(_In_ HWND, _In_ LPMSG)
BOOL WINAPI PeekMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT, _In_ UINT)
#define PM_REMOVE
Definition: winuser.h:1196
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)

Referenced by RegFindRecurse(), and RegFindWalk().

◆ FindDialog()

void FindDialog ( HWND  hWnd)

Definition at line 824 of file find.c.

825{
827 hWnd, FindDialogProc, 0) != 0)
828 {
830 }
831}
HWND hWnd
Definition: settings.c:17
void FindNextMessageBox(HWND hWnd)
Definition: find.c:812
static INT_PTR CALLBACK FindDialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: find.c:697
#define IDD_FIND
Definition: resource.h:48
#define GetModuleHandle
Definition: winbase.h:3827
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
INT_PTR WINAPI DialogBoxParamW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)

Referenced by _CmdWndProc(), and FindNext().

◆ FindDialogProc()

static INT_PTR CALLBACK FindDialogProc ( HWND  hDlg,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)
static

Definition at line 697 of file find.c.

698{
699 INT_PTR iResult = 0;
700 HWND hControl;
701 LONG lStyle;
703 static WCHAR s_szSavedFindValue[256];
704
705 switch(uMsg)
706 {
707 case WM_INITDIALOG:
709
710 hControl = GetDlgItem(hDlg, IDC_LOOKAT_KEYS);
711 if (hControl)
713
714 hControl = GetDlgItem(hDlg, IDC_LOOKAT_VALUES);
715 if (hControl)
717
718 hControl = GetDlgItem(hDlg, IDC_LOOKAT_DATA);
719 if (hControl)
721
722 /* Match whole string */
723 hControl = GetDlgItem(hDlg, IDC_MATCHSTRING);
724 if (hControl)
726
727 /* Case sensitivity */
728 hControl = GetDlgItem(hDlg, IDC_MATCHCASE);
729 if (hControl)
731
732 hControl = GetDlgItem(hDlg, IDC_FINDWHAT);
733 if (hControl)
734 {
735 SetWindowTextW(hControl, s_szSavedFindValue);
736 SetFocus(hControl);
737 SendMessageW(hControl, EM_SETSEL, 0, -1);
738 }
739 break;
740
741 case WM_CLOSE:
742 EndDialog(hDlg, 0);
743 break;
744
745 case WM_COMMAND:
746 switch(HIWORD(wParam))
747 {
748 case BN_CLICKED:
749 switch(LOWORD(wParam))
750 {
751 case IDOK:
752 dwFlags = 0;
753
754 hControl = GetDlgItem(hDlg, IDC_LOOKAT_KEYS);
755 if (hControl && (SendMessageW(hControl, BM_GETCHECK, 0, 0) == BST_CHECKED))
757
758 hControl = GetDlgItem(hDlg, IDC_LOOKAT_VALUES);
759 if (hControl && (SendMessageW(hControl, BM_GETCHECK, 0, 0) == BST_CHECKED))
761
762 hControl = GetDlgItem(hDlg, IDC_LOOKAT_DATA);
763 if (hControl && (SendMessageW(hControl, BM_GETCHECK, 0, 0) == BST_CHECKED))
765
766 hControl = GetDlgItem(hDlg, IDC_MATCHSTRING);
767 if (hControl && (SendMessageW(hControl, BM_GETCHECK, 0, 0) == BST_CHECKED))
769
770 hControl = GetDlgItem(hDlg, IDC_MATCHCASE);
771 if (hControl && (SendMessageW(hControl, BM_GETCHECK, 0, 0) == BST_CHECKED))
773
775
776 hControl = GetDlgItem(hDlg, IDC_FINDWHAT);
777 if (hControl)
779 EndDialog(hDlg, 1);
780 break;
781
782 case IDCANCEL:
783 EndDialog(hDlg, 0);
784 break;
785 }
786 break;
787
788 case EN_CHANGE:
789 switch(LOWORD(wParam))
790 {
791 case IDC_FINDWHAT:
792 GetWindowTextW((HWND) lParam, s_szSavedFindValue, ARRAY_SIZE(s_szSavedFindValue));
793 hControl = GetDlgItem(hDlg, IDOK);
794 if (hControl)
795 {
796 lStyle = GetWindowLongPtr(hControl, GWL_STYLE);
797 if (s_szSavedFindValue[0])
798 lStyle &= ~WS_DISABLED;
799 else
800 lStyle |= WS_DISABLED;
801 SetWindowLongPtr(hControl, GWL_STYLE, lStyle);
803 }
804 break;
805 }
806 }
807 break;
808 }
809 return iResult;
810}
static void SetFindFlags(DWORD dwFlags)
Definition: find.c:576
#define RSF_LOOKATVALUES
Definition: find.c:23
#define RSF_LOOKATDATA
Definition: find.c:24
static DWORD GetFindFlags(void)
Definition: find.c:547
static WCHAR s_szFindWhat[256]
Definition: find.c:27
#define RSF_LOOKATKEYS
Definition: find.c:22
#define ARRAY_SIZE(A)
Definition: main.h:33
#define IDC_LOOKAT_DATA
Definition: resource.h:298
#define IDC_LOOKAT_VALUES
Definition: resource.h:297
#define IDC_FINDWHAT
Definition: resource.h:295
#define IDC_MATCHSTRING
Definition: resource.h:299
#define IDC_LOOKAT_KEYS
Definition: resource.h:296
#define IDC_MATCHCASE
Definition: resource.h:300
#define FALSE
Definition: types.h:117
unsigned long DWORD
Definition: ntddk_ex.h:95
long LONG
Definition: pedump.c:60
#define WS_DISABLED
Definition: pedump.c:621
#define GetWindowLongPtr
Definition: treelist.c:73
#define SetWindowLongPtr
Definition: treelist.c:70
int32_t INT_PTR
Definition: typedefs.h:64
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
Definition: window.c:1412
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1176
BOOL WINAPI RedrawWindow(_In_opt_ HWND, _In_opt_ LPCRECT, _In_opt_ HRGN, _In_ UINT)
#define WM_INITDIALOG
Definition: winuser.h:1739
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define IDOK
Definition: winuser.h:830
#define BM_SETCHECK
Definition: winuser.h:1921
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)
HWND WINAPI SetFocus(_In_opt_ HWND)
#define EM_SETSEL
Definition: winuser.h:2018
#define GWL_STYLE
Definition: winuser.h:852
#define RDW_INVALIDATE
Definition: winuser.h:1214
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define BST_CHECKED
Definition: winuser.h:197
#define BM_GETCHECK
Definition: winuser.h:1918
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
#define EN_CHANGE
Definition: winuser.h:2022
__wchar_t WCHAR
Definition: xmlstorage.h:180

Referenced by FindDialog().

◆ FindNext()

BOOL FindNext ( HWND  hWnd)

Definition at line 622 of file find.c.

623{
624 HKEY hKeyRoot;
625 LPCWSTR pszKeyPath;
626 BOOL fSuccess;
627 WCHAR szFullKey[512];
628 LPCWSTR pszValueName;
629 LPWSTR pszFoundSubKey, pszFoundValueName;
630
631 if (wcslen(s_szFindWhat) == 0)
632 {
634 return TRUE;
635 }
636
638
639 pszKeyPath = GetItemPath(g_pChildWnd->hTreeWnd, 0, &hKeyRoot);
640 if (pszKeyPath == NULL)
641 {
642 hKeyRoot = HKEY_CLASSES_ROOT;
643 pszKeyPath = s_empty;
644 }
645
646 /* Create abort find dialog */
650 {
653 }
654 s_bAbort = FALSE;
655
656 pszValueName = GetValueName(g_pChildWnd->hListWnd, -1);
657
662
663 fSuccess = RegFindWalk(&hKeyRoot, pszKeyPath, pszValueName,
664 &pszFoundSubKey, &pszFoundValueName);
665
670
672 {
675 }
676
677 if (fSuccess)
678 {
679 GetKeyName(szFullKey, ARRAY_SIZE(szFullKey), hKeyRoot, pszFoundSubKey);
680 SelectNode(g_pChildWnd->hTreeWnd, szFullKey);
681 free(pszFoundSubKey);
682
683 if (pszFoundValueName != NULL)
684 {
685 SetValueName(g_pChildWnd->hListWnd, pszFoundValueName);
686 free(pszFoundValueName);
688 }
689 else
690 {
692 }
693 }
694 return fSuccess || s_bAbort;
695}
ChildWnd * g_pChildWnd
Definition: childwnd.c:23
BOOL GetKeyName(LPWSTR pszDest, size_t iDestLength, HKEY hRootKey, LPCWSTR lpSubKey)
Definition: edit.c:2206
VOID SetValueName(HWND hwndLV, LPCWSTR pszValueName)
Definition: listview.c:84
BOOL RegFindWalk(HKEY *phKey, LPCWSTR pszSubKey, LPCWSTR pszValueName, LPWSTR *ppszFoundSubKey, LPWSTR *ppszFoundValueName)
Definition: find.c:346
static const WCHAR s_empty[]
Definition: find.c:36
static INT_PTR CALLBACK AbortFindDialogProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: find.c:594
void FindDialog(HWND hWnd)
Definition: find.c:824
WCHAR * GetValueName(HWND hwndLV, int iStartAt)
Definition: listview.c:55
HWND hFrameWnd
Definition: main.c:35
BOOL SelectNode(HWND hwndTV, LPCWSTR keyPath)
Definition: treeview.c:785
LPCWSTR GetItemPath(HWND hwndTV, HTREEITEM hItem, HKEY *phRootKey)
Definition: treeview.c:88
#define IDD_FINDING
Definition: resource.h:49
#define free
Definition: debug_ros.c:5
unsigned int BOOL
Definition: ntddk_ex.h:94
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
HWND hTreeWnd
Definition: main.h:63
HWND hListWnd
Definition: main.h:64
HWND hAddressBarWnd
Definition: main.h:65
#define HKEY_CLASSES_ROOT
Definition: winreg.h:10
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
BOOL WINAPI UpdateWindow(_In_ HWND)
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
#define CreateDialogW(h, n, w, f)
Definition: winuser.h:4281
#define SW_SHOW
Definition: winuser.h:775
BOOL WINAPI DestroyWindow(_In_ HWND)
WCHAR * LPWSTR
Definition: xmlstorage.h:184

Referenced by FindNextMessageBox().

◆ FindNextMessageBox()

void FindNextMessageBox ( HWND  hWnd)

Definition at line 812 of file find.c.

813{
814 if (!FindNext(hWnd))
815 {
816 WCHAR msg[128], caption[128];
817
819 LoadStringW(hInst, IDS_APP_TITLE, caption, ARRAY_SIZE(caption));
821 }
822}
#define IDS_APP_TITLE
Definition: resource.h:10
BOOL FindNext(HWND hWnd)
Definition: find.c:622
#define IDS_FINISHEDFIND
Definition: resource.h:201
HINSTANCE hInst
Definition: dxdiag.c:13
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
int WINAPI MessageBoxW(_In_opt_ HWND hWnd, _In_opt_ LPCWSTR lpText, _In_opt_ LPCWSTR lpCaption, _In_ UINT uType)
#define MB_ICONINFORMATION
Definition: winuser.h:802

Referenced by _CmdWndProc(), and FindDialog().

◆ GetFindFlags()

static DWORD GetFindFlags ( void  )
static

Definition at line 547 of file find.c.

548{
549 HKEY hKey;
550 DWORD dwType, dwValue, cbData;
552
554 {
555 /* Retrieve flags from registry key */
556 cbData = sizeof(dwValue);
557 if (RegQueryValueExW(hKey, s_szFindFlags, NULL, &dwType, (LPBYTE) &dwValue, &cbData) == ERROR_SUCCESS)
558 {
559 if (dwType == REG_DWORD)
560 dwFlags = (dwFlags & ~0x0000FFFF) | ((dwValue & 0x0000FFFF) << 0);
561 }
562
563 /* Retrieve ReactOS Regedit specific flags from registry key */
564 cbData = sizeof(dwValue);
565 if (RegQueryValueExW(hKey, s_szFindFlagsR, NULL, &dwType, (LPBYTE) &dwValue, &cbData) == ERROR_SUCCESS)
566 {
567 if (dwType == REG_DWORD)
568 dwFlags = (dwFlags & ~0xFFFF0000) | ((dwValue & 0x0000FFFF) << 16);
569 }
570
572 }
573 return dwFlags;
574}
const TCHAR g_szGeneralRegKey[]
Definition: settings.c:16
static const WCHAR s_szFindFlagsR[]
Definition: find.c:29
static const WCHAR s_szFindFlags[]
Definition: find.c:28
#define RegCloseKey(hKey)
Definition: registry.h:49
#define ERROR_SUCCESS
Definition: deptool.c:10
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
Definition: reg.c:3268
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
Definition: reg.c:4103
FxAutoRegKey hKey
#define REG_DWORD
Definition: sdbapi.c:596
unsigned char * LPBYTE
Definition: typedefs.h:53
#define HKEY_CURRENT_USER
Definition: winreg.h:11

Referenced by FindDialogProc(), and FindNext().

◆ lstrstri()

static LPWSTR lstrstri ( LPCWSTR  psz1,
LPCWSTR  psz2 
)
static

Definition at line 57 of file find.c.

58{
59 INT i, cch1, cch2;
60
61 cch1 = wcslen(psz1);
62 cch2 = wcslen(psz2);
63 for(i = 0; i <= cch1 - cch2; i++)
64 {
66 psz1 + i, cch2, psz2, cch2) == 2)
67 return (LPWSTR) (psz1 + i);
68 }
69 return NULL;
70}
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
INT WINAPI CompareStringW(LCID lcid, DWORD flags, LPCWSTR str1, INT len1, LPCWSTR str2, INT len2)
Definition: lang.c:2671
#define LOCALE_SYSTEM_DEFAULT
int32_t INT
Definition: typedefs.h:58
#define NORM_IGNORECASE
Definition: winnls.h:176

Referenced by CompareName().

◆ MatchData()

static BOOL MatchData ( DWORD  dwType,
LPCVOID  pv1,
DWORD  cb1 
)
static

Definition at line 111 of file find.c.

112{
113 if (dwType == REG_SZ || dwType == REG_EXPAND_SZ || dwType == REG_MULTI_SZ)
114 return MatchString(pv1, (INT)(cb1 / sizeof(WCHAR)), s_szFindWhat, lstrlenW(s_szFindWhat));
115
116 return FALSE;
117}
static BOOL MatchString(LPCWCH pch1, INT cch1, LPCWCH pch2, INT cch2)
Definition: find.c:91
#define lstrlenW
Definition: compat.h:750
#define REG_SZ
Definition: layer.c:22
#define REG_MULTI_SZ
Definition: nt_native.h:1501
#define REG_EXPAND_SZ
Definition: nt_native.h:1494

◆ MatchString()

static BOOL MatchString ( LPCWCH  pch1,
INT  cch1,
LPCWCH  pch2,
INT  cch2 
)
static

Definition at line 91 of file find.c.

92{
93 INT i;
94 DWORD dwNorm = ((s_dwFlags & RSF_MATCHCASE) ? 0 : NORM_IGNORECASE);
95
97 return 2 == CompareStringW(LOCALE_SYSTEM_DEFAULT, dwNorm, pch1, cch1, pch2, cch2);
98
99 if (cch1 < cch2)
100 return FALSE;
101
102 for (i = 0; i <= cch1 - cch2; i++)
103 {
104 if (2 == CompareStringW(LOCALE_SYSTEM_DEFAULT, dwNorm, pch1 + i, cch2, pch2, cch2))
105 return TRUE;
106 }
107
108 return FALSE;
109}

Referenced by MatchData(), RtlFindCharInUnicodeString(), and RtlpIsCharInUnicodeString().

◆ RegFindRecurse()

BOOL RegFindRecurse ( HKEY  hKey,
LPCWSTR  pszSubKey,
LPCWSTR  pszValueName,
LPWSTR ppszFoundSubKey,
LPWSTR ppszFoundValueName 
)

Definition at line 126 of file find.c.

132{
133 HKEY hSubKey;
134 LONG lResult;
135 WCHAR szSubKey[MAX_PATH];
136 DWORD i, c, cb, type;
137 BOOL fPast;
138 LPWSTR *ppszNames = NULL;
139 LPBYTE pb = NULL;
140
141 if (DoEvents())
142 return FALSE;
143
144 if(wcslen(pszSubKey) >= _countof(szSubKey))
145 return FALSE;
146
147 StringCbCopyW(szSubKey, sizeof(szSubKey), pszSubKey);
148 hSubKey = NULL;
149
150 lResult = RegOpenKeyExW(hKey, szSubKey, 0, KEY_ALL_ACCESS, &hSubKey);
151 if (lResult != ERROR_SUCCESS)
152 return FALSE;
153
154 lResult = RegQueryInfoKeyW(hSubKey, NULL, NULL, NULL, NULL, NULL, NULL,
155 &c, NULL, NULL, NULL, NULL);
156 if (lResult != ERROR_SUCCESS)
157 goto err;
158 ppszNames = (LPWSTR *) malloc(c * sizeof(LPWSTR));
159 if (ppszNames == NULL)
160 goto err;
161 ZeroMemory(ppszNames, c * sizeof(LPWSTR));
162
163 /* Retrieve the value names associated with the current key */
164 for(i = 0; i < c; i++)
165 {
166 if (DoEvents())
167 goto err;
168
170 lResult = RegEnumValueW(hSubKey, i, s_szName, &s_cchName, NULL, NULL,
171 NULL, &cb);
172 if (lResult == ERROR_NO_MORE_ITEMS)
173 {
174 c = i;
175 break;
176 }
177 if (lResult != ERROR_SUCCESS)
178 goto err;
180 continue;
181
182 ppszNames[i] = _wcsdup(s_szName);
183 }
184
185 qsort(ppszNames, c, sizeof(LPWSTR), compare);
186
187 /* If pszValueName is NULL, the function will search for all values within the key */
188 fPast = (pszValueName == NULL);
189
190 /* Search within the values */
191 for (i = 0; i < c; i++)
192 {
193 if (DoEvents())
194 goto err;
195
196 if (!fPast && _wcsicmp(ppszNames[i], pszValueName) == 0)
197 {
198 fPast = TRUE;
199 continue;
200 }
201 if (!fPast)
202 continue;
203
204 if ((s_dwFlags & RSF_LOOKATVALUES) &&
205 CompareName(ppszNames[i], s_szFindWhat))
206 {
207 *ppszFoundSubKey = _wcsdup(szSubKey);
208 *ppszFoundValueName = _wcsdup(ppszNames[i]);
209 goto success;
210 }
211
212 lResult = RegQueryValueExW(hSubKey, ppszNames[i], NULL, &type,
213 NULL, &cb);
214 if (lResult != ERROR_SUCCESS)
215 goto err;
216 pb = malloc(cb);
217 if (pb == NULL)
218 goto err;
219 lResult = RegQueryValueExW(hSubKey, ppszNames[i], NULL, &type,
220 pb, &cb);
221 if (lResult != ERROR_SUCCESS)
222 goto err;
223
224 if ((s_dwFlags & RSF_LOOKATDATA) && MatchData(type, pb, cb))
225 {
226 *ppszFoundSubKey = _wcsdup(szSubKey);
227 *ppszFoundValueName = _wcsdup(ppszNames[i]);
228 goto success;
229 }
230 free(pb);
231 pb = NULL;
232 }
233
234 if (ppszNames != NULL)
235 {
236 for(i = 0; i < c; i++)
237 free(ppszNames[i]);
238 free(ppszNames);
239 }
240 ppszNames = NULL;
241
242 /* Retrieve the number of sub-keys */
243 lResult = RegQueryInfoKeyW(hSubKey, NULL, NULL, NULL, &c, NULL, NULL,
244 NULL, NULL, NULL, NULL, NULL);
245 if (lResult != ERROR_SUCCESS)
246 goto err;
247 ppszNames = (LPWSTR *) malloc(c * sizeof(LPWSTR));
248 if (ppszNames == NULL)
249 goto err;
250 ZeroMemory(ppszNames, c * sizeof(LPWSTR));
251
252 /* Retrieve the names of the sub-keys */
253 for(i = 0; i < c; i++)
254 {
255 if (DoEvents())
256 goto err;
257
259 lResult = RegEnumKeyExW(hSubKey, i, s_szName, &s_cchName, NULL, NULL,
260 NULL, NULL);
261 if (lResult == ERROR_NO_MORE_ITEMS)
262 {
263 c = i;
264 break;
265 }
266 if (lResult != ERROR_SUCCESS)
267 goto err;
269 continue;
270
271 ppszNames[i] = _wcsdup(s_szName);
272 }
273
274 qsort(ppszNames, c, sizeof(LPWSTR), compare);
275
276 /* Search within the sub-keys */
277 for(i = 0; i < c; i++)
278 {
279 if (DoEvents())
280 goto err;
281
282 if ((s_dwFlags & RSF_LOOKATKEYS) &&
283 CompareName(ppszNames[i], s_szFindWhat))
284 {
285 *ppszFoundSubKey = malloc(
286 (wcslen(szSubKey) + wcslen(ppszNames[i]) + 2) *
287 sizeof(WCHAR));
288 if (*ppszFoundSubKey == NULL)
289 goto err;
290 if (szSubKey[0])
291 {
292 wcscpy(*ppszFoundSubKey, szSubKey);
293 wcscat(*ppszFoundSubKey, s_backslash);
294 }
295 else
296 **ppszFoundSubKey = 0;
297 wcscat(*ppszFoundSubKey, ppszNames[i]);
298 *ppszFoundValueName = NULL;
299 goto success;
300 }
301
302 /* Search within the value entries of the sub-key */
303 if (RegFindRecurse(hSubKey, ppszNames[i], NULL, ppszFoundSubKey,
304 ppszFoundValueName))
305 {
306 LPWSTR psz = *ppszFoundSubKey;
307 SIZE_T cbFoundSubKey = (wcslen(szSubKey) + wcslen(psz) + 2) * sizeof(WCHAR);
308 *ppszFoundSubKey = malloc(cbFoundSubKey);
309 if (*ppszFoundSubKey == NULL)
310 goto err;
311 if (szSubKey[0])
312 {
313 StringCbCopyW(*ppszFoundSubKey, cbFoundSubKey, szSubKey);
314 StringCbCatW(*ppszFoundSubKey, cbFoundSubKey, s_backslash);
315 }
316 else
317 **ppszFoundSubKey = 0;
318 wcscat(*ppszFoundSubKey, psz);
319 free(psz);
320 goto success;
321 }
322 }
323
324err:
325 if (ppszNames != NULL)
326 {
327 for(i = 0; i < c; i++)
328 free(ppszNames[i]);
329 free(ppszNames);
330 }
331 free(pb);
332 RegCloseKey(hSubKey);
333 return FALSE;
334
335success:
336 if (ppszNames != NULL)
337 {
338 for(i = 0; i < c; i++)
339 free(ppszNames[i]);
340 free(ppszNames);
341 }
342 RegCloseKey(hSubKey);
343 return TRUE;
344}
BOOL RegFindRecurse(HKEY hKey, LPCWSTR pszSubKey, LPCWSTR pszValueName, LPWSTR *ppszFoundSubKey, LPWSTR *ppszFoundValueName)
Definition: find.c:126
static WCHAR s_szName[MAX_PATH]
Definition: find.c:34
static BOOL CompareName(LPCWSTR pszName1, LPCWSTR pszName2)
Definition: find.c:72
static DWORD s_cchName
Definition: find.c:35
BOOL DoEvents(VOID)
Definition: find.c:41
static const WCHAR s_backslash[]
Definition: find.c:37
#define malloc
Definition: debug_ros.c:4
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
Definition: reg.c:3333
LONG WINAPI RegEnumKeyExW(_In_ HKEY hKey, _In_ DWORD dwIndex, _Out_ LPWSTR lpName, _Inout_ LPDWORD lpcbName, _Reserved_ LPDWORD lpReserved, _Out_opt_ LPWSTR lpClass, _Inout_opt_ LPDWORD lpcbClass, _Out_opt_ PFILETIME lpftLastWriteTime)
Definition: reg.c:2504
LONG WINAPI RegEnumValueW(_In_ HKEY hKey, _In_ DWORD index, _Out_ LPWSTR value, _Inout_ PDWORD val_count, _Reserved_ PDWORD reserved, _Out_opt_ PDWORD type, _Out_opt_ LPBYTE data, _Inout_opt_ PDWORD count)
Definition: reg.c:2830
LONG WINAPI RegQueryInfoKeyW(HKEY hKey, LPWSTR lpClass, LPDWORD lpcClass, LPDWORD lpReserved, LPDWORD lpcSubKeys, LPDWORD lpcMaxSubKeyLen, LPDWORD lpcMaxClassLen, LPDWORD lpcValues, LPDWORD lpcMaxValueNameLen, LPDWORD lpcMaxValueLen, LPDWORD lpcbSecurityDescriptor, PFILETIME lpftLastWriteTime)
Definition: reg.c:3662
#define ERROR_NO_MORE_ITEMS
Definition: compat.h:105
#define MAX_PATH
Definition: compat.h:34
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
const GLubyte * c
Definition: glext.h:8905
#define c
Definition: ke_i.h:80
static HMODULE MODULEINFO DWORD cb
Definition: module.c:33
#define KEY_ALL_ACCESS
Definition: nt_native.h:1041
#define err(...)
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
_Check_return_ _CRTIMP wchar_t *__cdecl _wcsdup(_In_z_ const wchar_t *_Str)
_CRTIMP wchar_t *__cdecl wcscat(_Inout_updates_z_(_String_length_(_Dest)+_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
void __cdecl qsort(_Inout_updates_bytes_(_NumOfElements *_SizeOfElements) void *_Base, _In_ size_t _NumOfElements, _In_ size_t _SizeOfElements, _In_ int(__cdecl *_PtFuncCompare)(const void *, const void *))
#define _countof(array)
Definition: sndvol32.h:68
STRSAFEAPI StringCbCopyW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
Definition: strsafe.h:166
STRSAFEAPI StringCbCatW(STRSAFE_LPWSTR pszDest, size_t cbDest, STRSAFE_LPCWSTR pszSrc)
Definition: strsafe.h:342
Definition: bug.cpp:8
ULONG_PTR SIZE_T
Definition: typedefs.h:80
#define success(from, fromstr, to, tostr)
#define ZeroMemory
Definition: winbase.h:1712
_IRQL_requires_same_ _In_ PVOID _In_ PVOID MatchData
Definition: rtltypes.h:416

Referenced by RegFindRecurse(), and RegFindWalk().

◆ RegFindWalk()

BOOL RegFindWalk ( HKEY phKey,
LPCWSTR  pszSubKey,
LPCWSTR  pszValueName,
LPWSTR ppszFoundSubKey,
LPWSTR ppszFoundValueName 
)

Definition at line 346 of file find.c.

352{
353 LONG lResult;
354 DWORD i, c;
355 HKEY hBaseKey, hSubKey;
356 WCHAR szKeyName[MAX_PATH];
357 WCHAR szSubKey[MAX_PATH];
358 LPWSTR pch;
359 BOOL fPast, fKeyMatched;
360 LPWSTR *ppszNames = NULL;
361
362 hBaseKey = *phKey;
363
364 if (wcslen(pszSubKey) >= _countof(szSubKey))
365 return FALSE;
366
367 if (RegFindRecurse(hBaseKey, pszSubKey, pszValueName, ppszFoundSubKey,
368 ppszFoundValueName))
369 return TRUE;
370
371 StringCbCopyW(szSubKey, sizeof(szSubKey), pszSubKey);
372 while(szSubKey[0] != 0)
373 {
374 if (DoEvents())
375 return FALSE;
376
377 pch = wcsrchr(szSubKey, L'\\');
378 if (pch == NULL)
379 {
380 wcscpy(szKeyName, szSubKey);
381 szSubKey[0] = 0;
382 hSubKey = hBaseKey;
383 }
384 else
385 {
386 lstrcpynW(szKeyName, pch + 1, MAX_PATH);
387 *pch = 0;
388 lResult = RegOpenKeyExW(hBaseKey, szSubKey, 0, KEY_ALL_ACCESS,
389 &hSubKey);
390 if (lResult != ERROR_SUCCESS)
391 return FALSE;
392 }
393
394 lResult = RegQueryInfoKeyW(hSubKey, NULL, NULL, NULL, &c, NULL, NULL,
395 NULL, NULL, NULL, NULL, NULL);
396 if (lResult != ERROR_SUCCESS)
397 goto err;
398
399 ppszNames = (LPWSTR *) malloc(c * sizeof(LPWSTR));
400 if (ppszNames == NULL)
401 goto err;
402 ZeroMemory(ppszNames, c * sizeof(LPWSTR));
403
404 for(i = 0; i < c; i++)
405 {
406 if (DoEvents())
407 goto err;
408
410 lResult = RegEnumKeyExW(hSubKey, i, s_szName, &s_cchName,
411 NULL, NULL, NULL, NULL);
412 if (lResult == ERROR_NO_MORE_ITEMS)
413 {
414 c = i;
415 break;
416 }
417 if (lResult != ERROR_SUCCESS)
418 break;
419 ppszNames[i] = _wcsdup(s_szName);
420 }
421
422 qsort(ppszNames, c, sizeof(LPWSTR), compare);
423
424 fPast = FALSE;
425 for(i = 0; i < c; i++)
426 {
427 if (DoEvents())
428 goto err;
429
430 if (!fPast && _wcsicmp(ppszNames[i], szKeyName) == 0)
431 {
432 fPast = TRUE;
433 continue;
434 }
435 if (!fPast)
436 continue;
437
438 if ((s_dwFlags & RSF_LOOKATKEYS) &&
439 CompareName(ppszNames[i], s_szFindWhat))
440 {
441 *ppszFoundSubKey = malloc(
442 (wcslen(szSubKey) + wcslen(ppszNames[i]) + 2) *
443 sizeof(WCHAR));
444 if (*ppszFoundSubKey == NULL)
445 goto err;
446 if (szSubKey[0])
447 {
448 wcscpy(*ppszFoundSubKey, szSubKey);
449 wcscat(*ppszFoundSubKey, s_backslash);
450 }
451 else
452 **ppszFoundSubKey = 0;
453 wcscat(*ppszFoundSubKey, ppszNames[i]);
454 *ppszFoundValueName = NULL;
455 goto success;
456 }
457
458 fKeyMatched = (_wcsicmp(ppszNames[i], szKeyName) == 0);
459 if (RegFindRecurse(hSubKey, ppszNames[i], (fKeyMatched ? pszValueName : NULL),
460 ppszFoundSubKey, ppszFoundValueName))
461 {
462 LPWSTR psz = *ppszFoundSubKey;
463 SIZE_T cbFoundSubKey = (wcslen(szSubKey) + wcslen(psz) + 2) * sizeof(WCHAR);
464 *ppszFoundSubKey = malloc(cbFoundSubKey);
465 if (*ppszFoundSubKey == NULL)
466 goto err;
467 if (szSubKey[0])
468 {
469 StringCbCopyW(*ppszFoundSubKey, cbFoundSubKey, szSubKey);
470 StringCbCatW(*ppszFoundSubKey, cbFoundSubKey, s_backslash);
471 }
472 else
473 **ppszFoundSubKey = 0;
474 wcscat(*ppszFoundSubKey, psz);
475 free(psz);
476 goto success;
477 }
478 }
479 if (ppszNames != NULL)
480 {
481 for(i = 0; i < c; i++)
482 free(ppszNames[i]);
483 free(ppszNames);
484 }
485 ppszNames = NULL;
486
487 if (hBaseKey != hSubKey)
488 RegCloseKey(hSubKey);
489 }
490
491 if (*phKey == HKEY_CLASSES_ROOT)
492 {
493 *phKey = HKEY_CURRENT_USER;
494 if (RegFindRecurse(*phKey, s_empty, NULL, ppszFoundSubKey,
495 ppszFoundValueName))
496 return TRUE;
497 }
498
499 if (*phKey == HKEY_CURRENT_USER)
500 {
501 *phKey = HKEY_LOCAL_MACHINE;
502 if (RegFindRecurse(*phKey, s_empty, NULL, ppszFoundSubKey,
503 ppszFoundValueName))
504 goto success;
505 }
506
507 if (*phKey == HKEY_LOCAL_MACHINE)
508 {
509 *phKey = HKEY_USERS;
510 if (RegFindRecurse(*phKey, s_empty, NULL, ppszFoundSubKey,
511 ppszFoundValueName))
512 goto success;
513 }
514
515 if (*phKey == HKEY_USERS)
516 {
517 *phKey = HKEY_CURRENT_CONFIG;
518 if (RegFindRecurse(*phKey, s_empty, NULL, ppszFoundSubKey,
519 ppszFoundValueName))
520 goto success;
521 }
522
523err:
524 if (ppszNames != NULL)
525 {
526 for(i = 0; i < c; i++)
527 free(ppszNames[i]);
528 free(ppszNames);
529 }
530 if (hBaseKey != hSubKey)
531 RegCloseKey(hSubKey);
532 return FALSE;
533
534success:
535 if (ppszNames != NULL)
536 {
537 for(i = 0; i < c; i++)
538 free(ppszNames[i]);
539 free(ppszNames);
540 }
541 if (hBaseKey != hSubKey)
542 RegCloseKey(hSubKey);
543 return TRUE;
544}
#define wcsrchr
Definition: compat.h:16
#define lstrcpynW
Definition: compat.h:738
#define pch(ap)
Definition: match.c:418
#define L(x)
Definition: ntvdm.h:50
#define HKEY_LOCAL_MACHINE
Definition: winreg.h:12
#define HKEY_CURRENT_CONFIG
Definition: winreg.h:15
#define HKEY_USERS
Definition: winreg.h:13

Referenced by FindNext().

◆ SetFindFlags()

static void SetFindFlags ( DWORD  dwFlags)
static

Definition at line 576 of file find.c.

577{
578 HKEY hKey;
579 DWORD dwDisposition;
581
583 {
584 dwData = (dwFlags >> 0) & 0x0000FFFF;
585 RegSetValueExW(hKey, s_szFindFlags, 0, REG_DWORD, (const BYTE *) &dwData, sizeof(dwData));
586
587 dwData = (dwFlags >> 16) & 0x0000FFFF;
588 RegSetValueExW(hKey, s_szFindFlagsR, 0, REG_DWORD, (const BYTE *) &dwData, sizeof(dwData));
589
591 }
592}
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
Definition: reg.c:1096
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
Definition: reg.c:4882
static HANDLE ULONG_PTR dwData
Definition: file.c:35
#define REG_OPTION_NON_VOLATILE
Definition: nt_native.h:1057
unsigned char BYTE
Definition: xxhash.c:193

Referenced by FindDialogProc().

◆ SetValueName()

VOID SetValueName ( HWND  hwndLV,
LPCWSTR  pszValueName 
)

Definition at line 84 of file listview.c.

85{
86 INT i, c;
87 LVFINDINFOW fi;
88
89 c = ListView_GetItemCount(hwndLV);
90 for(i = 0; i < c; i++)
91 {
93 }
94 if (pszValueName == NULL || pszValueName[0] == 0)
95 i = 0;
96 else
97 {
98 fi.flags = LVFI_STRING;
99 fi.psz = pszValueName;
100 i = ListView_FindItem(hwndLV, -1, &fi);
101 }
106}
INT iListViewSelect
Definition: listview.c:29
#define ListView_SetItemState(hwndLV, i, data, mask)
Definition: commctrl.h:2673
#define LVFI_STRING
Definition: commctrl.h:2437
#define ListView_GetItemCount(hwnd)
Definition: commctrl.h:2307
#define LVIS_SELECTED
Definition: commctrl.h:2319
#define LVIS_FOCUSED
Definition: commctrl.h:2318
#define ListView_FindItem(hwnd, iStart, plvfi)
Definition: commctrl.h:2470
#define ListView_EnsureVisible(hwndLV, i, fPartialOK)
Definition: commctrl.h:2519
LPCWSTR psz
Definition: commctrl.h:2457

Referenced by FindNext().

Variable Documentation

◆ s_bAbort

BOOL s_bAbort
static

Definition at line 31 of file find.c.

Referenced by AbortFindDialogProc(), DoEvents(), and FindNext().

◆ s_backslash

const WCHAR s_backslash[] = L"\\"
static

Definition at line 37 of file find.c.

Referenced by RegFindRecurse(), and RegFindWalk().

◆ s_cchName

DWORD s_cchName
static

Definition at line 35 of file find.c.

Referenced by RegFindRecurse(), and RegFindWalk().

◆ s_dwFlags

DWORD s_dwFlags
static

Definition at line 33 of file find.c.

Referenced by CompareName(), FindNext(), MatchString(), RegFindRecurse(), and RegFindWalk().

◆ s_empty

const WCHAR s_empty[] = L""
static

Definition at line 36 of file find.c.

Referenced by FindNext(), and RegFindWalk().

◆ s_hwndAbortDialog

HWND s_hwndAbortDialog
static

Definition at line 30 of file find.c.

Referenced by DoEvents(), and FindNext().

◆ s_szFindFlags

const WCHAR s_szFindFlags[] = L"FindFlags"
static

Definition at line 28 of file find.c.

Referenced by GetFindFlags(), and SetFindFlags().

◆ s_szFindFlagsR

const WCHAR s_szFindFlagsR[] = L"FindFlagsReactOS"
static

Definition at line 29 of file find.c.

Referenced by GetFindFlags(), and SetFindFlags().

◆ s_szFindWhat

WCHAR s_szFindWhat[256]
static

Definition at line 27 of file find.c.

Referenced by FindDialogProc(), FindNext(), MatchData(), RegFindRecurse(), and RegFindWalk().

◆ s_szName

WCHAR s_szName[MAX_PATH]
static

Definition at line 34 of file find.c.

Referenced by RegFindRecurse(), RegFindWalk(), and START_TEST().