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