mirror of
https://github.com/winfsp/winfsp.git
synced 2025-06-12 23:12:09 -05:00
dll: WIP
This commit is contained in:
parent
4429955506
commit
5e09c1e045
@ -68,6 +68,13 @@ VOID FspFileSystemSetDispatcher(FSP_FILE_SYSTEM *FileSystem,
|
|||||||
FileSystem->EnterOperation = EnterOperation;
|
FileSystem->EnterOperation = EnterOperation;
|
||||||
FileSystem->LeaveOperation = LeaveOperation;
|
FileSystem->LeaveOperation = LeaveOperation;
|
||||||
}
|
}
|
||||||
|
static inline
|
||||||
|
VOID FspFileSystemSetOperation(FSP_FILE_SYSTEM *FileSystem,
|
||||||
|
ULONG Index,
|
||||||
|
FSP_FILE_SYSTEM_OPERATION *Operation)
|
||||||
|
{
|
||||||
|
FileSystem->Operations[Index] = Operation;
|
||||||
|
}
|
||||||
|
|
||||||
static inline
|
static inline
|
||||||
VOID FspFileSystemGetDispatcherResult(FSP_FILE_SYSTEM *FileSystem,
|
VOID FspFileSystemGetDispatcherResult(FSP_FILE_SYSTEM *FileSystem,
|
||||||
@ -101,9 +108,9 @@ VOID FspFileSystemLeaveOperation(FSP_FILE_SYSTEM *FileSystem,
|
|||||||
FileSystem->LeaveOperation(FileSystem, Request);
|
FileSystem->LeaveOperation(FileSystem, Request);
|
||||||
}
|
}
|
||||||
|
|
||||||
FSP_API NTSTATUS FspSendResponse(FSP_FILE_SYSTEM *FileSystem,
|
FSP_API NTSTATUS FspFileSystemSendResponse(FSP_FILE_SYSTEM *FileSystem,
|
||||||
FSP_FSCTL_TRANSACT_RSP *Response);
|
FSP_FSCTL_TRANSACT_RSP *Response);
|
||||||
FSP_API NTSTATUS FspSendResponseWithStatus(FSP_FILE_SYSTEM *FileSystem,
|
FSP_API NTSTATUS FspFileSystemSendResponseWithStatus(FSP_FILE_SYSTEM *FileSystem,
|
||||||
FSP_FSCTL_TRANSACT_REQ *Request, NTSTATUS Result);
|
FSP_FSCTL_TRANSACT_REQ *Request, NTSTATUS Result);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -103,7 +103,8 @@ FSP_API VOID FspFileSystemDirectDispatcher(FSP_FILE_SYSTEM *FileSystem,
|
|||||||
NTSTATUS DispatcherResult;
|
NTSTATUS DispatcherResult;
|
||||||
|
|
||||||
if (FspFsctlTransactKindCount <= Request->Kind || 0 == FileSystem->Operations[Request->Kind])
|
if (FspFsctlTransactKindCount <= Request->Kind || 0 == FileSystem->Operations[Request->Kind])
|
||||||
DispatcherResult = FspSendResponseWithStatus(FileSystem, Request, STATUS_INVALID_DEVICE_REQUEST);
|
DispatcherResult = FspFileSystemSendResponseWithStatus(FileSystem,
|
||||||
|
Request, STATUS_INVALID_DEVICE_REQUEST);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FspFileSystemEnterOperation(FileSystem, Request);
|
FspFileSystemEnterOperation(FileSystem, Request);
|
||||||
@ -137,7 +138,8 @@ FSP_API VOID FspFileSystemPoolDispatcher(FSP_FILE_SYSTEM *FileSystem,
|
|||||||
NTSTATUS DispatcherResult;
|
NTSTATUS DispatcherResult;
|
||||||
|
|
||||||
if (FspFsctlTransactKindCount <= Request->Kind || 0 == FileSystem->Operations[Request->Kind])
|
if (FspFsctlTransactKindCount <= Request->Kind || 0 == FileSystem->Operations[Request->Kind])
|
||||||
DispatcherResult = FspSendResponseWithStatus(FileSystem, Request, STATUS_INVALID_DEVICE_REQUEST);
|
DispatcherResult = FspFileSystemSendResponseWithStatus(FileSystem,
|
||||||
|
Request, STATUS_INVALID_DEVICE_REQUEST);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FSP_DISPATCHER_WORK_ITEM *WorkItem = MemAlloc(sizeof *WorkItem + Request->Size);
|
FSP_DISPATCHER_WORK_ITEM *WorkItem = MemAlloc(sizeof *WorkItem + Request->Size);
|
||||||
@ -161,13 +163,13 @@ FSP_API VOID FspFileSystemPoolDispatcher(FSP_FILE_SYSTEM *FileSystem,
|
|||||||
FspFileSystemSetDispatcherResult(FileSystem, DispatcherResult);
|
FspFileSystemSetDispatcherResult(FileSystem, DispatcherResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
FSP_API NTSTATUS FspSendResponse(FSP_FILE_SYSTEM *FileSystem,
|
FSP_API NTSTATUS FspFileSystemSendResponse(FSP_FILE_SYSTEM *FileSystem,
|
||||||
FSP_FSCTL_TRANSACT_RSP *Response)
|
FSP_FSCTL_TRANSACT_RSP *Response)
|
||||||
{
|
{
|
||||||
return FspFsctlTransact(FileSystem->VolumeHandle, Response, Response->Size, 0, 0);
|
return FspFsctlTransact(FileSystem->VolumeHandle, Response, Response->Size, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
FSP_API NTSTATUS FspSendResponseWithStatus(FSP_FILE_SYSTEM *FileSystem,
|
FSP_API NTSTATUS FspFileSystemSendResponseWithStatus(FSP_FILE_SYSTEM *FileSystem,
|
||||||
FSP_FSCTL_TRANSACT_REQ *Request, NTSTATUS Result)
|
FSP_FSCTL_TRANSACT_REQ *Request, NTSTATUS Result)
|
||||||
{
|
{
|
||||||
FSP_FSCTL_TRANSACT_RSP Response;
|
FSP_FSCTL_TRANSACT_RSP Response;
|
||||||
@ -176,5 +178,5 @@ FSP_API NTSTATUS FspSendResponseWithStatus(FSP_FILE_SYSTEM *FileSystem,
|
|||||||
Response.Kind = Request->Kind;
|
Response.Kind = Request->Kind;
|
||||||
Response.Hint = Request->Hint;
|
Response.Hint = Request->Hint;
|
||||||
Response.IoStatus.Status = Result;
|
Response.IoStatus.Status = Result;
|
||||||
return FspSendResponse(FileSystem, &Response);
|
return FspFileSystemSendResponse(FileSystem, &Response);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user