Função RxChangeBufferingState (rxprocs.h)

RxChangeBufferingState é chamado para processar uma solicitação de alteração de estado de buffer.

Sintaxe

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

Parâmetros

SrvOpen

Um ponteiro para o SRV_OPEN estrutura de dados a ser alterada.

Context

Um ponteiro para o parâmetro de contexto a ser usado pelo retorno de chamada do minidiretório de rede.

ComputeNewState

O valor que indica se o novo estado de buffer deve ser calculado. Quando esse valor é definido como TRUE, o novo estado de buffer é determinado chamando o minidiretório de rede para calcular o novo estado de buffer. Quando esse valor é FALSE, o novo estado de buffer é determinado pelo membro BufferingFlags da estrutura SrvOpen passada.

Retornar valor

RxChangeBufferingState sempre retorna STATUS_SUCCESS se essa rotina foi bem-sucedida ou se ocorreu um erro. Se ocorrer um erro, o estado de buffer será alterado para que nenhum buffer seja habilitado.

Comentários

Se o buffer local estiver desabilitado para este FCB (FCB_STATE_DISABLE_LOCAL_BUFFERING estiver definido no membro da estrutura FcbState do FCB), isso desabilitará o buffer local independentemente do modo aberto no FCB e de todas as opções de buffer padrão. Quando FCB_STATE_DISABLE_LOCAL_BUFFERING for definido, o novo estado de buffer definido por RxChangeBufferingState será desabilitar todo o buffer.

Se ComputeNewState for TRUE, a rotina MRxComputeNewBufferingState exportada pelo minidiretório de rede será chamada para calcular o novo estado de buffer a ser usado.

Se o FCB for adquirido exclusivamente e ComputeNewState for FALSE. em seguida , RxChangeBufferingState definirá as seguintes opções de estado de buffer:

  • 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
Para adquirir o FCB exclusivamente, o FCB não deve ser aberto com nenhum dos seguintes valores:
  • ShareAccess.SharedRead
  • ShareAccess.SharedWrite
  • ShareAccess.SharedDelete
No momento, o RDBSS não usa várias opções de buffer possíveis, portanto, essas opções são ignoradas internamente pelo RDBSS quando são definidas usando RxChangeBufferingState. Essas opções de buffer ignoradas incluem o seguinte:
  • FCB_STATE_WRITEBUFFERING_ENABLED
  • FCB_STATE_READBUFFERING_ENABLED
  • FCB_STATE_OPENSHARING_ENABLED
  • FCB_STATE_COLLAPSING_ENABLED
  • FCB_STATE_FILESIZECACHEING_ENABLED
  • FCB_STATE_FILETIMECACHEING_ENABLED
Se o estado de buffer FCB_STATE_WRITECACHING_ENABLED for alterado para desativado, qualquer FCB no cache do sistema será liberado.

Ao sair de RxChangeBufferingState, não há nenhuma alteração na propriedade do recurso.

Requisitos

Requisito Valor
Plataforma de Destino Área de Trabalho
Cabeçalho rxprocs.h (inclua Rxprocs.h, Struchdr.h, Fcb.h)
IRQL <= APC_LEVEL

Confira também

RxIndicateChangeOfBufferingState

RxIndicateChangeOfBufferingStateForSrvOpen

A estrutura SRV_OPEN