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 + -
显示快捷键?