From 5e09c1e0451f5f020397e02d4dc5dee5d9248943 Mon Sep 17 00:00:00 2001 From: Bill Zissimopoulos Date: Sun, 3 Jan 2016 14:56:06 -0800 Subject: [PATCH] dll: WIP --- inc/winfsp/winfsp.h | 11 +++++++++-- src/dll/loop.c | 12 +++++++----- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/inc/winfsp/winfsp.h b/inc/winfsp/winfsp.h index 49bcddad..7f7a4249 100644 --- a/inc/winfsp/winfsp.h +++ b/inc/winfsp/winfsp.h @@ -68,6 +68,13 @@ VOID FspFileSystemSetDispatcher(FSP_FILE_SYSTEM *FileSystem, FileSystem->EnterOperation = EnterOperation; FileSystem->LeaveOperation = LeaveOperation; } +static inline +VOID FspFileSystemSetOperation(FSP_FILE_SYSTEM *FileSystem, + ULONG Index, + FSP_FILE_SYSTEM_OPERATION *Operation) +{ + FileSystem->Operations[Index] = Operation; +} static inline VOID FspFileSystemGetDispatcherResult(FSP_FILE_SYSTEM *FileSystem, @@ -101,9 +108,9 @@ VOID FspFileSystemLeaveOperation(FSP_FILE_SYSTEM *FileSystem, 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_API NTSTATUS FspSendResponseWithStatus(FSP_FILE_SYSTEM *FileSystem, +FSP_API NTSTATUS FspFileSystemSendResponseWithStatus(FSP_FILE_SYSTEM *FileSystem, FSP_FSCTL_TRANSACT_REQ *Request, NTSTATUS Result); /* diff --git a/src/dll/loop.c b/src/dll/loop.c index 93e3f57d..5150f636 100644 --- a/src/dll/loop.c +++ b/src/dll/loop.c @@ -103,7 +103,8 @@ FSP_API VOID FspFileSystemDirectDispatcher(FSP_FILE_SYSTEM *FileSystem, NTSTATUS DispatcherResult; 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 { FspFileSystemEnterOperation(FileSystem, Request); @@ -137,7 +138,8 @@ FSP_API VOID FspFileSystemPoolDispatcher(FSP_FILE_SYSTEM *FileSystem, NTSTATUS DispatcherResult; 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 { 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); } -FSP_API NTSTATUS FspSendResponse(FSP_FILE_SYSTEM *FileSystem, +FSP_API NTSTATUS FspFileSystemSendResponse(FSP_FILE_SYSTEM *FileSystem, FSP_FSCTL_TRANSACT_RSP *Response) { 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_RSP Response; @@ -176,5 +178,5 @@ FSP_API NTSTATUS FspSendResponseWithStatus(FSP_FILE_SYSTEM *FileSystem, Response.Kind = Request->Kind; Response.Hint = Request->Hint; Response.IoStatus.Status = Result; - return FspSendResponse(FileSystem, &Response); + return FspFileSystemSendResponse(FileSystem, &Response); }