RxChangeBufferingState function (rxprocs.h)
RxChangeBufferingState is called to process a buffering state change request.
Syntax
NTSTATUS RxChangeBufferingState(
PSRV_OPEN SrvOpen,
PVOID Context,
BOOLEAN ComputeNewState
);
Parameters
SrvOpen
A pointer to the SRV_OPEN data structure to be changed.
Context
A pointer to the context parameter for use by the network mini-redirector callback.
ComputeNewState
The value that indicates if the new buffering state is to be computed. When this value is set to TRUE, the new buffering state is determined by calling the network mini-redirector to compute the new buffering state. When this value is FALSE, the new buffering state is determined by the BufferingFlags member of the passed in SrvOpen structure.
Return value
RxChangeBufferingState always returns STATUS_SUCCESS whether this routine was successful or if an error occurs. If an error occurs, the buffering state is changed so that no buffering is enabled.
Remarks
If local buffering is disabled for this FCB (FCB_STATE_DISABLE_LOCAL_BUFFERING is set in the FcbState structure member of the FCB), this will disable local buffering independent of the open mode on the FCB and any default buffering options. When FCB_STATE_DISABLE_LOCAL_BUFFERING is set, the new buffering state set by RxChangeBufferingState will be to disable all buffering.
If ComputeNewState is TRUE, then the MRxComputeNewBufferingState routine exported by the network mini-redirector is called to compute the new buffering state to use.
If the FCB is acquired exclusively and ComputeNewState is FALSE. then RxChangeBufferingState will set the following buffering state options:
- FCB_STATE_WRITECACHING_ENABLED
- FCB_STATE_FILESIZECACHEING_ENABLED
- FCB_STATE_FILETIMECACHEING_ENABLED
- FCB_STATE_WRITEBUFFERING_ENABLED
- FCB_STATE_LOCK_BUFFERING_ENABLED
- FCB_STATE_READBUFFERING_ENABLED
- FCB_STATE_READCACHING_ENABLED
- ShareAccess.SharedRead
- ShareAccess.SharedWrite
- ShareAccess.SharedDelete
- FCB_STATE_WRITEBUFFERING_ENABLED
- FCB_STATE_READBUFFERING_ENABLED
- FCB_STATE_OPENSHARING_ENABLED
- FCB_STATE_COLLAPSING_ENABLED
- FCB_STATE_FILESIZECACHEING_ENABLED
- FCB_STATE_FILETIMECACHEING_ENABLED
On exit from RxChangeBufferingState, there is no change in resource ownership.
Requirements
Requirement | Value |
---|---|
Target Platform | Desktop |
Header | rxprocs.h (include Rxprocs.h, Struchdr.h, Fcb.h) |
IRQL | <= APC_LEVEL |
See also
RxIndicateChangeOfBufferingState