ReactOS 0.4.17-dev-1196-gb6224c3
npfs.h
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS Named Pipe FileSystem
3 * LICENSE: BSD - See COPYING.ARM in the top level directory
4 * FILE: drivers/filesystems/npfs/npfs.h
5 * PURPOSE: Named Pipe FileSystem Header
6 * PROGRAMMERS: ReactOS Portable Systems Group
7 */
8
9#ifndef _NPFS_PCH_
10#define _NPFS_PCH_
11
12/* INCLUDES *******************************************************************/
13
14/* System Headers */
15#include <ntifs.h>
16#include <ndk/obfuncs.h>
17#include <ndk/psfuncs.h>
18#include <pseh/pseh2.h>
19//#define UNIMPLEMENTED
20//#define DPRINT1 DbgPrint
21
22#define NDEBUG
23#include <debug.h>
24#define TRACE(...) /* DPRINT1("%s: ", __FUNCTION__); DbgPrint(__VA_ARGS__) */
25
26/* Allow Microsoft Extensions */
27#ifdef _MSC_VER
28#pragma warning(disable:4201)
29#pragma warning(disable:4214)
30#pragma warning(disable:4100)
31#endif
32
33#define MIN_INDEXED_LENGTH 5
34#define MAX_INDEXED_LENGTH 9
35
36/* TYPEDEFS & DEFINES *********************************************************/
37
38//
39// Pool Tags for NPFS (from pooltag.txt)
40//
41// Npf* -npfs.sys - Npfs Allocations
42// NpFc - npfs.sys - CCB, client control block
43// NpFf - npfs.sys - FCB, file control block
44// NpFC - npfs.sys - ROOT_DCB CCB
45// NpFD - npfs.sys - DCB, directory block
46// NpFg - npfs.sys - Global storage
47// NpFi - npfs.sys - NPFS client info buffer.
48// NpFn - npfs.sys - Name block
49// NpFq - npfs.sys - Query template buffer used for directory query
50// NpFr - npfs.sys - DATA_ENTRY records(read / write buffers)
51// NpFs - npfs.sys - Client security context
52// NpFw - npfs.sys - Write block
53// NpFW - npfs.sys - Write block
54#define NPFS_CCB_TAG 'cFpN'
55#define NPFS_ROOT_DCB_CCB_TAG 'CFpN'
56#define NPFS_DCB_TAG 'DFpN'
57#define NPFS_FCB_TAG 'fFpN'
58#define NPFS_GLOBAL_TAG 'gFpN'
59#define NPFS_CLIENT_INFO_TAG 'iFpN'
60#define NPFS_NAME_BLOCK_TAG 'nFpN'
61#define NPFS_QUERY_TEMPLATE_TAG 'qFpN'
62#define NPFS_DATA_ENTRY_TAG 'rFpN'
63#define NPFS_CLIENT_SEC_CTX_TAG 'sFpN'
64#define NPFS_WAIT_BLOCK_TAG 'tFpN'
65#define NPFS_WRITE_BLOCK_TAG 'wFpN'
66
67//
68// NPFS bugchecking support
69//
70// We define the NpBugCheck macro which triggers a NPFS_FILE_SYSTEM bugcheck
71// containing the source file ID number and the line where it was emitted, as
72// described in the MSDN article "Bug Check 0x25: NPFS_FILE_SYSTEM".
73//
74// The bugcheck emits 4 ULONGs; the first one is made, in its high word, by
75// the current source file ID and in its low word, by the line number; the
76// three other ones are user-defined.
77//
78// In order to avoid redefinition of the same file ID in different source files,
79// we gather all of them here, so that you will have to add (or remove) a new
80// one as soon as you add (or remove) a source file from the NPFS driver code.
81//
82// To use the NpBugCheck macro in a source file, define at its beginning
83// the constant NPFS_BUGCHECK_FILE_ID with one of the following file IDs,
84// then use the bugcheck macro wherever you want.
85//
86#define NPFS_BUGCHECK_CLEANUP 0x0001
87#define NPFS_BUGCHECK_CLOSE 0x0002
88#define NPFS_BUGCHECK_CREATE 0x0003
89#define NPFS_BUGCHECK_DATASUP 0x0004
90#define NPFS_BUGCHECK_FILEINFO 0x0005
91#define NPFS_BUGCHECK_FILEOBSUP 0x0006
92#define NPFS_BUGCHECK_FLUSHBUF 0x0007
93#define NPFS_BUGCHECK_FSCTRL 0x0008
94#define NPFS_BUGCHECK_MAIN 0x0009
95#define NPFS_BUGCHECK_PREFXSUP 0x000a
96#define NPFS_BUGCHECK_READ 0x000b
97#define NPFS_BUGCHECK_READSUP 0x000c
98#define NPFS_BUGCHECK_SECURSUP 0x000d
99#define NPFS_BUGCHECK_SEINFO 0x000e
100#define NPFS_BUGCHECK_STATESUP 0x000f
101#define NPFS_BUGCHECK_STRUCSUP 0x0010
102#define NPFS_BUGCHECK_VOLINFO 0x0011
103#define NPFS_BUGCHECK_WAITSUP 0x0012
104#define NPFS_BUGCHECK_WRITE 0x0013
105#define NPFS_BUGCHECK_WRITESUP 0x0014
106
107#define NpBugCheck(p1, p2, p3) \
108 KeBugCheckEx(NPFS_FILE_SYSTEM, \
109 (NPFS_BUGCHECK_FILE_ID << 16) | __LINE__, \
110 (p1), (p2), (p3))
111
112/* Node Type Codes for NPFS */
113#define NPFS_NTC_VCB 1
114#define NPFS_NTC_ROOT_DCB 2
115#define NPFS_NTC_FCB 4
116#define NPFS_NTC_CCB 6
117#define NPFS_NTC_NONPAGED_CCB 7
118#define NPFS_NTC_ROOT_DCB_CCB 8
120
121/* Data Queue States */
123{
126 Empty = 2
128
129/* Data Queue Entry Types */
131{
135
136/* An Input or Output Data Queue. Each CCB has two of these. */
137typedef struct _NP_DATA_QUEUE
138{
147
148/* The Entries that go into the Queue */
150{
158
159/* A Wait Queue. Only the VCB has one of these. */
160typedef struct _NP_WAIT_QUEUE
161{
165
166/* The Entries in the Queue above, one for each Waiter. */
168{
176
177/* The event buffer in the NonPaged CCB */
178typedef struct _NP_EVENT_BUFFER
179{
182
183/* The CCB for the Root DCB */
184typedef struct _NP_ROOT_DCB_CCB
185{
190
191/* The header that both FCB and DCB share */
192typedef struct _NP_CB_HEADER
193{
201
202/* The footer that both FCB and DCB share */
203typedef struct _NP_CB_FOOTER
204{
209
210/* A Directory Control Block (DCB) */
211typedef struct _NP_DCB
212{
213 /* Common Header */
215
216 /* DCB-specific data */
220#ifndef _WIN64
222#endif
223
224 /* Common Footer */
227
228/* A File Control BLock (FCB) */
229typedef struct _NP_FCB
230{
231 /* Common Header */
233
234 /* FCB-specific fields */
240#ifdef _WIN64
241 PVOID Pad[2];
242#endif
243
244 /* Common Footer */
247
249
250/* The nonpaged portion of the CCB */
251typedef struct _NP_NONPAGED_CCB
252{
257
258/* A Client Control Block (CCB) */
259typedef struct _NP_CCB
260{
276
277/* A Volume Control Block (VCB) */
278typedef struct _NP_VCB
279{
288
289extern PNP_VCB NpVcb;
290
291/* Defines an alias */
292typedef struct _NPFS_ALIAS
293{
298
299/* Private structure used to enumerate the alias values */
301{
310
313
314/* This structure is actually a user-mode structure and should go into a share header */
315typedef struct _NP_CLIENT_PROCESS
316{
322
323/* FUNCTIONS ******************************************************************/
324
325/* Functions to lock/unlock the global VCB lock */
326
328VOID
330{
331 /* Acquire the lock in shared mode */
333}
334
336VOID
338{
339 /* Acquire the lock in exclusive mode */
341}
342
344VOID
346{
347 /* Release the lock */
349}
350
351//
352// Function to process deferred IRPs outside the VCB lock but still within the
353// critical region
354//
356VOID
358{
359 PLIST_ENTRY ThisEntry, NextEntry;
360 PIRP Irp;
361
362 /* Loop the list */
363 ThisEntry = DeferredList->Flink;
364 while (ThisEntry != DeferredList)
365 {
366 /* Remember the next entry, but don't switch to it yet */
367 NextEntry = ThisEntry->Flink;
368
369 /* Complete the IRP for this entry */
370 Irp = CONTAINING_RECORD(ThisEntry, IRP, Tail.Overlay.ListEntry);
372
373 /* And now switch to the next one */
374 ThisEntry = NextEntry;
375 }
376}
377
378LONG
379NTAPI
381 _In_ PCUNICODE_STRING String1,
383
385NTAPI
387 IN PVOID Buffer);
388
389VOID
390NTAPI
392
394NTAPI
396
398NTAPI
401
402PIRP
403NTAPI
407
409NTAPI
410NpAddDataQueueEntry(IN ULONG NamedPipeEnd,
411 IN PNP_CCB Ccb,
412 IN PNP_DATA_QUEUE DataQueue,
413 IN ULONG Who,
414 IN ULONG Type,
416 IN PIRP Irp,
419
420VOID
421NTAPI
424
426NTAPI
428 IN ULONG Quota);
429
431NTAPI
434 IN UCHAR State,
435 IN UCHAR ReadMode,
436 IN UCHAR CompletionMode,
437 IN ULONG InQuota,
438 IN ULONG OutQuota,
439 OUT PNP_CCB *NewCcb);
440
442NTAPI
444 IN PUNICODE_STRING PipeName,
445 IN ULONG MaximumInstances,
447 IN USHORT NamedPipeConfiguration,
448 IN USHORT NamedPipeType,
449 OUT PNP_FCB *NewFcb);
450
452NTAPI
454
456NTAPI
458
459VOID
460NTAPI
462
463VOID
464NTAPI
466 IN PLIST_ENTRY ListEntry);
467
468VOID
469NTAPI
471 IN PLIST_ENTRY ListEntry);
472
474NTAPI
476 IN PIRP Irp);
477
479NTAPI
481 IN PIRP Irp);
482
484NTAPI
486 IN PIRP Irp);
487
489NTAPI
491 IN PIRP Irp);
492
494NTAPI
496 IN PIRP Irp);
497
499NTAPI
503
505NTAPI
507 IN PIRP Irp,
509
511NTAPI
514
516NTAPI
518 IN PIRP Irp,
519 IN ULONG NamedPipeEnd,
521
522VOID
523NTAPI
525
527NTAPI
529
530VOID
531NTAPI
533 IN PNP_DATA_QUEUE_ENTRY DataQueueEntry);
534
535VOID
536NTAPI
538
540NTAPI
544
546NTAPI
548 IN PNP_CCB Ccb,
551
552VOID
553NTAPI
555 IN PVOID PrimaryContext,
556 IN PVOID Ccb,
557 IN ULONG NamedPipeEnd);
558
560NTAPI
562 OUT PVOID *PrimaryContext OPTIONAL,
563 OUT PNP_CCB *Ccb,
564 OUT PULONG NamedPipeEnd OPTIONAL);
565
567NTAPI
571
573NTAPI
578 OUT PNP_FCB *FoundFcb);
579
580VOID
581NTAPI
583 IN BOOLEAN SecondList,
585
587NTAPI
589 IN LARGE_INTEGER WaitTime,
590 IN PIRP Irp,
591 IN PUNICODE_STRING AliasName);
592
594NTAPI
596 IN PUNICODE_STRING PipeName,
598 IN PLIST_ENTRY ListEntry);
599
600
602NTAPI
605 IN BOOLEAN ReadOverflowOperation,
608 IN ULONG Mode,
609 IN PNP_CCB Ccb,
611
612
614NTAPI
616 IN ULONG Mode,
619 IN ULONG PipeType,
621 IN PNP_CCB Ccb,
622 IN ULONG NamedPipeEnd,
625
627NTAPI
629 IN PIRP Irp);
630
631_Function_class_(FAST_IO_READ)
634NTAPI
635NpFastRead(
644
645_Function_class_(FAST_IO_WRITE)
648NTAPI
649NpFastWrite(
658
659
661NTAPI
663 IN PIRP Irp);
664
666NTAPI
668 IN PIRP Irp);
669
671NTAPI
673 IN PIRP Irp);
674
676NTAPI
678 IN PIRP Irp);
679
680
682NTAPI
684 IN PIRP Irp);
685
687NTAPI
689 IN PIRP Irp);
690
692NTAPI
694 IN PIRP Irp);
695
696#endif /* _NPFS_PCH_ */
Type
Definition: Type.h:7
unsigned char BOOLEAN
Definition: actypes.h:127
LONG NTSTATUS
Definition: precomp.h:26
char * Pad(char *Str, char PadChar, ULONG Length)
Definition: cabman.cxx:29
_In_ PFCB Fcb
Definition: cdprocs.h:159
_Inout_ PFILE_OBJECT _In_ TYPE_OF_OPEN PFCB _In_opt_ PCCB Ccb
Definition: cdprocs.h:592
Definition: bufpool.h:45
LPWSTR Name
Definition: desk.c:124
_In_ ULONG BufferSize
Definition: dispmprt.h:490
#define TRUE
Definition: types.h:120
static VOID Peek(_In_ PUCHAR ReadDataPort, _Out_writes_bytes_all_opt_(Length) PVOID Buffer, _In_ USHORT Length)
Definition: hardware.c:379
USHORT NODE_TYPE_CODE
Definition: nodetype.h:22
_In_ PIO_STACK_LOCATION _Inout_ PFILE_OBJECT _Inout_ PVCB _Outptr_result_maybenull_ PDCB * Dcb
Definition: create.c:4141
VOID NTAPI NpInitializeVcb(VOID)
Definition: strucsup.c:130
_In_ PLARGE_INTEGER FileOffset
Definition: npfs.h:637
struct _NP_ROOT_DCB_CCB NP_ROOT_DCB_CCB
NTSTATUS NTAPI NpCreateCcb(IN PNP_FCB Fcb, IN PFILE_OBJECT FileObject, IN UCHAR State, IN UCHAR ReadMode, IN UCHAR CompletionMode, IN ULONG InQuota, IN ULONG OutQuota, OUT PNP_CCB *NewCcb)
Definition: strucsup.c:304
VOID NTAPI NpSetFileObject(IN PFILE_OBJECT FileObject, IN PVOID PrimaryContext, IN PVOID Ccb, IN ULONG NamedPipeEnd)
Definition: fileobsup.c:64
NTSTATUS NTAPI NpFindRelativePrefix(IN PNP_DCB Dcb, IN PUNICODE_STRING Name, IN ULONG CaseInsensitiveIndex, IN PUNICODE_STRING Prefix, OUT PNP_FCB *FoundFcb)
Definition: prefxsup.c:51
struct _NP_EVENT_BUFFER NP_EVENT_BUFFER
LONG NTAPI NpCompareAliasNames(_In_ PCUNICODE_STRING String1, _In_ PCUNICODE_STRING String2)
Definition: main.c:152
struct _NP_DATA_QUEUE * PNP_DATA_QUEUE
struct _NPFS_ALIAS * PNPFS_ALIAS
struct _NP_DCB * PNP_DCB
USHORT NODE_TYPE_CODE
Definition: npfs.h:119
FORCEINLINE VOID NpAcquireExclusiveVcb(VOID)
Definition: npfs.h:337
FORCEINLINE VOID NpReleaseVcb(VOID)
Definition: npfs.h:345
IO_STATUS_BLOCK NTAPI NpReadDataQueue(IN PNP_DATA_QUEUE DataQueue, IN BOOLEAN Peek, IN BOOLEAN ReadOverflowOperation, IN PVOID Buffer, IN ULONG BufferSize, IN ULONG Mode, IN PNP_CCB Ccb, IN PLIST_ENTRY List)
Definition: readsup.c:20
_NP_DATA_QUEUE_ENTRY_TYPE
Definition: npfs.h:131
@ Buffered
Definition: npfs.h:132
@ Unbuffered
Definition: npfs.h:133
VOID NTAPI NpCheckForNotify(IN PNP_DCB Dcb, IN BOOLEAN SecondList, IN PLIST_ENTRY List)
Definition: create.c:20
struct _NP_CCB NP_CCB
PIRP NTAPI NpRemoveDataQueueEntry(IN PNP_DATA_QUEUE DataQueue, IN BOOLEAN Flag, IN PLIST_ENTRY List)
Definition: datasup.c:105
NTSTATUS NTAPI NpSetConnectedPipeState(IN PNP_CCB Ccb, IN PFILE_OBJECT FileObject, IN PLIST_ENTRY List)
Definition: statesup.c:39
struct _NP_WAIT_QUEUE NP_WAIT_QUEUE
struct _NP_CB_FOOTER NP_CB_FOOTER
PNPFS_ALIAS NpAliasList
Definition: main.c:20
_In_ PLARGE_INTEGER _In_ ULONG _In_ BOOLEAN _In_ ULONG LockKey
Definition: npfs.h:640
struct _NP_CB_HEADER * PNP_CB_HEADER
NTSTATUS NTAPI NpInitializeSecurity(IN PNP_CCB Ccb, IN PSECURITY_QUALITY_OF_SERVICE SecurityQos, IN PETHREAD Thread)
Definition: secursup.c:82
PNP_VCB NpVcb
Definition: strucsup.c:19
NTSTATUS NTAPI NpFsdQuerySecurityInfo(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: seinfo.c:100
NTSTATUS NTAPI NpFsdCreate(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: create.c:360
VOID NTAPI NpCopyClientContext(IN PNP_CCB Ccb, IN PNP_DATA_QUEUE_ENTRY DataQueueEntry)
Definition: secursup.c:58
NTSTATUS NTAPI NpSetDisconnectedPipeState(IN PNP_CCB Ccb, IN PLIST_ENTRY List)
Definition: statesup.c:77
NTSTATUS NTAPI NpAddDataQueueEntry(IN ULONG NamedPipeEnd, IN PNP_CCB Ccb, IN PNP_DATA_QUEUE DataQueue, IN ULONG Who, IN ULONG Type, IN ULONG DataSize, IN PIRP Irp, IN PVOID Buffer, IN ULONG ByteOffset)
Definition: datasup.c:295
NTSTATUS NTAPI NpUninitializeDataQueue(IN PNP_DATA_QUEUE DataQueue)
Definition: datasup.c:20
struct _NP_WAIT_QUEUE_ENTRY * PNP_WAIT_QUEUE_ENTRY
struct _NP_CLIENT_PROCESS NP_CLIENT_PROCESS
NTSTATUS NTAPI NpSetClosingPipeState(IN PNP_CCB Ccb, IN PIRP Irp, IN ULONG NamedPipeEnd, IN PLIST_ENTRY List)
Definition: statesup.c:245
NTSTATUS NTAPI NpFsdFileSystemControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: fsctrl.c:935
struct _NPFS_ALIAS NPFS_ALIAS
USHORT * PNODE_TYPE_CODE
Definition: npfs.h:119
struct _NP_CCB * PNP_CCB
struct _NP_FCB NP_FCB
struct _NP_FCB * PNP_FCB
enum _NP_DATA_QUEUE_STATE NP_DATA_QUEUE_STATE
NTSTATUS NTAPI NpCreateFcb(IN PNP_DCB Dcb, IN PUNICODE_STRING PipeName, IN ULONG MaximumInstances, IN LARGE_INTEGER Timeout, IN USHORT NamedPipeConfiguration, IN USHORT NamedPipeType, OUT PNP_FCB *NewFcb)
Definition: strucsup.c:210
struct _NP_NONPAGED_CCB NP_NONPAGED_CCB
NTSTATUS NTAPI NpFsdWrite(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: write.c:175
NTSTATUS NTAPI NpCreateRootDcb(VOID)
Definition: strucsup.c:165
VOID NTAPI NpCompleteStalledWrites(IN PNP_DATA_QUEUE DataQueue, IN PLIST_ENTRY List)
Definition: datasup.c:49
NTSTATUS NTAPI NpFsdCleanup(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: cleanup.c:58
VOID NTAPI NpDeleteFcb(IN PNP_FCB Fcb, IN PLIST_ENTRY ListEntry)
Definition: strucsup.c:63
FORCEINLINE VOID NpAcquireSharedVcb(VOID)
Definition: npfs.h:329
struct _NP_WAIT_QUEUE * PNP_WAIT_QUEUE
struct _NP_CB_HEADER NP_CB_HEADER
struct _NP_EVENT_BUFFER * PNP_EVENT_BUFFER
_NP_DATA_QUEUE_STATE
Definition: npfs.h:123
@ ReadEntries
Definition: npfs.h:124
@ Empty
Definition: npfs.h:126
@ WriteEntries
Definition: npfs.h:125
struct _NP_WAIT_QUEUE_ENTRY NP_WAIT_QUEUE_ENTRY
struct _NP_VCB * PNP_VCB
NTSTATUS NTAPI NpCreateRootDcbCcb(IN PNP_ROOT_DCB_FCB *NewRootCcb)
Definition: strucsup.c:149
NTSTATUS NTAPI NpGetClientSecurityContext(IN ULONG NamedPipeEnd, IN PNP_CCB Ccb, IN PETHREAD Thread, IN PSECURITY_CLIENT_CONTEXT *Context)
Definition: secursup.c:129
NTSTATUS NTAPI NpFsdQueryInformation(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: fileinfo.c:461
NODE_TYPE_CODE NTAPI NpDecodeFileObject(IN PFILE_OBJECT FileObject, OUT PVOID *PrimaryContext OPTIONAL, OUT PNP_CCB *Ccb, OUT PULONG NamedPipeEnd OPTIONAL)
Definition: fileobsup.c:20
FORCEINLINE VOID NpCompleteDeferredIrps(IN PLIST_ENTRY DeferredList)
Definition: npfs.h:357
struct _NP_VCB NP_VCB
VOID NTAPI NpInitializeWaitQueue(IN PNP_WAIT_QUEUE WaitQueue)
Definition: waitsup.c:96
NTSTATUS NTAPI NpCancelWaiter(IN PNP_WAIT_QUEUE WaitQueue, IN PUNICODE_STRING PipeName, IN NTSTATUS Status, IN PLIST_ENTRY ListEntry)
Definition: waitsup.c:120
struct _NPFS_QUERY_VALUE_CONTEXT NPFS_QUERY_VALUE_CONTEXT
VOID NTAPI NpDeleteCcb(IN PNP_CCB Ccb, IN PLIST_ENTRY ListEntry)
Definition: strucsup.c:92
NTSTATUS NTAPI NpFsdQueryVolumeInformation(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: volinfo.c:181
struct _NP_DATA_QUEUE_ENTRY * PNP_DATA_QUEUE_ENTRY
BOOLEAN NTAPI NpDeleteEventTableEntry(IN PRTL_GENERIC_TABLE Table, IN PVOID Buffer)
Definition: strucsup.c:52
NTSTATUS NTAPI NpAddWaiter(IN PNP_WAIT_QUEUE WaitQueue, IN LARGE_INTEGER WaitTime, IN PIRP Irp, IN PUNICODE_STRING AliasName)
Definition: waitsup.c:221
struct _NPFS_QUERY_VALUE_CONTEXT * PNPFS_QUERY_VALUE_CONTEXT
PNP_FCB NTAPI NpFindPrefix(IN PUNICODE_STRING Name, IN ULONG CaseInsensitiveIndex, IN PUNICODE_STRING Prefix)
Definition: prefxsup.c:20
NTSTATUS NTAPI NpFsdCreateNamedPipe(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: create.c:791
struct _NP_DCB NP_DCB
PNPFS_ALIAS NpAliasListByLength[MAX_INDEXED_LENGTH+1 - MIN_INDEXED_LENGTH]
Definition: main.c:21
PLIST_ENTRY NTAPI NpGetNextRealDataQueueEntry(IN PNP_DATA_QUEUE DataQueue, IN PLIST_ENTRY List)
Definition: datasup.c:174
NTSTATUS NTAPI NpFsdClose(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: close.c:59
struct _NP_NONPAGED_CCB * PNP_NONPAGED_CCB
enum _NP_DATA_QUEUE_ENTRY_TYPE NP_DATA_QUEUE_ENTRY_TYPE
NTSTATUS NTAPI NpFsdRead(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: read.c:159
struct _NP_ROOT_DCB_CCB * PNP_ROOT_DCB_FCB
NTSTATUS NTAPI NpFsdSetSecurityInfo(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: seinfo.c:125
NTSTATUS NTAPI NpFsdFlushBuffers(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: flushbuf.c:70
NTSTATUS NTAPI NpSetListeningPipeState(IN PNP_CCB Ccb, IN PIRP Irp, IN PLIST_ENTRY List)
Definition: statesup.c:188
struct _NP_DATA_QUEUE NP_DATA_QUEUE
NTSTATUS NTAPI NpFsdSetInformation(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
Definition: fileinfo.c:114
#define MAX_INDEXED_LENGTH
Definition: npfs.h:34
struct _NP_DATA_QUEUE_ENTRY NP_DATA_QUEUE_ENTRY
NTSTATUS NTAPI NpWriteDataQueue(IN PNP_DATA_QUEUE WriteQueue, IN ULONG Mode, IN PVOID OutBuffer, IN ULONG OutBufferSize, IN ULONG PipeType, OUT PULONG BytesWritten, IN PNP_CCB Ccb, IN ULONG NamedPipeEnd, IN PETHREAD Thread, IN PLIST_ENTRY List)
Definition: writesup.c:20
NTSTATUS NTAPI NpInitializeDataQueue(IN PNP_DATA_QUEUE DataQueue, IN ULONG Quota)
Definition: datasup.c:32
struct _NP_CLIENT_PROCESS * PNP_CLIENT_PROCESS
VOID NTAPI NpUninitializeSecurity(IN PNP_CCB Ccb)
Definition: secursup.c:72
VOID NTAPI NpFreeClientSecurityContext(IN PSECURITY_CLIENT_CONTEXT ClientContext)
Definition: secursup.c:40
#define MIN_INDEXED_LENGTH
Definition: npfs.h:33
NTSTATUS NTAPI NpImpersonateClientContext(IN PNP_CCB Ccb)
Definition: secursup.c:20
#define _IRQL_requires_same_
Definition: driverspecs.h:232
ULONG KSPIN_LOCK
Definition: env_spec_w32.h:72
#define ExAcquireResourceExclusiveLite(res, wait)
Definition: env_spec_w32.h:615
ULONG ERESOURCE
Definition: env_spec_w32.h:594
#define ExAcquireResourceSharedLite(res, wait)
Definition: env_spec_w32.h:621
IN PDCB IN PCCB IN VBO IN OUT PULONG OUT PDIRENT OUT PBCB OUT PVBO ByteOffset
Definition: fatprocs.h:732
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
Definition: fltkernel.h:2653
Status
Definition: gdiplustypes.h:24
ASMGENDATA Table[]
Definition: genincdata.c:61
_In_ ULONG Mode
Definition: hubbusif.h:303
#define C_ASSERT(e)
Definition: intsafe.h:73
_In_ PIRP Irp
Definition: kse.h:79
_In_ PIRP _In_ PIO_COMPLETION_ROUTINE _In_ PVOID Context
Definition: kse.h:81
__in UCHAR __in POWER_STATE __in_opt PVOID __in PIO_STATUS_BLOCK IoStatus
Definition: mxum.h:159
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
Definition: ndis.h:4755
_In_ const STRING * String2
Definition: rtlfuncs.h:2404
_In_ PVOID ClientContext
Definition: netioddk.h:55
#define _Out_
Definition: no_sal2.h:160
#define _In_
Definition: no_sal2.h:158
#define _Function_class_(n)
Definition: no_sal2.h:398
_In_ ULONG _In_ ULONG _In_ ULONG Length
Definition: ntddpcm.h:102
VOID FASTCALL ExReleaseResourceLite(IN PERESOURCE Resource)
Definition: resource.c:1822
#define IoCompleteRequest
Definition: irp.c:1272
short WCHAR
Definition: pedump.c:58
long LONG
Definition: pedump.c:60
unsigned short USHORT
Definition: pedump.c:61
static ULONG Timeout
Definition: ping.c:61
_In_ UCHAR _In_ ULONG _Out_ PUCHAR _Outptr_result_bytebuffer_ OutBufferLength PVOID * OutBuffer
Definition: scsi.h:4117
PULONG MinorVersion OPTIONAL
Definition: CrossNt.h:68
Definition: xml2sdb.h:103
Definition: ketypes.h:767
Definition: typedefs.h:120
struct _LIST_ENTRY * Flink
Definition: typedefs.h:121
PUNICODE_STRING TargetName
Definition: npfs.h:295
struct _NPFS_ALIAS * Next
Definition: npfs.h:294
UNICODE_STRING Name
Definition: npfs.h:296
PUNICODE_STRING CurrentTargetName
Definition: npfs.h:307
PNPFS_ALIAS CurrentAlias
Definition: npfs.h:306
PWCHAR CurrentStringPointer
Definition: npfs.h:308
NODE_TYPE_CODE NodeType
Definition: npfs.h:194
PVOID ParentDcb
Definition: npfs.h:196
PSECURITY_DESCRIPTOR SecurityDescriptor
Definition: npfs.h:199
ULONG CurrentInstances
Definition: npfs.h:197
LIST_ENTRY DcbEntry
Definition: npfs.h:195
ULONG ServerOpenCount
Definition: npfs.h:198
Definition: npfs.h:260
PNP_NONPAGED_CCB NonPagedCcb
Definition: npfs.h:271
PVOID ClientSession
Definition: npfs.h:270
PSECURITY_CLIENT_CONTEXT ClientContext
Definition: npfs.h:273
LIST_ENTRY CcbEntry
Definition: npfs.h:266
PNP_FCB Fcb
Definition: npfs.h:267
NODE_TYPE_CODE NodeType
Definition: npfs.h:261
UCHAR CompletionMode[2]
Definition: npfs.h:264
NP_DATA_QUEUE DataQueue[2]
Definition: npfs.h:272
UCHAR ReadMode[2]
Definition: npfs.h:263
LIST_ENTRY IrpList
Definition: npfs.h:274
PEPROCESS Process
Definition: npfs.h:269
UCHAR NamedPipeState
Definition: npfs.h:262
SECURITY_QUALITY_OF_SERVICE ClientQos
Definition: npfs.h:265
PVOID Unknown
Definition: npfs.h:317
PVOID Process
Definition: npfs.h:318
USHORT DataLength
Definition: npfs.h:319
Definition: npfs.h:150
ULONG DataSize
Definition: npfs.h:156
PSECURITY_CLIENT_CONTEXT ClientSecurityContext
Definition: npfs.h:155
ULONG QuotaInEntry
Definition: npfs.h:154
ULONG DataEntryType
Definition: npfs.h:152
LIST_ENTRY QueueEntry
Definition: npfs.h:151
PIRP Irp
Definition: npfs.h:153
ULONG Quota
Definition: npfs.h:145
ULONG EntriesInQueue
Definition: npfs.h:142
LIST_ENTRY Queue
Definition: npfs.h:139
ULONG QueueState
Definition: npfs.h:140
ULONG QuotaUsed
Definition: npfs.h:143
ULONG BytesInQueue
Definition: npfs.h:141
ULONG ByteOffset
Definition: npfs.h:144
Definition: npfs.h:212
ULONG Pad
Definition: npfs.h:221
LIST_ENTRY NotifyList2
Definition: npfs.h:218
NP_CB_FOOTER
Definition: npfs.h:225
LIST_ENTRY FcbList
Definition: npfs.h:219
NP_CB_HEADER
Definition: npfs.h:214
LIST_ENTRY NotifyList
Definition: npfs.h:217
PKEVENT Event
Definition: npfs.h:180
Definition: npfs.h:230
LIST_ENTRY CcbList
Definition: npfs.h:239
NP_CB_HEADER
Definition: npfs.h:232
LARGE_INTEGER Timeout
Definition: npfs.h:238
ULONG MaximumInstances
Definition: npfs.h:235
USHORT NamedPipeType
Definition: npfs.h:237
USHORT NamedPipeConfiguration
Definition: npfs.h:236
NP_CB_FOOTER
Definition: npfs.h:245
ERESOURCE Lock
Definition: npfs.h:255
NODE_TYPE_CODE NodeType
Definition: npfs.h:253
PNP_EVENT_BUFFER EventBuffer[2]
Definition: npfs.h:254
NODE_TYPE_CODE NodeType
Definition: npfs.h:186
PVOID Unknown
Definition: npfs.h:187
ULONG Unknown2
Definition: npfs.h:188
Definition: npfs.h:279
PNP_DCB RootDcb
Definition: npfs.h:282
ERESOURCE Lock
Definition: npfs.h:284
UNICODE_PREFIX_TABLE PrefixTable
Definition: npfs.h:283
NODE_TYPE_CODE NodeType
Definition: npfs.h:280
NP_WAIT_QUEUE WaitQueue
Definition: npfs.h:286
ULONG ReferenceCount
Definition: npfs.h:281
RTL_GENERIC_TABLE EventTable
Definition: npfs.h:285
Definition: npfs.h:168
KDPC Dpc
Definition: npfs.h:170
PNP_WAIT_QUEUE WaitQueue
Definition: npfs.h:172
UNICODE_STRING AliasName
Definition: npfs.h:173
PIRP Irp
Definition: npfs.h:169
PFILE_OBJECT FileObject
Definition: npfs.h:174
KTIMER Timer
Definition: npfs.h:171
KSPIN_LOCK WaitLock
Definition: npfs.h:163
LIST_ENTRY WaitList
Definition: npfs.h:162
Definition: rtltypes.h:640
uint32_t * PULONG
Definition: typedefs.h:59
unsigned char UCHAR
Definition: typedefs.h:53
#define FIELD_OFFSET(t, f)
Definition: typedefs.h:255
#define NTAPI
Definition: typedefs.h:36
ULONG_PTR SIZE_T
Definition: typedefs.h:80
#define IN
Definition: typedefs.h:39
uint16_t * PWCHAR
Definition: typedefs.h:56
#define CONTAINING_RECORD(address, type, field)
Definition: typedefs.h:260
uint32_t ULONG
Definition: typedefs.h:59
#define OUT
Definition: typedefs.h:40
_In_ PDEVICE_OBJECT DeviceObject
Definition: wdfdevice.h:2061
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
Definition: wdfdevice.h:550
_In_ WDFDPC _In_ BOOLEAN Wait
Definition: wdfdpc.h:170
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG _In_opt_ PWDF_REQUEST_SEND_OPTIONS _Out_opt_ PULONG_PTR BytesWritten
Definition: wdfiotarget.h:960
_Must_inspect_result_ _In_ WDFCMRESLIST List
Definition: wdfresource.h:550
#define FORCEINLINE
Definition: wdftypes.h:67
_In_ ULONG OutBufferSize
Definition: wdfwmi.h:87
#define IO_NAMED_PIPE_INCREMENT
Definition: iotypes.h:604
* PFILE_OBJECT
Definition: iotypes.h:1998
_In_ PUNICODE_STRING _In_ ULONG CaseInsensitiveIndex
Definition: rtlfuncs.h:1699
_In_ __drv_aliasesMem PSTRING Prefix
Definition: rtlfuncs.h:1647
_In_ __drv_aliasesMem PSTRING _Out_ PPREFIX_TABLE_ENTRY PrefixTableEntry
Definition: rtlfuncs.h:1648