[RXCE]
[reactos.git] / reactos / sdk / include / ddk / buffring.h
1 #ifndef __BUFFRING_H__
2 #define __BUFFRING_H__
3
4 typedef struct _RX_BUFFERING_MANAGER_
5 {
6 BOOLEAN DispatcherActive;
7 BOOLEAN HandlerInactive;
8 BOOLEAN LastChanceHandlerActive;
9 UCHAR Pad;
10 KSPIN_LOCK SpinLock;
11 volatile LONG CumulativeNumberOfBufferingChangeRequests;
12 LONG NumberOfUnhandledRequests;
13 LONG NumberOfUndispatchedRequests;
14 volatile LONG NumberOfOutstandingOpens;
15 LIST_ENTRY DispatcherList;
16 LIST_ENTRY HandlerList;
17 LIST_ENTRY LastChanceHandlerList;
18 RX_WORK_QUEUE_ITEM DispatcherWorkItem;
19 RX_WORK_QUEUE_ITEM HandlerWorkItem;
20 RX_WORK_QUEUE_ITEM LastChanceHandlerWorkItem;
21 FAST_MUTEX Mutex;
22 LIST_ENTRY SrvOpenLists[1];
23 } RX_BUFFERING_MANAGER, *PRX_BUFFERING_MANAGER;
24
25 VOID
26 RxProcessFcbChangeBufferingStateRequest(
27 _In_ PFCB Fcb);
28
29 VOID
30 RxCompleteSrvOpenKeyAssociation(
31 _Inout_ PSRV_OPEN SrvOpen);
32
33 VOID
34 RxInitiateSrvOpenKeyAssociation(
35 _Inout_ PSRV_OPEN SrvOpen);
36
37 NTSTATUS
38 RxInitializeBufferingManager(
39 _In_ PSRV_CALL SrvCall);
40
41 NTSTATUS
42 RxPurgeFcbInSystemCache(
43 _In_ PFCB Fcb,
44 _In_ PLARGE_INTEGER FileOffset OPTIONAL,
45 _In_ ULONG Length,
46 _In_ BOOLEAN UninitializeCacheMaps,
47 _In_ BOOLEAN FlushFile);
48
49 #endif