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