共用方式為


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 所設定的新緩衝狀態將會停用所有緩衝處理。

如果 ComputeNewStateTRUE,則會呼叫網路迷你重新導向器所導出的 MRxComputeNewBufferingState 例程,以計算要使用的新緩衝狀態。

如果以獨佔方式取得 FCB,且 ComputeNewStateFALSE。 然後 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
若要只取得FCB,必須以下列任何值開啟FCB:
  • ShareAccess.SharedRead
  • ShareAccess.SharedWrite
  • ShareAccess.SharedDelete
RDBSS 目前不會使用數個可能的緩衝選項,因此當 RDBSS 使用 RxChangeBufferingState時,RDBSS 會在內部忽略這些選項。 這些忽略的緩衝選項包括下列專案:
  • FCB_STATE_WRITEBUFFERING_ENABLED
  • FCB_STATE_READBUFFERING_ENABLED
  • FCB_STATE_OPENSHARING_ENABLED
  • FCB_STATE_COLLAPSING_ENABLED
  • FCB_STATE_FILESIZECACHEING_ENABLED
  • FCB_STATE_FILETIMECACHEING_ENABLED
如果FCB_STATE_WRITECACHING_ENABLED緩衝狀態已變更為關閉,則會排清系統快取中的任何FCB。

RxChangeBufferingState結束時,資源擁有權沒有變更。

要求

要求 價值
目標平臺 桌面
標頭 rxprocs.h (包括 Rxprocs.h、Struchdr.h、Fcb.h)
IRQL <= APC_LEVEL

另請參閱

RxIndicateChangeOfBufferingState

RxIndicateChangeOfBufferingStateForSrvOpen

SRV_OPEN 結構