- 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:
Pierre Schweitzer 2008-03-15 08:51:47 +00:00
parent 4f6b034f60
commit 1498b141eb
8 changed files with 103 additions and 97 deletions

View file

@ -43,13 +43,13 @@ NtfsCloseFile(PDEVICE_EXTENSION DeviceExt,
* FUNCTION: Closes a file
*/
{
PCCB Ccb;
PNTFS_CCB Ccb;
DPRINT("NtfsCloseFile(DeviceExt %p, FileObject %p)\n",
DeviceExt,
FileObject);
Ccb = (PCCB)(FileObject->FsContext2);
Ccb = (PNTFS_CCB)(FileObject->FsContext2);
DPRINT("Ccb %p\n", Ccb);
if (Ccb == NULL)

View file

@ -41,7 +41,7 @@ NtfsMakeAbsoluteFilename(PFILE_OBJECT pFileObject,
PWSTR *pAbsoluteFilename)
{
PWSTR rcName;
PFCB Fcb;
PNTFS_FCB Fcb;
DPRINT("try related for %S\n", pRelativeFileName);
Fcb = pFileObject->FsContext;
@ -82,8 +82,8 @@ NtfsOpenFile(PDEVICE_EXTENSION DeviceExt,
* FUNCTION: Opens a file
*/
{
PFCB ParentFcb;
PFCB Fcb;
PNTFS_FCB ParentFcb;
PNTFS_FCB Fcb;
NTSTATUS Status;
PWSTR AbsFileName = NULL;

View file

@ -489,8 +489,8 @@ NtfsQueryDirectory(PNTFS_IRP_CONTEXT IrpContext)
ULONG FileIndex = 0;
PUCHAR Buffer = NULL;
PFILE_NAMES_INFORMATION Buffer0 = NULL;
PFCB Fcb;
PCCB Ccb;
PNTFS_FCB Fcb;
PNTFS_CCB Ccb;
// FCB TempFcb;
BOOLEAN First = FALSE;
PIO_STACK_LOCATION Stack;
@ -507,8 +507,8 @@ NtfsQueryDirectory(PNTFS_IRP_CONTEXT IrpContext)
Stack = IoGetCurrentIrpStackLocation(Irp);
FileObject = Stack->FileObject;
Ccb = (PCCB)FileObject->FsContext2;
Fcb = (PFCB)FileObject->FsContext;
Ccb = (PNTFS_CCB)FileObject->FsContext2;
Fcb = (PNTFS_FCB)FileObject->FsContext;
/* Obtain the callers parameters */
BufferLength = Stack->Parameters.QueryDirectory.Length;

View file

@ -67,13 +67,13 @@ NtfsWSubString(PWCHAR pTarget, const PWCHAR pSource, size_t pLength)
}
PFCB
PNTFS_FCB
NtfsCreateFCB(PCWSTR FileName)
{
PFCB Fcb;
PNTFS_FCB Fcb;
Fcb = ExAllocatePoolWithTag(NonPagedPool, sizeof(FCB), TAG_FCB);
RtlZeroMemory(Fcb, sizeof(FCB));
Fcb = ExAllocatePoolWithTag(NonPagedPool, sizeof(NTFS_FCB), TAG_FCB);
RtlZeroMemory(Fcb, sizeof(NTFS_FCB));
if (FileName)
{
@ -95,7 +95,7 @@ NtfsCreateFCB(PCWSTR FileName)
VOID
NtfsDestroyFCB(PFCB Fcb)
NtfsDestroyFCB(PNTFS_FCB Fcb)
{
ExDeleteResourceLite(&Fcb->MainResource);
@ -104,7 +104,7 @@ NtfsDestroyFCB(PFCB Fcb)
BOOLEAN
NtfsFCBIsDirectory(PFCB Fcb)
NtfsFCBIsDirectory(PNTFS_FCB Fcb)
{
// return(Fcb->entry.Attrib & FILE_ATTRIBUTE_DIRECTORY);
// return(Fcb->Entry.FileFlags & 0x02);
@ -113,15 +113,15 @@ NtfsFCBIsDirectory(PFCB Fcb)
BOOLEAN
NtfsFCBIsRoot(PFCB Fcb)
NtfsFCBIsRoot(PNTFS_FCB Fcb)
{
return(wcscmp(Fcb->PathName, L"\\") == 0);
}
VOID
NtfsGrabFCB(PDEVICE_EXTENSION Vcb,
PFCB Fcb)
NtfsGrabFCB(PNTFS_VCB Vcb,
PNTFS_FCB Fcb)
{
KIRQL oldIrql;
@ -137,8 +137,8 @@ NtfsGrabFCB(PDEVICE_EXTENSION Vcb,
VOID
NtfsReleaseFCB(PDEVICE_EXTENSION Vcb,
PFCB Fcb)
NtfsReleaseFCB(PNTFS_VCB Vcb,
PNTFS_FCB Fcb)
{
KIRQL oldIrql;
@ -160,8 +160,8 @@ NtfsReleaseFCB(PDEVICE_EXTENSION Vcb,
VOID
NtfsAddFCBToTable(PDEVICE_EXTENSION Vcb,
PFCB Fcb)
NtfsAddFCBToTable(PNTFS_VCB Vcb,
PNTFS_FCB Fcb)
{
KIRQL oldIrql;
@ -172,12 +172,12 @@ NtfsAddFCBToTable(PDEVICE_EXTENSION Vcb,
}
PFCB
NtfsGrabFCBFromTable(PDEVICE_EXTENSION Vcb,
PNTFS_FCB
NtfsGrabFCBFromTable(PNTFS_VCB Vcb,
PCWSTR FileName)
{
KIRQL oldIrql;
PFCB Fcb;
PNTFS_FCB Fcb;
PLIST_ENTRY current_entry;
KeAcquireSpinLock(&Vcb->FcbListLock, &oldIrql);
@ -194,7 +194,7 @@ NtfsGrabFCBFromTable(PDEVICE_EXTENSION Vcb,
current_entry = Vcb->FcbListHead.Flink;
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);
if (_wcsicmp(FileName, Fcb->PathName) == 0)
@ -215,22 +215,22 @@ NtfsGrabFCBFromTable(PDEVICE_EXTENSION Vcb,
NTSTATUS
NtfsFCBInitializeCache(PVCB Vcb,
PFCB Fcb)
NtfsFCBInitializeCache(PNTFS_VCB Vcb,
PNTFS_FCB Fcb)
{
PFILE_OBJECT FileObject;
NTSTATUS Status;
PCCB newCCB;
PNTFS_CCB newCCB;
FileObject = IoCreateStreamFileObject(NULL, Vcb->StorageDevice);
newCCB = ExAllocatePoolWithTag(NonPagedPool, sizeof(CCB), TAG_CCB);
newCCB = ExAllocatePoolWithTag(NonPagedPool, sizeof(NTFS_CCB), TAG_CCB);
if (newCCB == NULL)
{
return(STATUS_INSUFFICIENT_RESOURCES);
}
RtlZeroMemory(newCCB,
sizeof(CCB));
sizeof(NTFS_CCB));
FileObject->SectionObjectPointer = &Fcb->SectionObjectPointers;
FileObject->FsContext = Fcb;
@ -253,10 +253,10 @@ NtfsFCBInitializeCache(PVCB Vcb,
}
PFCB
NtfsMakeRootFCB(PDEVICE_EXTENSION Vcb)
PNTFS_FCB
NtfsMakeRootFCB(PNTFS_VCB Vcb)
{
PFCB Fcb;
PNTFS_FCB Fcb;
Fcb = NtfsCreateFCB(L"\\");
@ -279,10 +279,10 @@ NtfsMakeRootFCB(PDEVICE_EXTENSION Vcb)
}
PFCB
NtfsOpenRootFCB(PDEVICE_EXTENSION Vcb)
PNTFS_FCB
NtfsOpenRootFCB(PNTFS_VCB Vcb)
{
PFCB Fcb;
PNTFS_FCB Fcb;
Fcb = NtfsGrabFCBFromTable(Vcb, L"\\");
if (Fcb == NULL)
@ -386,18 +386,18 @@ NtfsMakeFCBFromDirEntry(PVCB Vcb,
NTSTATUS
NtfsAttachFCBToFileObject(PDEVICE_EXTENSION Vcb,
PFCB Fcb,
NtfsAttachFCBToFileObject(PNTFS_VCB Vcb,
PNTFS_FCB Fcb,
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)
{
return(STATUS_INSUFFICIENT_RESOURCES);
}
memset(newCCB, 0, sizeof(CCB));
memset(newCCB, 0, sizeof(NTFS_CCB));
FileObject->SectionObjectPointer = &Fcb->SectionObjectPointers;
FileObject->FsContext = Fcb;
@ -423,10 +423,10 @@ NtfsAttachFCBToFileObject(PDEVICE_EXTENSION Vcb,
static NTSTATUS
NtfsDirFindFile(PDEVICE_EXTENSION DeviceExt,
PFCB DirectoryFcb,
NtfsDirFindFile(PNTFS_VCB Vcb,
PNTFS_FCB DirectoryFcb,
PWSTR FileToFind,
PFCB *FoundFCB)
PNTFS_FCB *FoundFCB)
{
#if 0
WCHAR TempName[2];
@ -534,17 +534,17 @@ NtfsDirFindFile(PDEVICE_EXTENSION DeviceExt,
NTSTATUS
NtfsGetFCBForFile(PDEVICE_EXTENSION Vcb,
PFCB *pParentFCB,
PFCB *pFCB,
NtfsGetFCBForFile(PNTFS_VCB Vcb,
PNTFS_FCB *pParentFCB,
PNTFS_FCB *pFCB,
const PWSTR pFileName)
{
NTSTATUS Status;
WCHAR pathName [MAX_PATH];
WCHAR elementName [MAX_PATH];
PWCHAR currentElement;
PFCB FCB;
PFCB parentFCB;
PNTFS_FCB FCB;
PNTFS_FCB parentFCB;
DPRINT("NtfsGetFCBForFile(%p, %p, %p, '%S')\n",
Vcb,

View file

@ -36,7 +36,7 @@
/* FUNCTIONS ****************************************************************/
static NTSTATUS
NtfsGetStandardInformation(PFCB Fcb,
NtfsGetStandardInformation(PNTFS_FCB Fcb,
PDEVICE_OBJECT DeviceObject,
PFILE_STANDARD_INFORMATION StandardInfo,
PULONG BufferLength)
@ -91,7 +91,7 @@ NtfsGetPositionInformation(PFILE_OBJECT FileObject,
static NTSTATUS
NtfsGetBasicInformation(PFILE_OBJECT FileObject,
PFCB Fcb,
PNTFS_FCB Fcb,
PDEVICE_OBJECT DeviceObject,
PFILE_BASIC_INFORMATION BasicInfo,
PULONG BufferLength)
@ -123,7 +123,7 @@ NtfsGetBasicInformation(PFILE_OBJECT FileObject,
static NTSTATUS
NtfsGetNameInformation(PFILE_OBJECT FileObject,
PFCB Fcb,
PNTFS_FCB Fcb,
PDEVICE_OBJECT DeviceObject,
PFILE_NAME_INFORMATION NameInfo,
PULONG BufferLength)
@ -157,7 +157,7 @@ NtfsGetNameInformation(PFILE_OBJECT FileObject,
static NTSTATUS
NtfsGetInternalInformation(PFCB Fcb,
NtfsGetInternalInformation(PNTFS_FCB Fcb,
PFILE_INTERNAL_INFORMATION InternalInfo,
PULONG BufferLength)
{
@ -188,7 +188,7 @@ NtfsFsdQueryInformation(PDEVICE_OBJECT DeviceObject,
FILE_INFORMATION_CLASS FileInformationClass;
PIO_STACK_LOCATION Stack;
PFILE_OBJECT FileObject;
PFCB Fcb;
PNTFS_FCB Fcb;
PVOID SystemBuffer;
ULONG BufferLength;

View file

@ -308,8 +308,8 @@ NtfsMountVolume(PDEVICE_OBJECT DeviceObject,
PDEVICE_OBJECT NewDeviceObject = NULL;
PDEVICE_OBJECT DeviceToMount;
PIO_STACK_LOCATION Stack;
PFCB Fcb = NULL;
PCCB Ccb = NULL;
PNTFS_FCB Fcb = NULL;
PNTFS_CCB Ccb = NULL;
PVPB Vpb;
NTSTATUS Status;
@ -373,7 +373,7 @@ NtfsMountVolume(PDEVICE_OBJECT DeviceObject,
}
Ccb = ExAllocatePoolWithTag(NonPagedPool,
sizeof(CCB),
sizeof(NTFS_CCB),
TAG_CCB);
if (Ccb == NULL)
{
@ -381,7 +381,7 @@ NtfsMountVolume(PDEVICE_OBJECT DeviceObject,
goto ByeBye;
}
RtlZeroMemory(Ccb,
sizeof(CCB));
sizeof(NTFS_CCB));
DeviceExt->StreamFileObject->FsContext = Fcb;
DeviceExt->StreamFileObject->FsContext2 = Ccb;

View file

@ -102,7 +102,6 @@ DriverEntry(PDRIVER_OBJECT DriverObject,
ObReferenceObject(NtfsGlobalData->DeviceObject);
ErrorEnd:
if (!NT_SUCCESS(Status))
{
if (NtfsGlobalData)
@ -111,7 +110,6 @@ ErrorEnd:
ExFreePoolWithTag(NtfsGlobalData, TAG('N', 'D', 'R', 'G'));
}
}
return Status;
}

View file

@ -84,9 +84,23 @@ typedef struct _NTFS_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
{
ULONG Type;
ULONG Size;
} NTFSIDENTIFIER, *PNTFSIDENTIFIER;
typedef struct
{
NTFSIDENTIFIER Identifier;
ERESOURCE DirResource;
// ERESOURCE FatResource;
@ -100,7 +114,7 @@ typedef struct
NTFS_INFO NtfsInfo;
} DEVICE_EXTENSION, *PDEVICE_EXTENSION, VCB, *PVCB;
} DEVICE_EXTENSION, *PDEVICE_EXTENSION, NTFS_VCB, *PNTFS_VCB;
#define FCB_CACHE_INITIALIZED 0x0001
@ -110,6 +124,8 @@ typedef struct
typedef struct _FCB
{
NTFSIDENTIFIER Identifier;
FSRTL_COMMON_FCB_HEADER RFCB;
SECTION_OBJECT_POINTERS SectionObjectPointers;
@ -133,11 +149,12 @@ typedef struct _FCB
// DIR_RECORD Entry;
} FCB, *PFCB;
} NTFS_FCB, *PNTFS_FCB;
typedef struct _CCB
typedef struct
{
NTFSIDENTIFIER Identifier;
LIST_ENTRY NextCCB;
PFILE_OBJECT PtrFileObject;
LARGE_INTEGER CurrentByteOffset;
@ -147,19 +164,10 @@ typedef struct _CCB
PWCHAR DirectorySearchPattern;
ULONG LastCluster;
ULONG LastOffset;
} CCB, *PCCB;
} NTFS_CCB, *PNTFS_CCB;
#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
{
NTFSIDENTIFIER Identifier;
@ -419,53 +427,53 @@ NtfsRelReadAhead(PVOID Context);
/* fcb.c */
PFCB
PNTFS_FCB
NtfsCreateFCB(PCWSTR FileName);
VOID
NtfsDestroyFCB(PFCB Fcb);
NtfsDestroyFCB(PNTFS_FCB Fcb);
BOOLEAN
NtfsFCBIsDirectory(PFCB Fcb);
NtfsFCBIsDirectory(PNTFS_FCB Fcb);
BOOLEAN
NtfsFCBIsRoot(PFCB Fcb);
NtfsFCBIsRoot(PNTFS_FCB Fcb);
VOID
NtfsGrabFCB(PDEVICE_EXTENSION Vcb,
PFCB Fcb);
NtfsGrabFCB(PNTFS_VCB Vcb,
PNTFS_FCB Fcb);
VOID
NtfsReleaseFCB(PDEVICE_EXTENSION Vcb,
PFCB Fcb);
NtfsReleaseFCB(PNTFS_VCB Vcb,
PNTFS_FCB Fcb);
VOID
NtfsAddFCBToTable(PDEVICE_EXTENSION Vcb,
PFCB Fcb);
NtfsAddFCBToTable(PNTFS_VCB Vcb,
PNTFS_FCB Fcb);
PFCB
NtfsGrabFCBFromTable(PDEVICE_EXTENSION Vcb,
PNTFS_FCB
NtfsGrabFCBFromTable(PNTFS_VCB Vcb,
PCWSTR FileName);
NTSTATUS
NtfsFCBInitializeCache(PVCB Vcb,
PFCB Fcb);
NtfsFCBInitializeCache(PNTFS_VCB Vcb,
PNTFS_FCB Fcb);
PFCB
NtfsMakeRootFCB(PDEVICE_EXTENSION Vcb);
PNTFS_FCB
NtfsMakeRootFCB(PNTFS_VCB Vcb);
PFCB
NtfsOpenRootFCB(PDEVICE_EXTENSION Vcb);
PNTFS_FCB
NtfsOpenRootFCB(PNTFS_VCB Vcb);
NTSTATUS
NtfsAttachFCBToFileObject(PDEVICE_EXTENSION Vcb,
PFCB Fcb,
NtfsAttachFCBToFileObject(PNTFS_VCB Vcb,
PNTFS_FCB Fcb,
PFILE_OBJECT FileObject);
NTSTATUS
NtfsGetFCBForFile(PDEVICE_EXTENSION Vcb,
PFCB *pParentFCB,
PFCB *pFCB,
NtfsGetFCBForFile(PNTFS_VCB Vcb,
PNTFS_FCB *pParentFCB,
PNTFS_FCB *pFCB,
const PWSTR pFileName);