mirror of
				https://github.com/winfsp/winfsp.git
				synced 2025-10-29 19:18:39 -05:00 
			
		
		
		
	dll: WIP
This commit is contained in:
		| @@ -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); | ||||||
| } | } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user