Freigeben über


RxChangeBufferingState-Funktion (rxprocs.h)

RxChangeBufferingState wird aufgerufen, um eine Änderungsanforderung für den Pufferzustand zu verarbeiten.

Syntax

NTSTATUS RxChangeBufferingState(
  PSRV_OPEN SrvOpen,
  PVOID     Context,
  BOOLEAN   ComputeNewState
);

Parameter

SrvOpen

Ein Zeiger auf die zu ändernde SRV_OPEN Datenstruktur.

Context

Ein Zeiger auf den Kontextparameter zur Verwendung durch den Rückruf des Netzwerk-Miniumleitungs.

ComputeNewState

Der Wert, der angibt, ob der neue Pufferzustand berechnet werden soll. Wenn dieser Wert auf TRUE festgelegt ist, wird der neue Pufferzustand bestimmt, indem der Netzwerk-Miniumleitung aufgerufen wird, um den neuen Pufferzustand zu berechnen. Wenn dieser Wert FALSE ist, wird der neue Pufferzustand durch den BufferingFlags-Member der in SrvOpen übergebenen Struktur bestimmt.

Rückgabewert

RxChangeBufferingState gibt immer STATUS_SUCCESS zurück, ob diese Routine erfolgreich war oder ob ein Fehler auftritt. Wenn ein Fehler auftritt, wird der Pufferzustand geändert, sodass keine Pufferung aktiviert wird.

Hinweise

Wenn die lokale Pufferung für diesen FCB deaktiviert ist (FCB_STATE_DISABLE_LOCAL_BUFFERING im FcbState-Strukturmitglied des FCB festgelegt ist), wird die lokale Pufferung unabhängig vom offenen Modus auf dem FCB und allen Standardpufferoptionen deaktiviert. Wenn FCB_STATE_DISABLE_LOCAL_BUFFERING festgelegt ist, besteht der neue Pufferzustand, der von RxChangeBufferingState festgelegt wird, darin, die gesamte Pufferung zu deaktivieren.

Wenn ComputeNewStateTRUE ist, wird die vom Netzwerk-Mini-Redirector exportierte MRxComputeNewBufferingState-Routine aufgerufen, um den zu verwendenden neuen Pufferzustand zu berechnen.

Wenn der FCB ausschließlich erworben wird und ComputeNewStateauf FALSE festgelegt ist. dann legt RxChangeBufferingState die folgenden Pufferzustandsoptionen fest:

  • 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
Für den Erwerb des FCB ist ausschließlich erforderlich, dass der FCB nicht mit einem der folgenden Werte geöffnet werden darf:
  • ShareAccess.SharedRead
  • ShareAccess.SharedWrite
  • ShareAccess.SharedDelete
RDBSS verwendet derzeit keine Reihe möglicher Pufferoptionen, sodass diese Optionen intern von RDBSS ignoriert werden, wenn sie mit RxChangeBufferingState eingestellt werden. Diese ignorierten Pufferoptionen umfassen Folgendes:
  • FCB_STATE_WRITEBUFFERING_ENABLED
  • FCB_STATE_READBUFFERING_ENABLED
  • FCB_STATE_OPENSHARING_ENABLED
  • FCB_STATE_COLLAPSING_ENABLED
  • FCB_STATE_FILESIZECACHEING_ENABLED
  • FCB_STATE_FILETIMECACHEING_ENABLED
Wenn der FCB_STATE_WRITECACHING_ENABLED Pufferzustand in off geändert wird, werden alle FCB-Elemente im Systemcache geleert.

Beim Beenden von RxChangeBufferingState gibt es keine Änderung des Ressourcenbesitzes.

Anforderungen

Anforderung Wert
Zielplattform Desktop
Kopfzeile rxprocs.h (include Rxprocs.h, Struchdr.h, Fcb.h)
IRQL <= APC_LEVEL

Weitere Informationen

RxIndicateChangeOfBufferingState

RxIndicateChangeOfBufferingStateForSrvOpen

Die SRV_OPEN-Struktur