mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-23 17:03:12 -05:00
dll: cleanup, close
This commit is contained in:
parent
cfb69319f7
commit
dc9f95e8a6
@ -25,6 +25,8 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClCompile Include="..\..\src\dll\access.c" />
|
<ClCompile Include="..\..\src\dll\access.c" />
|
||||||
|
<ClCompile Include="..\..\src\dll\cleanup.c" />
|
||||||
|
<ClCompile Include="..\..\src\dll\close.c" />
|
||||||
<ClCompile Include="..\..\src\dll\create.c" />
|
<ClCompile Include="..\..\src\dll\create.c" />
|
||||||
<ClCompile Include="..\..\src\dll\debug.c" />
|
<ClCompile Include="..\..\src\dll\debug.c" />
|
||||||
<ClCompile Include="..\..\src\dll\fsctl.c" />
|
<ClCompile Include="..\..\src\dll\fsctl.c" />
|
||||||
|
@ -49,6 +49,12 @@
|
|||||||
<ClCompile Include="..\..\src\dll\path.c">
|
<ClCompile Include="..\..\src\dll\path.c">
|
||||||
<Filter>Source</Filter>
|
<Filter>Source</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\dll\close.c">
|
||||||
|
<Filter>Source</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="..\..\src\dll\cleanup.c">
|
||||||
|
<Filter>Source</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="..\..\src\dll\ntstatus.i">
|
<None Include="..\..\src\dll\ntstatus.i">
|
||||||
|
@ -64,6 +64,8 @@ typedef struct _FSP_FILE_SYSTEM_INTERFACE
|
|||||||
FSP_FSCTL_TRANSACT_REQ *Request, BOOLEAN Supersede, FSP_FILE_NODE **PFileNode);
|
FSP_FSCTL_TRANSACT_REQ *Request, BOOLEAN Supersede, FSP_FILE_NODE **PFileNode);
|
||||||
NTSTATUS (*FileOpenParentDirectory)(FSP_FILE_SYSTEM *FileSystem,
|
NTSTATUS (*FileOpenParentDirectory)(FSP_FILE_SYSTEM *FileSystem,
|
||||||
FSP_FSCTL_TRANSACT_REQ *Request, FSP_FILE_NODE **PFileNode, PBOOLEAN PFileExists);
|
FSP_FSCTL_TRANSACT_REQ *Request, FSP_FILE_NODE **PFileNode, PBOOLEAN PFileExists);
|
||||||
|
NTSTATUS (*FileCleanup)(FSP_FILE_SYSTEM *FileSystem,
|
||||||
|
FSP_FSCTL_TRANSACT_REQ *Request, FSP_FILE_NODE *FileNode);
|
||||||
NTSTATUS (*FileClose)(FSP_FILE_SYSTEM *FileSystem,
|
NTSTATUS (*FileClose)(FSP_FILE_SYSTEM *FileSystem,
|
||||||
FSP_FSCTL_TRANSACT_REQ *Request, FSP_FILE_NODE *FileNode);
|
FSP_FSCTL_TRANSACT_REQ *Request, FSP_FILE_NODE *FileNode);
|
||||||
} FSP_FILE_SYSTEM_INTERFACE;
|
} FSP_FILE_SYSTEM_INTERFACE;
|
||||||
@ -151,9 +153,17 @@ FSP_API NTSTATUS FspFileSystemSendResponseWithStatus(FSP_FILE_SYSTEM *FileSystem
|
|||||||
*/
|
*/
|
||||||
FSP_API NTSTATUS FspFileSystemOpCreate(FSP_FILE_SYSTEM *FileSystem,
|
FSP_API NTSTATUS FspFileSystemOpCreate(FSP_FILE_SYSTEM *FileSystem,
|
||||||
FSP_FSCTL_TRANSACT_REQ *Request);
|
FSP_FSCTL_TRANSACT_REQ *Request);
|
||||||
|
FSP_API NTSTATUS FspFileSystemOpCleanup(FSP_FILE_SYSTEM *FileSystem,
|
||||||
|
FSP_FSCTL_TRANSACT_REQ *Request);
|
||||||
|
FSP_API NTSTATUS FspFileSystemOpClose(FSP_FILE_SYSTEM *FileSystem,
|
||||||
|
FSP_FSCTL_TRANSACT_REQ *Request);
|
||||||
FSP_API NTSTATUS FspFileSystemSendCreateResponse(FSP_FILE_SYSTEM *FileSystem,
|
FSP_API NTSTATUS FspFileSystemSendCreateResponse(FSP_FILE_SYSTEM *FileSystem,
|
||||||
FSP_FSCTL_TRANSACT_REQ *Request, UINT_PTR Information,
|
FSP_FSCTL_TRANSACT_REQ *Request, UINT_PTR Information,
|
||||||
FSP_FILE_NODE *FileNode, DWORD GrantedAccess);
|
FSP_FILE_NODE *FileNode, DWORD GrantedAccess);
|
||||||
|
FSP_API NTSTATUS FspFileSystemSendCloseResponse(FSP_FILE_SYSTEM *FileSystem,
|
||||||
|
FSP_FSCTL_TRANSACT_REQ *Request);
|
||||||
|
FSP_API NTSTATUS FspFileSystemSendCleanupResponse(FSP_FILE_SYSTEM *FileSystem,
|
||||||
|
FSP_FSCTL_TRANSACT_REQ *Request);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Access Checks
|
* Access Checks
|
||||||
|
34
src/dll/cleanup.c
Normal file
34
src/dll/cleanup.c
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
/**
|
||||||
|
* @file dll/cleanup.c
|
||||||
|
*
|
||||||
|
* @copyright 2015 Bill Zissimopoulos
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <dll/library.h>
|
||||||
|
|
||||||
|
FSP_API NTSTATUS FspFileSystemOpCleanup(FSP_FILE_SYSTEM *FileSystem,
|
||||||
|
FSP_FSCTL_TRANSACT_REQ *Request)
|
||||||
|
{
|
||||||
|
if (0 == FileSystem->Interface->FileCleanup)
|
||||||
|
return FspFileSystemSendResponseWithStatus(FileSystem, Request, STATUS_INVALID_DEVICE_REQUEST);
|
||||||
|
|
||||||
|
FSP_FILE_NODE *FileNode = (PVOID)Request->Req.Close.UserContext;
|
||||||
|
|
||||||
|
FileSystem->Interface->FileCleanup(FileSystem, Request, FileNode);
|
||||||
|
|
||||||
|
return FspFileSystemSendCleanupResponse(FileSystem, Request);
|
||||||
|
}
|
||||||
|
|
||||||
|
FSP_API NTSTATUS FspFileSystemSendCleanupResponse(FSP_FILE_SYSTEM *FileSystem,
|
||||||
|
FSP_FSCTL_TRANSACT_REQ *Request)
|
||||||
|
{
|
||||||
|
FSP_FSCTL_TRANSACT_RSP Response;
|
||||||
|
|
||||||
|
memset(&Response, 0, sizeof Response);
|
||||||
|
Response.Size = sizeof Response;
|
||||||
|
Response.Kind = Request->Kind;
|
||||||
|
Response.Hint = Request->Hint;
|
||||||
|
Response.IoStatus.Status = STATUS_SUCCESS;
|
||||||
|
Response.IoStatus.Information = 0;
|
||||||
|
return FspFileSystemSendResponse(FileSystem, &Response);
|
||||||
|
}
|
34
src/dll/close.c
Normal file
34
src/dll/close.c
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
/**
|
||||||
|
* @file dll/close.c
|
||||||
|
*
|
||||||
|
* @copyright 2015 Bill Zissimopoulos
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <dll/library.h>
|
||||||
|
|
||||||
|
FSP_API NTSTATUS FspFileSystemOpClose(FSP_FILE_SYSTEM *FileSystem,
|
||||||
|
FSP_FSCTL_TRANSACT_REQ *Request)
|
||||||
|
{
|
||||||
|
if (0 == FileSystem->Interface->FileClose)
|
||||||
|
return FspFileSystemSendResponseWithStatus(FileSystem, Request, STATUS_INVALID_DEVICE_REQUEST);
|
||||||
|
|
||||||
|
FSP_FILE_NODE *FileNode = (PVOID)Request->Req.Close.UserContext;
|
||||||
|
|
||||||
|
FileSystem->Interface->FileClose(FileSystem, Request, FileNode);
|
||||||
|
|
||||||
|
return FspFileSystemSendCloseResponse(FileSystem, Request);
|
||||||
|
}
|
||||||
|
|
||||||
|
FSP_API NTSTATUS FspFileSystemSendCloseResponse(FSP_FILE_SYSTEM *FileSystem,
|
||||||
|
FSP_FSCTL_TRANSACT_REQ *Request)
|
||||||
|
{
|
||||||
|
FSP_FSCTL_TRANSACT_RSP Response;
|
||||||
|
|
||||||
|
memset(&Response, 0, sizeof Response);
|
||||||
|
Response.Size = sizeof Response;
|
||||||
|
Response.Kind = Request->Kind;
|
||||||
|
Response.Hint = Request->Hint;
|
||||||
|
Response.IoStatus.Status = STATUS_SUCCESS;
|
||||||
|
Response.IoStatus.Information = 0;
|
||||||
|
return FspFileSystemSendResponse(FileSystem, &Response);
|
||||||
|
}
|
@ -43,6 +43,8 @@ FSP_API NTSTATUS FspFileSystemCreate(PWSTR DevicePath,
|
|||||||
|
|
||||||
FileSystem->Dispatcher = FspFileSystemDirectDispatcher;
|
FileSystem->Dispatcher = FspFileSystemDirectDispatcher;
|
||||||
FileSystem->Operations[FspFsctlTransactCreateKind] = FspFileSystemOpCreate;
|
FileSystem->Operations[FspFsctlTransactCreateKind] = FspFileSystemOpCreate;
|
||||||
|
FileSystem->Operations[FspFsctlTransactCleanupKind] = FspFileSystemOpCleanup;
|
||||||
|
FileSystem->Operations[FspFsctlTransactCloseKind] = FspFileSystemOpClose;
|
||||||
// !!!: ...
|
// !!!: ...
|
||||||
FileSystem->Interface = Interface;
|
FileSystem->Interface = Interface;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user