mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-23 00:43:00 -05:00
sys: GenericTable -> ContextTable refactoring
This commit is contained in:
parent
3ccf00bd4e
commit
650d4c4d18
@ -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();
|
||||||
|
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user