sys: GenericTable -> ContextTable refactoring

This commit is contained in:
Bill Zissimopoulos 2016-02-06 00:19:37 -08:00
parent 3ccf00bd4e
commit 650d4c4d18
2 changed files with 20 additions and 20 deletions

View File

@ -29,12 +29,12 @@ VOID FspFsvolDeviceLockContextTable(PDEVICE_OBJECT DeviceObject);
VOID FspFsvolDeviceUnlockContextTable(PDEVICE_OBJECT DeviceObject); VOID FspFsvolDeviceUnlockContextTable(PDEVICE_OBJECT DeviceObject);
PVOID FspFsvolDeviceLookupContext(PDEVICE_OBJECT DeviceObject, UINT64 Identifier); PVOID FspFsvolDeviceLookupContext(PDEVICE_OBJECT DeviceObject, UINT64 Identifier);
PVOID FspFsvolDeviceInsertContext(PDEVICE_OBJECT DeviceObject, UINT64 Identifier, PVOID Context, PVOID FspFsvolDeviceInsertContext(PDEVICE_OBJECT DeviceObject, UINT64 Identifier, PVOID Context,
FSP_DEVICE_GENERIC_TABLE_ELEMENT *ElementStorage, PBOOLEAN PInserted); FSP_DEVICE_CONTEXT_TABLE_ELEMENT *ElementStorage, PBOOLEAN PInserted);
VOID FspFsvolDeviceDeleteContext(PDEVICE_OBJECT DeviceObject, UINT64 Identifier, VOID FspFsvolDeviceDeleteContext(PDEVICE_OBJECT DeviceObject, UINT64 Identifier,
PBOOLEAN PDeleted); PBOOLEAN PDeleted);
static RTL_AVL_COMPARE_ROUTINE FspFsvolDeviceCompareElement; static RTL_AVL_COMPARE_ROUTINE FspFsvolDeviceCompareContext;
static RTL_AVL_ALLOCATE_ROUTINE FspFsvolDeviceAllocateElement; static RTL_AVL_ALLOCATE_ROUTINE FspFsvolDeviceAllocateContext;
static RTL_AVL_FREE_ROUTINE FspFsvolDeviceFreeElement; static RTL_AVL_FREE_ROUTINE FspFsvolDeviceFreeContext;
VOID FspFsvolGetVolumeInfo(PDEVICE_OBJECT DeviceObject, FSP_FSCTL_VOLUME_INFO *VolumeInfo); VOID FspFsvolGetVolumeInfo(PDEVICE_OBJECT DeviceObject, FSP_FSCTL_VOLUME_INFO *VolumeInfo);
BOOLEAN FspFsvolTryGetVolumeInfo(PDEVICE_OBJECT DeviceObject, FSP_FSCTL_VOLUME_INFO *VolumeInfo); BOOLEAN FspFsvolTryGetVolumeInfo(PDEVICE_OBJECT DeviceObject, FSP_FSCTL_VOLUME_INFO *VolumeInfo);
VOID FspFsvolSetVolumeInfo(PDEVICE_OBJECT DeviceObject, const FSP_FSCTL_VOLUME_INFO *VolumeInfo); VOID FspFsvolSetVolumeInfo(PDEVICE_OBJECT DeviceObject, const FSP_FSCTL_VOLUME_INFO *VolumeInfo);
@ -56,9 +56,9 @@ VOID FspDeviceDeleteAll(VOID);
#pragma alloc_text(PAGE, FspFsvolDeviceLookupContext) #pragma alloc_text(PAGE, FspFsvolDeviceLookupContext)
#pragma alloc_text(PAGE, FspFsvolDeviceInsertContext) #pragma alloc_text(PAGE, FspFsvolDeviceInsertContext)
#pragma alloc_text(PAGE, FspFsvolDeviceDeleteContext) #pragma alloc_text(PAGE, FspFsvolDeviceDeleteContext)
#pragma alloc_text(PAGE, FspFsvolDeviceCompareElement) #pragma alloc_text(PAGE, FspFsvolDeviceCompareContext)
#pragma alloc_text(PAGE, FspFsvolDeviceAllocateElement) #pragma alloc_text(PAGE, FspFsvolDeviceAllocateContext)
#pragma alloc_text(PAGE, FspFsvolDeviceFreeElement) #pragma alloc_text(PAGE, FspFsvolDeviceFreeContext)
#pragma alloc_text(PAGE, FspDeviceCopyList) #pragma alloc_text(PAGE, FspDeviceCopyList)
#pragma alloc_text(PAGE, FspDeviceDeleteList) #pragma alloc_text(PAGE, FspDeviceDeleteList)
#pragma alloc_text(PAGE, FspDeviceDeleteAll) #pragma alloc_text(PAGE, FspDeviceDeleteAll)
@ -296,7 +296,7 @@ static NTSTATUS FspFsvolDeviceInit(PDEVICE_OBJECT DeviceObject)
/* initialize our generic table */ /* initialize our generic table */
ExInitializeResourceLite(&FsvolDeviceExtension->ContextTableResource); ExInitializeResourceLite(&FsvolDeviceExtension->ContextTableResource);
RtlInitializeGenericTableAvl(&FsvolDeviceExtension->ContextTable, RtlInitializeGenericTableAvl(&FsvolDeviceExtension->ContextTable,
FspFsvolDeviceCompareElement, FspFsvolDeviceAllocateElement, FspFsvolDeviceFreeElement, 0); FspFsvolDeviceCompareContext, FspFsvolDeviceAllocateContext, FspFsvolDeviceFreeContext, 0);
FsvolDeviceExtension->InitDoneCtxTab = 1; FsvolDeviceExtension->InitDoneCtxTab = 1;
/* initialize our timer routine and start our expiration timer */ /* initialize our timer routine and start our expiration timer */
@ -437,7 +437,7 @@ PVOID FspFsvolDeviceLookupContext(PDEVICE_OBJECT DeviceObject, UINT64 Identifier
PAGED_CODE(); PAGED_CODE();
FSP_FSVOL_DEVICE_EXTENSION *FsvolDeviceExtension = FspFsvolDeviceExtension(DeviceObject); FSP_FSVOL_DEVICE_EXTENSION *FsvolDeviceExtension = FspFsvolDeviceExtension(DeviceObject);
FSP_DEVICE_GENERIC_TABLE_ELEMENT_DATA *Result; FSP_DEVICE_CONTEXT_TABLE_ELEMENT_DATA *Result;
Result = RtlLookupElementGenericTableAvl(&FsvolDeviceExtension->ContextTable, &Identifier); Result = RtlLookupElementGenericTableAvl(&FsvolDeviceExtension->ContextTable, &Identifier);
@ -445,12 +445,12 @@ PVOID FspFsvolDeviceLookupContext(PDEVICE_OBJECT DeviceObject, UINT64 Identifier
} }
PVOID FspFsvolDeviceInsertContext(PDEVICE_OBJECT DeviceObject, UINT64 Identifier, PVOID Context, PVOID FspFsvolDeviceInsertContext(PDEVICE_OBJECT DeviceObject, UINT64 Identifier, PVOID Context,
FSP_DEVICE_GENERIC_TABLE_ELEMENT *ElementStorage, PBOOLEAN PInserted) FSP_DEVICE_CONTEXT_TABLE_ELEMENT *ElementStorage, PBOOLEAN PInserted)
{ {
PAGED_CODE(); PAGED_CODE();
FSP_FSVOL_DEVICE_EXTENSION *FsvolDeviceExtension = FspFsvolDeviceExtension(DeviceObject); FSP_FSVOL_DEVICE_EXTENSION *FsvolDeviceExtension = FspFsvolDeviceExtension(DeviceObject);
FSP_DEVICE_GENERIC_TABLE_ELEMENT_DATA *Result, Element = { 0 }; FSP_DEVICE_CONTEXT_TABLE_ELEMENT_DATA *Result, Element = { 0 };
ASSERT(0 != ElementStorage); ASSERT(0 != ElementStorage);
Element.Identifier = Identifier; Element.Identifier = Identifier;
@ -480,7 +480,7 @@ VOID FspFsvolDeviceDeleteContext(PDEVICE_OBJECT DeviceObject, UINT64 Identifier,
*PDeleted = Deleted; *PDeleted = Deleted;
} }
static RTL_GENERIC_COMPARE_RESULTS NTAPI FspFsvolDeviceCompareElement( static RTL_GENERIC_COMPARE_RESULTS NTAPI FspFsvolDeviceCompareContext(
PRTL_AVL_TABLE Table, PVOID FirstElement, PVOID SecondElement) PRTL_AVL_TABLE Table, PVOID FirstElement, PVOID SecondElement)
{ {
PAGED_CODE(); PAGED_CODE();
@ -497,7 +497,7 @@ static RTL_GENERIC_COMPARE_RESULTS NTAPI FspFsvolDeviceCompareElement(
return GenericEqual; return GenericEqual;
} }
static PVOID NTAPI FspFsvolDeviceAllocateElement( static PVOID NTAPI FspFsvolDeviceAllocateContext(
PRTL_AVL_TABLE Table, CLONG ByteSize) PRTL_AVL_TABLE Table, CLONG ByteSize)
{ {
PAGED_CODE(); PAGED_CODE();
@ -505,12 +505,12 @@ static PVOID NTAPI FspFsvolDeviceAllocateElement(
FSP_FSVOL_DEVICE_EXTENSION *FsvolDeviceExtension = FSP_FSVOL_DEVICE_EXTENSION *FsvolDeviceExtension =
CONTAINING_RECORD(Table, FSP_FSVOL_DEVICE_EXTENSION, ContextTable); CONTAINING_RECORD(Table, FSP_FSVOL_DEVICE_EXTENSION, ContextTable);
ASSERT(sizeof(FSP_DEVICE_GENERIC_TABLE_ELEMENT) == ByteSize); ASSERT(sizeof(FSP_DEVICE_CONTEXT_TABLE_ELEMENT) == ByteSize);
return FsvolDeviceExtension->ContextTableElementStorage; return FsvolDeviceExtension->ContextTableElementStorage;
} }
static VOID NTAPI FspFsvolDeviceFreeElement( static VOID NTAPI FspFsvolDeviceFreeContext(
PRTL_AVL_TABLE Table, PVOID Buffer) PRTL_AVL_TABLE Table, PVOID Buffer)
{ {
PAGED_CODE(); PAGED_CODE();

View File

@ -443,12 +443,12 @@ typedef struct
{ {
UINT64 Identifier; UINT64 Identifier;
PVOID Context; PVOID Context;
} FSP_DEVICE_GENERIC_TABLE_ELEMENT_DATA; } FSP_DEVICE_CONTEXT_TABLE_ELEMENT_DATA;
typedef struct typedef struct
{ {
RTL_BALANCED_LINKS Header; RTL_BALANCED_LINKS Header;
FSP_DEVICE_GENERIC_TABLE_ELEMENT_DATA Data; FSP_DEVICE_CONTEXT_TABLE_ELEMENT_DATA Data;
} FSP_DEVICE_GENERIC_TABLE_ELEMENT; } FSP_DEVICE_CONTEXT_TABLE_ELEMENT;
enum enum
{ {
FspFsctlDeviceExtensionKind = '\0ltC', /* file system control device (e.g. \Device\WinFsp.Disk) */ FspFsctlDeviceExtensionKind = '\0ltC', /* file system control device (e.g. \Device\WinFsp.Disk) */
@ -513,7 +513,7 @@ VOID FspFsvolDeviceLockContextTable(PDEVICE_OBJECT DeviceObject);
VOID FspFsvolDeviceUnlockContextTable(PDEVICE_OBJECT DeviceObject); VOID FspFsvolDeviceUnlockContextTable(PDEVICE_OBJECT DeviceObject);
PVOID FspFsvolDeviceLookupContext(PDEVICE_OBJECT DeviceObject, UINT64 Identifier); PVOID FspFsvolDeviceLookupContext(PDEVICE_OBJECT DeviceObject, UINT64 Identifier);
PVOID FspFsvolDeviceInsertContext(PDEVICE_OBJECT DeviceObject, UINT64 Identifier, PVOID Context, PVOID FspFsvolDeviceInsertContext(PDEVICE_OBJECT DeviceObject, UINT64 Identifier, PVOID Context,
FSP_DEVICE_GENERIC_TABLE_ELEMENT *ElementStorage, PBOOLEAN PInserted); FSP_DEVICE_CONTEXT_TABLE_ELEMENT *ElementStorage, PBOOLEAN PInserted);
VOID FspFsvolDeviceDeleteContext(PDEVICE_OBJECT DeviceObject, UINT64 Identifier, VOID FspFsvolDeviceDeleteContext(PDEVICE_OBJECT DeviceObject, UINT64 Identifier,
PBOOLEAN PDeleted); PBOOLEAN PDeleted);
VOID FspFsvolGetVolumeInfo(PDEVICE_OBJECT DeviceObject, FSP_FSCTL_VOLUME_INFO *VolumeInfo); VOID FspFsvolGetVolumeInfo(PDEVICE_OBJECT DeviceObject, FSP_FSCTL_VOLUME_INFO *VolumeInfo);
@ -588,7 +588,7 @@ typedef struct
UINT64 UserContext; UINT64 UserContext;
UINT64 IndexNumber; UINT64 IndexNumber;
BOOLEAN IsDirectory; BOOLEAN IsDirectory;
FSP_DEVICE_GENERIC_TABLE_ELEMENT ElementStorage; FSP_DEVICE_CONTEXT_TABLE_ELEMENT ElementStorage;
UNICODE_STRING FileName; UNICODE_STRING FileName;
WCHAR FileNameBuf[]; WCHAR FileNameBuf[];
} FSP_FILE_NODE; } FSP_FILE_NODE;