4 #define RX_REQUEST_PREPARED_FOR_HANDLING 0x10000000
6 typedef struct _CHANGE_BUFFERING_STATE_REQUEST_
10 #if (_WIN32_WINNT < 0x0600)
16 } CHANGE_BUFFERING_STATE_REQUEST
, *PCHANGE_BUFFERING_STATE_REQUEST
;
18 typedef struct _RX_BUFFERING_MANAGER_
20 BOOLEAN DispatcherActive
;
21 BOOLEAN HandlerInactive
;
22 BOOLEAN LastChanceHandlerActive
;
25 volatile LONG CumulativeNumberOfBufferingChangeRequests
;
26 LONG NumberOfUnhandledRequests
;
27 LONG NumberOfUndispatchedRequests
;
28 volatile LONG NumberOfOutstandingOpens
;
29 LIST_ENTRY DispatcherList
;
30 LIST_ENTRY HandlerList
;
31 LIST_ENTRY LastChanceHandlerList
;
32 RX_WORK_QUEUE_ITEM DispatcherWorkItem
;
33 RX_WORK_QUEUE_ITEM HandlerWorkItem
;
34 RX_WORK_QUEUE_ITEM LastChanceHandlerWorkItem
;
36 LIST_ENTRY SrvOpenLists
[1];
37 } RX_BUFFERING_MANAGER
, *PRX_BUFFERING_MANAGER
;
39 #if (_WIN32_WINNT >= 0x0600)
40 #define RxAcquireBufferingManagerMutex(BufMan) ExAcquireFastMutex(&(BufMan)->Mutex)
42 #define RxAcquireBufferingManagerMutex(BufMan) \
44 if (!ExTryToAcquireFastMutex(&(BufMan)->Mutex)) \
46 ExAcquireFastMutex(&(BufMan)->Mutex); \
50 #define RxReleaseBufferingManagerMutex(BufMan) ExReleaseFastMutex(&(BufMan)->Mutex)
53 RxpProcessChangeBufferingStateRequests(
55 BOOLEAN UpdateHandlerState
);
59 RxProcessChangeBufferingStateRequests(
63 RxProcessFcbChangeBufferingStateRequest(
67 RxPurgeChangeBufferingStateRequestsForSrvOpen(
68 _In_ PSRV_OPEN SrvOpen
);
71 RxCompleteSrvOpenKeyAssociation(
72 _Inout_ PSRV_OPEN SrvOpen
);
75 RxInitiateSrvOpenKeyAssociation(
76 _Inout_ PSRV_OPEN SrvOpen
);
79 RxInitializeBufferingManager(
80 _In_ PSRV_CALL SrvCall
);
83 RxTearDownBufferingManager(
84 _In_ PSRV_CALL SrvCall
);
87 RxFlushFcbInSystemCache(
89 _In_ BOOLEAN SynchronizeWithLazyWriter
);
92 RxPurgeFcbInSystemCache(
94 _In_ PLARGE_INTEGER FileOffset OPTIONAL
,
96 _In_ BOOLEAN UninitializeCacheMaps
,
97 _In_ BOOLEAN FlushFile
);