mirror of
https://github.com/reactos/reactos.git
synced 2025-04-20 04:20:46 +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;
|
||||
|
||||
static VOID NpfsInitializeVcb(PNPFS_VCB Vcb);
|
||||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
NTSTATUS NTAPI
|
||||
|
@ -67,6 +69,9 @@ DriverEntry(PDRIVER_OBJECT DriverObject,
|
|||
|
||||
/* initialize the device extension */
|
||||
DeviceExtension = DeviceObject->DeviceExtension;
|
||||
|
||||
NpfsInitializeVcb(&DeviceExtension->Vcb);
|
||||
|
||||
InitializeListHead(&DeviceExtension->PipeListHead);
|
||||
InitializeListHead(&DeviceExtension->ThreadListHead);
|
||||
KeInitializeMutex(&DeviceExtension->PipeListLock, 0);
|
||||
|
@ -80,6 +85,22 @@ DriverEntry(PDRIVER_OBJECT DriverObject,
|
|||
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
|
||||
NpfsDbgPrint(ULONG Level, char *fmt, ...)
|
||||
{
|
||||
|
|
|
@ -11,20 +11,23 @@
|
|||
#define NPFS_DL_NONE 0x00000000
|
||||
#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;
|
||||
LIST_ENTRY ThreadListHead;
|
||||
KMUTEX PipeListLock;
|
||||
ULONG EmptyWaiterCount;
|
||||
ULONG MinQuota;
|
||||
ULONG DefaultQuota;
|
||||
ULONG MaxQuota;
|
||||
} NPFS_DEVICE_EXTENSION, *PNPFS_DEVICE_EXTENSION;
|
||||
/* Common node header */
|
||||
CSHORT NodeTypeCode;
|
||||
CSHORT NodeByteSize;
|
||||
|
||||
} NPFS_VCB, *PNPFS_VCB;
|
||||
|
||||
typedef struct _NPFS_FCB
|
||||
{
|
||||
FSRTL_COMMON_FCB_HEADER RFCB;
|
||||
FSRTL_COMMON_FCB_HEADER RFCB; /* Includes common node header */
|
||||
UNICODE_STRING PipeName;
|
||||
LIST_ENTRY PipeListEntry;
|
||||
KMUTEX CcbListLock;
|
||||
|
@ -46,6 +49,10 @@ typedef struct _NPFS_FCB
|
|||
|
||||
typedef struct _NPFS_CCB
|
||||
{
|
||||
/* Common node header */
|
||||
CSHORT NodeTypeCode;
|
||||
CSHORT NodeByteSize;
|
||||
|
||||
LIST_ENTRY CcbListEntry;
|
||||
struct _NPFS_CCB* OtherSide;
|
||||
struct ETHREAD *Thread;
|
||||
|
@ -68,6 +75,20 @@ typedef struct _NPFS_CCB
|
|||
FAST_MUTEX DataListLock; /* Data queue lock */
|
||||
} 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
|
||||
{
|
||||
LIST_ENTRY ListEntry;
|
||||
|
@ -91,7 +112,6 @@ typedef struct _NPFS_WAITER_ENTRY
|
|||
PNPFS_CCB Ccb;
|
||||
} NPFS_WAITER_ENTRY, *PNPFS_WAITER_ENTRY;
|
||||
|
||||
|
||||
extern NPAGED_LOOKASIDE_LIST NpfsPipeDataLookasideList;
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue