48 lines
2.5 KiB
C
48 lines
2.5 KiB
C
// FAT driver internals shared by mount, directory, and file I/O code.
|
|
|
|
#pragma once
|
|
|
|
#include <stdint.h>
|
|
#include <stddef.h>
|
|
#include <stdbool.h>
|
|
#include <string.h>
|
|
#include <ntlite/ddi/io_driver.h>
|
|
#include <ntlite/ddk/ddk.h>
|
|
#include <ntlite/ddk/file.h>
|
|
#include <ntlite/ddk/memory.h>
|
|
#include <ntlite/ddk/debug.h>
|
|
#include <ntlite/ddk/irp.h>
|
|
#include <ntlite/ddk/semaphore.h>
|
|
#include <ntlite/ddk/thread.h>
|
|
#include <ntlite/ddk/scheduler.h>
|
|
#include <ntlite/ddk/time.h>
|
|
#include <ntlite/ddk/mutex.h>
|
|
#include <ntlite/ddk/irql.h>
|
|
|
|
typedef struct FAT_VOL_S FAT_VOL;
|
|
|
|
KSTATUS FatOpen(IO_VOLUME_PROVIDER* fs, SYS_STRING_VIEW path, void** fileCtx);
|
|
KSTATUS FatFlush(IO_VOLUME_PROVIDER* fs, void* fileCtx);
|
|
void FatClose(IO_VOLUME_PROVIDER* fs, void* fileCtx);
|
|
KSTATUS FatRead(IO_VOLUME_PROVIDER* fs, void* fileCtx, uint64_t offset, void* buf, size_t size, size_t* bytesRead);
|
|
KSTATUS FatWrite(IO_VOLUME_PROVIDER* fs, void* fileCtx, uint64_t offset, const void* buf, size_t size, size_t* bytesWritten);
|
|
KSTATUS FatReadAsync(IO_VOLUME_PROVIDER* fs, void* fileCtx, uint64_t offset, void* buf, size_t size, IO_FS_ASYNC_COMPLETE complete, void* completeContext);
|
|
KSTATUS FatWriteAsync(IO_VOLUME_PROVIDER* fs, void* fileCtx, uint64_t offset, const void* buf, size_t size, IO_FS_ASYNC_COMPLETE complete, void* completeContext);
|
|
KSTATUS FatCreate(IO_VOLUME_PROVIDER* fs, SYS_STRING_VIEW path, void** fileCtx);
|
|
KSTATUS FatCreateDir(IO_VOLUME_PROVIDER* fs, SYS_STRING_VIEW path);
|
|
KSTATUS FatRemoveDir(IO_VOLUME_PROVIDER* fs, SYS_STRING_VIEW path);
|
|
KSTATUS FatDelete(IO_VOLUME_PROVIDER* fs, SYS_STRING_VIEW path);
|
|
KSTATUS FatTruncate(IO_VOLUME_PROVIDER* fs, void* fileCtx, uint64_t newSize, uint32_t fileFlags);
|
|
uint64_t FatGetSize(IO_VOLUME_PROVIDER* fs, void* fileCtx);
|
|
KSTATUS FatQueryInfo(IO_VOLUME_PROVIDER* fs, void* fileCtx, SYS_FILE_STAT* out);
|
|
KSTATUS FatStat(IO_VOLUME_PROVIDER* fs, SYS_STRING_VIEW path, SYS_FILE_STAT* out);
|
|
KSTATUS FatQueryIdentity(IO_VOLUME_PROVIDER* fs, void* fileCtx, IO_FILE_IDENTITY* out);
|
|
KSTATUS FatOpenDir(IO_VOLUME_PROVIDER* fs, SYS_STRING_VIEW dirPath, void** dirCtx);
|
|
KSTATUS FatReadDir(IO_VOLUME_PROVIDER* fs, void* dirCtx, KDIR_ENTRY* out);
|
|
void FatCloseDir(IO_VOLUME_PROVIDER* fs, void* dirCtx);
|
|
void FatQueryStats(IO_VOLUME_PROVIDER* fs, IO_FILESYSTEM_STATS* out);
|
|
|
|
void FatInitProvider(IO_VOLUME_PROVIDER* provider, FAT_VOL* vol);
|
|
void FatVolumeDead(IO_VOLUME_PROVIDER* provider, IO_VOLUME_REMOVAL_REASON reason);
|
|
void FatDestroyVolumeProvider(IO_VOLUME_PROVIDER* provider);
|