mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-22 08:23:05 -05:00
sys: I/O completion functions
This commit is contained in:
parent
f9d300c738
commit
ee1663100a
@ -13,12 +13,14 @@ static NTSTATUS FspFsvrtCleanup(
|
||||
static NTSTATUS FspFsvolCleanup(
|
||||
PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp);
|
||||
DRIVER_DISPATCH FspCleanup;
|
||||
FSP_IOCOMPLETION_DISPATCH FspCleanupComplete;
|
||||
|
||||
#ifdef ALLOC_PRAGMA
|
||||
#pragma alloc_text(PAGE, FspFsctlCleanup)
|
||||
#pragma alloc_text(PAGE, FspFsvrtCleanup)
|
||||
#pragma alloc_text(PAGE, FspFsvolCleanup)
|
||||
#pragma alloc_text(PAGE, FspCleanup)
|
||||
#pragma alloc_text(PAGE, FspCleanupComplete)
|
||||
#endif
|
||||
|
||||
static NTSTATUS FspFsctlCleanup(
|
||||
@ -66,3 +68,10 @@ FspCleanup(
|
||||
|
||||
FSP_LEAVE_MJ("FileObject=%p", IrpSp->FileObject);
|
||||
}
|
||||
|
||||
VOID FspCleanupComplete(PIRP Irp, FSP_FSCTL_TRANSACT_RSP *Response)
|
||||
{
|
||||
PAGED_CODE();
|
||||
|
||||
FspCompleteRequest(Irp, STATUS_SUCCESS);
|
||||
}
|
||||
|
@ -13,12 +13,14 @@ static NTSTATUS FspFsvrtClose(
|
||||
static NTSTATUS FspFsvolClose(
|
||||
PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp);
|
||||
DRIVER_DISPATCH FspClose;
|
||||
FSP_IOCOMPLETION_DISPATCH FspCloseComplete;
|
||||
|
||||
#ifdef ALLOC_PRAGMA
|
||||
#pragma alloc_text(PAGE, FspFsctlClose)
|
||||
#pragma alloc_text(PAGE, FspFsvrtClose)
|
||||
#pragma alloc_text(PAGE, FspFsvolClose)
|
||||
#pragma alloc_text(PAGE, FspClose)
|
||||
#pragma alloc_text(PAGE, FspCloseComplete)
|
||||
#endif
|
||||
|
||||
static NTSTATUS FspFsctlClose(
|
||||
@ -66,3 +68,10 @@ FspClose(
|
||||
|
||||
FSP_LEAVE_MJ("FileObject=%p", IrpSp->FileObject);
|
||||
}
|
||||
|
||||
VOID FspCloseComplete(PIRP Irp, FSP_FSCTL_TRANSACT_RSP *Response)
|
||||
{
|
||||
PAGED_CODE();
|
||||
|
||||
FspCompleteRequest(Irp, STATUS_SUCCESS);
|
||||
}
|
||||
|
@ -13,12 +13,14 @@ static NTSTATUS FspFsvrtCreate(
|
||||
static NTSTATUS FspFsvolCreate(
|
||||
PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp);
|
||||
DRIVER_DISPATCH FspCreate;
|
||||
FSP_IOCOMPLETION_DISPATCH FspCreateComplete;
|
||||
|
||||
#ifdef ALLOC_PRAGMA
|
||||
#pragma alloc_text(PAGE, FspFsctlCreate)
|
||||
#pragma alloc_text(PAGE, FspFsvrtCreate)
|
||||
#pragma alloc_text(PAGE, FspFsvolCreate)
|
||||
#pragma alloc_text(PAGE, FspCreate)
|
||||
#pragma alloc_text(PAGE, FspCreateComplete)
|
||||
#endif
|
||||
|
||||
static NTSTATUS FspFsctlCreate(
|
||||
@ -80,3 +82,10 @@ FspCreate(
|
||||
Irp->Overlay.AllocationSize.HighPart, Irp->Overlay.AllocationSize.LowPart,
|
||||
Irp->AssociatedIrp.SystemBuffer, IrpSp->Parameters.Create.EaLength);
|
||||
}
|
||||
|
||||
VOID FspCreateComplete(PIRP Irp, FSP_FSCTL_TRANSACT_RSP *Response)
|
||||
{
|
||||
PAGED_CODE();
|
||||
|
||||
FspCompleteRequest(Irp, STATUS_SUCCESS);
|
||||
}
|
||||
|
@ -9,10 +9,12 @@
|
||||
static NTSTATUS FspFsvolDeviceControl(
|
||||
PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp);
|
||||
DRIVER_DISPATCH FspDeviceControl;
|
||||
FSP_IOCOMPLETION_DISPATCH FspDeviceControlComplete;
|
||||
|
||||
#ifdef ALLOC_PRAGMA
|
||||
#pragma alloc_text(PAGE, FspFsvolDeviceControl)
|
||||
#pragma alloc_text(PAGE, FspDeviceControl)
|
||||
#pragma alloc_text(PAGE, FspDeviceControlComplete)
|
||||
#endif
|
||||
|
||||
static NTSTATUS FspFsvolDeviceControl(
|
||||
@ -40,3 +42,10 @@ FspDeviceControl(
|
||||
|
||||
FSP_LEAVE_MJ("", 0);
|
||||
}
|
||||
|
||||
VOID FspDeviceControlComplete(PIRP Irp, FSP_FSCTL_TRANSACT_RSP *Response)
|
||||
{
|
||||
PAGED_CODE();
|
||||
|
||||
FspCompleteRequest(Irp, STATUS_SUCCESS);
|
||||
}
|
||||
|
@ -9,10 +9,12 @@
|
||||
static NTSTATUS FspFsvolDirectoryControl(
|
||||
PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp);
|
||||
DRIVER_DISPATCH FspDirectoryControl;
|
||||
FSP_IOCOMPLETION_DISPATCH FspDirectoryControlComplete;
|
||||
|
||||
#ifdef ALLOC_PRAGMA
|
||||
#pragma alloc_text(PAGE, FspFsvolDirectoryControl)
|
||||
#pragma alloc_text(PAGE, FspDirectoryControl)
|
||||
#pragma alloc_text(PAGE, FspDirectoryControlComplete)
|
||||
#endif
|
||||
|
||||
static NTSTATUS FspFsvolDirectoryControl(
|
||||
@ -40,3 +42,10 @@ FspDirectoryControl(
|
||||
|
||||
FSP_LEAVE_MJ("", 0);
|
||||
}
|
||||
|
||||
VOID FspDirectoryControlComplete(PIRP Irp, FSP_FSCTL_TRANSACT_RSP *Response)
|
||||
{
|
||||
PAGED_CODE();
|
||||
|
||||
FspCompleteRequest(Irp, STATUS_SUCCESS);
|
||||
}
|
||||
|
@ -47,7 +47,6 @@ DriverEntry(
|
||||
/* setup the driver object */
|
||||
DriverObject->DriverUnload = FspUnload;
|
||||
DriverObject->MajorFunction[IRP_MJ_CREATE] = FspCreate;
|
||||
//DriverObject->MajorFunction[IRP_MJ_CREATE_NAMED_PIPE] = IopInvalidDeviceRequest;
|
||||
DriverObject->MajorFunction[IRP_MJ_CLOSE] = FspClose;
|
||||
DriverObject->MajorFunction[IRP_MJ_READ] = FspRead;
|
||||
DriverObject->MajorFunction[IRP_MJ_WRITE] = FspWrite;
|
||||
@ -61,19 +60,32 @@ DriverEntry(
|
||||
DriverObject->MajorFunction[IRP_MJ_DIRECTORY_CONTROL] = FspDirectoryControl;
|
||||
DriverObject->MajorFunction[IRP_MJ_FILE_SYSTEM_CONTROL] = FspFileSystemControl;
|
||||
DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = FspDeviceControl;
|
||||
//DriverObject->MajorFunction[IRP_MJ_INTERNAL_DEVICE_CONTROL] = IopInvalidDeviceRequest;
|
||||
DriverObject->MajorFunction[IRP_MJ_SHUTDOWN] = FspShutdown;
|
||||
DriverObject->MajorFunction[IRP_MJ_LOCK_CONTROL] = FspLockControl;
|
||||
DriverObject->MajorFunction[IRP_MJ_CLEANUP] = FspCleanup;
|
||||
//DriverObject->MajorFunction[IRP_MJ_CREATE_MAILSLOT] = IopInvalidDeviceRequest;
|
||||
DriverObject->MajorFunction[IRP_MJ_QUERY_SECURITY] = FspQuerySecurity;
|
||||
DriverObject->MajorFunction[IRP_MJ_SET_SECURITY] = FspSetSecurity;
|
||||
//DriverObject->MajorFunction[IRP_MJ_POWER] = IopInvalidDeviceRequest;
|
||||
//DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL] = IopInvalidDeviceRequest;
|
||||
//DriverObject->MajorFunction[IRP_MJ_DEVICE_CHANGE] = IopInvalidDeviceRequest;
|
||||
//DriverObject->MajorFunction[IRP_MJ_QUERY_QUOTA] = IopInvalidDeviceRequest;
|
||||
//DriverObject->MajorFunction[IRP_MJ_SET_QUOTA] = IopInvalidDeviceRequest;
|
||||
//DriverObject->MajorFunction[IRP_MJ_PNP] = IopInvalidDeviceRequest;
|
||||
|
||||
/* setup the I/O completion functions */
|
||||
FspIoCompletionFunction[IRP_MJ_CREATE] = FspCreateComplete;
|
||||
FspIoCompletionFunction[IRP_MJ_CLOSE] = FspCloseComplete;
|
||||
FspIoCompletionFunction[IRP_MJ_READ] = FspReadComplete;
|
||||
FspIoCompletionFunction[IRP_MJ_WRITE] = FspWriteComplete;
|
||||
FspIoCompletionFunction[IRP_MJ_QUERY_INFORMATION] = FspQueryInformationComplete;
|
||||
FspIoCompletionFunction[IRP_MJ_SET_INFORMATION] = FspSetInformationComplete;
|
||||
FspIoCompletionFunction[IRP_MJ_QUERY_EA] = FspQueryEaComplete;
|
||||
FspIoCompletionFunction[IRP_MJ_SET_EA] = FspSetEaComplete;
|
||||
FspIoCompletionFunction[IRP_MJ_FLUSH_BUFFERS] = FspFlushBuffersComplete;
|
||||
FspIoCompletionFunction[IRP_MJ_QUERY_VOLUME_INFORMATION] = FspQueryVolumeInformationComplete;
|
||||
FspIoCompletionFunction[IRP_MJ_SET_VOLUME_INFORMATION] = FspSetVolumeInformationComplete;
|
||||
FspIoCompletionFunction[IRP_MJ_DIRECTORY_CONTROL] = FspDirectoryControlComplete;
|
||||
FspIoCompletionFunction[IRP_MJ_FILE_SYSTEM_CONTROL] = FspFileSystemControlComplete;
|
||||
FspIoCompletionFunction[IRP_MJ_DEVICE_CONTROL] = FspDeviceControlComplete;
|
||||
FspIoCompletionFunction[IRP_MJ_SHUTDOWN] = FspShutdownComplete;
|
||||
FspIoCompletionFunction[IRP_MJ_LOCK_CONTROL] = FspLockControlComplete;
|
||||
FspIoCompletionFunction[IRP_MJ_CLEANUP] = FspCleanupComplete;
|
||||
FspIoCompletionFunction[IRP_MJ_QUERY_SECURITY] = FspQuerySecurityComplete;
|
||||
FspIoCompletionFunction[IRP_MJ_SET_SECURITY] = FspSetSecurityComplete;
|
||||
|
||||
/* setup fast I/O and resource acquisition */
|
||||
static FAST_IO_DISPATCH FspFastIoDispatch = { 0 };
|
||||
|
@ -145,6 +145,28 @@ DRIVER_DISPATCH FspSetVolumeInformation;
|
||||
DRIVER_DISPATCH FspShutdown;
|
||||
DRIVER_DISPATCH FspWrite;
|
||||
|
||||
/* I/O completion functions */
|
||||
typedef VOID FSP_IOCOMPLETION_DISPATCH(PIRP Irp, FSP_FSCTL_TRANSACT_RSP *Response);
|
||||
FSP_IOCOMPLETION_DISPATCH FspCleanupComplete;
|
||||
FSP_IOCOMPLETION_DISPATCH FspCloseComplete;
|
||||
FSP_IOCOMPLETION_DISPATCH FspCreateComplete;
|
||||
FSP_IOCOMPLETION_DISPATCH FspDeviceControlComplete;
|
||||
FSP_IOCOMPLETION_DISPATCH FspDirectoryControlComplete;
|
||||
FSP_IOCOMPLETION_DISPATCH FspFileSystemControlComplete;
|
||||
FSP_IOCOMPLETION_DISPATCH FspFlushBuffersComplete;
|
||||
FSP_IOCOMPLETION_DISPATCH FspLockControlComplete;
|
||||
FSP_IOCOMPLETION_DISPATCH FspQueryEaComplete;
|
||||
FSP_IOCOMPLETION_DISPATCH FspQueryInformationComplete;
|
||||
FSP_IOCOMPLETION_DISPATCH FspQuerySecurityComplete;
|
||||
FSP_IOCOMPLETION_DISPATCH FspQueryVolumeInformationComplete;
|
||||
FSP_IOCOMPLETION_DISPATCH FspReadComplete;
|
||||
FSP_IOCOMPLETION_DISPATCH FspSetEaComplete;
|
||||
FSP_IOCOMPLETION_DISPATCH FspSetInformationComplete;
|
||||
FSP_IOCOMPLETION_DISPATCH FspSetSecurityComplete;
|
||||
FSP_IOCOMPLETION_DISPATCH FspSetVolumeInformationComplete;
|
||||
FSP_IOCOMPLETION_DISPATCH FspShutdownComplete;
|
||||
FSP_IOCOMPLETION_DISPATCH FspWriteComplete;
|
||||
|
||||
/* fast I/O */
|
||||
FAST_IO_CHECK_IF_POSSIBLE FspFastIoCheckIfPossible;
|
||||
|
||||
@ -242,5 +264,6 @@ const char *IoctlCodeSym(ULONG ControlCode);
|
||||
/* extern */
|
||||
extern PDEVICE_OBJECT FspFsctlDiskDeviceObject;
|
||||
extern PDEVICE_OBJECT FspFsctlNetDeviceObject;
|
||||
extern FSP_IOCOMPLETION_DISPATCH *FspIoCompletionFunction[];
|
||||
|
||||
#endif
|
||||
|
18
src/sys/ea.c
18
src/sys/ea.c
@ -12,12 +12,16 @@ static NTSTATUS FspFsvolSetEa(
|
||||
PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp);
|
||||
DRIVER_DISPATCH FspQueryEa;
|
||||
DRIVER_DISPATCH FspSetEa;
|
||||
FSP_IOCOMPLETION_DISPATCH FspQueryEaComplete;
|
||||
FSP_IOCOMPLETION_DISPATCH FspSetEaComplete;
|
||||
|
||||
#ifdef ALLOC_PRAGMA
|
||||
#pragma alloc_text(PAGE, FspFsvolQueryEa)
|
||||
#pragma alloc_text(PAGE, FspFsvolSetEa)
|
||||
#pragma alloc_text(PAGE, FspQueryEa)
|
||||
#pragma alloc_text(PAGE, FspSetEa)
|
||||
#pragma alloc_text(PAGE, FspQueryEaComplete)
|
||||
#pragma alloc_text(PAGE, FspSetEaComplete)
|
||||
#endif
|
||||
|
||||
static NTSTATUS FspFsvolQueryEa(
|
||||
@ -71,3 +75,17 @@ FspSetEa(
|
||||
|
||||
FSP_LEAVE_MJ("", 0);
|
||||
}
|
||||
|
||||
VOID FspQueryEaComplete(PIRP Irp, FSP_FSCTL_TRANSACT_RSP *Response)
|
||||
{
|
||||
PAGED_CODE();
|
||||
|
||||
FspCompleteRequest(Irp, STATUS_SUCCESS);
|
||||
}
|
||||
|
||||
VOID FspSetEaComplete(PIRP Irp, FSP_FSCTL_TRANSACT_RSP *Response)
|
||||
{
|
||||
PAGED_CODE();
|
||||
|
||||
FspCompleteRequest(Irp, STATUS_SUCCESS);
|
||||
}
|
||||
|
@ -12,12 +12,16 @@ static NTSTATUS FspFsvolSetInformation(
|
||||
PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp);
|
||||
DRIVER_DISPATCH FspQueryInformation;
|
||||
DRIVER_DISPATCH FspSetInformation;
|
||||
FSP_IOCOMPLETION_DISPATCH FspQueryInformationComplete;
|
||||
FSP_IOCOMPLETION_DISPATCH FspSetInformationComplete;
|
||||
|
||||
#ifdef ALLOC_PRAGMA
|
||||
#pragma alloc_text(PAGE, FspFsvolQueryInformation)
|
||||
#pragma alloc_text(PAGE, FspFsvolSetInformation)
|
||||
#pragma alloc_text(PAGE, FspQueryInformation)
|
||||
#pragma alloc_text(PAGE, FspSetInformation)
|
||||
#pragma alloc_text(PAGE, FspQueryInformationComplete)
|
||||
#pragma alloc_text(PAGE, FspSetInformationComplete)
|
||||
#endif
|
||||
|
||||
static NTSTATUS FspFsvolQueryInformation(
|
||||
@ -71,3 +75,17 @@ FspSetInformation(
|
||||
|
||||
FSP_LEAVE_MJ("", 0);
|
||||
}
|
||||
|
||||
VOID FspQueryInformationComplete(PIRP Irp, FSP_FSCTL_TRANSACT_RSP *Response)
|
||||
{
|
||||
PAGED_CODE();
|
||||
|
||||
FspCompleteRequest(Irp, STATUS_SUCCESS);
|
||||
}
|
||||
|
||||
VOID FspSetInformationComplete(PIRP Irp, FSP_FSCTL_TRANSACT_RSP *Response)
|
||||
{
|
||||
PAGED_CODE();
|
||||
|
||||
FspCompleteRequest(Irp, STATUS_SUCCESS);
|
||||
}
|
||||
|
@ -9,10 +9,12 @@
|
||||
static NTSTATUS FspFsvolFlushBuffers(
|
||||
PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp);
|
||||
DRIVER_DISPATCH FspFlushBuffers;
|
||||
FSP_IOCOMPLETION_DISPATCH FspFlushBuffersComplete;
|
||||
|
||||
#ifdef ALLOC_PRAGMA
|
||||
#pragma alloc_text(PAGE, FspFsvolFlushBuffers)
|
||||
#pragma alloc_text(PAGE, FspFlushBuffers)
|
||||
#pragma alloc_text(PAGE, FspFlushBuffersComplete)
|
||||
#endif
|
||||
|
||||
static NTSTATUS FspFsvolFlushBuffers(
|
||||
@ -40,3 +42,10 @@ FspFlushBuffers(
|
||||
|
||||
FSP_LEAVE_MJ("", 0);
|
||||
}
|
||||
|
||||
VOID FspFlushBuffersComplete(PIRP Irp, FSP_FSCTL_TRANSACT_RSP *Response)
|
||||
{
|
||||
PAGED_CODE();
|
||||
|
||||
FspCompleteRequest(Irp, STATUS_SUCCESS);
|
||||
}
|
||||
|
@ -19,6 +19,7 @@ static NTSTATUS FspFsvrtFileSystemControl(
|
||||
static NTSTATUS FspFsvolFileSystemControl(
|
||||
PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp);
|
||||
DRIVER_DISPATCH FspFileSystemControl;
|
||||
FSP_IOCOMPLETION_DISPATCH FspFileSystemControlComplete;
|
||||
|
||||
#ifdef ALLOC_PRAGMA
|
||||
#pragma alloc_text(PAGE, FspFsctlCreateVolume)
|
||||
@ -28,6 +29,7 @@ DRIVER_DISPATCH FspFileSystemControl;
|
||||
#pragma alloc_text(PAGE, FspFsvrtFileSystemControl)
|
||||
#pragma alloc_text(PAGE, FspFsvolFileSystemControl)
|
||||
#pragma alloc_text(PAGE, FspFileSystemControl)
|
||||
#pragma alloc_text(PAGE, FspFileSystemControlComplete)
|
||||
#endif
|
||||
|
||||
static NTSTATUS FspFsctlCreateVolume(
|
||||
@ -282,3 +284,10 @@ FspFileSystemControl(
|
||||
IRP_MN_USER_FS_REQUEST == IrpSp->MinorFunction ?
|
||||
IoctlCodeSym(IrpSp->Parameters.FileSystemControl.FsControlCode) : "");
|
||||
}
|
||||
|
||||
VOID FspFileSystemControlComplete(PIRP Irp, FSP_FSCTL_TRANSACT_RSP *Response)
|
||||
{
|
||||
PAGED_CODE();
|
||||
|
||||
FspCompleteRequest(Irp, STATUS_SUCCESS);
|
||||
}
|
||||
|
@ -6,7 +6,10 @@
|
||||
|
||||
#include <sys/driver.h>
|
||||
|
||||
VOID FspDispatchProcessedIrp(PIRP Irp, FSP_FSCTL_TRANSACT_RSP *Response);
|
||||
|
||||
#ifdef ALLOC_PRAGMA
|
||||
#pragma alloc_text(PAGE, FspDispatchProcessedIrp)
|
||||
#endif
|
||||
|
||||
VOID FspCompleteRequest(PIRP Irp, NTSTATUS Result)
|
||||
@ -26,4 +29,14 @@ VOID FspCompleteRequest(PIRP Irp, NTSTATUS Result)
|
||||
|
||||
VOID FspDispatchProcessedIrp(PIRP Irp, FSP_FSCTL_TRANSACT_RSP *Response)
|
||||
{
|
||||
PAGED_CODE();
|
||||
|
||||
PIO_STACK_LOCATION IrpSp = IoGetCurrentIrpStackLocation(Irp);
|
||||
|
||||
ASSERT(IRP_MJ_MAXIMUM_FUNCTION >= IrpSp->MajorFunction);
|
||||
ASSERT(0 != FspIoCompletionFunction[IrpSp->MajorFunction]);
|
||||
|
||||
FspIoCompletionFunction[IrpSp->MajorFunction](Irp, Response);
|
||||
}
|
||||
|
||||
FSP_IOCOMPLETION_DISPATCH *FspIoCompletionFunction[IRP_MJ_MAXIMUM_FUNCTION + 1];
|
||||
|
@ -9,10 +9,12 @@
|
||||
static NTSTATUS FspFsvolLockControl(
|
||||
PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp);
|
||||
DRIVER_DISPATCH FspLockControl;
|
||||
FSP_IOCOMPLETION_DISPATCH FspLockControlComplete;
|
||||
|
||||
#ifdef ALLOC_PRAGMA
|
||||
#pragma alloc_text(PAGE, FspFsvolLockControl)
|
||||
#pragma alloc_text(PAGE, FspLockControl)
|
||||
#pragma alloc_text(PAGE, FspLockControlComplete)
|
||||
#endif
|
||||
|
||||
static NTSTATUS FspFsvolLockControl(
|
||||
@ -40,3 +42,10 @@ FspLockControl(
|
||||
|
||||
FSP_LEAVE_MJ("", 0);
|
||||
}
|
||||
|
||||
VOID FspLockControlComplete(PIRP Irp, FSP_FSCTL_TRANSACT_RSP *Response)
|
||||
{
|
||||
PAGED_CODE();
|
||||
|
||||
FspCompleteRequest(Irp, STATUS_SUCCESS);
|
||||
}
|
||||
|
@ -9,10 +9,12 @@
|
||||
static NTSTATUS FspFsvolRead(
|
||||
PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp);
|
||||
DRIVER_DISPATCH FspRead;
|
||||
FSP_IOCOMPLETION_DISPATCH FspReadComplete;
|
||||
|
||||
#ifdef ALLOC_PRAGMA
|
||||
#pragma alloc_text(PAGE, FspFsvolRead)
|
||||
#pragma alloc_text(PAGE, FspRead)
|
||||
#pragma alloc_text(PAGE, FspReadComplete)
|
||||
#endif
|
||||
|
||||
static NTSTATUS FspFsvolRead(
|
||||
@ -40,3 +42,10 @@ FspRead(
|
||||
|
||||
FSP_LEAVE_MJ("", 0);
|
||||
}
|
||||
|
||||
VOID FspReadComplete(PIRP Irp, FSP_FSCTL_TRANSACT_RSP *Response)
|
||||
{
|
||||
PAGED_CODE();
|
||||
|
||||
FspCompleteRequest(Irp, STATUS_SUCCESS);
|
||||
}
|
||||
|
@ -12,12 +12,16 @@ static NTSTATUS FspFsvolSetSecurity(
|
||||
PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp);
|
||||
DRIVER_DISPATCH FspQuerySecurity;
|
||||
DRIVER_DISPATCH FspSetSecurity;
|
||||
FSP_IOCOMPLETION_DISPATCH FspQuerySecurityComplete;
|
||||
FSP_IOCOMPLETION_DISPATCH FspSetSecurityComplete;
|
||||
|
||||
#ifdef ALLOC_PRAGMA
|
||||
#pragma alloc_text(PAGE, FspFsvolQuerySecurity)
|
||||
#pragma alloc_text(PAGE, FspFsvolSetSecurity)
|
||||
#pragma alloc_text(PAGE, FspQuerySecurity)
|
||||
#pragma alloc_text(PAGE, FspSetSecurity)
|
||||
#pragma alloc_text(PAGE, FspQuerySecurityComplete)
|
||||
#pragma alloc_text(PAGE, FspSetSecurityComplete)
|
||||
#endif
|
||||
|
||||
static NTSTATUS FspFsvolQuerySecurity(
|
||||
@ -71,3 +75,17 @@ FspSetSecurity(
|
||||
|
||||
FSP_LEAVE_MJ("", 0);
|
||||
}
|
||||
|
||||
VOID FspQuerySecurityComplete(PIRP Irp, FSP_FSCTL_TRANSACT_RSP *Response)
|
||||
{
|
||||
PAGED_CODE();
|
||||
|
||||
FspCompleteRequest(Irp, STATUS_SUCCESS);
|
||||
}
|
||||
|
||||
VOID FspSetSecurityComplete(PIRP Irp, FSP_FSCTL_TRANSACT_RSP *Response)
|
||||
{
|
||||
PAGED_CODE();
|
||||
|
||||
FspCompleteRequest(Irp, STATUS_SUCCESS);
|
||||
}
|
||||
|
@ -9,10 +9,12 @@
|
||||
static NTSTATUS FspFsvolShutdown(
|
||||
PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp);
|
||||
DRIVER_DISPATCH FspShutdown;
|
||||
FSP_IOCOMPLETION_DISPATCH FspShutdownComplete;
|
||||
|
||||
#ifdef ALLOC_PRAGMA
|
||||
#pragma alloc_text(PAGE, FspFsvolShutdown)
|
||||
#pragma alloc_text(PAGE, FspShutdown)
|
||||
#pragma alloc_text(PAGE, FspShutdownComplete)
|
||||
#endif
|
||||
|
||||
static NTSTATUS FspFsvolShutdown(
|
||||
@ -40,3 +42,10 @@ FspShutdown(
|
||||
|
||||
FSP_LEAVE_MJ("", 0);
|
||||
}
|
||||
|
||||
VOID FspShutdownComplete(PIRP Irp, FSP_FSCTL_TRANSACT_RSP *Response)
|
||||
{
|
||||
PAGED_CODE();
|
||||
|
||||
FspCompleteRequest(Irp, STATUS_SUCCESS);
|
||||
}
|
||||
|
@ -12,12 +12,16 @@ static NTSTATUS FspFsvolSetVolumeInformation(
|
||||
PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp);
|
||||
DRIVER_DISPATCH FspQueryVolumeInformation;
|
||||
DRIVER_DISPATCH FspSetVolumeInformation;
|
||||
FSP_IOCOMPLETION_DISPATCH FspQueryVolumeInformationComplete;
|
||||
FSP_IOCOMPLETION_DISPATCH FspSetVolumeInformationComplete;
|
||||
|
||||
#ifdef ALLOC_PRAGMA
|
||||
#pragma alloc_text(PAGE, FspFsvolQueryVolumeInformation)
|
||||
#pragma alloc_text(PAGE, FspFsvolSetVolumeInformation)
|
||||
#pragma alloc_text(PAGE, FspQueryVolumeInformation)
|
||||
#pragma alloc_text(PAGE, FspSetVolumeInformation)
|
||||
#pragma alloc_text(PAGE, FspQueryVolumeInformationComplete)
|
||||
#pragma alloc_text(PAGE, FspSetVolumeInformationComplete)
|
||||
#endif
|
||||
|
||||
static NTSTATUS FspFsvolQueryVolumeInformation(
|
||||
@ -71,3 +75,17 @@ FspSetVolumeInformation(
|
||||
|
||||
FSP_LEAVE_MJ("", 0);
|
||||
}
|
||||
|
||||
VOID FspQueryVolumeInformationComplete(PIRP Irp, FSP_FSCTL_TRANSACT_RSP *Response)
|
||||
{
|
||||
PAGED_CODE();
|
||||
|
||||
FspCompleteRequest(Irp, STATUS_SUCCESS);
|
||||
}
|
||||
|
||||
VOID FspSetVolumeInformationComplete(PIRP Irp, FSP_FSCTL_TRANSACT_RSP *Response)
|
||||
{
|
||||
PAGED_CODE();
|
||||
|
||||
FspCompleteRequest(Irp, STATUS_SUCCESS);
|
||||
}
|
||||
|
@ -9,10 +9,12 @@
|
||||
static NTSTATUS FspFsvolWrite(
|
||||
PDEVICE_OBJECT DeviceObject, PIRP Irp, PIO_STACK_LOCATION IrpSp);
|
||||
DRIVER_DISPATCH FspWrite;
|
||||
VOID FspWriteComplete(PIRP Irp, FSP_FSCTL_TRANSACT_RSP *Response);
|
||||
|
||||
#ifdef ALLOC_PRAGMA
|
||||
#pragma alloc_text(PAGE, FspFsvolWrite)
|
||||
#pragma alloc_text(PAGE, FspWrite)
|
||||
#pragma alloc_text(PAGE, FspWriteComplete)
|
||||
#endif
|
||||
|
||||
static NTSTATUS FspFsvolWrite(
|
||||
@ -40,3 +42,10 @@ FspWrite(
|
||||
|
||||
FSP_LEAVE_MJ("", 0);
|
||||
}
|
||||
|
||||
VOID FspWriteComplete(PIRP Irp, FSP_FSCTL_TRANSACT_RSP *Response)
|
||||
{
|
||||
PAGED_CODE();
|
||||
|
||||
FspCompleteRequest(Irp, STATUS_SUCCESS);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user