This commit is contained in:
Bill Zissimopoulos 2015-11-21 21:25:19 -08:00
parent 14b1f75ac7
commit d6f1702af7
15 changed files with 458 additions and 28 deletions

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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\"], "

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}