mirror of
				https://github.com/winfsp/winfsp.git
				synced 2025-10-29 19:18:39 -05:00 
			
		
		
		
	sys: WIP
This commit is contained in:
		| @@ -6,12 +6,49 @@ | ||||
|  | ||||
| #include <sys/driver.h> | ||||
|  | ||||
| static DRIVER_DISPATCH FspFsctlCleanup; | ||||
| static DRIVER_DISPATCH FspFsvrtCleanup; | ||||
| static DRIVER_DISPATCH FspFsvolCleanup; | ||||
| DRIVER_DISPATCH FspCleanup; | ||||
|  | ||||
| #ifdef ALLOC_PRAGMA | ||||
| #pragma alloc_text(PAGE, FspFsctlCleanup) | ||||
| #pragma alloc_text(PAGE, FspFsvrtCleanup) | ||||
| #pragma alloc_text(PAGE, FspFsvolCleanup) | ||||
| #pragma alloc_text(PAGE, FspCleanup) | ||||
| #endif | ||||
|  | ||||
| static | ||||
| NTSTATUS | ||||
| FspFsctlCleanup( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
|     _In_ PIRP Irp) | ||||
| { | ||||
|     NTSTATUS Result = STATUS_SUCCESS; | ||||
|     Irp->IoStatus.Information = 0; | ||||
|     return Result; | ||||
| } | ||||
|  | ||||
| static | ||||
| NTSTATUS | ||||
| FspFsvrtCleanup( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
|     _In_ PIRP Irp) | ||||
| { | ||||
|     NTSTATUS Result = STATUS_SUCCESS; | ||||
|     Irp->IoStatus.Information = 0; | ||||
|     return Result; | ||||
| } | ||||
|  | ||||
| static | ||||
| NTSTATUS | ||||
| FspFsvolCleanup( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
|     _In_ PIRP Irp) | ||||
| { | ||||
|     return STATUS_INVALID_DEVICE_REQUEST; | ||||
| } | ||||
|  | ||||
| NTSTATUS | ||||
| FspCleanup( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
| @@ -21,10 +58,17 @@ FspCleanup( | ||||
|  | ||||
|     ASSERT(IRP_MJ_CLEANUP == IrpSp->MajorFunction); | ||||
|  | ||||
|     if (FspFsctlDeviceExtensionKind == FspDeviceExtension(DeviceObject)->Kind) | ||||
|         FSP_RETURN(Irp->IoStatus.Information = 0); | ||||
|  | ||||
|     Result = STATUS_INVALID_DEVICE_REQUEST; | ||||
|     switch (FspDeviceExtension(DeviceObject)->Kind) | ||||
|     { | ||||
|     case FspFsvolDeviceExtensionKind: | ||||
|         FSP_RETURN(Result = FspFsvolCleanup(DeviceObject, Irp)); | ||||
|     case FspFsvrtDeviceExtensionKind: | ||||
|         FSP_RETURN(Result = FspFsvrtCleanup(DeviceObject, Irp)); | ||||
|     case FspFsctlDeviceExtensionKind: | ||||
|         FSP_RETURN(Result = FspFsctlCleanup(DeviceObject, Irp)); | ||||
|     default: | ||||
|         FSP_RETURN(Result = STATUS_INVALID_DEVICE_REQUEST); | ||||
|     } | ||||
|  | ||||
|     FSP_LEAVE_MJ("FileObject=%p", IrpSp->FileObject); | ||||
| } | ||||
|   | ||||
| @@ -6,12 +6,49 @@ | ||||
|  | ||||
| #include <sys/driver.h> | ||||
|  | ||||
| static DRIVER_DISPATCH FspFsctlClose; | ||||
| static DRIVER_DISPATCH FspFsvrtClose; | ||||
| static DRIVER_DISPATCH FspFsvolClose; | ||||
| DRIVER_DISPATCH FspClose; | ||||
|  | ||||
| #ifdef ALLOC_PRAGMA | ||||
| #pragma alloc_text(PAGE, FspFsctlClose) | ||||
| #pragma alloc_text(PAGE, FspFsvrtClose) | ||||
| #pragma alloc_text(PAGE, FspFsvolClose) | ||||
| #pragma alloc_text(PAGE, FspClose) | ||||
| #endif | ||||
|  | ||||
| static | ||||
| NTSTATUS | ||||
| FspFsctlClose( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
|     _In_ PIRP Irp) | ||||
| { | ||||
|     NTSTATUS Result = STATUS_SUCCESS; | ||||
|     Irp->IoStatus.Information = 0; | ||||
|     return Result; | ||||
| } | ||||
|  | ||||
| static | ||||
| NTSTATUS | ||||
| FspFsvrtClose( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
|     _In_ PIRP Irp) | ||||
| { | ||||
|     NTSTATUS Result = STATUS_SUCCESS; | ||||
|     Irp->IoStatus.Information = 0; | ||||
|     return Result; | ||||
| } | ||||
|  | ||||
| static | ||||
| NTSTATUS | ||||
| FspFsvolClose( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
|     _In_ PIRP Irp) | ||||
| { | ||||
|     return STATUS_INVALID_DEVICE_REQUEST; | ||||
| } | ||||
|  | ||||
| NTSTATUS | ||||
| FspClose( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
| @@ -21,10 +58,17 @@ FspClose( | ||||
|  | ||||
|     ASSERT(IRP_MJ_CLOSE == IrpSp->MajorFunction); | ||||
|  | ||||
|     if (FspFsctlDeviceExtensionKind == FspDeviceExtension(DeviceObject)->Kind) | ||||
|         FSP_RETURN(Irp->IoStatus.Information = 0); | ||||
|  | ||||
|     Result = STATUS_INVALID_DEVICE_REQUEST; | ||||
|     switch (FspDeviceExtension(DeviceObject)->Kind) | ||||
|     { | ||||
|     case FspFsvolDeviceExtensionKind: | ||||
|         FSP_RETURN(Result = FspFsvolClose(DeviceObject, Irp)); | ||||
|     case FspFsvrtDeviceExtensionKind: | ||||
|         FSP_RETURN(Result = FspFsvrtClose(DeviceObject, Irp)); | ||||
|     case FspFsctlDeviceExtensionKind: | ||||
|         FSP_RETURN(Result = FspFsctlClose(DeviceObject, Irp)); | ||||
|     default: | ||||
|         FSP_RETURN(Result = STATUS_INVALID_DEVICE_REQUEST); | ||||
|     } | ||||
|  | ||||
|     FSP_LEAVE_MJ("FileObject=%p", IrpSp->FileObject); | ||||
| } | ||||
|   | ||||
| @@ -6,12 +6,49 @@ | ||||
|  | ||||
| #include <sys/driver.h> | ||||
|  | ||||
| static DRIVER_DISPATCH FspFsctlCreate; | ||||
| static DRIVER_DISPATCH FspFsvrtCreate; | ||||
| static DRIVER_DISPATCH FspFsvolCreate; | ||||
| DRIVER_DISPATCH FspCreate; | ||||
|  | ||||
| #ifdef ALLOC_PRAGMA | ||||
| #pragma alloc_text(PAGE, FspFsctlCreate) | ||||
| #pragma alloc_text(PAGE, FspFsvrtCreate) | ||||
| #pragma alloc_text(PAGE, FspFsvolCreate) | ||||
| #pragma alloc_text(PAGE, FspCreate) | ||||
| #endif | ||||
|  | ||||
| static | ||||
| NTSTATUS | ||||
| FspFsctlCreate( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
|     _In_ PIRP Irp) | ||||
| { | ||||
|     NTSTATUS Result = STATUS_SUCCESS; | ||||
|     Irp->IoStatus.Information = FILE_OPENED; | ||||
|     return Result; | ||||
| } | ||||
|  | ||||
| static | ||||
| NTSTATUS | ||||
| FspFsvrtCreate( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
|     _In_ PIRP Irp) | ||||
| { | ||||
|     NTSTATUS Result = STATUS_SUCCESS; | ||||
|     Irp->IoStatus.Information = FILE_OPENED; | ||||
|     return Result; | ||||
| } | ||||
|  | ||||
| static | ||||
| NTSTATUS | ||||
| FspFsvolCreate( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
|     _In_ PIRP Irp) | ||||
| { | ||||
|     return STATUS_INVALID_DEVICE_REQUEST; | ||||
| } | ||||
|  | ||||
| NTSTATUS | ||||
| FspCreate( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
| @@ -21,10 +58,17 @@ FspCreate( | ||||
|  | ||||
|     ASSERT(IRP_MJ_CREATE == IrpSp->MajorFunction); | ||||
|  | ||||
|     if (FspFsctlDeviceExtensionKind == FspDeviceExtension(DeviceObject)->Kind) | ||||
|         FSP_RETURN(Irp->IoStatus.Information = FILE_OPENED); | ||||
|  | ||||
|     Result = STATUS_INVALID_DEVICE_REQUEST; | ||||
|     switch (FspDeviceExtension(DeviceObject)->Kind) | ||||
|     { | ||||
|     case FspFsvolDeviceExtensionKind: | ||||
|         FSP_RETURN(Result = FspFsvolCreate(DeviceObject, Irp)); | ||||
|     case FspFsvrtDeviceExtensionKind: | ||||
|         FSP_RETURN(Result = FspFsvrtCreate(DeviceObject, Irp)); | ||||
|     case FspFsctlDeviceExtensionKind: | ||||
|         FSP_RETURN(Result = FspFsctlCreate(DeviceObject, Irp)); | ||||
|     default: | ||||
|         FSP_RETURN(Result = STATUS_INVALID_DEVICE_REQUEST); | ||||
|     } | ||||
|  | ||||
|     FSP_LEAVE_MJ( | ||||
|         "FileObject=%p[%p:\"%wZ\"], " | ||||
|   | ||||
| @@ -6,12 +6,23 @@ | ||||
|  | ||||
| #include <sys/driver.h> | ||||
|  | ||||
| static DRIVER_DISPATCH FspFsvolDeviceControl; | ||||
| DRIVER_DISPATCH FspDeviceControl; | ||||
|  | ||||
| #ifdef ALLOC_PRAGMA | ||||
| #pragma alloc_text(PAGE, FspFsvolDeviceControl) | ||||
| #pragma alloc_text(PAGE, FspDeviceControl) | ||||
| #endif | ||||
|  | ||||
| static | ||||
| NTSTATUS | ||||
| FspFsvolDeviceControl( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
|     _In_ PIRP Irp) | ||||
| { | ||||
|     return STATUS_INVALID_DEVICE_REQUEST; | ||||
| } | ||||
|  | ||||
| NTSTATUS | ||||
| FspDeviceControl( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
| @@ -21,7 +32,13 @@ FspDeviceControl( | ||||
|  | ||||
|     ASSERT(IRP_MJ_DEVICE_CONTROL == IrpSp->MajorFunction); | ||||
|  | ||||
|     Result = STATUS_INVALID_DEVICE_REQUEST; | ||||
|     switch (FspDeviceExtension(DeviceObject)->Kind) | ||||
|     { | ||||
|     case FspFsvolDeviceExtensionKind: | ||||
|         FSP_RETURN(Result = FspFsvolDeviceControl(DeviceObject, Irp)); | ||||
|     default: | ||||
|         FSP_RETURN(Result = STATUS_INVALID_DEVICE_REQUEST); | ||||
|     } | ||||
|  | ||||
|     FSP_LEAVE_MJ("", 0); | ||||
| } | ||||
|   | ||||
| @@ -6,12 +6,23 @@ | ||||
|  | ||||
| #include <sys/driver.h> | ||||
|  | ||||
| static DRIVER_DISPATCH FspFsvolDirectoryControl; | ||||
| DRIVER_DISPATCH FspDirectoryControl; | ||||
|  | ||||
| #ifdef ALLOC_PRAGMA | ||||
| #pragma alloc_text(PAGE, FspFsvolDirectoryControl) | ||||
| #pragma alloc_text(PAGE, FspDirectoryControl) | ||||
| #endif | ||||
|  | ||||
| static | ||||
| NTSTATUS | ||||
| FspFsvolDirectoryControl( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
|     _In_ PIRP Irp) | ||||
| { | ||||
|     return STATUS_INVALID_DEVICE_REQUEST; | ||||
| } | ||||
|  | ||||
| NTSTATUS | ||||
| FspDirectoryControl( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
| @@ -21,7 +32,13 @@ FspDirectoryControl( | ||||
|  | ||||
|     ASSERT(IRP_MJ_DIRECTORY_CONTROL == IrpSp->MajorFunction); | ||||
|  | ||||
|     Result = STATUS_INVALID_DEVICE_REQUEST; | ||||
|     switch (FspDeviceExtension(DeviceObject)->Kind) | ||||
|     { | ||||
|     case FspFsvolDeviceExtensionKind: | ||||
|         FSP_RETURN(Result = FspFsvolDirectoryControl(DeviceObject, Irp)); | ||||
|     default: | ||||
|         FSP_RETURN(Result = STATUS_INVALID_DEVICE_REQUEST); | ||||
|     } | ||||
|  | ||||
|     FSP_LEAVE_MJ("", 0); | ||||
| } | ||||
|   | ||||
							
								
								
									
										38
									
								
								src/sys/ea.c
									
									
									
									
									
								
							
							
						
						
									
										38
									
								
								src/sys/ea.c
									
									
									
									
									
								
							| @@ -6,14 +6,36 @@ | ||||
|  | ||||
| #include <sys/driver.h> | ||||
|  | ||||
| static DRIVER_DISPATCH FspFsvolQueryEa; | ||||
| static DRIVER_DISPATCH FspFsvolSetEa; | ||||
| DRIVER_DISPATCH FspQueryEa; | ||||
| DRIVER_DISPATCH FspSetEa; | ||||
|  | ||||
| #ifdef ALLOC_PRAGMA | ||||
| #pragma alloc_text(PAGE, FspFsvolQueryEa) | ||||
| #pragma alloc_text(PAGE, FspFsvolSetEa) | ||||
| #pragma alloc_text(PAGE, FspQueryEa) | ||||
| #pragma alloc_text(PAGE, FspSetEa) | ||||
| #endif | ||||
|  | ||||
| static | ||||
| NTSTATUS | ||||
| FspFsvolQueryEa( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
|     _In_ PIRP Irp) | ||||
| { | ||||
|     return STATUS_INVALID_DEVICE_REQUEST; | ||||
| } | ||||
|  | ||||
| static | ||||
| NTSTATUS | ||||
| FspFsvolSetEa( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
|     _In_ PIRP Irp) | ||||
| { | ||||
|     return STATUS_INVALID_DEVICE_REQUEST; | ||||
| } | ||||
|  | ||||
| NTSTATUS | ||||
| FspQueryEa( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
| @@ -23,7 +45,13 @@ FspQueryEa( | ||||
|  | ||||
|     ASSERT(IRP_MJ_QUERY_EA == IrpSp->MajorFunction); | ||||
|  | ||||
|     Result = STATUS_INVALID_DEVICE_REQUEST; | ||||
|     switch (FspDeviceExtension(DeviceObject)->Kind) | ||||
|     { | ||||
|     case FspFsvolDeviceExtensionKind: | ||||
|         FSP_RETURN(Result = FspFsvolQueryEa(DeviceObject, Irp)); | ||||
|     default: | ||||
|         FSP_RETURN(Result = STATUS_INVALID_DEVICE_REQUEST); | ||||
|     } | ||||
|  | ||||
|     FSP_LEAVE_MJ("", 0); | ||||
| } | ||||
| @@ -37,7 +65,13 @@ FspSetEa( | ||||
|  | ||||
|     ASSERT(IRP_MJ_SET_EA == IrpSp->MajorFunction); | ||||
|  | ||||
|     Result = STATUS_INVALID_DEVICE_REQUEST; | ||||
|     switch (FspDeviceExtension(DeviceObject)->Kind) | ||||
|     { | ||||
|     case FspFsvolDeviceExtensionKind: | ||||
|         FSP_RETURN(Result = FspFsvolSetEa(DeviceObject, Irp)); | ||||
|     default: | ||||
|         FSP_RETURN(Result = STATUS_INVALID_DEVICE_REQUEST); | ||||
|     } | ||||
|  | ||||
|     FSP_LEAVE_MJ("", 0); | ||||
| } | ||||
|   | ||||
| @@ -6,14 +6,36 @@ | ||||
|  | ||||
| #include <sys/driver.h> | ||||
|  | ||||
| static DRIVER_DISPATCH FspFsvolQueryInformation; | ||||
| static DRIVER_DISPATCH FspFsvolSetInformation; | ||||
| DRIVER_DISPATCH FspQueryInformation; | ||||
| DRIVER_DISPATCH FspSetInformation; | ||||
|  | ||||
| #ifdef ALLOC_PRAGMA | ||||
| #pragma alloc_text(PAGE, FspFsvolQueryInformation) | ||||
| #pragma alloc_text(PAGE, FspFsvolSetInformation) | ||||
| #pragma alloc_text(PAGE, FspQueryInformation) | ||||
| #pragma alloc_text(PAGE, FspSetInformation) | ||||
| #endif | ||||
|  | ||||
| static | ||||
| NTSTATUS | ||||
| FspFsvolQueryInformation( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
|     _In_ PIRP Irp) | ||||
| { | ||||
|     return STATUS_INVALID_DEVICE_REQUEST; | ||||
| } | ||||
|  | ||||
| static | ||||
| NTSTATUS | ||||
| FspFsvolSetInformation( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
|     _In_ PIRP Irp) | ||||
| { | ||||
|     return STATUS_INVALID_DEVICE_REQUEST; | ||||
| } | ||||
|  | ||||
| NTSTATUS | ||||
| FspQueryInformation( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
| @@ -23,7 +45,13 @@ FspQueryInformation( | ||||
|  | ||||
|     ASSERT(IRP_MJ_QUERY_INFORMATION == IrpSp->MajorFunction); | ||||
|  | ||||
|     Result = STATUS_INVALID_DEVICE_REQUEST; | ||||
|     switch (FspDeviceExtension(DeviceObject)->Kind) | ||||
|     { | ||||
|     case FspFsvolDeviceExtensionKind: | ||||
|         FSP_RETURN(Result = FspFsvolQueryInformation(DeviceObject, Irp)); | ||||
|     default: | ||||
|         FSP_RETURN(Result = STATUS_INVALID_DEVICE_REQUEST); | ||||
|     } | ||||
|  | ||||
|     FSP_LEAVE_MJ("", 0); | ||||
| } | ||||
| @@ -37,7 +65,13 @@ FspSetInformation( | ||||
|  | ||||
|     ASSERT(IRP_MJ_SET_INFORMATION == IrpSp->MajorFunction); | ||||
|  | ||||
|     Result = STATUS_INVALID_DEVICE_REQUEST; | ||||
|     switch (FspDeviceExtension(DeviceObject)->Kind) | ||||
|     { | ||||
|     case FspFsvolDeviceExtensionKind: | ||||
|         FSP_RETURN(Result = FspFsvolSetInformation(DeviceObject, Irp)); | ||||
|     default: | ||||
|         FSP_RETURN(Result = STATUS_INVALID_DEVICE_REQUEST); | ||||
|     } | ||||
|  | ||||
|     FSP_LEAVE_MJ("", 0); | ||||
| } | ||||
|   | ||||
| @@ -6,12 +6,23 @@ | ||||
|  | ||||
| #include <sys/driver.h> | ||||
|  | ||||
| static DRIVER_DISPATCH FspFsvolFlushBuffers; | ||||
| DRIVER_DISPATCH FspFlushBuffers; | ||||
|  | ||||
| #ifdef ALLOC_PRAGMA | ||||
| #pragma alloc_text(PAGE, FspFsvolFlushBuffers) | ||||
| #pragma alloc_text(PAGE, FspFlushBuffers) | ||||
| #endif | ||||
|  | ||||
| static | ||||
| NTSTATUS | ||||
| FspFsvolFlushBuffers( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
|     _In_ PIRP Irp) | ||||
| { | ||||
|     return STATUS_INVALID_DEVICE_REQUEST; | ||||
| } | ||||
|  | ||||
| NTSTATUS | ||||
| FspFlushBuffers( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
| @@ -21,7 +32,13 @@ FspFlushBuffers( | ||||
|  | ||||
|     ASSERT(IRP_MJ_FLUSH_BUFFERS == IrpSp->MajorFunction); | ||||
|  | ||||
|     Result = STATUS_INVALID_DEVICE_REQUEST; | ||||
|     switch (FspDeviceExtension(DeviceObject)->Kind) | ||||
|     { | ||||
|     case FspFsvolDeviceExtensionKind: | ||||
|         FSP_RETURN(Result = FspFsvolFlushBuffers(DeviceObject, Irp)); | ||||
|     default: | ||||
|         FSP_RETURN(Result = STATUS_INVALID_DEVICE_REQUEST); | ||||
|     } | ||||
|  | ||||
|     FSP_LEAVE_MJ("", 0); | ||||
| } | ||||
|   | ||||
| @@ -6,12 +6,45 @@ | ||||
|  | ||||
| #include <sys/driver.h> | ||||
|  | ||||
| static DRIVER_DISPATCH FspFsctlFileSystemControl; | ||||
| static DRIVER_DISPATCH FspFsvrtFileSystemControl; | ||||
| static DRIVER_DISPATCH FspFsvolFileSystemControl; | ||||
| DRIVER_DISPATCH FspFileSystemControl; | ||||
|  | ||||
| #ifdef ALLOC_PRAGMA | ||||
| #pragma alloc_text(PAGE, FspFsctlFileSystemControl) | ||||
| #pragma alloc_text(PAGE, FspFsvrtFileSystemControl) | ||||
| #pragma alloc_text(PAGE, FspFsvolFileSystemControl) | ||||
| #pragma alloc_text(PAGE, FspFileSystemControl) | ||||
| #endif | ||||
|  | ||||
| static | ||||
| NTSTATUS | ||||
| FspFsctlFileSystemControl( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
|     _In_ PIRP Irp) | ||||
| { | ||||
|     return STATUS_INVALID_DEVICE_REQUEST; | ||||
| } | ||||
|  | ||||
| static | ||||
| NTSTATUS | ||||
| FspFsvrtFileSystemControl( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
|     _In_ PIRP Irp) | ||||
| { | ||||
|     return STATUS_INVALID_DEVICE_REQUEST; | ||||
| } | ||||
|  | ||||
| static | ||||
| NTSTATUS | ||||
| FspFsvolFileSystemControl( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
|     _In_ PIRP Irp) | ||||
| { | ||||
|     return STATUS_INVALID_DEVICE_REQUEST; | ||||
| } | ||||
|  | ||||
| NTSTATUS | ||||
| FspFileSystemControl( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
| @@ -21,7 +54,17 @@ FspFileSystemControl( | ||||
|  | ||||
|     ASSERT(IRP_MJ_FILE_SYSTEM_CONTROL == IrpSp->MajorFunction); | ||||
|  | ||||
|     Result = STATUS_INVALID_DEVICE_REQUEST; | ||||
|     switch (FspDeviceExtension(DeviceObject)->Kind) | ||||
|     { | ||||
|     case FspFsvolDeviceExtensionKind: | ||||
|         FSP_RETURN(Result = FspFsctlFileSystemControl(DeviceObject, Irp)); | ||||
|     case FspFsvrtDeviceExtensionKind: | ||||
|         FSP_RETURN(Result = FspFsvrtFileSystemControl(DeviceObject, Irp)); | ||||
|     case FspFsctlDeviceExtensionKind: | ||||
|         FSP_RETURN(Result = FspFsvolFileSystemControl(DeviceObject, Irp)); | ||||
|     default: | ||||
|         FSP_RETURN(Result = STATUS_INVALID_DEVICE_REQUEST); | ||||
|     } | ||||
|  | ||||
|     FSP_LEAVE_MJ("", 0); | ||||
| } | ||||
|   | ||||
| @@ -6,12 +6,23 @@ | ||||
|  | ||||
| #include <sys/driver.h> | ||||
|  | ||||
| static DRIVER_DISPATCH FspFsvolLockControl; | ||||
| DRIVER_DISPATCH FspLockControl; | ||||
|  | ||||
| #ifdef ALLOC_PRAGMA | ||||
| #pragma alloc_text(PAGE, FspFsvolLockControl) | ||||
| #pragma alloc_text(PAGE, FspLockControl) | ||||
| #endif | ||||
|  | ||||
| static | ||||
| NTSTATUS | ||||
| FspFsvolLockControl( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
|     _In_ PIRP Irp) | ||||
| { | ||||
|     return STATUS_INVALID_DEVICE_REQUEST; | ||||
| } | ||||
|  | ||||
| NTSTATUS | ||||
| FspLockControl( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
| @@ -21,7 +32,13 @@ FspLockControl( | ||||
|  | ||||
|     ASSERT(IRP_MJ_LOCK_CONTROL == IrpSp->MajorFunction); | ||||
|  | ||||
|     Result = STATUS_INVALID_DEVICE_REQUEST; | ||||
|     switch (FspDeviceExtension(DeviceObject)->Kind) | ||||
|     { | ||||
|     case FspFsvolDeviceExtensionKind: | ||||
|         FSP_RETURN(Result = FspFsvolLockControl(DeviceObject, Irp)); | ||||
|     default: | ||||
|         FSP_RETURN(Result = STATUS_INVALID_DEVICE_REQUEST); | ||||
|     } | ||||
|  | ||||
|     FSP_LEAVE_MJ("", 0); | ||||
| } | ||||
|   | ||||
| @@ -6,12 +6,23 @@ | ||||
|  | ||||
| #include <sys/driver.h> | ||||
|  | ||||
| static DRIVER_DISPATCH FspFsvolRead; | ||||
| DRIVER_DISPATCH FspRead; | ||||
|  | ||||
| #ifdef ALLOC_PRAGMA | ||||
| #pragma alloc_text(PAGE, FspFsvolRead) | ||||
| #pragma alloc_text(PAGE, FspRead) | ||||
| #endif | ||||
|  | ||||
| static | ||||
| NTSTATUS | ||||
| FspFsvolRead( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
|     _In_ PIRP Irp) | ||||
| { | ||||
|     return STATUS_INVALID_DEVICE_REQUEST; | ||||
| } | ||||
|  | ||||
| NTSTATUS | ||||
| FspRead( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
| @@ -21,7 +32,13 @@ FspRead( | ||||
|  | ||||
|     ASSERT(IRP_MJ_READ == IrpSp->MajorFunction); | ||||
|  | ||||
|     Result = STATUS_INVALID_DEVICE_REQUEST; | ||||
|     switch (FspDeviceExtension(DeviceObject)->Kind) | ||||
|     { | ||||
|     case FspFsvolDeviceExtensionKind: | ||||
|         FSP_RETURN(Result = FspFsvolRead(DeviceObject, Irp)); | ||||
|     default: | ||||
|         FSP_RETURN(Result = STATUS_INVALID_DEVICE_REQUEST); | ||||
|     } | ||||
|  | ||||
|     FSP_LEAVE_MJ("", 0); | ||||
| } | ||||
|   | ||||
| @@ -6,14 +6,36 @@ | ||||
|  | ||||
| #include <sys/driver.h> | ||||
|  | ||||
| static DRIVER_DISPATCH FspFsvolQuerySecurity; | ||||
| static DRIVER_DISPATCH FspFsvolSetSecurity; | ||||
| DRIVER_DISPATCH FspQuerySecurity; | ||||
| DRIVER_DISPATCH FspSetSecurity; | ||||
|  | ||||
| #ifdef ALLOC_PRAGMA | ||||
| #pragma alloc_text(PAGE, FspFsvolQuerySecurity) | ||||
| #pragma alloc_text(PAGE, FspFsvolSetSecurity) | ||||
| #pragma alloc_text(PAGE, FspQuerySecurity) | ||||
| #pragma alloc_text(PAGE, FspSetSecurity) | ||||
| #endif | ||||
|  | ||||
| static | ||||
| NTSTATUS | ||||
| FspFsvolQuerySecurity( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
|     _In_ PIRP Irp) | ||||
| { | ||||
|     return STATUS_INVALID_DEVICE_REQUEST; | ||||
| } | ||||
|  | ||||
| static | ||||
| NTSTATUS | ||||
| FspFsvolSetSecurity( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
|     _In_ PIRP Irp) | ||||
| { | ||||
|     return STATUS_INVALID_DEVICE_REQUEST; | ||||
| } | ||||
|  | ||||
| NTSTATUS | ||||
| FspQuerySecurity( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
| @@ -23,7 +45,13 @@ FspQuerySecurity( | ||||
|  | ||||
|     ASSERT(IRP_MJ_QUERY_SECURITY == IrpSp->MajorFunction); | ||||
|  | ||||
|     Result = STATUS_INVALID_DEVICE_REQUEST; | ||||
|     switch (FspDeviceExtension(DeviceObject)->Kind) | ||||
|     { | ||||
|     case FspFsvolDeviceExtensionKind: | ||||
|         FSP_RETURN(Result = FspFsvolQuerySecurity(DeviceObject, Irp)); | ||||
|     default: | ||||
|         FSP_RETURN(Result = STATUS_INVALID_DEVICE_REQUEST); | ||||
|     } | ||||
|  | ||||
|     FSP_LEAVE_MJ("", 0); | ||||
| } | ||||
| @@ -37,7 +65,13 @@ FspSetSecurity( | ||||
|  | ||||
|     ASSERT(IRP_MJ_SET_SECURITY == IrpSp->MajorFunction); | ||||
|  | ||||
|     Result = STATUS_INVALID_DEVICE_REQUEST; | ||||
|     switch (FspDeviceExtension(DeviceObject)->Kind) | ||||
|     { | ||||
|     case FspFsvolDeviceExtensionKind: | ||||
|         FSP_RETURN(Result = FspFsvolSetSecurity(DeviceObject, Irp)); | ||||
|     default: | ||||
|         FSP_RETURN(Result = STATUS_INVALID_DEVICE_REQUEST); | ||||
|     } | ||||
|  | ||||
|     FSP_LEAVE_MJ("", 0); | ||||
| } | ||||
|   | ||||
| @@ -6,12 +6,23 @@ | ||||
|  | ||||
| #include <sys/driver.h> | ||||
|  | ||||
| static DRIVER_DISPATCH FspFsvolShutdown; | ||||
| DRIVER_DISPATCH FspShutdown; | ||||
|  | ||||
| #ifdef ALLOC_PRAGMA | ||||
| #pragma alloc_text(PAGE, FspFsvolShutdown) | ||||
| #pragma alloc_text(PAGE, FspShutdown) | ||||
| #endif | ||||
|  | ||||
| static | ||||
| NTSTATUS | ||||
| FspFsvolShutdown( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
|     _In_ PIRP Irp) | ||||
| { | ||||
|     return STATUS_INVALID_DEVICE_REQUEST; | ||||
| } | ||||
|  | ||||
| NTSTATUS | ||||
| FspShutdown( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
| @@ -21,7 +32,13 @@ FspShutdown( | ||||
|  | ||||
|     ASSERT(IRP_MJ_SHUTDOWN == IrpSp->MajorFunction); | ||||
|  | ||||
|     Result = STATUS_INVALID_DEVICE_REQUEST; | ||||
|     switch (FspDeviceExtension(DeviceObject)->Kind) | ||||
|     { | ||||
|     case FspFsvolDeviceExtensionKind: | ||||
|         FSP_RETURN(Result = FspFsvolShutdown(DeviceObject, Irp)); | ||||
|     default: | ||||
|         FSP_RETURN(Result = STATUS_INVALID_DEVICE_REQUEST); | ||||
|     } | ||||
|  | ||||
|     FSP_LEAVE_MJ("", 0); | ||||
| } | ||||
|   | ||||
| @@ -6,14 +6,36 @@ | ||||
|  | ||||
| #include <sys/driver.h> | ||||
|  | ||||
| static DRIVER_DISPATCH FspFsvolQueryVolumeInformation; | ||||
| static DRIVER_DISPATCH FspFsvolSetVolumeInformation; | ||||
| DRIVER_DISPATCH FspQueryVolumeInformation; | ||||
| DRIVER_DISPATCH FspSetVolumeInformation; | ||||
|  | ||||
| #ifdef ALLOC_PRAGMA | ||||
| #pragma alloc_text(PAGE, FspFsvolQueryVolumeInformation) | ||||
| #pragma alloc_text(PAGE, FspFsvolSetVolumeInformation) | ||||
| #pragma alloc_text(PAGE, FspQueryVolumeInformation) | ||||
| #pragma alloc_text(PAGE, FspSetVolumeInformation) | ||||
| #endif | ||||
|  | ||||
| static | ||||
| NTSTATUS | ||||
| FspFsvolQueryVolumeInformation( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
|     _In_ PIRP Irp) | ||||
| { | ||||
|     return STATUS_INVALID_DEVICE_REQUEST; | ||||
| } | ||||
|  | ||||
| static | ||||
| NTSTATUS | ||||
| FspFsvolSetVolumeInformation( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
|     _In_ PIRP Irp) | ||||
| { | ||||
|     return STATUS_INVALID_DEVICE_REQUEST; | ||||
| } | ||||
|  | ||||
| NTSTATUS | ||||
| FspQueryVolumeInformation( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
| @@ -23,7 +45,13 @@ FspQueryVolumeInformation( | ||||
|  | ||||
|     ASSERT(IRP_MJ_QUERY_VOLUME_INFORMATION == IrpSp->MajorFunction); | ||||
|  | ||||
|     Result = STATUS_INVALID_DEVICE_REQUEST; | ||||
|     switch (FspDeviceExtension(DeviceObject)->Kind) | ||||
|     { | ||||
|     case FspFsvolDeviceExtensionKind: | ||||
|         FSP_RETURN(Result = FspFsvolQueryVolumeInformation(DeviceObject, Irp)); | ||||
|     default: | ||||
|         FSP_RETURN(Result = STATUS_INVALID_DEVICE_REQUEST); | ||||
|     } | ||||
|  | ||||
|     FSP_LEAVE_MJ("", 0); | ||||
| } | ||||
| @@ -37,7 +65,13 @@ FspSetVolumeInformation( | ||||
|  | ||||
|     ASSERT(IRP_MJ_SET_VOLUME_INFORMATION == IrpSp->MajorFunction); | ||||
|  | ||||
|     Result = STATUS_INVALID_DEVICE_REQUEST; | ||||
|     switch (FspDeviceExtension(DeviceObject)->Kind) | ||||
|     { | ||||
|     case FspFsvolDeviceExtensionKind: | ||||
|         FSP_RETURN(Result = FspFsvolSetVolumeInformation(DeviceObject, Irp)); | ||||
|     default: | ||||
|         FSP_RETURN(Result = STATUS_INVALID_DEVICE_REQUEST); | ||||
|     } | ||||
|  | ||||
|     FSP_LEAVE_MJ("", 0); | ||||
| } | ||||
|   | ||||
| @@ -6,12 +6,23 @@ | ||||
|  | ||||
| #include <sys/driver.h> | ||||
|  | ||||
| static DRIVER_DISPATCH FspFsvolWrite; | ||||
| DRIVER_DISPATCH FspWrite; | ||||
|  | ||||
| #ifdef ALLOC_PRAGMA | ||||
| #pragma alloc_text(PAGE, FspFsvolWrite) | ||||
| #pragma alloc_text(PAGE, FspWrite) | ||||
| #endif | ||||
|  | ||||
| static | ||||
| NTSTATUS | ||||
| FspFsvolWrite( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
|     _In_ PIRP Irp) | ||||
| { | ||||
|     return STATUS_INVALID_DEVICE_REQUEST; | ||||
| } | ||||
|  | ||||
| NTSTATUS | ||||
| FspWrite( | ||||
|     _In_ PDEVICE_OBJECT DeviceObject, | ||||
| @@ -21,7 +32,13 @@ FspWrite( | ||||
|  | ||||
|     ASSERT(IRP_MJ_WRITE == IrpSp->MajorFunction); | ||||
|  | ||||
|     Result = STATUS_INVALID_DEVICE_REQUEST; | ||||
|     switch (FspDeviceExtension(DeviceObject)->Kind) | ||||
|     { | ||||
|     case FspFsvolDeviceExtensionKind: | ||||
|         FSP_RETURN(Result = FspFsvolWrite(DeviceObject, Irp)); | ||||
|     default: | ||||
|         FSP_RETURN(Result = STATUS_INVALID_DEVICE_REQUEST); | ||||
|     } | ||||
|  | ||||
|     FSP_LEAVE_MJ("", 0); | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user