mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-22 08:23:05 -05:00
sys: FSP_FILE_NODE_NO_PGIO
This commit is contained in:
parent
deaf475861
commit
df4c19c113
@ -1434,6 +1434,7 @@ NTSTATUS FspVolumeWork(
|
|||||||
PDEVICE_OBJECT FsvolDeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp);
|
PDEVICE_OBJECT FsvolDeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp);
|
||||||
|
|
||||||
/* file objects */
|
/* file objects */
|
||||||
|
#define FSP_FILE_NODE_NO_PGIO
|
||||||
#define FspFileNodeKind(FileNode) \
|
#define FspFileNodeKind(FileNode) \
|
||||||
(((FSP_FILE_NODE *)FileNode)->Header.NodeTypeCode)
|
(((FSP_FILE_NODE *)FileNode)->Header.NodeTypeCode)
|
||||||
#define FspFileNodeIsValid(FileNode) \
|
#define FspFileNodeIsValid(FileNode) \
|
||||||
|
@ -407,8 +407,10 @@ VOID FspFileNodeAcquireSharedF(FSP_FILE_NODE *FileNode, ULONG Flags)
|
|||||||
if (Flags & FspFileNodeAcquireMain)
|
if (Flags & FspFileNodeAcquireMain)
|
||||||
ExAcquireResourceSharedLite(FileNode->Header.Resource, TRUE);
|
ExAcquireResourceSharedLite(FileNode->Header.Resource, TRUE);
|
||||||
|
|
||||||
|
#if !defined(FSP_FILE_NODE_NO_PGIO)
|
||||||
if (Flags & FspFileNodeAcquirePgio)
|
if (Flags & FspFileNodeAcquirePgio)
|
||||||
ExAcquireResourceSharedLite(FileNode->Header.PagingIoResource, TRUE);
|
ExAcquireResourceSharedLite(FileNode->Header.PagingIoResource, TRUE);
|
||||||
|
#endif
|
||||||
|
|
||||||
FSP_FILE_NODE_SET_FLAGS();
|
FSP_FILE_NODE_SET_FLAGS();
|
||||||
}
|
}
|
||||||
@ -432,6 +434,7 @@ BOOLEAN FspFileNodeTryAcquireSharedF(FSP_FILE_NODE *FileNode, ULONG Flags, BOOLE
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if !defined(FSP_FILE_NODE_NO_PGIO)
|
||||||
if (Flags & FspFileNodeAcquirePgio)
|
if (Flags & FspFileNodeAcquirePgio)
|
||||||
{
|
{
|
||||||
Result = ExAcquireResourceSharedLite(FileNode->Header.PagingIoResource, Wait);
|
Result = ExAcquireResourceSharedLite(FileNode->Header.PagingIoResource, Wait);
|
||||||
@ -442,6 +445,7 @@ BOOLEAN FspFileNodeTryAcquireSharedF(FSP_FILE_NODE *FileNode, ULONG Flags, BOOLE
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (Result)
|
if (Result)
|
||||||
FSP_FILE_NODE_SET_FLAGS();
|
FSP_FILE_NODE_SET_FLAGS();
|
||||||
@ -462,8 +466,10 @@ VOID FspFileNodeAcquireExclusiveF(FSP_FILE_NODE *FileNode, ULONG Flags)
|
|||||||
if (Flags & FspFileNodeAcquireMain)
|
if (Flags & FspFileNodeAcquireMain)
|
||||||
ExAcquireResourceExclusiveLite(FileNode->Header.Resource, TRUE);
|
ExAcquireResourceExclusiveLite(FileNode->Header.Resource, TRUE);
|
||||||
|
|
||||||
|
#if !defined(FSP_FILE_NODE_NO_PGIO)
|
||||||
if (Flags & FspFileNodeAcquirePgio)
|
if (Flags & FspFileNodeAcquirePgio)
|
||||||
ExAcquireResourceExclusiveLite(FileNode->Header.PagingIoResource, TRUE);
|
ExAcquireResourceExclusiveLite(FileNode->Header.PagingIoResource, TRUE);
|
||||||
|
#endif
|
||||||
|
|
||||||
FSP_FILE_NODE_SET_FLAGS();
|
FSP_FILE_NODE_SET_FLAGS();
|
||||||
}
|
}
|
||||||
@ -487,6 +493,7 @@ BOOLEAN FspFileNodeTryAcquireExclusiveF(FSP_FILE_NODE *FileNode, ULONG Flags, BO
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if !defined(FSP_FILE_NODE_NO_PGIO)
|
||||||
if (Flags & FspFileNodeAcquirePgio)
|
if (Flags & FspFileNodeAcquirePgio)
|
||||||
{
|
{
|
||||||
Result = ExAcquireResourceExclusiveLite(FileNode->Header.PagingIoResource, Wait);
|
Result = ExAcquireResourceExclusiveLite(FileNode->Header.PagingIoResource, Wait);
|
||||||
@ -497,6 +504,7 @@ BOOLEAN FspFileNodeTryAcquireExclusiveF(FSP_FILE_NODE *FileNode, ULONG Flags, BO
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (Result)
|
if (Result)
|
||||||
FSP_FILE_NODE_SET_FLAGS();
|
FSP_FILE_NODE_SET_FLAGS();
|
||||||
@ -513,8 +521,10 @@ VOID FspFileNodeConvertExclusiveToSharedF(FSP_FILE_NODE *FileNode, ULONG Flags)
|
|||||||
|
|
||||||
FSP_FILE_NODE_GET_FLAGS();
|
FSP_FILE_NODE_GET_FLAGS();
|
||||||
|
|
||||||
|
#if !defined(FSP_FILE_NODE_NO_PGIO)
|
||||||
if (Flags & FspFileNodeAcquirePgio)
|
if (Flags & FspFileNodeAcquirePgio)
|
||||||
ExConvertExclusiveToSharedLite(FileNode->Header.PagingIoResource);
|
ExConvertExclusiveToSharedLite(FileNode->Header.PagingIoResource);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (Flags & FspFileNodeAcquireMain)
|
if (Flags & FspFileNodeAcquireMain)
|
||||||
ExConvertExclusiveToSharedLite(FileNode->Header.Resource);
|
ExConvertExclusiveToSharedLite(FileNode->Header.Resource);
|
||||||
@ -534,8 +544,10 @@ VOID FspFileNodeSetOwnerF(FSP_FILE_NODE *FileNode, ULONG Flags, PVOID Owner)
|
|||||||
if (Flags & FspFileNodeAcquireMain)
|
if (Flags & FspFileNodeAcquireMain)
|
||||||
ExSetResourceOwnerPointer(FileNode->Header.Resource, Owner);
|
ExSetResourceOwnerPointer(FileNode->Header.Resource, Owner);
|
||||||
|
|
||||||
|
#if !defined(FSP_FILE_NODE_NO_PGIO)
|
||||||
if (Flags & FspFileNodeAcquirePgio)
|
if (Flags & FspFileNodeAcquirePgio)
|
||||||
ExSetResourceOwnerPointer(FileNode->Header.PagingIoResource, Owner);
|
ExSetResourceOwnerPointer(FileNode->Header.PagingIoResource, Owner);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID FspFileNodeReleaseF(FSP_FILE_NODE *FileNode, ULONG Flags)
|
VOID FspFileNodeReleaseF(FSP_FILE_NODE *FileNode, ULONG Flags)
|
||||||
@ -548,8 +560,10 @@ VOID FspFileNodeReleaseF(FSP_FILE_NODE *FileNode, ULONG Flags)
|
|||||||
FSP_FILE_NODE_GET_FLAGS();
|
FSP_FILE_NODE_GET_FLAGS();
|
||||||
FSP_FILE_NODE_ASSERT_FLAGS_SET();
|
FSP_FILE_NODE_ASSERT_FLAGS_SET();
|
||||||
|
|
||||||
|
#if !defined(FSP_FILE_NODE_NO_PGIO)
|
||||||
if (Flags & FspFileNodeAcquirePgio)
|
if (Flags & FspFileNodeAcquirePgio)
|
||||||
ExReleaseResourceLite(FileNode->Header.PagingIoResource);
|
ExReleaseResourceLite(FileNode->Header.PagingIoResource);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (Flags & FspFileNodeAcquireMain)
|
if (Flags & FspFileNodeAcquireMain)
|
||||||
ExReleaseResourceLite(FileNode->Header.Resource);
|
ExReleaseResourceLite(FileNode->Header.Resource);
|
||||||
@ -569,6 +583,7 @@ VOID FspFileNodeReleaseOwnerF(FSP_FILE_NODE *FileNode, ULONG Flags, PVOID Owner)
|
|||||||
|
|
||||||
Owner = (PVOID)((UINT_PTR)Owner | 3);
|
Owner = (PVOID)((UINT_PTR)Owner | 3);
|
||||||
|
|
||||||
|
#if !defined(FSP_FILE_NODE_NO_PGIO)
|
||||||
if (Flags & FspFileNodeAcquirePgio)
|
if (Flags & FspFileNodeAcquirePgio)
|
||||||
{
|
{
|
||||||
if (ExIsResourceAcquiredLite(FileNode->Header.PagingIoResource))
|
if (ExIsResourceAcquiredLite(FileNode->Header.PagingIoResource))
|
||||||
@ -576,6 +591,7 @@ VOID FspFileNodeReleaseOwnerF(FSP_FILE_NODE *FileNode, ULONG Flags, PVOID Owner)
|
|||||||
else
|
else
|
||||||
ExReleaseResourceForThreadLite(FileNode->Header.PagingIoResource, (ERESOURCE_THREAD)Owner);
|
ExReleaseResourceForThreadLite(FileNode->Header.PagingIoResource, (ERESOURCE_THREAD)Owner);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (Flags & FspFileNodeAcquireMain)
|
if (Flags & FspFileNodeAcquireMain)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user