179{
183 ULONG i, DirectoryPathLength, DirectorySector, DirectoryLength;
184 PVOID DirectoryBuffer;
185 ULONG NumberOfPathParts;
186 CHAR PathBuffer[261];
191
193
195
196
197
198
199
200
202
203
204
205
206
207
208 DirectoryPathLength = FileNameStr -
FileName;
209
210
211 DoFullLookup = (DirectoryPathLength !=
Volume->DirectoryPathLength) ||
213 if (!DoFullLookup)
214 {
215 PathPart = (
CHAR*)FileNameStr;
216 DirectoryBuffer =
Volume->DirectoryBuffer;
217 DirectoryLength =
Volume->DirectoryLength;
218
219 NumberOfPathParts = 1;
220 }
221 else
222 {
223 PathPart = PathBuffer;
224 DirectorySector =
Volume->PvdDirectorySector;
225 DirectoryLength =
Volume->PvdDirectoryLength;
226
227
231
232
234 }
235
236
237
238
239 for (
i=0;
i<NumberOfPathParts;
i++)
240 {
241 if (DoFullLookup)
242 {
243
245
246
248 {
250 }
252
253
255 DirectorySector,
256 DirectoryLength,
257 &DirectoryBuffer);
260
261
262 if ((
i + 1) >= NumberOfPathParts)
263 {
264 if (
Volume->DirectoryBuffer)
266
267 Volume->DirectoryPathLength = DirectoryPathLength;
268 Volume->DirectoryBuffer = DirectoryBuffer;
269 Volume->DirectoryLength = DirectoryLength;
270
272 }
273 }
274
275
277 DirectoryLength,
278 PathPart,
279 IsoFileInfo))
280 {
281
282 if ((
i + 1) < NumberOfPathParts)
283 {
286 }
288 }
289
290
291
292
293
294 if ((
i+1) < NumberOfPathParts)
295 {
297
298 DirectorySector = IsoFileInfo->
FileStart;
299 DirectoryLength = IsoFileInfo->
FileSize;
300 }
301 }
302
303
310
311
315
317}
ACPI_SIZE strlen(const char *String)
ULONG FsGetNumPathParts(PCSTR Path)
VOID FsGetFirstNameFromPath(PCHAR Buffer, PCSTR Path)
static PCSTR IsoLastPathSeparator(_In_ PCSTR Path)
static ARC_STATUS IsoBufferDirectory(ULONG DeviceId, ULONG DirectoryStartSector, ULONG DirectoryLength, PVOID *pDirectoryBuffer)
static BOOLEAN IsoSearchDirectoryBufferForFile(PVOID DirectoryBuffer, ULONG DirectoryLength, PCHAR FileName, PISO_FILE_INFO IsoFileInfoPointer)
struct _FileName FileName
_Must_inspect_result_ _In_opt_ PFLT_INSTANCE _Out_ PHANDLE _In_ ACCESS_MASK _In_ POBJECT_ATTRIBUTES _Out_ PIO_STATUS_BLOCK _In_opt_ PLARGE_INTEGER _In_ ULONG FileAttributes
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 ISO_ATTR_DIRECTORY
#define RtlEqualMemory(dst, src, len)
CHAR FileName[RTL_FIELD_SIZE(FILEINFORMATION, FileName)]