mirror of
				https://github.com/winfsp/winfsp.git
				synced 2025-10-29 11:08:37 -05:00 
			
		
		
		
	sys: WIP
This commit is contained in:
		| @@ -113,8 +113,8 @@ exit: | ||||
| } | ||||
|  | ||||
| FSP_API NTSTATUS FspFsctlTransact(HANDLE VolumeHandle, | ||||
|     FSP_TRANSACT_RSP *ResponseBuf, SIZE_T ResponseBufSize, | ||||
|     FSP_TRANSACT_REQ *RequestBuf, SIZE_T *PRequestBufSize) | ||||
|     FSP_FSCTL_TRANSACT_RSP *ResponseBuf, SIZE_T ResponseBufSize, | ||||
|     FSP_FSCTL_TRANSACT_REQ *RequestBuf, SIZE_T *PRequestBufSize) | ||||
| { | ||||
|     NTSTATUS Result = STATUS_SUCCESS; | ||||
|     DWORD Bytes; | ||||
|   | ||||
| @@ -220,6 +220,10 @@ FSP_FSVOL_DEVICE_EXTENSION *FspFsvolDeviceExtension(PDEVICE_OBJECT DeviceObject) | ||||
|     return DeviceObject->DeviceExtension; | ||||
| } | ||||
|  | ||||
| /* I/O completion */ | ||||
| VOID FspCompleteRequest(PIRP Irp, NTSTATUS Result); | ||||
| VOID FspDispatchProcessedIrp(PIRP Irp, FSP_FSCTL_TRANSACT_RSP *Response); | ||||
|  | ||||
| /* misc */ | ||||
| VOID FspCompleteRequest(PIRP Irp, NTSTATUS Result); | ||||
| NTSTATUS FspCreateGuid(GUID *Guid); | ||||
|   | ||||
| @@ -113,7 +113,7 @@ static NTSTATUS FspFsvrtTransact( | ||||
|     ULONG InputBufferLength = IrpSp->Parameters.FileSystemControl.InputBufferLength; | ||||
|     ULONG OutputBufferLength = IrpSp->Parameters.FileSystemControl.OutputBufferLength; | ||||
|     PVOID SystemBuffer = Irp->AssociatedIrp.SystemBuffer; | ||||
|     if (sizeof(FSP_TRANSACT_RSP) > InputBufferLength || 0 == SystemBuffer) | ||||
|     if (sizeof(FSP_FSCTL_TRANSACT_RSP) > InputBufferLength || 0 == SystemBuffer) | ||||
|         return STATUS_INVALID_PARAMETER; | ||||
|     if (FSP_FSCTL_TRANSACT_BUFFER_SIZE > OutputBufferLength) | ||||
|         return STATUS_BUFFER_TOO_SMALL; | ||||
| @@ -121,8 +121,8 @@ static NTSTATUS FspFsvrtTransact( | ||||
|     NTSTATUS Result; | ||||
|     FSP_FSVRT_DEVICE_EXTENSION *FsvrtDeviceExtension = FspFsvrtDeviceExtension(DeviceObject); | ||||
|     PUINT8 SystemBufferEnd; | ||||
|     const FSP_TRANSACT_RSP *Response, *NextResponse; | ||||
|     FSP_TRANSACT_REQ *Request, *NextRequest, *PendingIrpRequest; | ||||
|     const FSP_FSCTL_TRANSACT_RSP *Response, *NextResponse; | ||||
|     FSP_FSCTL_TRANSACT_REQ *Request, *NextRequest, *PendingIrpRequest; | ||||
|     PIRP ProcessIrp, PendingIrp; | ||||
|  | ||||
|     /* access check */ | ||||
|   | ||||
							
								
								
									
										29
									
								
								src/sys/iocompl.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								src/sys/iocompl.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | ||||
| /** | ||||
|  * @file sys/iocompl.c | ||||
|  * | ||||
|  * @copyright 2015 Bill Zissimopoulos | ||||
|  */ | ||||
|  | ||||
| #include <sys/driver.h> | ||||
|  | ||||
| #ifdef ALLOC_PRAGMA | ||||
| #endif | ||||
|  | ||||
| VOID FspCompleteRequest(PIRP Irp, NTSTATUS Result) | ||||
| { | ||||
|     // !PAGED_CODE(); | ||||
|  | ||||
|     ASSERT(STATUS_PENDING != Result); | ||||
|  | ||||
|     if (0 != Irp->Tail.Overlay.DriverContext[0]) | ||||
|         ExFreePoolWithTag(Irp->Tail.Overlay.DriverContext[0], FSP_TAG); | ||||
|  | ||||
|     if (!NT_SUCCESS(Result)) | ||||
|         Irp->IoStatus.Information = 0; | ||||
|     Irp->IoStatus.Status = Result; | ||||
|     IoCompleteRequest(Irp, FSP_IO_INCREMENT); | ||||
| } | ||||
|  | ||||
| VOID FspDispatchProcessedIrp(PIRP Irp, FSP_FSCTL_TRANSACT_RSP *Response) | ||||
| { | ||||
| } | ||||
| @@ -15,18 +15,6 @@ NTSTATUS FspSecuritySubjectContextAccessCheck( | ||||
| #pragma alloc_text(PAGE, FspSecuritySubjectContextAccessCheck) | ||||
| #endif | ||||
|  | ||||
| VOID FspCompleteRequest(PIRP Irp, NTSTATUS Result) | ||||
| { | ||||
|     // !PAGED_CODE(); | ||||
|  | ||||
|     ASSERT(STATUS_PENDING != Result); | ||||
|  | ||||
|     if (!NT_SUCCESS(Result)) | ||||
|         Irp->IoStatus.Information = 0; | ||||
|     Irp->IoStatus.Status = Result; | ||||
|     IoCompleteRequest(Irp, FSP_IO_INCREMENT); | ||||
| } | ||||
|  | ||||
| NTSTATUS FspCreateGuid(GUID *Guid) | ||||
| { | ||||
|     PAGED_CODE(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user