vfat_fr.txt
来自「一个类似windows」· 文本 代码 · 共 81 行
TXT
81 行
A Faire :
finir FsdDirectoryControl.
tester les 閏ritures.
FsdCreate doit cr閑r le fichier s'il n'existe pas et que le r閜ertoire parent existe,
et que les options d'appel lee demandent.
fichiers sources :
iface.c
dir.c
blockdev.c
vfat.h
fonctions visibles de l'ext閞ieur (appel閑s par IoCallDriver):
DriverEntry : iface.c
initialisation du driver
rend visibles les fonctions suivantes :
FsdFileSystemControl
r閜ond aux demandes IRP_MJ_FILE_SYSTEM_CONTROL
monte les filesystems qu'il reconnait
appelle FsdHasFileSystem pour voir si le driver reconnait le filesystem.
puis appelle FsdMount.
NTSTATUS FsdCreate(PDEVICE_OBJECT DeviceObject, PIRP Irp)
r閜ond aux demandes IRP_MJ_CREATE :
appelle FsdOpenFile, qui remplit IoGetCurrentIrpStackLocation(Irp)->FileObject->Fcb
remplit Irp->IoStatus
appelle IoCompleteRequest
FsdClose
r閜ond aux demandes IRP_MJ_CLOSE
appelle FsdCloseFile, qui ne fait rien actuellement.
remplit Irp->IoStatus
appelle IoCompleteRequest
FsdRead
r閜ond aux demandes IRP_MJ_READ
FsdWrite
r閜ond aux demandes IRP_MJ_WRITE
FsdQueryInformation
r閜ond aux demandes IRP_MJ_QUERY_INFORMATION
FsdDirectoryControl
r閜ond aux demandes IRP_MJ_DIRECTORY_CONTROL
fonctions strictement internes dans iface.c :
ULONG Fat32GetNextCluster(PDEVICE_EXTENSION DeviceExt, ULONG CurrentCluster)
ULONG Fat16GetNextCluster(PDEVICE_EXTENSION DeviceExt, ULONG CurrentCluster)
ULONG Fat12GetNextCluster(PDEVICE_EXTENSION DeviceExt, ULONG CurrentCluster)
ULONG GetNextCluster(PDEVICE_EXTENSION DeviceExt, ULONG CurrentCluster)
ULONG FAT16FindAvailableCluster(PDEVICE_EXTENSION DeviceExt)
void FAT16WriteCluster(PDEVICE_EXTENSION DeviceExt, ULONG ClusterToWrite,
ULONG NewValue)
void WriteCluster(PDEVICE_EXTENSION DeviceExt, ULONG ClusterToWrite,
ULONG NewValue)
ULONG GetNextWriteCluster(PDEVICE_EXTENSION DeviceExt, ULONG CurrentCluster)
unsigned long ClusterToSector(PDEVICE_EXTENSION DeviceExt,
unsigned long Cluster)
void RtlAnsiToUnicode(PWSTR Dest, PCH Source, ULONG Length)
void vfat_initstr(wchar_t *wstr, ULONG wsize)
wchar_t * vfat_wcsncat(wchar_t * dest, const wchar_t * src,size_t wstart, size_t wcount)
wchar_t * vfat_wcsncpy(wchar_t * dest, const wchar_t *src,size_t wcount)
wchar_t * vfat_movstr(wchar_t * dest, const wchar_t *src, ULONG dpos,
ULONG spos, ULONG len)
BOOLEAN IsLastEntry(PVOID Block, ULONG Offset)
BOOLEAN IsDeletedEntry(PVOID Block, ULONG Offset)
BOOLEAN GetEntryName(PVOID Block, PULONG _Offset, PWSTR Name, PULONG _jloop,
PDEVICE_EXTENSION DeviceExt, PULONG _StartingSector)
BOOLEAN wstrcmpi(PWSTR s1, PWSTR s2)
BOOLEAN wstrcmpjoki(PWSTR s1, PWSTR s2)
NTSTATUS FindFile(PDEVICE_EXTENSION DeviceExt, PFCB Fcb,
PFCB Parent, PWSTR FileToFind)
parcourt le r閜ertoire d閏rit par Parent pour trouver un fichier dans le filesystem
d閏rit par DeviceExt.Si Parent==NULL : part de la racine du filesystem.
remplit Fcb si trouve elle le fichier, et renvoie STATUS_SUCCESS.
renvoie STATUS_UNSUCCESSFUL sinon.
NTSTATUS FsdCloseFile(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject)
ne fait rien, renvoie STATUS_SUCCESS.
NTSTATUS FsdOpenFile(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject,
PWSTR FileName)
parcourt l'arborescence pour trouver le fichier(appelle FindFile
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?