mirror of
https://github.com/winfsp/winfsp.git
synced 2025-06-08 04:52:10 -05:00
sys: fast I/O and resource acquisition callbacks
This commit is contained in:
parent
f87eeb9db5
commit
e040c4d3cf
@ -155,7 +155,7 @@
|
||||
<ClCompile Include="..\..\src\sys\dirctl.c" />
|
||||
<ClCompile Include="..\..\src\sys\driver.c" />
|
||||
<ClCompile Include="..\..\src\sys\ea.c" />
|
||||
<ClCompile Include="..\..\src\sys\fastio.c" />
|
||||
<ClCompile Include="..\..\src\sys\callbacks.c" />
|
||||
<ClCompile Include="..\..\src\sys\file.c" />
|
||||
<ClCompile Include="..\..\src\sys\fileinfo.c" />
|
||||
<ClCompile Include="..\..\src\sys\flush.c" />
|
||||
|
@ -71,9 +71,6 @@
|
||||
<ClCompile Include="..\..\src\sys\write.c">
|
||||
<Filter>Source</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\sys\fastio.c">
|
||||
<Filter>Source</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\sys\fsctl.c">
|
||||
<Filter>Source</Filter>
|
||||
</ClCompile>
|
||||
@ -92,6 +89,9 @@
|
||||
<ClCompile Include="..\..\src\sys\wq.c">
|
||||
<Filter>Source</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\src\sys\callbacks.c">
|
||||
<Filter>Source</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\src\sys\driver.h">
|
||||
|
@ -1,5 +1,6 @@
|
||||
/**
|
||||
* @file sys/fastio.c
|
||||
* @file sys/callbacks.c
|
||||
* Fast I/O and resource acquisition callbacks.
|
||||
*
|
||||
* @copyright 2015 Bill Zissimopoulos
|
||||
*/
|
||||
@ -13,6 +14,16 @@ FAST_IO_ACQUIRE_FOR_MOD_WRITE FspAcquireForModWrite;
|
||||
FAST_IO_RELEASE_FOR_MOD_WRITE FspReleaseForModWrite;
|
||||
FAST_IO_ACQUIRE_FOR_CCFLUSH FspAcquireForCcFlush;
|
||||
FAST_IO_RELEASE_FOR_CCFLUSH FspReleaseForCcFlush;
|
||||
BOOLEAN FspAcquireForLazyWrite(
|
||||
PVOID Context,
|
||||
BOOLEAN Wait);
|
||||
VOID FspReleaseFromLazyWrite(
|
||||
PVOID Context);
|
||||
BOOLEAN FspAcquireForReadAhead(
|
||||
PVOID Context,
|
||||
BOOLEAN Wait);
|
||||
VOID FspReleaseFromReadAhead(
|
||||
PVOID Context);
|
||||
|
||||
#ifdef ALLOC_PRAGMA
|
||||
#pragma alloc_text(PAGE, FspFastIoCheckIfPossible)
|
||||
@ -22,6 +33,10 @@ FAST_IO_RELEASE_FOR_CCFLUSH FspReleaseForCcFlush;
|
||||
#pragma alloc_text(PAGE, FspReleaseForModWrite)
|
||||
#pragma alloc_text(PAGE, FspAcquireForCcFlush)
|
||||
#pragma alloc_text(PAGE, FspReleaseForCcFlush)
|
||||
#pragma alloc_text(PAGE, FspAcquireForLazyWrite)
|
||||
#pragma alloc_text(PAGE, FspReleaseFromLazyWrite)
|
||||
#pragma alloc_text(PAGE, FspAcquireForReadAhead)
|
||||
#pragma alloc_text(PAGE, FspReleaseFromReadAhead)
|
||||
#endif
|
||||
|
||||
BOOLEAN FspFastIoCheckIfPossible(
|
||||
@ -38,7 +53,7 @@ BOOLEAN FspFastIoCheckIfPossible(
|
||||
|
||||
Result = FALSE;
|
||||
|
||||
FSP_LEAVE_BOOL("%s", "");
|
||||
FSP_LEAVE_BOOL("FileObject=%p", FileObject);
|
||||
}
|
||||
|
||||
VOID FspAcquireFileForNtCreateSection(
|
||||
@ -46,7 +61,7 @@ VOID FspAcquireFileForNtCreateSection(
|
||||
{
|
||||
FSP_ENTER_VOID(PAGED_CODE());
|
||||
|
||||
FSP_LEAVE_VOID("%s", "");
|
||||
FSP_LEAVE_VOID("FileObject=%p", FileObject);
|
||||
}
|
||||
|
||||
VOID FspReleaseFileForNtCreateSection(
|
||||
@ -54,7 +69,7 @@ VOID FspReleaseFileForNtCreateSection(
|
||||
{
|
||||
FSP_ENTER_VOID(PAGED_CODE());
|
||||
|
||||
FSP_LEAVE_VOID("%s", "");
|
||||
FSP_LEAVE_VOID("FileObject=%p", FileObject);
|
||||
}
|
||||
|
||||
NTSTATUS FspAcquireForModWrite(
|
||||
@ -67,7 +82,7 @@ NTSTATUS FspAcquireForModWrite(
|
||||
|
||||
Result = STATUS_NOT_IMPLEMENTED;
|
||||
|
||||
FSP_LEAVE("%s", "");
|
||||
FSP_LEAVE("FileObject=%p", FileObject);
|
||||
}
|
||||
|
||||
NTSTATUS FspReleaseForModWrite(
|
||||
@ -79,7 +94,7 @@ NTSTATUS FspReleaseForModWrite(
|
||||
|
||||
Result = STATUS_NOT_IMPLEMENTED;
|
||||
|
||||
FSP_LEAVE("%s", "");
|
||||
FSP_LEAVE("FileObject=%p", FileObject);
|
||||
}
|
||||
|
||||
NTSTATUS FspAcquireForCcFlush(
|
||||
@ -90,7 +105,7 @@ NTSTATUS FspAcquireForCcFlush(
|
||||
|
||||
Result = STATUS_NOT_IMPLEMENTED;
|
||||
|
||||
FSP_LEAVE("%s", "");
|
||||
FSP_LEAVE("FileObject=%p", FileObject);
|
||||
}
|
||||
|
||||
NTSTATUS FspReleaseForCcFlush(
|
||||
@ -101,5 +116,43 @@ NTSTATUS FspReleaseForCcFlush(
|
||||
|
||||
Result = STATUS_NOT_IMPLEMENTED;
|
||||
|
||||
FSP_LEAVE("%s", "");
|
||||
FSP_LEAVE("FileObject=%p", FileObject);
|
||||
}
|
||||
|
||||
BOOLEAN FspAcquireForLazyWrite(
|
||||
PVOID Context,
|
||||
BOOLEAN Wait)
|
||||
{
|
||||
FSP_ENTER_BOOL(PAGED_CODE());
|
||||
|
||||
Result = FALSE;
|
||||
|
||||
FSP_LEAVE_BOOL("Context=%p, Wait=%d", Context, Wait);
|
||||
}
|
||||
|
||||
VOID FspReleaseFromLazyWrite(
|
||||
PVOID Context)
|
||||
{
|
||||
FSP_ENTER_VOID(PAGED_CODE());
|
||||
|
||||
FSP_LEAVE_VOID("Context=%p", Context);
|
||||
}
|
||||
|
||||
BOOLEAN FspAcquireForReadAhead(
|
||||
PVOID Context,
|
||||
BOOLEAN Wait)
|
||||
{
|
||||
FSP_ENTER_BOOL(PAGED_CODE());
|
||||
|
||||
Result = FALSE;
|
||||
|
||||
FSP_LEAVE_BOOL("Context=%p, Wait=%d", Context, Wait);
|
||||
}
|
||||
|
||||
VOID FspReleaseFromReadAhead(
|
||||
PVOID Context)
|
||||
{
|
||||
FSP_ENTER_VOID(PAGED_CODE());
|
||||
|
||||
FSP_LEAVE_VOID("Context=%p", Context);
|
||||
}
|
@ -264,7 +264,7 @@ FSP_IOCMPL_DISPATCH FspFsvolSetVolumeInformationComplete;
|
||||
FSP_IOCMPL_DISPATCH FspFsvolShutdownComplete;
|
||||
FSP_IOCMPL_DISPATCH FspFsvolWriteComplete;
|
||||
|
||||
/* fast I/O and resource acquisition */
|
||||
/* fast I/O and resource acquisition callbacks */
|
||||
FAST_IO_CHECK_IF_POSSIBLE FspFastIoCheckIfPossible;
|
||||
FAST_IO_ACQUIRE_FILE FspAcquireFileForNtCreateSection;
|
||||
FAST_IO_RELEASE_FILE FspReleaseFileForNtCreateSection;
|
||||
@ -272,6 +272,16 @@ FAST_IO_ACQUIRE_FOR_MOD_WRITE FspAcquireForModWrite;
|
||||
FAST_IO_RELEASE_FOR_MOD_WRITE FspReleaseForModWrite;
|
||||
FAST_IO_ACQUIRE_FOR_CCFLUSH FspAcquireForCcFlush;
|
||||
FAST_IO_RELEASE_FOR_CCFLUSH FspReleaseForCcFlush;
|
||||
BOOLEAN FspAcquireForLazyWrite(
|
||||
PVOID Context,
|
||||
BOOLEAN Wait);
|
||||
VOID FspReleaseFromLazyWrite(
|
||||
PVOID Context);
|
||||
BOOLEAN FspAcquireForReadAhead(
|
||||
PVOID Context,
|
||||
BOOLEAN Wait);
|
||||
VOID FspReleaseFromReadAhead(
|
||||
PVOID Context);
|
||||
|
||||
/* memory allocation */
|
||||
#define FspAlloc(Size) ExAllocatePoolWithTag(PagedPool, Size, FSP_ALLOC_INTERNAL_TAG)
|
||||
|
@ -84,7 +84,7 @@ NTSTATUS FspFileNodeCreate(PDEVICE_OBJECT DeviceObject,
|
||||
RtlZeroMemory(FileNode, sizeof *FileNode + ExtraSize);
|
||||
FileNode->Header.NodeTypeCode = FspFileNodeFileKind;
|
||||
FileNode->Header.NodeByteSize = sizeof *FileNode;
|
||||
FileNode->Header.IsFastIoPossible = FastIoIsQuestionable;
|
||||
FileNode->Header.IsFastIoPossible = FastIoIsNotPossible;
|
||||
FileNode->Header.Resource = &NonPaged->Resource;
|
||||
FileNode->Header.PagingIoResource = &NonPaged->PagingIoResource;
|
||||
FileNode->Header.ValidDataLength.QuadPart = MAXLONGLONG;
|
||||
|
Loading…
x
Reference in New Issue
Block a user