mirror of
				https://github.com/winfsp/winfsp.git
				synced 2025-10-30 19:48:38 -05:00 
			
		
		
		
	dll: cleanup, close
This commit is contained in:
		
							
								
								
									
										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->Operations[FspFsctlTransactCreateKind] = FspFileSystemOpCreate; | ||||
|     FileSystem->Operations[FspFsctlTransactCleanupKind] = FspFileSystemOpCleanup; | ||||
|     FileSystem->Operations[FspFsctlTransactCloseKind] = FspFileSystemOpClose; | ||||
|     // !!!: ... | ||||
|     FileSystem->Interface = Interface; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user