// FAT32 driver internals shared by mount, directory, and file I/O code. #pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include typedef struct FAT32_VOL_S FAT32_VOL; KSTATUS Fat32Open(IO_FILESYSTEM *fs, SYS_STRING_VIEW path, void **fileCtx); void Fat32Close(IO_FILESYSTEM *fs, void *fileCtx); KSTATUS Fat32Read(IO_FILESYSTEM *fs, void *fileCtx, uint64_t offset, void *buf, size_t size, size_t *bytesRead); KSTATUS Fat32Write(IO_FILESYSTEM *fs, void *fileCtx, uint64_t offset, const void *buf, size_t size, size_t *bytesWritten); KSTATUS Fat32ReadAsync(IO_FILESYSTEM *fs, void *fileCtx, uint64_t offset, void *buf, size_t size, IO_FS_ASYNC_COMPLETE complete, void *completeContext); KSTATUS Fat32WriteAsync(IO_FILESYSTEM *fs, void *fileCtx, uint64_t offset, const void *buf, size_t size, IO_FS_ASYNC_COMPLETE complete, void *completeContext); KSTATUS Fat32Create(IO_FILESYSTEM *fs, SYS_STRING_VIEW path, void **fileCtx); KSTATUS Fat32Delete(IO_FILESYSTEM *fs, SYS_STRING_VIEW path); KSTATUS Fat32Truncate(IO_FILESYSTEM *fs, void *fileCtx, uint64_t newSize, uint32_t fileFlags); uint64_t Fat32GetSize(IO_FILESYSTEM *fs, void *fileCtx); KSTATUS Fat32QueryIdentity(IO_FILESYSTEM *fs, void *fileCtx, IO_FILE_IDENTITY *out); KSTATUS Fat32OpenDir(IO_FILESYSTEM *fs, SYS_STRING_VIEW dirPath, void **dirCtx); KSTATUS Fat32ReadDir(IO_FILESYSTEM *fs, void *dirCtx, KDIR_ENTRY *out); void Fat32CloseDir(IO_FILESYSTEM *fs, void *dirCtx); void Fat32QueryStats(IO_FILESYSTEM *fs, IO_FILESYSTEM_STATS *out); void Fat32InitVtable(IO_FILESYSTEM* fs, FAT32_VOL* vol);