mirror of
				https://github.com/winfsp/winfsp.git
				synced 2025-10-29 19:18:39 -05:00 
			
		
		
		
	sys: WIP
This commit is contained in:
		| @@ -13,7 +13,7 @@ static NTSTATUS FspFsvrtCleanup( | |||||||
| static NTSTATUS FspFsvolCleanup( | static NTSTATUS FspFsvolCleanup( | ||||||
|     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); |     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); | ||||||
| FSP_DRIVER_DISPATCH FspCleanup; | FSP_DRIVER_DISPATCH FspCleanup; | ||||||
| FSP_IOPROC_DISPATCH FspCleanupComplete; | FSP_IOCMPL_DISPATCH FspCleanupComplete; | ||||||
|  |  | ||||||
| #ifdef ALLOC_PRAGMA | #ifdef ALLOC_PRAGMA | ||||||
| #pragma alloc_text(PAGE, FspFsctlCleanup) | #pragma alloc_text(PAGE, FspFsctlCleanup) | ||||||
|   | |||||||
| @@ -13,7 +13,7 @@ static NTSTATUS FspFsvrtClose( | |||||||
| static NTSTATUS FspFsvolClose( | static NTSTATUS FspFsvolClose( | ||||||
|     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); |     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); | ||||||
| FSP_DRIVER_DISPATCH FspClose; | FSP_DRIVER_DISPATCH FspClose; | ||||||
| FSP_IOPROC_DISPATCH FspCloseComplete; | FSP_IOCMPL_DISPATCH FspCloseComplete; | ||||||
|  |  | ||||||
| #ifdef ALLOC_PRAGMA | #ifdef ALLOC_PRAGMA | ||||||
| #pragma alloc_text(PAGE, FspFsctlClose) | #pragma alloc_text(PAGE, FspFsctlClose) | ||||||
|   | |||||||
| @@ -13,7 +13,7 @@ static NTSTATUS FspFsvrtCreate( | |||||||
| static NTSTATUS FspFsvolCreate( | static NTSTATUS FspFsvolCreate( | ||||||
|     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); |     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); | ||||||
| FSP_DRIVER_DISPATCH FspCreate; | FSP_DRIVER_DISPATCH FspCreate; | ||||||
| FSP_IOPROC_DISPATCH FspCreateComplete; | FSP_IOCMPL_DISPATCH FspCreateComplete; | ||||||
|  |  | ||||||
| #ifdef ALLOC_PRAGMA | #ifdef ALLOC_PRAGMA | ||||||
| #pragma alloc_text(PAGE, FspFsctlCreate) | #pragma alloc_text(PAGE, FspFsctlCreate) | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ | |||||||
| static NTSTATUS FspFsvolDeviceControl( | static NTSTATUS FspFsvolDeviceControl( | ||||||
|     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); |     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); | ||||||
| FSP_DRIVER_DISPATCH FspDeviceControl; | FSP_DRIVER_DISPATCH FspDeviceControl; | ||||||
| FSP_IOPROC_DISPATCH FspDeviceControlComplete; | FSP_IOCMPL_DISPATCH FspDeviceControlComplete; | ||||||
|  |  | ||||||
| #ifdef ALLOC_PRAGMA | #ifdef ALLOC_PRAGMA | ||||||
| #pragma alloc_text(PAGE, FspFsvolDeviceControl) | #pragma alloc_text(PAGE, FspFsvolDeviceControl) | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ | |||||||
| static NTSTATUS FspFsvolDirectoryControl( | static NTSTATUS FspFsvolDirectoryControl( | ||||||
|     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); |     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); | ||||||
| FSP_DRIVER_DISPATCH FspDirectoryControl; | FSP_DRIVER_DISPATCH FspDirectoryControl; | ||||||
| FSP_IOPROC_DISPATCH FspDirectoryControlComplete; | FSP_IOCMPL_DISPATCH FspDirectoryControlComplete; | ||||||
|  |  | ||||||
| #ifdef ALLOC_PRAGMA | #ifdef ALLOC_PRAGMA | ||||||
| #pragma alloc_text(PAGE, FspFsvolDirectoryControl) | #pragma alloc_text(PAGE, FspFsvolDirectoryControl) | ||||||
|   | |||||||
| @@ -65,25 +65,25 @@ NTSTATUS DriverEntry( | |||||||
|     DriverObject->MajorFunction[IRP_MJ_SET_SECURITY] = FspSetSecurity; |     DriverObject->MajorFunction[IRP_MJ_SET_SECURITY] = FspSetSecurity; | ||||||
|  |  | ||||||
|     /* setup the I/O completion functions */ |     /* setup the I/O completion functions */ | ||||||
|     FspIoProcessFunction[IRP_MJ_CREATE] = FspCreateComplete; |     FspIopCompleteFunction[IRP_MJ_CREATE] = FspCreateComplete; | ||||||
|     FspIoProcessFunction[IRP_MJ_CLOSE] = FspCloseComplete; |     FspIopCompleteFunction[IRP_MJ_CLOSE] = FspCloseComplete; | ||||||
|     FspIoProcessFunction[IRP_MJ_READ] = FspReadComplete; |     FspIopCompleteFunction[IRP_MJ_READ] = FspReadComplete; | ||||||
|     FspIoProcessFunction[IRP_MJ_WRITE] = FspWriteComplete; |     FspIopCompleteFunction[IRP_MJ_WRITE] = FspWriteComplete; | ||||||
|     FspIoProcessFunction[IRP_MJ_QUERY_INFORMATION] = FspQueryInformationComplete; |     FspIopCompleteFunction[IRP_MJ_QUERY_INFORMATION] = FspQueryInformationComplete; | ||||||
|     FspIoProcessFunction[IRP_MJ_SET_INFORMATION] = FspSetInformationComplete; |     FspIopCompleteFunction[IRP_MJ_SET_INFORMATION] = FspSetInformationComplete; | ||||||
|     FspIoProcessFunction[IRP_MJ_QUERY_EA] = FspQueryEaComplete; |     FspIopCompleteFunction[IRP_MJ_QUERY_EA] = FspQueryEaComplete; | ||||||
|     FspIoProcessFunction[IRP_MJ_SET_EA] = FspSetEaComplete; |     FspIopCompleteFunction[IRP_MJ_SET_EA] = FspSetEaComplete; | ||||||
|     FspIoProcessFunction[IRP_MJ_FLUSH_BUFFERS] = FspFlushBuffersComplete; |     FspIopCompleteFunction[IRP_MJ_FLUSH_BUFFERS] = FspFlushBuffersComplete; | ||||||
|     FspIoProcessFunction[IRP_MJ_QUERY_VOLUME_INFORMATION] = FspQueryVolumeInformationComplete; |     FspIopCompleteFunction[IRP_MJ_QUERY_VOLUME_INFORMATION] = FspQueryVolumeInformationComplete; | ||||||
|     FspIoProcessFunction[IRP_MJ_SET_VOLUME_INFORMATION] = FspSetVolumeInformationComplete; |     FspIopCompleteFunction[IRP_MJ_SET_VOLUME_INFORMATION] = FspSetVolumeInformationComplete; | ||||||
|     FspIoProcessFunction[IRP_MJ_DIRECTORY_CONTROL] = FspDirectoryControlComplete; |     FspIopCompleteFunction[IRP_MJ_DIRECTORY_CONTROL] = FspDirectoryControlComplete; | ||||||
|     FspIoProcessFunction[IRP_MJ_FILE_SYSTEM_CONTROL] = FspFileSystemControlComplete; |     FspIopCompleteFunction[IRP_MJ_FILE_SYSTEM_CONTROL] = FspFileSystemControlComplete; | ||||||
|     FspIoProcessFunction[IRP_MJ_DEVICE_CONTROL] = FspDeviceControlComplete; |     FspIopCompleteFunction[IRP_MJ_DEVICE_CONTROL] = FspDeviceControlComplete; | ||||||
|     FspIoProcessFunction[IRP_MJ_SHUTDOWN] = FspShutdownComplete; |     FspIopCompleteFunction[IRP_MJ_SHUTDOWN] = FspShutdownComplete; | ||||||
|     FspIoProcessFunction[IRP_MJ_LOCK_CONTROL] = FspLockControlComplete; |     FspIopCompleteFunction[IRP_MJ_LOCK_CONTROL] = FspLockControlComplete; | ||||||
|     FspIoProcessFunction[IRP_MJ_CLEANUP] = FspCleanupComplete; |     FspIopCompleteFunction[IRP_MJ_CLEANUP] = FspCleanupComplete; | ||||||
|     FspIoProcessFunction[IRP_MJ_QUERY_SECURITY] = FspQuerySecurityComplete; |     FspIopCompleteFunction[IRP_MJ_QUERY_SECURITY] = FspQuerySecurityComplete; | ||||||
|     FspIoProcessFunction[IRP_MJ_SET_SECURITY] = FspSetSecurityComplete; |     FspIopCompleteFunction[IRP_MJ_SET_SECURITY] = FspSetSecurityComplete; | ||||||
|  |  | ||||||
|     /* setup fast I/O and resource acquisition */ |     /* setup fast I/O and resource acquisition */ | ||||||
|     static FAST_IO_DISPATCH FspFastIoDispatch = { 0 }; |     static FAST_IO_DISPATCH FspFastIoDispatch = { 0 }; | ||||||
|   | |||||||
| @@ -107,12 +107,12 @@ | |||||||
|                 {                       \ |                 {                       \ | ||||||
|                     /* this can only happen if the Ioq was stopped */\ |                     /* this can only happen if the Ioq was stopped */\ | ||||||
|                     ASSERT(FspIoqStopped(&FsvrtDeviceExtension->Ioq));\ |                     ASSERT(FspIoqStopped(&FsvrtDeviceExtension->Ioq));\ | ||||||
|                     FspCompleteRequest(Irp, STATUS_ACCESS_DENIED);\ |                     FspIopCompleteRequest(Irp, STATUS_ACCESS_DENIED);\ | ||||||
|                 }                       \ |                 }                       \ | ||||||
|             }                           \ |             }                           \ | ||||||
|         }                               \ |         }                               \ | ||||||
|         else                            \ |         else                            \ | ||||||
|             FspCompleteRequest(Irp, Result);\ |             FspIopCompleteRequest(Irp, Result);\ | ||||||
|     );                                  \ |     );                                  \ | ||||||
|     return Result |     return Result | ||||||
| #define FSP_ENTER_IOC(...)              \ | #define FSP_ENTER_IOC(...)              \ | ||||||
| @@ -130,7 +130,7 @@ | |||||||
|             __VA_ARGS__,                \ |             __VA_ARGS__,                \ | ||||||
|             NtStatusSym(Result),        \ |             NtStatusSym(Result),        \ | ||||||
|             (LONGLONG)Irp->IoStatus.Information);\ |             (LONGLONG)Irp->IoStatus.Information);\ | ||||||
|         FspCompleteRequest(Irp, Result);\ |         FspIopCompleteRequest(Irp, Result);\ | ||||||
|     ) |     ) | ||||||
| #define FSP_ENTER_BOOL(...)             \ | #define FSP_ENTER_BOOL(...)             \ | ||||||
|     BOOLEAN Result = TRUE; FSP_ENTER_(__VA_ARGS__) |     BOOLEAN Result = TRUE; FSP_ENTER_(__VA_ARGS__) | ||||||
| @@ -185,27 +185,27 @@ _Dispatch_type_(IRP_MJ_WRITE)           FSP_DRIVER_DISPATCH FspWrite; | |||||||
| /* I/O process functions */ | /* I/O process functions */ | ||||||
| _IRQL_requires_max_(APC_LEVEL) | _IRQL_requires_max_(APC_LEVEL) | ||||||
| _IRQL_requires_same_ | _IRQL_requires_same_ | ||||||
| typedef VOID FSP_IOPROC_DISPATCH( | typedef VOID FSP_IOCMPL_DISPATCH( | ||||||
|     _Inout_ PIRP Irp, _In_ const FSP_FSCTL_TRANSACT_RSP *Response); |     _Inout_ PIRP Irp, _In_ const FSP_FSCTL_TRANSACT_RSP *Response); | ||||||
| FSP_IOPROC_DISPATCH FspCleanupComplete; | FSP_IOCMPL_DISPATCH FspCleanupComplete; | ||||||
| FSP_IOPROC_DISPATCH FspCloseComplete; | FSP_IOCMPL_DISPATCH FspCloseComplete; | ||||||
| FSP_IOPROC_DISPATCH FspCreateComplete; | FSP_IOCMPL_DISPATCH FspCreateComplete; | ||||||
| FSP_IOPROC_DISPATCH FspDeviceControlComplete; | FSP_IOCMPL_DISPATCH FspDeviceControlComplete; | ||||||
| FSP_IOPROC_DISPATCH FspDirectoryControlComplete; | FSP_IOCMPL_DISPATCH FspDirectoryControlComplete; | ||||||
| FSP_IOPROC_DISPATCH FspFileSystemControlComplete; | FSP_IOCMPL_DISPATCH FspFileSystemControlComplete; | ||||||
| FSP_IOPROC_DISPATCH FspFlushBuffersComplete; | FSP_IOCMPL_DISPATCH FspFlushBuffersComplete; | ||||||
| FSP_IOPROC_DISPATCH FspLockControlComplete; | FSP_IOCMPL_DISPATCH FspLockControlComplete; | ||||||
| FSP_IOPROC_DISPATCH FspQueryEaComplete; | FSP_IOCMPL_DISPATCH FspQueryEaComplete; | ||||||
| FSP_IOPROC_DISPATCH FspQueryInformationComplete; | FSP_IOCMPL_DISPATCH FspQueryInformationComplete; | ||||||
| FSP_IOPROC_DISPATCH FspQuerySecurityComplete; | FSP_IOCMPL_DISPATCH FspQuerySecurityComplete; | ||||||
| FSP_IOPROC_DISPATCH FspQueryVolumeInformationComplete; | FSP_IOCMPL_DISPATCH FspQueryVolumeInformationComplete; | ||||||
| FSP_IOPROC_DISPATCH FspReadComplete; | FSP_IOCMPL_DISPATCH FspReadComplete; | ||||||
| FSP_IOPROC_DISPATCH FspSetEaComplete; | FSP_IOCMPL_DISPATCH FspSetEaComplete; | ||||||
| FSP_IOPROC_DISPATCH FspSetInformationComplete; | FSP_IOCMPL_DISPATCH FspSetInformationComplete; | ||||||
| FSP_IOPROC_DISPATCH FspSetSecurityComplete; | FSP_IOCMPL_DISPATCH FspSetSecurityComplete; | ||||||
| FSP_IOPROC_DISPATCH FspSetVolumeInformationComplete; | FSP_IOCMPL_DISPATCH FspSetVolumeInformationComplete; | ||||||
| FSP_IOPROC_DISPATCH FspShutdownComplete; | FSP_IOCMPL_DISPATCH FspShutdownComplete; | ||||||
| FSP_IOPROC_DISPATCH FspWriteComplete; | FSP_IOCMPL_DISPATCH FspWriteComplete; | ||||||
|  |  | ||||||
| /* fast I/O */ | /* fast I/O */ | ||||||
| FAST_IO_CHECK_IF_POSSIBLE FspFastIoCheckIfPossible; | FAST_IO_CHECK_IF_POSSIBLE FspFastIoCheckIfPossible; | ||||||
| @@ -282,12 +282,11 @@ FSP_FSVOL_DEVICE_EXTENSION *FspFsvolDeviceExtension(PDEVICE_OBJECT DeviceObject) | |||||||
|     return DeviceObject->DeviceExtension; |     return DeviceObject->DeviceExtension; | ||||||
| } | } | ||||||
|  |  | ||||||
| /* I/O completion */ | /* I/O processing */ | ||||||
| VOID FspCompleteRequest(PIRP Irp, NTSTATUS Result); | VOID FspIopCompleteRequest(PIRP Irp, NTSTATUS Result); | ||||||
| VOID FspDispatchProcessedIrp(PIRP Irp, const FSP_FSCTL_TRANSACT_RSP *Response); | VOID FspIopDispatchComplete(PIRP Irp, const FSP_FSCTL_TRANSACT_RSP *Response); | ||||||
|  |  | ||||||
| /* misc */ | /* misc */ | ||||||
| VOID FspCompleteRequest(PIRP Irp, NTSTATUS Result); |  | ||||||
| NTSTATUS FspCreateGuid(GUID *Guid); | NTSTATUS FspCreateGuid(GUID *Guid); | ||||||
| NTSTATUS FspSecuritySubjectContextAccessCheck( | NTSTATUS FspSecuritySubjectContextAccessCheck( | ||||||
|     PSECURITY_DESCRIPTOR SecurityDescriptor, ACCESS_MASK DesiredAccess, KPROCESSOR_MODE AccessMode); |     PSECURITY_DESCRIPTOR SecurityDescriptor, ACCESS_MASK DesiredAccess, KPROCESSOR_MODE AccessMode); | ||||||
| @@ -304,6 +303,6 @@ const char *IoctlCodeSym(ULONG ControlCode); | |||||||
| /* extern */ | /* extern */ | ||||||
| extern PDEVICE_OBJECT FspFsctlDiskDeviceObject; | extern PDEVICE_OBJECT FspFsctlDiskDeviceObject; | ||||||
| extern PDEVICE_OBJECT FspFsctlNetDeviceObject; | extern PDEVICE_OBJECT FspFsctlNetDeviceObject; | ||||||
| extern FSP_IOPROC_DISPATCH *FspIoProcessFunction[]; | extern FSP_IOCMPL_DISPATCH *FspIopCompleteFunction[]; | ||||||
|  |  | ||||||
| #endif | #endif | ||||||
|   | |||||||
| @@ -12,8 +12,8 @@ static NTSTATUS FspFsvolSetEa( | |||||||
|     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); |     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); | ||||||
| FSP_DRIVER_DISPATCH FspQueryEa; | FSP_DRIVER_DISPATCH FspQueryEa; | ||||||
| FSP_DRIVER_DISPATCH FspSetEa; | FSP_DRIVER_DISPATCH FspSetEa; | ||||||
| FSP_IOPROC_DISPATCH FspQueryEaComplete; | FSP_IOCMPL_DISPATCH FspQueryEaComplete; | ||||||
| FSP_IOPROC_DISPATCH FspSetEaComplete; | FSP_IOCMPL_DISPATCH FspSetEaComplete; | ||||||
|  |  | ||||||
| #ifdef ALLOC_PRAGMA | #ifdef ALLOC_PRAGMA | ||||||
| #pragma alloc_text(PAGE, FspFsvolQueryEa) | #pragma alloc_text(PAGE, FspFsvolQueryEa) | ||||||
|   | |||||||
| @@ -12,8 +12,8 @@ static NTSTATUS FspFsvolSetInformation( | |||||||
|     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); |     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); | ||||||
| FSP_DRIVER_DISPATCH FspQueryInformation; | FSP_DRIVER_DISPATCH FspQueryInformation; | ||||||
| FSP_DRIVER_DISPATCH FspSetInformation; | FSP_DRIVER_DISPATCH FspSetInformation; | ||||||
| FSP_IOPROC_DISPATCH FspQueryInformationComplete; | FSP_IOCMPL_DISPATCH FspQueryInformationComplete; | ||||||
| FSP_IOPROC_DISPATCH FspSetInformationComplete; | FSP_IOCMPL_DISPATCH FspSetInformationComplete; | ||||||
|  |  | ||||||
| #ifdef ALLOC_PRAGMA | #ifdef ALLOC_PRAGMA | ||||||
| #pragma alloc_text(PAGE, FspFsvolQueryInformation) | #pragma alloc_text(PAGE, FspFsvolQueryInformation) | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ | |||||||
| static NTSTATUS FspFsvolFlushBuffers( | static NTSTATUS FspFsvolFlushBuffers( | ||||||
|     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); |     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); | ||||||
| FSP_DRIVER_DISPATCH FspFlushBuffers; | FSP_DRIVER_DISPATCH FspFlushBuffers; | ||||||
| FSP_IOPROC_DISPATCH FspFlushBuffersComplete; | FSP_IOCMPL_DISPATCH FspFlushBuffersComplete; | ||||||
|  |  | ||||||
| #ifdef ALLOC_PRAGMA | #ifdef ALLOC_PRAGMA | ||||||
| #pragma alloc_text(PAGE, FspFsvolFlushBuffers) | #pragma alloc_text(PAGE, FspFsvolFlushBuffers) | ||||||
|   | |||||||
| @@ -19,7 +19,7 @@ static NTSTATUS FspFsvrtFileSystemControl( | |||||||
| static NTSTATUS FspFsvolFileSystemControl( | static NTSTATUS FspFsvolFileSystemControl( | ||||||
|     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); |     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); | ||||||
| FSP_DRIVER_DISPATCH FspFileSystemControl; | FSP_DRIVER_DISPATCH FspFileSystemControl; | ||||||
| FSP_IOPROC_DISPATCH FspFileSystemControlComplete; | FSP_IOCMPL_DISPATCH FspFileSystemControlComplete; | ||||||
|  |  | ||||||
| #ifdef ALLOC_PRAGMA | #ifdef ALLOC_PRAGMA | ||||||
| #pragma alloc_text(PAGE, FspFsctlCreateVolume) | #pragma alloc_text(PAGE, FspFsctlCreateVolume) | ||||||
| @@ -153,7 +153,7 @@ static NTSTATUS FspFsvrtTransact( | |||||||
|             /* either IRP was canceled or a bogus Hint was provided */ |             /* either IRP was canceled or a bogus Hint was provided */ | ||||||
|             continue; |             continue; | ||||||
|  |  | ||||||
|         FspDispatchProcessedIrp(ProcessIrp, Response); |         FspIopDispatchComplete(ProcessIrp, Response); | ||||||
|  |  | ||||||
|         Response = NextResponse; |         Response = NextResponse; | ||||||
|     } |     } | ||||||
| @@ -190,7 +190,7 @@ static NTSTATUS FspFsvrtTransact( | |||||||
|              * also cancel the PendingIrp we have in our hands. |              * also cancel the PendingIrp we have in our hands. | ||||||
|              */ |              */ | ||||||
|             ASSERT(FspIoqStopped(&FsvrtDeviceExtension->Ioq)); |             ASSERT(FspIoqStopped(&FsvrtDeviceExtension->Ioq)); | ||||||
|             FspCompleteRequest(PendingIrp, STATUS_CANCELLED); |             FspIopCompleteRequest(PendingIrp, STATUS_CANCELLED); | ||||||
|             return STATUS_CANCELLED; |             return STATUS_CANCELLED; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -6,13 +6,13 @@ | |||||||
|  |  | ||||||
| #include <sys/driver.h> | #include <sys/driver.h> | ||||||
|  |  | ||||||
| VOID FspDispatchProcessedIrp(PIRP Irp, const FSP_FSCTL_TRANSACT_RSP *Response); | VOID FspIopDispatchComplete(PIRP Irp, const FSP_FSCTL_TRANSACT_RSP *Response); | ||||||
|  |  | ||||||
| #ifdef ALLOC_PRAGMA | #ifdef ALLOC_PRAGMA | ||||||
| #pragma alloc_text(PAGE, FspDispatchProcessedIrp) | #pragma alloc_text(PAGE, FspIopDispatchComplete) | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| VOID FspCompleteRequest(PIRP Irp, NTSTATUS Result) | VOID FspIopCompleteRequest(PIRP Irp, NTSTATUS Result) | ||||||
| { | { | ||||||
|     // !PAGED_CODE(); |     // !PAGED_CODE(); | ||||||
|  |  | ||||||
| @@ -30,16 +30,16 @@ VOID FspCompleteRequest(PIRP Irp, NTSTATUS Result) | |||||||
|     IoCompleteRequest(Irp, FSP_IO_INCREMENT); |     IoCompleteRequest(Irp, FSP_IO_INCREMENT); | ||||||
| } | } | ||||||
|  |  | ||||||
| VOID FspDispatchProcessedIrp(PIRP Irp, const FSP_FSCTL_TRANSACT_RSP *Response) | VOID FspIopDispatchComplete(PIRP Irp, const FSP_FSCTL_TRANSACT_RSP *Response) | ||||||
| { | { | ||||||
|     PAGED_CODE(); |     PAGED_CODE(); | ||||||
|  |  | ||||||
|     PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp); |     PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp); | ||||||
|  |  | ||||||
|     ASSERT(IRP_MJ_MAXIMUM_FUNCTION >= IrpSp->MajorFunction); |     ASSERT(IRP_MJ_MAXIMUM_FUNCTION >= IrpSp->MajorFunction); | ||||||
|     ASSERT(0 != FspIoProcessFunction[IrpSp->MajorFunction]); |     ASSERT(0 != FspIopCompleteFunction[IrpSp->MajorFunction]); | ||||||
|  |  | ||||||
|     FspIoProcessFunction[IrpSp->MajorFunction](Irp, Response); |     FspIopCompleteFunction[IrpSp->MajorFunction](Irp, Response); | ||||||
| } | } | ||||||
|  |  | ||||||
| FSP_IOPROC_DISPATCH *FspIoProcessFunction[IRP_MJ_MAXIMUM_FUNCTION + 1]; | FSP_IOCMPL_DISPATCH *FspIopCompleteFunction[IRP_MJ_MAXIMUM_FUNCTION + 1]; | ||||||
|   | |||||||
| @@ -83,15 +83,15 @@ static PIRP FspIoqPendingPeekNextIrp(PIO_CSQ IoCsq, PIRP Irp, PVOID PeekContext) | |||||||
|     PLIST_ENTRY Entry = 0 == Irp ? Head->Flink : Irp->Tail.Overlay.ListEntry.Flink; |     PLIST_ENTRY Entry = 0 == Irp ? Head->Flink : Irp->Tail.Overlay.ListEntry.Flink; | ||||||
|     return Head != Entry ? CONTAINING_RECORD(Entry, IRP, Tail.Overlay.ListEntry) : 0; |     return Head != Entry ? CONTAINING_RECORD(Entry, IRP, Tail.Overlay.ListEntry) : 0; | ||||||
| } | } | ||||||
|  |  | ||||||
| _IRQL_raises_(DISPATCH_LEVEL) | _IRQL_raises_(DISPATCH_LEVEL) | ||||||
| static VOID FspIoqPendingAcquireLock(PIO_CSQ IoCsq, _At_(*PIrql, _IRQL_saves_) PKIRQL PIrql) | static VOID FspIoqPendingAcquireLock(PIO_CSQ IoCsq, _At_(*PIrql, _IRQL_saves_) PKIRQL PIrql) | ||||||
| { | { | ||||||
|     FSP_IOQ *Ioq = CONTAINING_RECORD(IoCsq, FSP_IOQ, PendingIoCsq); |     FSP_IOQ *Ioq = CONTAINING_RECORD(IoCsq, FSP_IOQ, PendingIoCsq); | ||||||
|     KeAcquireSpinLock(&Ioq->SpinLock, PIrql); |     KeAcquireSpinLock(&Ioq->SpinLock, PIrql); | ||||||
| } | } | ||||||
|  |  | ||||||
| _IRQL_requires_(DISPATCH_LEVEL) | _IRQL_requires_(DISPATCH_LEVEL) | ||||||
| static VOID FspIoqPendingReleaseLock(PIO_CSQ IoCsq, _IRQL_restores_ KIRQL Irql) | static VOID FspIoqPendingReleaseLock(PIO_CSQ IoCsq, _IRQL_restores_ KIRQL Irql) | ||||||
| { | { | ||||||
|     FSP_IOQ *Ioq = CONTAINING_RECORD(IoCsq, FSP_IOQ, PendingIoCsq); |     FSP_IOQ *Ioq = CONTAINING_RECORD(IoCsq, FSP_IOQ, PendingIoCsq); | ||||||
| @@ -100,7 +100,7 @@ static VOID FspIoqPendingReleaseLock(PIO_CSQ IoCsq, _IRQL_restores_ KIRQL Irql) | |||||||
|  |  | ||||||
| static VOID FspIoqPendingCompleteCanceledIrp(PIO_CSQ IoCsq, PIRP Irp) | static VOID FspIoqPendingCompleteCanceledIrp(PIO_CSQ IoCsq, PIRP Irp) | ||||||
| { | { | ||||||
|     FspCompleteRequest(Irp, STATUS_CANCELLED); |     FspIopCompleteRequest(Irp, STATUS_CANCELLED); | ||||||
| } | } | ||||||
|  |  | ||||||
| static NTSTATUS FspIoqProcessInsertIrpEx(PIO_CSQ IoCsq, PIRP Irp, PVOID InsertContext) | static NTSTATUS FspIoqProcessInsertIrpEx(PIO_CSQ IoCsq, PIRP Irp, PVOID InsertContext) | ||||||
| @@ -135,14 +135,14 @@ static PIRP FspIoqProcessPeekNextIrp(PIO_CSQ IoCsq, PIRP Irp, PVOID PeekContext) | |||||||
|     return 0; |     return 0; | ||||||
| } | } | ||||||
|  |  | ||||||
| _IRQL_raises_(DISPATCH_LEVEL) | _IRQL_raises_(DISPATCH_LEVEL) | ||||||
| static VOID FspIoqProcessAcquireLock(PIO_CSQ IoCsq, _At_(*PIrql, _IRQL_saves_) PKIRQL PIrql) | static VOID FspIoqProcessAcquireLock(PIO_CSQ IoCsq, _At_(*PIrql, _IRQL_saves_) PKIRQL PIrql) | ||||||
| { | { | ||||||
|     FSP_IOQ *Ioq = CONTAINING_RECORD(IoCsq, FSP_IOQ, ProcessIoCsq); |     FSP_IOQ *Ioq = CONTAINING_RECORD(IoCsq, FSP_IOQ, ProcessIoCsq); | ||||||
|     KeAcquireSpinLock(&Ioq->SpinLock, PIrql); |     KeAcquireSpinLock(&Ioq->SpinLock, PIrql); | ||||||
| } | } | ||||||
|  |  | ||||||
| _IRQL_requires_(DISPATCH_LEVEL) | _IRQL_requires_(DISPATCH_LEVEL) | ||||||
| static VOID FspIoqProcessReleaseLock(PIO_CSQ IoCsq, _IRQL_restores_ KIRQL Irql) | static VOID FspIoqProcessReleaseLock(PIO_CSQ IoCsq, _IRQL_restores_ KIRQL Irql) | ||||||
| { | { | ||||||
|     FSP_IOQ *Ioq = CONTAINING_RECORD(IoCsq, FSP_IOQ, ProcessIoCsq); |     FSP_IOQ *Ioq = CONTAINING_RECORD(IoCsq, FSP_IOQ, ProcessIoCsq); | ||||||
| @@ -151,7 +151,7 @@ static VOID FspIoqProcessReleaseLock(PIO_CSQ IoCsq, _IRQL_restores_ KIRQL Irql) | |||||||
|  |  | ||||||
| static VOID FspIoqProcessCompleteCanceledIrp(PIO_CSQ IoCsq, PIRP Irp) | static VOID FspIoqProcessCompleteCanceledIrp(PIO_CSQ IoCsq, PIRP Irp) | ||||||
| { | { | ||||||
|     FspCompleteRequest(Irp, STATUS_CANCELLED); |     FspIopCompleteRequest(Irp, STATUS_CANCELLED); | ||||||
| } | } | ||||||
|  |  | ||||||
| VOID FspIoqInitialize(FSP_IOQ *Ioq) | VOID FspIoqInitialize(FSP_IOQ *Ioq) | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ | |||||||
| static NTSTATUS FspFsvolLockControl( | static NTSTATUS FspFsvolLockControl( | ||||||
|     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); |     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); | ||||||
| FSP_DRIVER_DISPATCH FspLockControl; | FSP_DRIVER_DISPATCH FspLockControl; | ||||||
| FSP_IOPROC_DISPATCH FspLockControlComplete; | FSP_IOCMPL_DISPATCH FspLockControlComplete; | ||||||
|  |  | ||||||
| #ifdef ALLOC_PRAGMA | #ifdef ALLOC_PRAGMA | ||||||
| #pragma alloc_text(PAGE, FspFsvolLockControl) | #pragma alloc_text(PAGE, FspFsvolLockControl) | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ | |||||||
| static NTSTATUS FspFsvolRead( | static NTSTATUS FspFsvolRead( | ||||||
|     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); |     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); | ||||||
| FSP_DRIVER_DISPATCH FspRead; | FSP_DRIVER_DISPATCH FspRead; | ||||||
| FSP_IOPROC_DISPATCH FspReadComplete; | FSP_IOCMPL_DISPATCH FspReadComplete; | ||||||
|  |  | ||||||
| #ifdef ALLOC_PRAGMA | #ifdef ALLOC_PRAGMA | ||||||
| #pragma alloc_text(PAGE, FspFsvolRead) | #pragma alloc_text(PAGE, FspFsvolRead) | ||||||
|   | |||||||
| @@ -12,8 +12,8 @@ static NTSTATUS FspFsvolSetSecurity( | |||||||
|     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); |     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); | ||||||
| FSP_DRIVER_DISPATCH FspQuerySecurity; | FSP_DRIVER_DISPATCH FspQuerySecurity; | ||||||
| FSP_DRIVER_DISPATCH FspSetSecurity; | FSP_DRIVER_DISPATCH FspSetSecurity; | ||||||
| FSP_IOPROC_DISPATCH FspQuerySecurityComplete; | FSP_IOCMPL_DISPATCH FspQuerySecurityComplete; | ||||||
| FSP_IOPROC_DISPATCH FspSetSecurityComplete; | FSP_IOCMPL_DISPATCH FspSetSecurityComplete; | ||||||
|  |  | ||||||
| #ifdef ALLOC_PRAGMA | #ifdef ALLOC_PRAGMA | ||||||
| #pragma alloc_text(PAGE, FspFsvolQuerySecurity) | #pragma alloc_text(PAGE, FspFsvolQuerySecurity) | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ | |||||||
| static NTSTATUS FspFsvolShutdown( | static NTSTATUS FspFsvolShutdown( | ||||||
|     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); |     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); | ||||||
| FSP_DRIVER_DISPATCH FspShutdown; | FSP_DRIVER_DISPATCH FspShutdown; | ||||||
| FSP_IOPROC_DISPATCH FspShutdownComplete; | FSP_IOCMPL_DISPATCH FspShutdownComplete; | ||||||
|  |  | ||||||
| #ifdef ALLOC_PRAGMA | #ifdef ALLOC_PRAGMA | ||||||
| #pragma alloc_text(PAGE, FspFsvolShutdown) | #pragma alloc_text(PAGE, FspFsvolShutdown) | ||||||
|   | |||||||
| @@ -12,8 +12,8 @@ static NTSTATUS FspFsvolSetVolumeInformation( | |||||||
|     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); |     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); | ||||||
| FSP_DRIVER_DISPATCH FspQueryVolumeInformation; | FSP_DRIVER_DISPATCH FspQueryVolumeInformation; | ||||||
| FSP_DRIVER_DISPATCH FspSetVolumeInformation; | FSP_DRIVER_DISPATCH FspSetVolumeInformation; | ||||||
| FSP_IOPROC_DISPATCH FspQueryVolumeInformationComplete; | FSP_IOCMPL_DISPATCH FspQueryVolumeInformationComplete; | ||||||
| FSP_IOPROC_DISPATCH FspSetVolumeInformationComplete; | FSP_IOCMPL_DISPATCH FspSetVolumeInformationComplete; | ||||||
|  |  | ||||||
| #ifdef ALLOC_PRAGMA | #ifdef ALLOC_PRAGMA | ||||||
| #pragma alloc_text(PAGE, FspFsvolQueryVolumeInformation) | #pragma alloc_text(PAGE, FspFsvolQueryVolumeInformation) | ||||||
|   | |||||||
| @@ -9,7 +9,7 @@ | |||||||
| static NTSTATUS FspFsvolWrite( | static NTSTATUS FspFsvolWrite( | ||||||
|     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); |     PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp); | ||||||
| FSP_DRIVER_DISPATCH FspWrite; | FSP_DRIVER_DISPATCH FspWrite; | ||||||
| FSP_IOPROC_DISPATCH FspWriteComplete; | FSP_IOCMPL_DISPATCH FspWriteComplete; | ||||||
|  |  | ||||||
| #ifdef ALLOC_PRAGMA | #ifdef ALLOC_PRAGMA | ||||||
| #pragma alloc_text(PAGE, FspFsvolWrite) | #pragma alloc_text(PAGE, FspFsvolWrite) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user