25 if (pDeviceExt->FatInfo.FatType ==
FAT32)
71 while (
Index < MaxIndex)
138 while (
Index < MaxIndex)
197 slot * longNameEntry;
221 if (*pContext !=
NULL)
245 longNameEntry = (
slot*) fatDirEntry;
285 longNameEntry = (
slot*) fatDirEntry;
322 longNameEntry = (
slot*) *pPage;
362 DPRINT(
" name chunk1:[%.*S] chunk2:[%.*S] chunk3:[%.*S]\n",
367 index = longNameEntry->
id & 0x3f;
375 dirMap |= 1 <<
index;
382 if (longNameEntry->
id & 0x40)
389 DPRINT1(
"Long name entry has invalid index: %x!\n", longNameEntry->
id);
395 DPRINT1(
"Found wrong alias checksum in long name entry (first %x, current %x, %S)\n",
403 for (
i = 0;
i < 11;
i++)
405 shortCheckSum = (((shortCheckSum & 1) << 7)
406 | ((shortCheckSum & 0xfe) >> 1))
412 DPRINT1(
"Checksum from long and short name is not equal (short: %x, long: %x, %S)\n",
452 longNameEntry = (
slot*) *pPage;
534 if (*pContext !=
NULL)
609 StringO.Length = StringO.MaximumLength = fatxDirEntry->
FilenameLength;
unsigned long FirstCluster
struct _FATDirEntry FAT_DIR_ENTRY
unsigned char FilenameLength
#define FAT_ENTRY_END(DirEntry)
struct _FATXDirEntry FATX_DIR_ENTRY
#define STATUS_NO_MORE_ENTRIES
unsigned char alias_checksum
ActualNumberDriverObjects * sizeof(PDRIVER_OBJECT)) PDRIVER_OBJECT *DriverObjectList
NTSTATUS FATGetNextDirEntry(PVOID *pContext, PVOID *pPage, IN PVFATFCB pDirFcb, PVFAT_DIRENTRY_CONTEXT DirContext, BOOLEAN First)
ULONG vfatDirEntryGetFirstCluster(PDEVICE_EXTENSION pDeviceExt, PDIR_ENTRY pFatDirEntry)
#define UNREFERENCED_PARAMETER(P)
#define FATX_ENTRY_END(DirEntry)
#define FATX_ENTRY_DELETED(DirEntry)
VOID NTAPI CcUnpinData(IN PVOID Bcb)
VOID vfat8Dot3ToString(PFAT_DIR_ENTRY pEntry, PUNICODE_STRING NameU)
#define FAT_ENTRIES_PER_PAGE
BOOLEAN vfatFCBIsRoot(PVFATFCB FCB)
#define FAT_ENTRY_LONG(DirEntry)
struct _FATXDirEntry * PFATX_DIR_ENTRY
NTSYSAPI VOID NTAPI RtlCopyUnicodeString(PUNICODE_STRING DestinationString, PUNICODE_STRING SourceString)
unsigned char ShortName[11]
NTSTATUS FATXGetNextDirEntry(PVOID *pContext, PVOID *pPage, IN PVFATFCB pDirFcb, PVFAT_DIRENTRY_CONTEXT DirContext, BOOLEAN First)
BOOLEAN FATXIsDirectoryEmpty(PDEVICE_EXTENSION DeviceExt, PVFATFCB Fcb)
#define FAT_ENTRY_DELETED(DirEntry)
FSRTL_COMMON_FCB_HEADER RFCB
FORCEINLINE BOOLEAN vfatVolumeIsFatX(PDEVICE_EXTENSION DeviceExt)
BOOLEAN NTAPI CcMapData(IN PFILE_OBJECT FileObject, IN PLARGE_INTEGER FileOffset, IN ULONG Length, IN ULONG Flags, OUT PVOID *BcbResult, OUT PVOID *Buffer)
NTSTATUS vfatFCBInitializeCacheFromVolume(PVCB vcb, PVFATFCB fcb)
#define FATX_ENTRIES_PER_PAGE
#define NT_SUCCESS(StatCode)
_In_ WDFCOLLECTION _In_ ULONG Index
#define EXCEPTION_EXECUTE_HANDLER
_In_ PFCB _In_ PDIRENT_ENUM_CONTEXT DirContext
UCHAR CheckSum(LPSTR p, ULONG Len)
struct _LARGE_INTEGER::@2249 u
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
unsigned short FirstClusterHigh
NTSYSAPI NTSTATUS NTAPI RtlOemStringToUnicodeString(PUNICODE_STRING DestinationString, PCOEM_STRING SourceString, BOOLEAN AllocateDestinationString)
#define ROUND_DOWN(n, align)
struct _FATDirEntry * PFAT_DIR_ENTRY
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
unsigned char Filename[42]
_In_ PFCB _In_ LONGLONG FileOffset
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
unsigned short FirstCluster
#define RtlZeroMemory(Destination, Length)
#define RtlCopyMemory(Destination, Source, Length)
BOOLEAN FATIsDirectoryEmpty(PDEVICE_EXTENSION DeviceExt, PVFATFCB Fcb)
#define _SEH2_EXCEPT(...)
#define _SEH2_YIELD(__stmt)