mirror of
https://github.com/reactos/reactos.git
synced 2025-06-19 16:15:21 +00:00
- Add fundamental VCB structure, and function to initialize it.
- Add common headers to all xCB structures. - All development is being done according to Rajeev Nagar's book and some parts are inspired by its accompanying FSD sample. svn path=/trunk/; revision=26636
This commit is contained in:
parent
e45d903111
commit
34aac7b904
2 changed files with 52 additions and 11 deletions
|
@ -15,6 +15,8 @@
|
||||||
|
|
||||||
ULONG NpfsDebugLevel = NPFS_DL_API_TRACE;
|
ULONG NpfsDebugLevel = NPFS_DL_API_TRACE;
|
||||||
|
|
||||||
|
static VOID NpfsInitializeVcb(PNPFS_VCB Vcb);
|
||||||
|
|
||||||
/* FUNCTIONS *****************************************************************/
|
/* FUNCTIONS *****************************************************************/
|
||||||
|
|
||||||
NTSTATUS NTAPI
|
NTSTATUS NTAPI
|
||||||
|
@ -67,6 +69,9 @@ DriverEntry(PDRIVER_OBJECT DriverObject,
|
||||||
|
|
||||||
/* initialize the device extension */
|
/* initialize the device extension */
|
||||||
DeviceExtension = DeviceObject->DeviceExtension;
|
DeviceExtension = DeviceObject->DeviceExtension;
|
||||||
|
|
||||||
|
NpfsInitializeVcb(&DeviceExtension->Vcb);
|
||||||
|
|
||||||
InitializeListHead(&DeviceExtension->PipeListHead);
|
InitializeListHead(&DeviceExtension->PipeListHead);
|
||||||
InitializeListHead(&DeviceExtension->ThreadListHead);
|
InitializeListHead(&DeviceExtension->ThreadListHead);
|
||||||
KeInitializeMutex(&DeviceExtension->PipeListLock, 0);
|
KeInitializeMutex(&DeviceExtension->PipeListLock, 0);
|
||||||
|
@ -80,6 +85,22 @@ DriverEntry(PDRIVER_OBJECT DriverObject,
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static VOID
|
||||||
|
NpfsInitializeVcb(PNPFS_VCB Vcb)
|
||||||
|
{
|
||||||
|
/* Initialize Volume Control Block, it's one per whole named pipe
|
||||||
|
file system. */
|
||||||
|
|
||||||
|
NpfsDbgPrint(NPFS_DL_API_TRACE, "NpfsInitializeVcb(), Vcb = %p\n", Vcb);
|
||||||
|
|
||||||
|
/* Zero-init whole VCB */
|
||||||
|
RtlZeroMemory(Vcb, sizeof(NPFS_VCB));
|
||||||
|
|
||||||
|
/* Initialize the common header */
|
||||||
|
Vcb->NodeTypeCode = NPFS_NODETYPE_VCB;
|
||||||
|
Vcb->NodeByteSize = sizeof(NPFS_VCB);
|
||||||
|
}
|
||||||
|
|
||||||
VOID NTAPI
|
VOID NTAPI
|
||||||
NpfsDbgPrint(ULONG Level, char *fmt, ...)
|
NpfsDbgPrint(ULONG Level, char *fmt, ...)
|
||||||
{
|
{
|
||||||
|
|
|
@ -11,20 +11,23 @@
|
||||||
#define NPFS_DL_NONE 0x00000000
|
#define NPFS_DL_NONE 0x00000000
|
||||||
#define NPFS_DL_API_TRACE 0x00000001
|
#define NPFS_DL_API_TRACE 0x00000001
|
||||||
|
|
||||||
typedef struct _NPFS_DEVICE_EXTENSION
|
/* Node type codes for NPFS */
|
||||||
|
#define NPFS_NODETYPE_VCB 0x401
|
||||||
|
#define NPFS_NODETYPE_DCB 0x402
|
||||||
|
#define NPFS_NODETYPE_FCB 0x404
|
||||||
|
#define NPFS_NODETYPE_CCB 0x406
|
||||||
|
|
||||||
|
typedef struct _NPFS_VCB
|
||||||
{
|
{
|
||||||
LIST_ENTRY PipeListHead;
|
/* Common node header */
|
||||||
LIST_ENTRY ThreadListHead;
|
CSHORT NodeTypeCode;
|
||||||
KMUTEX PipeListLock;
|
CSHORT NodeByteSize;
|
||||||
ULONG EmptyWaiterCount;
|
|
||||||
ULONG MinQuota;
|
} NPFS_VCB, *PNPFS_VCB;
|
||||||
ULONG DefaultQuota;
|
|
||||||
ULONG MaxQuota;
|
|
||||||
} NPFS_DEVICE_EXTENSION, *PNPFS_DEVICE_EXTENSION;
|
|
||||||
|
|
||||||
typedef struct _NPFS_FCB
|
typedef struct _NPFS_FCB
|
||||||
{
|
{
|
||||||
FSRTL_COMMON_FCB_HEADER RFCB;
|
FSRTL_COMMON_FCB_HEADER RFCB; /* Includes common node header */
|
||||||
UNICODE_STRING PipeName;
|
UNICODE_STRING PipeName;
|
||||||
LIST_ENTRY PipeListEntry;
|
LIST_ENTRY PipeListEntry;
|
||||||
KMUTEX CcbListLock;
|
KMUTEX CcbListLock;
|
||||||
|
@ -46,6 +49,10 @@ typedef struct _NPFS_FCB
|
||||||
|
|
||||||
typedef struct _NPFS_CCB
|
typedef struct _NPFS_CCB
|
||||||
{
|
{
|
||||||
|
/* Common node header */
|
||||||
|
CSHORT NodeTypeCode;
|
||||||
|
CSHORT NodeByteSize;
|
||||||
|
|
||||||
LIST_ENTRY CcbListEntry;
|
LIST_ENTRY CcbListEntry;
|
||||||
struct _NPFS_CCB* OtherSide;
|
struct _NPFS_CCB* OtherSide;
|
||||||
struct ETHREAD *Thread;
|
struct ETHREAD *Thread;
|
||||||
|
@ -68,6 +75,20 @@ typedef struct _NPFS_CCB
|
||||||
FAST_MUTEX DataListLock; /* Data queue lock */
|
FAST_MUTEX DataListLock; /* Data queue lock */
|
||||||
} NPFS_CCB, *PNPFS_CCB;
|
} NPFS_CCB, *PNPFS_CCB;
|
||||||
|
|
||||||
|
typedef struct _NPFS_DEVICE_EXTENSION
|
||||||
|
{
|
||||||
|
LIST_ENTRY PipeListHead;
|
||||||
|
LIST_ENTRY ThreadListHead;
|
||||||
|
KMUTEX PipeListLock;
|
||||||
|
ULONG EmptyWaiterCount;
|
||||||
|
ULONG MinQuota;
|
||||||
|
ULONG DefaultQuota;
|
||||||
|
ULONG MaxQuota;
|
||||||
|
|
||||||
|
NPFS_VCB Vcb;
|
||||||
|
} NPFS_DEVICE_EXTENSION, *PNPFS_DEVICE_EXTENSION;
|
||||||
|
|
||||||
|
|
||||||
typedef struct _NPFS_CONTEXT
|
typedef struct _NPFS_CONTEXT
|
||||||
{
|
{
|
||||||
LIST_ENTRY ListEntry;
|
LIST_ENTRY ListEntry;
|
||||||
|
@ -91,7 +112,6 @@ typedef struct _NPFS_WAITER_ENTRY
|
||||||
PNPFS_CCB Ccb;
|
PNPFS_CCB Ccb;
|
||||||
} NPFS_WAITER_ENTRY, *PNPFS_WAITER_ENTRY;
|
} NPFS_WAITER_ENTRY, *PNPFS_WAITER_ENTRY;
|
||||||
|
|
||||||
|
|
||||||
extern NPAGED_LOOKASIDE_LIST NpfsPipeDataLookasideList;
|
extern NPAGED_LOOKASIDE_LIST NpfsPipeDataLookasideList;
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue