次の方法で共有


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 では現在、使用可能なバッファリング オプションが多数使用されていないため、 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バッファリング状態が off に変更されると、システム キャッシュ内のすべての FCB がフラッシュされます。

RxChangeBufferingState からの終了時に、リソースの所有権に変更はありません。

要件

要件
対象プラットフォーム デスクトップ
Header rxprocs.h (Rxprocs.h、Struchdr.h、Fcb.h を含む)
IRQL <= APC_LEVEL

こちらもご覧ください

RxIndicateChangeOfBufferingState

RxIndicateChangeOfBufferingStateForSrvOpen

SRV_OPEN構造体