mirror of
https://github.com/winfsp/winfsp.git
synced 2025-04-22 16:33:02 -05:00
sys: WIP
This commit is contained in:
parent
1a07196686
commit
7c372f9eab
@ -19,6 +19,17 @@ FspCleanup(
|
|||||||
{
|
{
|
||||||
FSP_ENTER(PAGED_CODE());
|
FSP_ENTER(PAGED_CODE());
|
||||||
|
|
||||||
|
ASSERT(IRP_MJ_CLEANUP == IoGetCurrentIrpStackLocation(Irp)->MajorFunction);
|
||||||
|
|
||||||
|
if (FspFileSystemDeviceExtensionKind == FspDeviceExtension(DeviceObject)->Kind)
|
||||||
|
{
|
||||||
|
Result = STATUS_SUCCESS;
|
||||||
|
Irp->IoStatus.Status = Result;
|
||||||
|
Irp->IoStatus.Information = 0;
|
||||||
|
IoCompleteRequest(Irp, FSP_IO_INCREMENT);
|
||||||
|
FSP_RETURN();
|
||||||
|
}
|
||||||
|
|
||||||
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
Result = STATUS_INVALID_DEVICE_REQUEST;
|
Result = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
|
@ -19,6 +19,17 @@ FspClose(
|
|||||||
{
|
{
|
||||||
FSP_ENTER(PAGED_CODE());
|
FSP_ENTER(PAGED_CODE());
|
||||||
|
|
||||||
|
ASSERT(IRP_MJ_CLOSE == IoGetCurrentIrpStackLocation(Irp)->MajorFunction);
|
||||||
|
|
||||||
|
if (FspFileSystemDeviceExtensionKind == FspDeviceExtension(DeviceObject)->Kind)
|
||||||
|
{
|
||||||
|
Result = STATUS_SUCCESS;
|
||||||
|
Irp->IoStatus.Status = Result;
|
||||||
|
Irp->IoStatus.Information = 0;
|
||||||
|
IoCompleteRequest(Irp, FSP_IO_INCREMENT);
|
||||||
|
FSP_RETURN();
|
||||||
|
}
|
||||||
|
|
||||||
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
Result = STATUS_INVALID_DEVICE_REQUEST;
|
Result = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
|
@ -19,6 +19,17 @@ FspCreate(
|
|||||||
{
|
{
|
||||||
FSP_ENTER(PAGED_CODE());
|
FSP_ENTER(PAGED_CODE());
|
||||||
|
|
||||||
|
ASSERT(IRP_MJ_CREATE == IoGetCurrentIrpStackLocation(Irp)->MajorFunction);
|
||||||
|
|
||||||
|
if (FspFileSystemDeviceExtensionKind == FspDeviceExtension(DeviceObject)->Kind)
|
||||||
|
{
|
||||||
|
Result = STATUS_SUCCESS;
|
||||||
|
Irp->IoStatus.Status = Result;
|
||||||
|
Irp->IoStatus.Information = FILE_OPENED;
|
||||||
|
IoCompleteRequest(Irp, FSP_IO_INCREMENT);
|
||||||
|
FSP_RETURN();
|
||||||
|
}
|
||||||
|
|
||||||
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
Result = STATUS_INVALID_DEVICE_REQUEST;
|
Result = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
|
@ -19,6 +19,8 @@ FspDeviceControl(
|
|||||||
{
|
{
|
||||||
FSP_ENTER(PAGED_CODE());
|
FSP_ENTER(PAGED_CODE());
|
||||||
|
|
||||||
|
ASSERT(IRP_MJ_DEVICE_CONTROL == IoGetCurrentIrpStackLocation(Irp)->MajorFunction);
|
||||||
|
|
||||||
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
Result = STATUS_INVALID_DEVICE_REQUEST;
|
Result = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
|
@ -19,6 +19,8 @@ FspDirectoryControl(
|
|||||||
{
|
{
|
||||||
FSP_ENTER(PAGED_CODE());
|
FSP_ENTER(PAGED_CODE());
|
||||||
|
|
||||||
|
ASSERT(IRP_MJ_DIRECTORY_CONTROL == IoGetCurrentIrpStackLocation(Irp)->MajorFunction);
|
||||||
|
|
||||||
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
Result = STATUS_INVALID_DEVICE_REQUEST;
|
Result = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
|
@ -24,10 +24,12 @@ DriverEntry(
|
|||||||
/* create the file system device object */
|
/* create the file system device object */
|
||||||
UNICODE_STRING DeviceName;
|
UNICODE_STRING DeviceName;
|
||||||
RtlInitUnicodeString(&DeviceName, L"\\Device\\" DEVICE_NAME);
|
RtlInitUnicodeString(&DeviceName, L"\\Device\\" DEVICE_NAME);
|
||||||
Result = IoCreateDevice(DriverObject, 0, &DeviceName, FILE_DEVICE_FILE_SYSTEM, 0, FALSE,
|
Result = IoCreateDevice(DriverObject,
|
||||||
&FspDeviceObject);
|
sizeof(FSP_FILE_SYSTEM_DEVICE_EXTENSION), &DeviceName, FILE_DEVICE_FILE_SYSTEM, 0, FALSE,
|
||||||
|
&FspFileSystemDeviceObject);
|
||||||
if (!NT_SUCCESS(Result))
|
if (!NT_SUCCESS(Result))
|
||||||
FSP_RETURN();
|
FSP_RETURN();
|
||||||
|
FspDeviceExtension(FspFileSystemDeviceObject)->Kind = FspFileSystemDeviceExtensionKind;
|
||||||
|
|
||||||
/* setup the driver object */
|
/* setup the driver object */
|
||||||
DriverObject->DriverUnload = FspUnload;
|
DriverObject->DriverUnload = FspUnload;
|
||||||
@ -96,7 +98,7 @@ DriverEntry(
|
|||||||
* Register as a file system; this informs all filter drivers.
|
* Register as a file system; this informs all filter drivers.
|
||||||
* Future drivers will *not* be informed because we are a FILE_DEVICE_FILE_SYSTEM!
|
* Future drivers will *not* be informed because we are a FILE_DEVICE_FILE_SYSTEM!
|
||||||
*/
|
*/
|
||||||
IoRegisterFileSystem(FspDeviceObject);
|
IoRegisterFileSystem(FspFileSystemDeviceObject);
|
||||||
|
|
||||||
FSP_LEAVE("DriverObject->DriverName=\"%wZ\", RegistryPath=\"%wZ\"",
|
FSP_LEAVE("DriverObject->DriverName=\"%wZ\", RegistryPath=\"%wZ\"",
|
||||||
&DriverObject->DriverName, RegistryPath);
|
&DriverObject->DriverName, RegistryPath);
|
||||||
@ -108,14 +110,14 @@ FspUnload(
|
|||||||
{
|
{
|
||||||
FSP_ENTER_VOID(PAGED_CODE());
|
FSP_ENTER_VOID(PAGED_CODE());
|
||||||
|
|
||||||
if (0 != FspDeviceObject)
|
if (0 != FspFileSystemDeviceObject)
|
||||||
{
|
{
|
||||||
IoDeleteDevice(FspDeviceObject);
|
IoDeleteDevice(FspFileSystemDeviceObject);
|
||||||
FspDeviceObject = 0;
|
FspFileSystemDeviceObject = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
FSP_LEAVE_VOID("DriverObject->DriverName=\"%wZ\"",
|
FSP_LEAVE_VOID("DriverObject->DriverName=\"%wZ\"",
|
||||||
&DriverObject->DriverName);
|
&DriverObject->DriverName);
|
||||||
}
|
}
|
||||||
|
|
||||||
PDEVICE_OBJECT FspDeviceObject;
|
PDEVICE_OBJECT FspFileSystemDeviceObject;
|
||||||
|
@ -73,6 +73,40 @@ const char *NtStatusSym(NTSTATUS Status);
|
|||||||
goto fsp_leave_label; \
|
goto fsp_leave_label; \
|
||||||
} while (0,0)
|
} while (0,0)
|
||||||
|
|
||||||
|
/* types */
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
FspFileSystemDeviceExtensionKind = 0,
|
||||||
|
FspVolumeDeviceExtensionKind,
|
||||||
|
};
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
UINT8 Kind;
|
||||||
|
} FSP_DEVICE_EXTENSION;
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
FSP_DEVICE_EXTENSION Base;
|
||||||
|
} FSP_FILE_SYSTEM_DEVICE_EXTENSION;
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
FSP_DEVICE_EXTENSION Base;
|
||||||
|
} FSP_VOLUME_DEVICE_EXTENSION;
|
||||||
|
static inline
|
||||||
|
FSP_DEVICE_EXTENSION *FspDeviceExtension(PDEVICE_OBJECT DeviceObject)
|
||||||
|
{
|
||||||
|
return DeviceObject->DeviceExtension;
|
||||||
|
}
|
||||||
|
static inline
|
||||||
|
FSP_FILE_SYSTEM_DEVICE_EXTENSION *FspFileSystemDeviceExtension(PDEVICE_OBJECT DeviceObject)
|
||||||
|
{
|
||||||
|
return DeviceObject->DeviceExtension;
|
||||||
|
}
|
||||||
|
static inline
|
||||||
|
FSP_VOLUME_DEVICE_EXTENSION *FspVolumeDeviceExtension(PDEVICE_OBJECT DeviceObject)
|
||||||
|
{
|
||||||
|
return DeviceObject->DeviceExtension;
|
||||||
|
}
|
||||||
|
|
||||||
/* driver major functions */
|
/* driver major functions */
|
||||||
DRIVER_DISPATCH FspCleanup;
|
DRIVER_DISPATCH FspCleanup;
|
||||||
DRIVER_DISPATCH FspClose;
|
DRIVER_DISPATCH FspClose;
|
||||||
@ -106,7 +140,10 @@ FAST_IO_ACQUIRE_FOR_CCFLUSH FspAcquireForCcFlush;
|
|||||||
FAST_IO_RELEASE_FOR_CCFLUSH FspReleaseForCcFlush;
|
FAST_IO_RELEASE_FOR_CCFLUSH FspReleaseForCcFlush;
|
||||||
|
|
||||||
/* extern */
|
/* extern */
|
||||||
extern PDEVICE_OBJECT FspDeviceObject;
|
extern PDEVICE_OBJECT FspFileSystemDeviceObject;
|
||||||
|
|
||||||
|
/* I/O increment */
|
||||||
|
#define FSP_IO_INCREMENT IO_NETWORK_INCREMENT
|
||||||
|
|
||||||
/* disable warnings */
|
/* disable warnings */
|
||||||
#pragma warning(disable:4100) /* unreferenced formal parameter */
|
#pragma warning(disable:4100) /* unreferenced formal parameter */
|
||||||
|
@ -21,6 +21,8 @@ FspQueryEa(
|
|||||||
{
|
{
|
||||||
FSP_ENTER(PAGED_CODE());
|
FSP_ENTER(PAGED_CODE());
|
||||||
|
|
||||||
|
ASSERT(IRP_MJ_QUERY_EA == IoGetCurrentIrpStackLocation(Irp)->MajorFunction);
|
||||||
|
|
||||||
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
Result = STATUS_INVALID_DEVICE_REQUEST;
|
Result = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
@ -35,6 +37,8 @@ FspSetEa(
|
|||||||
{
|
{
|
||||||
FSP_ENTER(PAGED_CODE());
|
FSP_ENTER(PAGED_CODE());
|
||||||
|
|
||||||
|
ASSERT(IRP_MJ_SET_EA == IoGetCurrentIrpStackLocation(Irp)->MajorFunction);
|
||||||
|
|
||||||
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
Result = STATUS_INVALID_DEVICE_REQUEST;
|
Result = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
|
@ -21,6 +21,8 @@ FspQueryInformation(
|
|||||||
{
|
{
|
||||||
FSP_ENTER(PAGED_CODE());
|
FSP_ENTER(PAGED_CODE());
|
||||||
|
|
||||||
|
ASSERT(IRP_MJ_QUERY_INFORMATION == IoGetCurrentIrpStackLocation(Irp)->MajorFunction);
|
||||||
|
|
||||||
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
Result = STATUS_INVALID_DEVICE_REQUEST;
|
Result = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
@ -35,6 +37,8 @@ FspSetInformation(
|
|||||||
{
|
{
|
||||||
FSP_ENTER(PAGED_CODE());
|
FSP_ENTER(PAGED_CODE());
|
||||||
|
|
||||||
|
ASSERT(IRP_MJ_SET_INFORMATION == IoGetCurrentIrpStackLocation(Irp)->MajorFunction);
|
||||||
|
|
||||||
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
Result = STATUS_INVALID_DEVICE_REQUEST;
|
Result = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
|
@ -19,6 +19,8 @@ FspFlushBuffers(
|
|||||||
{
|
{
|
||||||
FSP_ENTER(PAGED_CODE());
|
FSP_ENTER(PAGED_CODE());
|
||||||
|
|
||||||
|
ASSERT(IRP_MJ_FLUSH_BUFFERS == IoGetCurrentIrpStackLocation(Irp)->MajorFunction);
|
||||||
|
|
||||||
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
Result = STATUS_INVALID_DEVICE_REQUEST;
|
Result = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
|
@ -19,6 +19,8 @@ FspFileSystemControl(
|
|||||||
{
|
{
|
||||||
FSP_ENTER(PAGED_CODE());
|
FSP_ENTER(PAGED_CODE());
|
||||||
|
|
||||||
|
ASSERT(IRP_MJ_FILE_SYSTEM_CONTROL == IoGetCurrentIrpStackLocation(Irp)->MajorFunction);
|
||||||
|
|
||||||
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
Result = STATUS_INVALID_DEVICE_REQUEST;
|
Result = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
|
@ -19,6 +19,8 @@ FspLockControl(
|
|||||||
{
|
{
|
||||||
FSP_ENTER(PAGED_CODE());
|
FSP_ENTER(PAGED_CODE());
|
||||||
|
|
||||||
|
ASSERT(IRP_MJ_LOCK_CONTROL == IoGetCurrentIrpStackLocation(Irp)->MajorFunction);
|
||||||
|
|
||||||
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
Result = STATUS_INVALID_DEVICE_REQUEST;
|
Result = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
|
@ -19,6 +19,8 @@ FspRead(
|
|||||||
{
|
{
|
||||||
FSP_ENTER(PAGED_CODE());
|
FSP_ENTER(PAGED_CODE());
|
||||||
|
|
||||||
|
ASSERT(IRP_MJ_READ == IoGetCurrentIrpStackLocation(Irp)->MajorFunction);
|
||||||
|
|
||||||
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
Result = STATUS_INVALID_DEVICE_REQUEST;
|
Result = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
|
@ -21,6 +21,8 @@ FspQuerySecurity(
|
|||||||
{
|
{
|
||||||
FSP_ENTER(PAGED_CODE());
|
FSP_ENTER(PAGED_CODE());
|
||||||
|
|
||||||
|
ASSERT(IRP_MJ_QUERY_SECURITY == IoGetCurrentIrpStackLocation(Irp)->MajorFunction);
|
||||||
|
|
||||||
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
Result = STATUS_INVALID_DEVICE_REQUEST;
|
Result = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
@ -35,6 +37,8 @@ FspSetSecurity(
|
|||||||
{
|
{
|
||||||
FSP_ENTER(PAGED_CODE());
|
FSP_ENTER(PAGED_CODE());
|
||||||
|
|
||||||
|
ASSERT(IRP_MJ_SET_SECURITY == IoGetCurrentIrpStackLocation(Irp)->MajorFunction);
|
||||||
|
|
||||||
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
Result = STATUS_INVALID_DEVICE_REQUEST;
|
Result = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
|
@ -19,6 +19,8 @@ FspShutdown(
|
|||||||
{
|
{
|
||||||
FSP_ENTER(PAGED_CODE());
|
FSP_ENTER(PAGED_CODE());
|
||||||
|
|
||||||
|
ASSERT(IRP_MJ_SHUTDOWN == IoGetCurrentIrpStackLocation(Irp)->MajorFunction);
|
||||||
|
|
||||||
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
Result = STATUS_INVALID_DEVICE_REQUEST;
|
Result = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
|
@ -21,6 +21,8 @@ FspQueryVolumeInformation(
|
|||||||
{
|
{
|
||||||
FSP_ENTER(PAGED_CODE());
|
FSP_ENTER(PAGED_CODE());
|
||||||
|
|
||||||
|
ASSERT(IRP_MJ_QUERY_VOLUME_INFORMATION == IoGetCurrentIrpStackLocation(Irp)->MajorFunction);
|
||||||
|
|
||||||
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
Result = STATUS_INVALID_DEVICE_REQUEST;
|
Result = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
@ -35,6 +37,8 @@ FspSetVolumeInformation(
|
|||||||
{
|
{
|
||||||
FSP_ENTER(PAGED_CODE());
|
FSP_ENTER(PAGED_CODE());
|
||||||
|
|
||||||
|
ASSERT(IRP_MJ_SET_VOLUME_INFORMATION == IoGetCurrentIrpStackLocation(Irp)->MajorFunction);
|
||||||
|
|
||||||
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
Result = STATUS_INVALID_DEVICE_REQUEST;
|
Result = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
|
@ -19,6 +19,8 @@ FspWrite(
|
|||||||
{
|
{
|
||||||
FSP_ENTER(PAGED_CODE());
|
FSP_ENTER(PAGED_CODE());
|
||||||
|
|
||||||
|
ASSERT(IRP_MJ_WRITE == IoGetCurrentIrpStackLocation(Irp)->MajorFunction);
|
||||||
|
|
||||||
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
Irp->IoStatus.Status = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||||
Result = STATUS_INVALID_DEVICE_REQUEST;
|
Result = STATUS_INVALID_DEVICE_REQUEST;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user