summaryrefslogtreecommitdiffstats
path: root/private/ntos/bowser/fspdisp.h
diff options
context:
space:
mode:
authorAdam <you@example.com>2020-05-17 05:51:50 +0200
committerAdam <you@example.com>2020-05-17 05:51:50 +0200
commite611b132f9b8abe35b362e5870b74bce94a1e58e (patch)
treea5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/ntos/bowser/fspdisp.h
downloadNT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.gz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.bz2
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.lz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.xz
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.tar.zst
NT4.0-e611b132f9b8abe35b362e5870b74bce94a1e58e.zip
Diffstat (limited to 'private/ntos/bowser/fspdisp.h')
-rw-r--r--private/ntos/bowser/fspdisp.h104
1 files changed, 104 insertions, 0 deletions
diff --git a/private/ntos/bowser/fspdisp.h b/private/ntos/bowser/fspdisp.h
new file mode 100644
index 000000000..994db3a5d
--- /dev/null
+++ b/private/ntos/bowser/fspdisp.h
@@ -0,0 +1,104 @@
+/*++
+
+Copyright (c) 1990 Microsoft Corporation
+
+Module Name:
+
+ fspdisp.h
+
+Abstract:
+
+ This module defines the data structures and routines used for the FSP
+ dispatching code.
+
+
+Author:
+
+ Larry Osterman (LarryO) 13-Aug-1990
+
+Revision History:
+
+ 13-Aug-1990 LarryO
+
+ Created
+
+--*/
+#ifndef _FSPDISP_
+#define _FSPDISP_
+
+
+//
+// Define communications data area between FSD and FSP. This is done through
+// the use of a Device Object. This model allows one device object to be
+// created for each volume that is/has been mounted in the system. That is,
+// each time a volume is mounted, the file system creates a device object to
+// represent it so that the I/O system can vector directly to the proper file
+// system. The file system then uses information in the device object and in
+// the file object to locate and synchronize access to its database of open
+// file data structures (often called File Control Blocks - or, FCBs), Volume
+// Control Blocks (VCBs), Map Control Blocks (MCBs), etc.
+//
+// The event and spinlock will be used to control access to the queue of IRPs.
+// The IRPs are passed from the FSD to the FSP by inserting them onto the work
+// queue in an interlocked manner and then setting the event to the Signaled
+// state. The event is an autoclearing type so the FSP simply wakes up when
+// the event is Signaled and begins processing entries in the queue.
+//
+// Other data in this record should contain any information which both the FSD
+// and the FSP need to share. For example, a list of all of the open files
+// might be something that both should be able to see. Notice that all data
+// placed in this area must be allocated from paged or non-paged pool.
+//
+
+typedef struct _BOWSER_FS_DEVICE_OBJECT {
+ DEVICE_OBJECT DeviceObject;
+
+} BOWSER_FS_DEVICE_OBJECT, *PBOWSER_FS_DEVICE_OBJECT;
+
+
+NTSTATUS
+BowserpInitializeFsp(
+ PDRIVER_OBJECT BowserDriverObject
+ );
+
+VOID
+BowserpUninitializeFsp (
+ VOID
+ );
+
+VOID
+BowserWorkerDispatch (
+ PVOID Context
+ );
+
+NTSTATUS
+BowserFsdPostToFsp(
+ IN PBOWSER_FS_DEVICE_OBJECT DeviceObject,
+ IN PIRP Irp
+ );
+
+NTSTATUS
+BowserFspQueryInformationFile (
+ IN PBOWSER_FS_DEVICE_OBJECT DeviceObject,
+ IN PIRP Irp
+ );
+
+NTSTATUS
+BowserFspQueryVolumeInformationFile (
+ IN PBOWSER_FS_DEVICE_OBJECT DeviceObject,
+ IN PIRP Irp
+ );
+
+NTSTATUS
+BowserFspDeviceIoControlFile (
+ IN PBOWSER_FS_DEVICE_OBJECT DeviceObject,
+ IN PIRP Irp
+ );
+
+ VOID
+BowserIdleTimer (
+ IN PDEVICE_OBJECT DeviceObject,
+ IN PVOID Context
+ );
+
+#endif // _FSPDISP_