62{
65 ULONG NamePos = 0, ExprPos = 0;
67 ULONG StarNamePos = 0;
68
69
70
71
72
73
74
75
76 if (ExprLen == 0 || NameLen == 0)
77 return (ExprLen == 0 && NameLen == 0);
78
79
82
83
84 if (ExprLen >= 2
85 && NameLen >= ExprLen - 1
88 {
89 ExprPos = 1;
90 NamePos = NameLen - (ExprLen - 1);
91
92 while (ExprPos < ExprLen)
93 {
96 if (ExprChar != NameChar)
98 NamePos++;
99 ExprPos++;
100 }
101
103 }
104
105
106
107 for (;;)
108 {
109
110 if (NamePos >= NameLen && ExprPos >= ExprLen)
112
115
116
117 if ((ExprChar ==
L'?' && NamePos < NameLen)
119 {
120 NamePos++;
121 ExprPos++;
122 continue;
123 }
124
125
126 if (ExprChar ==
L'*')
127 {
128 StarExprPos = ExprPos;
129 StarNamePos = NamePos;
130 ExprPos++;
131 continue;
132 }
133
134
136 {
137 ULONG LookPos = ExprPos + 1;
138 StarExprPos = ExprPos;
139 StarNamePos = NamePos;
140
141 while (LookPos < ExprLen)
142 {
145 break;
146 LookPos++;
147 }
148
149 ExprPos++;
150 continue;
151 }
152
153
155 {
156 if (NamePos >= NameLen || NameChar ==
L'.')
157 {
158
159 while (ExprPos < ExprLen && Expression->
Buffer[ExprPos] ==
DOS_QM)
160 ExprPos++;
161 continue;
162 }
163
164
165 NamePos++;
166 ExprPos++;
167 continue;
168 }
169
170
172 {
173 if (NamePos >= NameLen)
174 {
175 ExprPos++;
176 continue;
177 }
178
179 if (NameChar ==
L'.')
180 {
181 NamePos++;
182 ExprPos++;
183 continue;
184 }
185 }
186
187
189 {
190
192 {
194 for (
i = StarNamePos;
i < NameLen;
i++)
195 {
196 if (
Name->Buffer[
i] ==
L'.')
198 }
199 }
200
201 if (StarNamePos < NameLen)
202 {
203 StarNamePos++;
204 NamePos = StarNamePos;
205 ExprPos = StarExprPos + 1;
206 continue;
207 }
208 }
209
211 }
212}
static _In_ PUNICODE_STRING _In_ BOOLEAN _In_opt_ PWCH UpcaseTable
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
#define EXPRESSION_IS_WILDCARD(expr, len)
static __inline WCHAR RtlpGetExprChar(_In_ PWCH Buffer, _In_ ULONG Position, _In_ ULONG Length, _In_ BOOLEAN IgnoreCase, _In_opt_ PWCH UpcaseTable)
static __inline BOOLEAN RtlpContainsWildcard(_In_ PWCH Buffer, _In_ ULONG Length)
#define IS_LITERAL_OR_DOS_DOT(wchar)