diff options
author | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
---|---|---|
committer | Adam <you@example.com> | 2020-05-17 05:51:50 +0200 |
commit | e611b132f9b8abe35b362e5870b74bce94a1e58e (patch) | |
tree | a5781d2ec0e085eeca33cf350cf878f2efea6fe5 /private/ntos/bowser/fspdisp.h | |
download | NT4.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.h | 104 |
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_ |