Compartilhar via


Função RxInitializeContext (rxcontx.h)

RxInitializeContext inicializa uma estrutura de dados RX_CONTEXT existente.

Sintaxe

void RxInitializeContext(
  [in, optional] IN PIRP                 Irp,
  [in]           IN PRDBSS_DEVICE_OBJECT RxDeviceObject,
  [in]           IN ULONG                InitialContextFlags,
  [in, out]      IN OUT PRX_CONTEXT      RxContext
);

Parâmetros

[in, optional] Irp

Um ponteiro para o IRP a ser encapsulado por essa estrutura RX_CONTEXT.

[in] RxDeviceObject

Um ponteiro para o objeto do dispositivo ao qual este RX_CONTEXT e IRP se aplicam.

[in] InitialContextFlags

O conjunto de valores iniciais para sinalizadores membro da estrutura de dados RX_CONTEXT a ser armazenada na estrutura de RX_CONTEXT. Esses valores iniciais podem ser qualquer combinação das seguintes enumerações:

RX_CONTEXT_FLAG_WAIT

Quando esse valor é definido, o IRP não deve ser postado para execução posterior pelo processo do sistema de arquivos, mas deve ser aguardado para ser concluído.

RX_CONTEXT_FLAG_MUST_SUCCEED

Quando esse valor é definido, a operação deve ser bem-sucedida. Esse valor não é usado atualmente pelo RDBSS, mas pode ser usado por drivers de minidiretório de rede.

RX_CONTEXT_FLAG_MUST_SUCCEED_NONBLOCKING

Quando esse valor é definido, a operação deve ter êxito para operações sem bloqueio. Esse valor não é usado atualmente pelo RDBSS, mas pode ser usado por drivers de minidiretório de rede.

[in, out] RxContext

Ponteiro para o RX_CONTEXT a ser inicializado.

Valor de retorno

Nenhum

Observações

RxInitializeContext é chamado internamente pela rotina de RxCreateRxContext. Portanto, a rotina de RxInitializeContext normalmente seria usada apenas por drivers de min-redirector de rede que alocam estruturas RX_CONTEXT diretamente em vez de chamar a rotina de RxCreateRxContext para alocar e inicializar uma estrutura RX_CONTEXT.

Se o parâmetro irp estiver configurado para operação assíncrona, o Flags membro da estrutura RX_CONTEXT apontado por RxContext também terá o seguinte conjunto de valores:

RX_CONTEXT_FLAG_ASYNC_OPERATION também está definido para as seguintes condições:

  • O membro MajorFunction do Irp é IRP_MJ_READ, IRP_MJ_WRITE ou IRP_MJ_DEVICE_CONTROL.
  • O membro MajorFunction da irp é um IRP_MJ_DIRECTORY_CONTROL e o membro MinorFunction do IRP é um IRP_MN_NOTIFY_CHANGE_DIRECTORY.
  • O membro MajorFunction do Irp é um membro IRP_MJ_FILE_SYSTEM_CONTROL e NetRoot do FCB associado não é NULL e o membro tipo do NET_ROOT é NET_ROOT_PIPE.
Se essa for uma chamada recursiva do sistema de arquivos (o membro TopLevelIrp no armazenamento local do thread é o irpatual), o Flags membro do RxContext também tem o seguinte conjunto de valores:

Se o parâmetro RxDeviceObject indicar que esse é o objeto de dispositivo RDBSS de nível superior, o Flags membro da estrutura RX_CONTEXT também terá o seguinte conjunto de valores:

Se o membro Sinalizadores FileObject do Irp tiver a opção FO_WRITE_THROUGH definida, o Flags membro da estrutura RX_CONTEXT também terá o seguinte conjunto de valores:

RxInitializeContext define vários outros membros na estrutura RX_CONTEXT incluindo o seguinte:

  • Define o NodeTypeCodeadequado, NodeByteSize, SerialNumber, RxDeviceObjecte inicializa o ReferenceCount como 1.
  • Inicializa o SyncEvent
  • Inicializar o ScavengerEntry associado
  • Inicializa a entrada de lista de BlockedOperations
  • Define os membros RX_CONTEXT com base no irp. Eles incluem CurrentIrp, OriginalThread, MajorFunction, MinorFunction, CurrentIrpSp, pFcb, nonPagedFcb, pFobx, pRelevantSrvOpene membros fobxSerialNumber.

Requisitos

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

Consulte também

RX_CONTEXT

RxCompleteRequest

RxCompleteRequest_Real

RxCreateRxContext

RxDereference

RxDereferenceAndDeleteRxContext_Real

RxPrepareContextForReuse

RxResumeBlockedOperations_Serially

__RxSynchronizeBlockingOperations

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock