mirror of
https://github.com/reactos/reactos.git
synced 2025-08-06 23:32:58 +00:00
- Renamed all control block structures to (P)NTFS_xCB
- Added an identifier field to those structures (not yet used) svn path=/trunk/; revision=32691
This commit is contained in:
parent
4f6b034f60
commit
1498b141eb
8 changed files with 103 additions and 97 deletions
|
@ -43,13 +43,13 @@ NtfsCloseFile(PDEVICE_EXTENSION DeviceExt,
|
||||||
* FUNCTION: Closes a file
|
* FUNCTION: Closes a file
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
PCCB Ccb;
|
PNTFS_CCB Ccb;
|
||||||
|
|
||||||
DPRINT("NtfsCloseFile(DeviceExt %p, FileObject %p)\n",
|
DPRINT("NtfsCloseFile(DeviceExt %p, FileObject %p)\n",
|
||||||
DeviceExt,
|
DeviceExt,
|
||||||
FileObject);
|
FileObject);
|
||||||
|
|
||||||
Ccb = (PCCB)(FileObject->FsContext2);
|
Ccb = (PNTFS_CCB)(FileObject->FsContext2);
|
||||||
|
|
||||||
DPRINT("Ccb %p\n", Ccb);
|
DPRINT("Ccb %p\n", Ccb);
|
||||||
if (Ccb == NULL)
|
if (Ccb == NULL)
|
||||||
|
|
|
@ -41,7 +41,7 @@ NtfsMakeAbsoluteFilename(PFILE_OBJECT pFileObject,
|
||||||
PWSTR *pAbsoluteFilename)
|
PWSTR *pAbsoluteFilename)
|
||||||
{
|
{
|
||||||
PWSTR rcName;
|
PWSTR rcName;
|
||||||
PFCB Fcb;
|
PNTFS_FCB Fcb;
|
||||||
|
|
||||||
DPRINT("try related for %S\n", pRelativeFileName);
|
DPRINT("try related for %S\n", pRelativeFileName);
|
||||||
Fcb = pFileObject->FsContext;
|
Fcb = pFileObject->FsContext;
|
||||||
|
@ -82,8 +82,8 @@ NtfsOpenFile(PDEVICE_EXTENSION DeviceExt,
|
||||||
* FUNCTION: Opens a file
|
* FUNCTION: Opens a file
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
PFCB ParentFcb;
|
PNTFS_FCB ParentFcb;
|
||||||
PFCB Fcb;
|
PNTFS_FCB Fcb;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
PWSTR AbsFileName = NULL;
|
PWSTR AbsFileName = NULL;
|
||||||
|
|
||||||
|
|
|
@ -489,8 +489,8 @@ NtfsQueryDirectory(PNTFS_IRP_CONTEXT IrpContext)
|
||||||
ULONG FileIndex = 0;
|
ULONG FileIndex = 0;
|
||||||
PUCHAR Buffer = NULL;
|
PUCHAR Buffer = NULL;
|
||||||
PFILE_NAMES_INFORMATION Buffer0 = NULL;
|
PFILE_NAMES_INFORMATION Buffer0 = NULL;
|
||||||
PFCB Fcb;
|
PNTFS_FCB Fcb;
|
||||||
PCCB Ccb;
|
PNTFS_CCB Ccb;
|
||||||
// FCB TempFcb;
|
// FCB TempFcb;
|
||||||
BOOLEAN First = FALSE;
|
BOOLEAN First = FALSE;
|
||||||
PIO_STACK_LOCATION Stack;
|
PIO_STACK_LOCATION Stack;
|
||||||
|
@ -507,8 +507,8 @@ NtfsQueryDirectory(PNTFS_IRP_CONTEXT IrpContext)
|
||||||
Stack = IoGetCurrentIrpStackLocation(Irp);
|
Stack = IoGetCurrentIrpStackLocation(Irp);
|
||||||
FileObject = Stack->FileObject;
|
FileObject = Stack->FileObject;
|
||||||
|
|
||||||
Ccb = (PCCB)FileObject->FsContext2;
|
Ccb = (PNTFS_CCB)FileObject->FsContext2;
|
||||||
Fcb = (PFCB)FileObject->FsContext;
|
Fcb = (PNTFS_FCB)FileObject->FsContext;
|
||||||
|
|
||||||
/* Obtain the callers parameters */
|
/* Obtain the callers parameters */
|
||||||
BufferLength = Stack->Parameters.QueryDirectory.Length;
|
BufferLength = Stack->Parameters.QueryDirectory.Length;
|
||||||
|
|
|
@ -67,13 +67,13 @@ NtfsWSubString(PWCHAR pTarget, const PWCHAR pSource, size_t pLength)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
PFCB
|
PNTFS_FCB
|
||||||
NtfsCreateFCB(PCWSTR FileName)
|
NtfsCreateFCB(PCWSTR FileName)
|
||||||
{
|
{
|
||||||
PFCB Fcb;
|
PNTFS_FCB Fcb;
|
||||||
|
|
||||||
Fcb = ExAllocatePoolWithTag(NonPagedPool, sizeof(FCB), TAG_FCB);
|
Fcb = ExAllocatePoolWithTag(NonPagedPool, sizeof(NTFS_FCB), TAG_FCB);
|
||||||
RtlZeroMemory(Fcb, sizeof(FCB));
|
RtlZeroMemory(Fcb, sizeof(NTFS_FCB));
|
||||||
|
|
||||||
if (FileName)
|
if (FileName)
|
||||||
{
|
{
|
||||||
|
@ -95,7 +95,7 @@ NtfsCreateFCB(PCWSTR FileName)
|
||||||
|
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
NtfsDestroyFCB(PFCB Fcb)
|
NtfsDestroyFCB(PNTFS_FCB Fcb)
|
||||||
{
|
{
|
||||||
ExDeleteResourceLite(&Fcb->MainResource);
|
ExDeleteResourceLite(&Fcb->MainResource);
|
||||||
|
|
||||||
|
@ -104,7 +104,7 @@ NtfsDestroyFCB(PFCB Fcb)
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
NtfsFCBIsDirectory(PFCB Fcb)
|
NtfsFCBIsDirectory(PNTFS_FCB Fcb)
|
||||||
{
|
{
|
||||||
// return(Fcb->entry.Attrib & FILE_ATTRIBUTE_DIRECTORY);
|
// return(Fcb->entry.Attrib & FILE_ATTRIBUTE_DIRECTORY);
|
||||||
// return(Fcb->Entry.FileFlags & 0x02);
|
// return(Fcb->Entry.FileFlags & 0x02);
|
||||||
|
@ -113,15 +113,15 @@ NtfsFCBIsDirectory(PFCB Fcb)
|
||||||
|
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
NtfsFCBIsRoot(PFCB Fcb)
|
NtfsFCBIsRoot(PNTFS_FCB Fcb)
|
||||||
{
|
{
|
||||||
return(wcscmp(Fcb->PathName, L"\\") == 0);
|
return(wcscmp(Fcb->PathName, L"\\") == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
NtfsGrabFCB(PDEVICE_EXTENSION Vcb,
|
NtfsGrabFCB(PNTFS_VCB Vcb,
|
||||||
PFCB Fcb)
|
PNTFS_FCB Fcb)
|
||||||
{
|
{
|
||||||
KIRQL oldIrql;
|
KIRQL oldIrql;
|
||||||
|
|
||||||
|
@ -137,8 +137,8 @@ NtfsGrabFCB(PDEVICE_EXTENSION Vcb,
|
||||||
|
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
NtfsReleaseFCB(PDEVICE_EXTENSION Vcb,
|
NtfsReleaseFCB(PNTFS_VCB Vcb,
|
||||||
PFCB Fcb)
|
PNTFS_FCB Fcb)
|
||||||
{
|
{
|
||||||
KIRQL oldIrql;
|
KIRQL oldIrql;
|
||||||
|
|
||||||
|
@ -160,8 +160,8 @@ NtfsReleaseFCB(PDEVICE_EXTENSION Vcb,
|
||||||
|
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
NtfsAddFCBToTable(PDEVICE_EXTENSION Vcb,
|
NtfsAddFCBToTable(PNTFS_VCB Vcb,
|
||||||
PFCB Fcb)
|
PNTFS_FCB Fcb)
|
||||||
{
|
{
|
||||||
KIRQL oldIrql;
|
KIRQL oldIrql;
|
||||||
|
|
||||||
|
@ -172,12 +172,12 @@ NtfsAddFCBToTable(PDEVICE_EXTENSION Vcb,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
PFCB
|
PNTFS_FCB
|
||||||
NtfsGrabFCBFromTable(PDEVICE_EXTENSION Vcb,
|
NtfsGrabFCBFromTable(PNTFS_VCB Vcb,
|
||||||
PCWSTR FileName)
|
PCWSTR FileName)
|
||||||
{
|
{
|
||||||
KIRQL oldIrql;
|
KIRQL oldIrql;
|
||||||
PFCB Fcb;
|
PNTFS_FCB Fcb;
|
||||||
PLIST_ENTRY current_entry;
|
PLIST_ENTRY current_entry;
|
||||||
|
|
||||||
KeAcquireSpinLock(&Vcb->FcbListLock, &oldIrql);
|
KeAcquireSpinLock(&Vcb->FcbListLock, &oldIrql);
|
||||||
|
@ -194,7 +194,7 @@ NtfsGrabFCBFromTable(PDEVICE_EXTENSION Vcb,
|
||||||
current_entry = Vcb->FcbListHead.Flink;
|
current_entry = Vcb->FcbListHead.Flink;
|
||||||
while (current_entry != &Vcb->FcbListHead)
|
while (current_entry != &Vcb->FcbListHead)
|
||||||
{
|
{
|
||||||
Fcb = CONTAINING_RECORD(current_entry, FCB, FcbListEntry);
|
Fcb = CONTAINING_RECORD(current_entry, NTFS_FCB, FcbListEntry);
|
||||||
|
|
||||||
DPRINT("Comparing '%S' and '%S'\n", FileName, Fcb->PathName);
|
DPRINT("Comparing '%S' and '%S'\n", FileName, Fcb->PathName);
|
||||||
if (_wcsicmp(FileName, Fcb->PathName) == 0)
|
if (_wcsicmp(FileName, Fcb->PathName) == 0)
|
||||||
|
@ -215,22 +215,22 @@ NtfsGrabFCBFromTable(PDEVICE_EXTENSION Vcb,
|
||||||
|
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NtfsFCBInitializeCache(PVCB Vcb,
|
NtfsFCBInitializeCache(PNTFS_VCB Vcb,
|
||||||
PFCB Fcb)
|
PNTFS_FCB Fcb)
|
||||||
{
|
{
|
||||||
PFILE_OBJECT FileObject;
|
PFILE_OBJECT FileObject;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
PCCB newCCB;
|
PNTFS_CCB newCCB;
|
||||||
|
|
||||||
FileObject = IoCreateStreamFileObject(NULL, Vcb->StorageDevice);
|
FileObject = IoCreateStreamFileObject(NULL, Vcb->StorageDevice);
|
||||||
|
|
||||||
newCCB = ExAllocatePoolWithTag(NonPagedPool, sizeof(CCB), TAG_CCB);
|
newCCB = ExAllocatePoolWithTag(NonPagedPool, sizeof(NTFS_CCB), TAG_CCB);
|
||||||
if (newCCB == NULL)
|
if (newCCB == NULL)
|
||||||
{
|
{
|
||||||
return(STATUS_INSUFFICIENT_RESOURCES);
|
return(STATUS_INSUFFICIENT_RESOURCES);
|
||||||
}
|
}
|
||||||
RtlZeroMemory(newCCB,
|
RtlZeroMemory(newCCB,
|
||||||
sizeof(CCB));
|
sizeof(NTFS_CCB));
|
||||||
|
|
||||||
FileObject->SectionObjectPointer = &Fcb->SectionObjectPointers;
|
FileObject->SectionObjectPointer = &Fcb->SectionObjectPointers;
|
||||||
FileObject->FsContext = Fcb;
|
FileObject->FsContext = Fcb;
|
||||||
|
@ -253,10 +253,10 @@ NtfsFCBInitializeCache(PVCB Vcb,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
PFCB
|
PNTFS_FCB
|
||||||
NtfsMakeRootFCB(PDEVICE_EXTENSION Vcb)
|
NtfsMakeRootFCB(PNTFS_VCB Vcb)
|
||||||
{
|
{
|
||||||
PFCB Fcb;
|
PNTFS_FCB Fcb;
|
||||||
|
|
||||||
Fcb = NtfsCreateFCB(L"\\");
|
Fcb = NtfsCreateFCB(L"\\");
|
||||||
|
|
||||||
|
@ -279,10 +279,10 @@ NtfsMakeRootFCB(PDEVICE_EXTENSION Vcb)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
PFCB
|
PNTFS_FCB
|
||||||
NtfsOpenRootFCB(PDEVICE_EXTENSION Vcb)
|
NtfsOpenRootFCB(PNTFS_VCB Vcb)
|
||||||
{
|
{
|
||||||
PFCB Fcb;
|
PNTFS_FCB Fcb;
|
||||||
|
|
||||||
Fcb = NtfsGrabFCBFromTable(Vcb, L"\\");
|
Fcb = NtfsGrabFCBFromTable(Vcb, L"\\");
|
||||||
if (Fcb == NULL)
|
if (Fcb == NULL)
|
||||||
|
@ -386,18 +386,18 @@ NtfsMakeFCBFromDirEntry(PVCB Vcb,
|
||||||
|
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NtfsAttachFCBToFileObject(PDEVICE_EXTENSION Vcb,
|
NtfsAttachFCBToFileObject(PNTFS_VCB Vcb,
|
||||||
PFCB Fcb,
|
PNTFS_FCB Fcb,
|
||||||
PFILE_OBJECT FileObject)
|
PFILE_OBJECT FileObject)
|
||||||
{
|
{
|
||||||
PCCB newCCB;
|
PNTFS_CCB newCCB;
|
||||||
|
|
||||||
newCCB = ExAllocatePoolWithTag(NonPagedPool, sizeof(CCB), TAG_CCB);
|
newCCB = ExAllocatePoolWithTag(NonPagedPool, sizeof(NTFS_CCB), TAG_CCB);
|
||||||
if (newCCB == NULL)
|
if (newCCB == NULL)
|
||||||
{
|
{
|
||||||
return(STATUS_INSUFFICIENT_RESOURCES);
|
return(STATUS_INSUFFICIENT_RESOURCES);
|
||||||
}
|
}
|
||||||
memset(newCCB, 0, sizeof(CCB));
|
memset(newCCB, 0, sizeof(NTFS_CCB));
|
||||||
|
|
||||||
FileObject->SectionObjectPointer = &Fcb->SectionObjectPointers;
|
FileObject->SectionObjectPointer = &Fcb->SectionObjectPointers;
|
||||||
FileObject->FsContext = Fcb;
|
FileObject->FsContext = Fcb;
|
||||||
|
@ -423,10 +423,10 @@ NtfsAttachFCBToFileObject(PDEVICE_EXTENSION Vcb,
|
||||||
|
|
||||||
|
|
||||||
static NTSTATUS
|
static NTSTATUS
|
||||||
NtfsDirFindFile(PDEVICE_EXTENSION DeviceExt,
|
NtfsDirFindFile(PNTFS_VCB Vcb,
|
||||||
PFCB DirectoryFcb,
|
PNTFS_FCB DirectoryFcb,
|
||||||
PWSTR FileToFind,
|
PWSTR FileToFind,
|
||||||
PFCB *FoundFCB)
|
PNTFS_FCB *FoundFCB)
|
||||||
{
|
{
|
||||||
#if 0
|
#if 0
|
||||||
WCHAR TempName[2];
|
WCHAR TempName[2];
|
||||||
|
@ -534,17 +534,17 @@ NtfsDirFindFile(PDEVICE_EXTENSION DeviceExt,
|
||||||
|
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NtfsGetFCBForFile(PDEVICE_EXTENSION Vcb,
|
NtfsGetFCBForFile(PNTFS_VCB Vcb,
|
||||||
PFCB *pParentFCB,
|
PNTFS_FCB *pParentFCB,
|
||||||
PFCB *pFCB,
|
PNTFS_FCB *pFCB,
|
||||||
const PWSTR pFileName)
|
const PWSTR pFileName)
|
||||||
{
|
{
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
WCHAR pathName [MAX_PATH];
|
WCHAR pathName [MAX_PATH];
|
||||||
WCHAR elementName [MAX_PATH];
|
WCHAR elementName [MAX_PATH];
|
||||||
PWCHAR currentElement;
|
PWCHAR currentElement;
|
||||||
PFCB FCB;
|
PNTFS_FCB FCB;
|
||||||
PFCB parentFCB;
|
PNTFS_FCB parentFCB;
|
||||||
|
|
||||||
DPRINT("NtfsGetFCBForFile(%p, %p, %p, '%S')\n",
|
DPRINT("NtfsGetFCBForFile(%p, %p, %p, '%S')\n",
|
||||||
Vcb,
|
Vcb,
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
/* FUNCTIONS ****************************************************************/
|
/* FUNCTIONS ****************************************************************/
|
||||||
|
|
||||||
static NTSTATUS
|
static NTSTATUS
|
||||||
NtfsGetStandardInformation(PFCB Fcb,
|
NtfsGetStandardInformation(PNTFS_FCB Fcb,
|
||||||
PDEVICE_OBJECT DeviceObject,
|
PDEVICE_OBJECT DeviceObject,
|
||||||
PFILE_STANDARD_INFORMATION StandardInfo,
|
PFILE_STANDARD_INFORMATION StandardInfo,
|
||||||
PULONG BufferLength)
|
PULONG BufferLength)
|
||||||
|
@ -91,7 +91,7 @@ NtfsGetPositionInformation(PFILE_OBJECT FileObject,
|
||||||
|
|
||||||
static NTSTATUS
|
static NTSTATUS
|
||||||
NtfsGetBasicInformation(PFILE_OBJECT FileObject,
|
NtfsGetBasicInformation(PFILE_OBJECT FileObject,
|
||||||
PFCB Fcb,
|
PNTFS_FCB Fcb,
|
||||||
PDEVICE_OBJECT DeviceObject,
|
PDEVICE_OBJECT DeviceObject,
|
||||||
PFILE_BASIC_INFORMATION BasicInfo,
|
PFILE_BASIC_INFORMATION BasicInfo,
|
||||||
PULONG BufferLength)
|
PULONG BufferLength)
|
||||||
|
@ -123,7 +123,7 @@ NtfsGetBasicInformation(PFILE_OBJECT FileObject,
|
||||||
|
|
||||||
static NTSTATUS
|
static NTSTATUS
|
||||||
NtfsGetNameInformation(PFILE_OBJECT FileObject,
|
NtfsGetNameInformation(PFILE_OBJECT FileObject,
|
||||||
PFCB Fcb,
|
PNTFS_FCB Fcb,
|
||||||
PDEVICE_OBJECT DeviceObject,
|
PDEVICE_OBJECT DeviceObject,
|
||||||
PFILE_NAME_INFORMATION NameInfo,
|
PFILE_NAME_INFORMATION NameInfo,
|
||||||
PULONG BufferLength)
|
PULONG BufferLength)
|
||||||
|
@ -157,7 +157,7 @@ NtfsGetNameInformation(PFILE_OBJECT FileObject,
|
||||||
|
|
||||||
|
|
||||||
static NTSTATUS
|
static NTSTATUS
|
||||||
NtfsGetInternalInformation(PFCB Fcb,
|
NtfsGetInternalInformation(PNTFS_FCB Fcb,
|
||||||
PFILE_INTERNAL_INFORMATION InternalInfo,
|
PFILE_INTERNAL_INFORMATION InternalInfo,
|
||||||
PULONG BufferLength)
|
PULONG BufferLength)
|
||||||
{
|
{
|
||||||
|
@ -188,7 +188,7 @@ NtfsFsdQueryInformation(PDEVICE_OBJECT DeviceObject,
|
||||||
FILE_INFORMATION_CLASS FileInformationClass;
|
FILE_INFORMATION_CLASS FileInformationClass;
|
||||||
PIO_STACK_LOCATION Stack;
|
PIO_STACK_LOCATION Stack;
|
||||||
PFILE_OBJECT FileObject;
|
PFILE_OBJECT FileObject;
|
||||||
PFCB Fcb;
|
PNTFS_FCB Fcb;
|
||||||
PVOID SystemBuffer;
|
PVOID SystemBuffer;
|
||||||
ULONG BufferLength;
|
ULONG BufferLength;
|
||||||
|
|
||||||
|
|
|
@ -308,8 +308,8 @@ NtfsMountVolume(PDEVICE_OBJECT DeviceObject,
|
||||||
PDEVICE_OBJECT NewDeviceObject = NULL;
|
PDEVICE_OBJECT NewDeviceObject = NULL;
|
||||||
PDEVICE_OBJECT DeviceToMount;
|
PDEVICE_OBJECT DeviceToMount;
|
||||||
PIO_STACK_LOCATION Stack;
|
PIO_STACK_LOCATION Stack;
|
||||||
PFCB Fcb = NULL;
|
PNTFS_FCB Fcb = NULL;
|
||||||
PCCB Ccb = NULL;
|
PNTFS_CCB Ccb = NULL;
|
||||||
PVPB Vpb;
|
PVPB Vpb;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
|
@ -373,7 +373,7 @@ NtfsMountVolume(PDEVICE_OBJECT DeviceObject,
|
||||||
}
|
}
|
||||||
|
|
||||||
Ccb = ExAllocatePoolWithTag(NonPagedPool,
|
Ccb = ExAllocatePoolWithTag(NonPagedPool,
|
||||||
sizeof(CCB),
|
sizeof(NTFS_CCB),
|
||||||
TAG_CCB);
|
TAG_CCB);
|
||||||
if (Ccb == NULL)
|
if (Ccb == NULL)
|
||||||
{
|
{
|
||||||
|
@ -381,7 +381,7 @@ NtfsMountVolume(PDEVICE_OBJECT DeviceObject,
|
||||||
goto ByeBye;
|
goto ByeBye;
|
||||||
}
|
}
|
||||||
RtlZeroMemory(Ccb,
|
RtlZeroMemory(Ccb,
|
||||||
sizeof(CCB));
|
sizeof(NTFS_CCB));
|
||||||
|
|
||||||
DeviceExt->StreamFileObject->FsContext = Fcb;
|
DeviceExt->StreamFileObject->FsContext = Fcb;
|
||||||
DeviceExt->StreamFileObject->FsContext2 = Ccb;
|
DeviceExt->StreamFileObject->FsContext2 = Ccb;
|
||||||
|
|
|
@ -102,7 +102,6 @@ DriverEntry(PDRIVER_OBJECT DriverObject,
|
||||||
ObReferenceObject(NtfsGlobalData->DeviceObject);
|
ObReferenceObject(NtfsGlobalData->DeviceObject);
|
||||||
|
|
||||||
ErrorEnd:
|
ErrorEnd:
|
||||||
|
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
if (NtfsGlobalData)
|
if (NtfsGlobalData)
|
||||||
|
@ -111,7 +110,6 @@ ErrorEnd:
|
||||||
ExFreePoolWithTag(NtfsGlobalData, TAG('N', 'D', 'R', 'G'));
|
ExFreePoolWithTag(NtfsGlobalData, TAG('N', 'D', 'R', 'G'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
|
@ -84,9 +84,23 @@ typedef struct _NTFS_INFO
|
||||||
|
|
||||||
} NTFS_INFO, *PNTFS_INFO;
|
} NTFS_INFO, *PNTFS_INFO;
|
||||||
|
|
||||||
|
#define NTFS_TYPE_CCB TAG('F','S',0,2)
|
||||||
|
#define NTFS_TYPE_FCB TAG('F','S',0,3)
|
||||||
|
#define NTFS_TYPE_VCB TAG('F','S',0,5)
|
||||||
|
#define NTFS_TYPE_IRP_CONTEST TAG('F','S',0,6)
|
||||||
|
#define NTFS_TYPE_GLOBAL_DATA TAG('F','S',0,7)
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
ULONG Type;
|
||||||
|
ULONG Size;
|
||||||
|
} NTFSIDENTIFIER, *PNTFSIDENTIFIER;
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
NTFSIDENTIFIER Identifier;
|
||||||
|
|
||||||
ERESOURCE DirResource;
|
ERESOURCE DirResource;
|
||||||
// ERESOURCE FatResource;
|
// ERESOURCE FatResource;
|
||||||
|
|
||||||
|
@ -100,7 +114,7 @@ typedef struct
|
||||||
NTFS_INFO NtfsInfo;
|
NTFS_INFO NtfsInfo;
|
||||||
|
|
||||||
|
|
||||||
} DEVICE_EXTENSION, *PDEVICE_EXTENSION, VCB, *PVCB;
|
} DEVICE_EXTENSION, *PDEVICE_EXTENSION, NTFS_VCB, *PNTFS_VCB;
|
||||||
|
|
||||||
|
|
||||||
#define FCB_CACHE_INITIALIZED 0x0001
|
#define FCB_CACHE_INITIALIZED 0x0001
|
||||||
|
@ -110,6 +124,8 @@ typedef struct
|
||||||
|
|
||||||
typedef struct _FCB
|
typedef struct _FCB
|
||||||
{
|
{
|
||||||
|
NTFSIDENTIFIER Identifier;
|
||||||
|
|
||||||
FSRTL_COMMON_FCB_HEADER RFCB;
|
FSRTL_COMMON_FCB_HEADER RFCB;
|
||||||
SECTION_OBJECT_POINTERS SectionObjectPointers;
|
SECTION_OBJECT_POINTERS SectionObjectPointers;
|
||||||
|
|
||||||
|
@ -133,11 +149,12 @@ typedef struct _FCB
|
||||||
// DIR_RECORD Entry;
|
// DIR_RECORD Entry;
|
||||||
|
|
||||||
|
|
||||||
} FCB, *PFCB;
|
} NTFS_FCB, *PNTFS_FCB;
|
||||||
|
|
||||||
|
|
||||||
typedef struct _CCB
|
typedef struct
|
||||||
{
|
{
|
||||||
|
NTFSIDENTIFIER Identifier;
|
||||||
LIST_ENTRY NextCCB;
|
LIST_ENTRY NextCCB;
|
||||||
PFILE_OBJECT PtrFileObject;
|
PFILE_OBJECT PtrFileObject;
|
||||||
LARGE_INTEGER CurrentByteOffset;
|
LARGE_INTEGER CurrentByteOffset;
|
||||||
|
@ -147,19 +164,10 @@ typedef struct _CCB
|
||||||
PWCHAR DirectorySearchPattern;
|
PWCHAR DirectorySearchPattern;
|
||||||
ULONG LastCluster;
|
ULONG LastCluster;
|
||||||
ULONG LastOffset;
|
ULONG LastOffset;
|
||||||
} CCB, *PCCB;
|
} NTFS_CCB, *PNTFS_CCB;
|
||||||
|
|
||||||
#define TAG_CCB TAG('I', 'C', 'C', 'B')
|
#define TAG_CCB TAG('I', 'C', 'C', 'B')
|
||||||
|
|
||||||
#define NTFS_TYPE_IRP_CONTEST TAG('F','S',0,6)
|
|
||||||
#define NTFS_TYPE_GLOBAL_DATA TAG('F','S',0,7)
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
ULONG Type;
|
|
||||||
ULONG Size;
|
|
||||||
} NTFSIDENTIFIER, *PNTFSIDENTIFIER;
|
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
NTFSIDENTIFIER Identifier;
|
NTFSIDENTIFIER Identifier;
|
||||||
|
@ -419,53 +427,53 @@ NtfsRelReadAhead(PVOID Context);
|
||||||
|
|
||||||
/* fcb.c */
|
/* fcb.c */
|
||||||
|
|
||||||
PFCB
|
PNTFS_FCB
|
||||||
NtfsCreateFCB(PCWSTR FileName);
|
NtfsCreateFCB(PCWSTR FileName);
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
NtfsDestroyFCB(PFCB Fcb);
|
NtfsDestroyFCB(PNTFS_FCB Fcb);
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
NtfsFCBIsDirectory(PFCB Fcb);
|
NtfsFCBIsDirectory(PNTFS_FCB Fcb);
|
||||||
|
|
||||||
BOOLEAN
|
BOOLEAN
|
||||||
NtfsFCBIsRoot(PFCB Fcb);
|
NtfsFCBIsRoot(PNTFS_FCB Fcb);
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
NtfsGrabFCB(PDEVICE_EXTENSION Vcb,
|
NtfsGrabFCB(PNTFS_VCB Vcb,
|
||||||
PFCB Fcb);
|
PNTFS_FCB Fcb);
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
NtfsReleaseFCB(PDEVICE_EXTENSION Vcb,
|
NtfsReleaseFCB(PNTFS_VCB Vcb,
|
||||||
PFCB Fcb);
|
PNTFS_FCB Fcb);
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
NtfsAddFCBToTable(PDEVICE_EXTENSION Vcb,
|
NtfsAddFCBToTable(PNTFS_VCB Vcb,
|
||||||
PFCB Fcb);
|
PNTFS_FCB Fcb);
|
||||||
|
|
||||||
PFCB
|
PNTFS_FCB
|
||||||
NtfsGrabFCBFromTable(PDEVICE_EXTENSION Vcb,
|
NtfsGrabFCBFromTable(PNTFS_VCB Vcb,
|
||||||
PCWSTR FileName);
|
PCWSTR FileName);
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NtfsFCBInitializeCache(PVCB Vcb,
|
NtfsFCBInitializeCache(PNTFS_VCB Vcb,
|
||||||
PFCB Fcb);
|
PNTFS_FCB Fcb);
|
||||||
|
|
||||||
PFCB
|
PNTFS_FCB
|
||||||
NtfsMakeRootFCB(PDEVICE_EXTENSION Vcb);
|
NtfsMakeRootFCB(PNTFS_VCB Vcb);
|
||||||
|
|
||||||
PFCB
|
PNTFS_FCB
|
||||||
NtfsOpenRootFCB(PDEVICE_EXTENSION Vcb);
|
NtfsOpenRootFCB(PNTFS_VCB Vcb);
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NtfsAttachFCBToFileObject(PDEVICE_EXTENSION Vcb,
|
NtfsAttachFCBToFileObject(PNTFS_VCB Vcb,
|
||||||
PFCB Fcb,
|
PNTFS_FCB Fcb,
|
||||||
PFILE_OBJECT FileObject);
|
PFILE_OBJECT FileObject);
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NtfsGetFCBForFile(PDEVICE_EXTENSION Vcb,
|
NtfsGetFCBForFile(PNTFS_VCB Vcb,
|
||||||
PFCB *pParentFCB,
|
PNTFS_FCB *pParentFCB,
|
||||||
PFCB *pFCB,
|
PNTFS_FCB *pFCB,
|
||||||
const PWSTR pFileName);
|
const PWSTR pFileName);
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue