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 (FCB_STATE_DISABLE_LOCAL_BUFFERING 的本機緩衝功能已設定於FCB) 的FcbState結構成員中,這會停用與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