RxChangeBufferingState 函数 (rxprocs.h)
调用 RxChangeBufferingState 来处理缓冲状态更改请求。
语法
NTSTATUS RxChangeBufferingState(
PSRV_OPEN SrvOpen,
PVOID Context,
BOOLEAN ComputeNewState
);
参数
SrvOpen
指向要更改SRV_OPEN数据结构的指针。
Context
指向供网络微型重定向程序回调使用的上下文参数的指针。
ComputeNewState
指示是否要计算新的缓冲状态的值。 如果此值设置为 TRUE,则通过调用网络微型重定向程序来计算新的缓冲状态来确定新的缓冲状态。 如果此值为 FALSE,则新的缓冲状态由 SrvOpen 结构中传递的 的 BufferingFlags 成员确定。
返回值
RxChangeBufferingState 始终返回STATUS_SUCCESS此例程是否成功或是否发生错误。 如果发生错误,则会更改缓冲状态,以便不启用缓冲。
注解
如果在 FCB) 的 FcbState 结构成员中为此 FCB (FCB_STATE_DISABLE_LOCAL_BUFFERING 禁用本地缓冲,则会禁用独立于 FCB 上的打开模式和任何默认缓冲选项的本地缓冲。 设置FCB_STATE_DISABLE_LOCAL_BUFFERING后, RxChangeBufferingState 设置的新缓冲状态将为禁用所有缓冲。
如果 ComputeNewState 为 TRUE,则调用网络微型重定向程序导出的 MRxComputeNewBufferingState 例程来计算要使用的新缓冲状态。
如果以独占方式获取 FCB,并且 ComputeNewState 为 FALSE。 然后 ,RxChangeBufferingState 将设置以下缓冲状态选项:
- 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
退出 RxChangeBufferingState 时,资源所有权没有变化。
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | rxprocs.h (包括 Rxprocs.h、Struchdr.h、Fcb.h) |
IRQL | <= APC_LEVEL |
另请参阅
RxIndicateChangeOfBufferingState