179{
183 ULONG i, DirectoryPathLength, DirectorySector, DirectoryLength;
184 PVOID DirectoryBuffer;
185 ULONG NumberOfPathParts;
186 CHAR PathBuffer[261];
190
192
194
195
196
197
198
199
201
202
203
204
205
206
207 DirectoryPathLength = FileNameStr -
FileName;
208
209
210 DoFullLookup = (DirectoryPathLength !=
Volume->DirectoryPathLength) ||
212 if (!DoFullLookup)
213 {
214 PathPart = (
CHAR*)FileNameStr;
215 DirectoryBuffer =
Volume->DirectoryBuffer;
216 DirectoryLength =
Volume->DirectoryLength;
217
218 NumberOfPathParts = 1;
219 }
220 else
221 {
222 PathPart = PathBuffer;
223 DirectorySector =
Volume->PvdDirectorySector;
224 DirectoryLength =
Volume->PvdDirectoryLength;
225
226
229
230
232 }
233
234
235
236
237 for (
i=0;
i<NumberOfPathParts;
i++)
238 {
239 if (DoFullLookup)
240 {
241
243
244
246 {
248 }
250
251
253 DirectorySector,
254 DirectoryLength,
255 &DirectoryBuffer);
258
259
260 if ((
i + 1) >= NumberOfPathParts)
261 {
262 if (
Volume->DirectoryBuffer)
264
265 Volume->DirectoryPathLength = DirectoryPathLength;
266 Volume->DirectoryBuffer = DirectoryBuffer;
267 Volume->DirectoryLength = DirectoryLength;
268
270 }
271 }
272
273
275 DirectoryLength,
276 PathPart,
277 IsoFileInfo))
278 {
279
280 if ((
i + 1) < NumberOfPathParts)
281 {
284 }
286 }
287
288
289
290
291
292 if ((
i+1) < NumberOfPathParts)
293 {
295
296 DirectorySector = IsoFileInfo->
FileStart;
297 DirectoryLength = IsoFileInfo->
FileSize;
298 }
299 }
300
302}
ULONG FsGetNumPathParts(PCSTR Path)
VOID FsGetFirstNameFromPath(PCHAR Buffer, PCSTR Path)
static PCSTR IsoLastPathSeparator(_In_ PCSTR Path)
static PISO_VOLUME_INFO IsoVolumes[MAX_FDS]
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
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 RtlEqualMemory(dst, src, len)
#define RtlCopyMemory(Destination, Source, Length)