Compartilhar via


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 a estrutura de dados SRV_OPEN a ser alterada.

Context

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

ComputeNewState

O valor que indica se o novo estado de buffer deve ser computado. Quando esse valor é definido como verdadeiro, o novo estado de buffer é determinado chamando o minidiretor 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.

Valor de retorno

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.

Observações

Se o buffer local estiver desabilitado para este FCB (FCB_STATE_DISABLE_LOCAL_BUFFERING estiver definido no membro da estrutura FcbState da 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 VERDADEIRO, a rotina de 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 exige exclusivamente que a FCB não seja aberta 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 FCB_STATE_WRITECACHING_ENABLED estado de buffer for alterado para desativado, qualquer FCB no cache do sistema será liberado.

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

Requisitos

Requisito Valor
da Plataforma de Destino Área de trabalho
cabeçalho rxprocs.h (include Rxprocs.h, Struchdr.h, Fcb.h)
IRQL <= APC_LEVEL

Consulte também

RxIndicateChangeOfBufferingState

RxIndicateChangeOfBufferingStateForSrvOpen

a estrutura SRV_OPEN