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 de dispositivo ao qual esse RX_CONTEXT e IRP se aplicam.
[in] InitialContextFlags
O conjunto de valores iniciais para o membro Flags da estrutura de dados RX_CONTEXT a ser armazenada na estrutura 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 ser bem-sucedida 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.
Retornar valor
Nenhum
Comentários
RxInitializeContext é chamado internamente pela rotina RxCreateRxContext . Portanto, a rotina RxInitializeContext normalmente só seria usada por drivers de redirecionador mínimo de rede que alocam RX_CONTEXT estruturas diretamente em vez de chamar a rotina RxCreateRxContext para alocar e inicializar uma estrutura de RX_CONTEXT.
Se o parâmetro Irp estiver configurado para operação assíncrona, o membro Flags da estrutura RX_CONTEXT apontada por RxContext também terá o seguinte valor definido:
RX_CONTEXT_FLAG_ASYNC_OPERATION também é 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 do 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 Type do NET_ROOT é NET_ROOT_PIPE.
Se o parâmetro RxDeviceObject indicar que esse é o objeto de dispositivo RDBSS de nível superior, o membro Flags da estrutura RX_CONTEXT também terá o seguinte valor definido:
Se o membro Irp FileObject Flags tiver a opção FO_WRITE_THROUGH definida, o membro Flags da estrutura RX_CONTEXT também terá o seguinte valor definido:
RxInitializeContext define vários outros membros na estrutura RX_CONTEXT incluindo o seguinte:
- Define o NodeTypeCode, NodeByteSize, SerialNumber, RxDeviceObject e inicializa 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 os membros CurrentIrp, OriginalThread, MajorFunction, MinorFunction, CurrentIrpSp, pFcb, NonPagedFcb, pFobx, pRelevantSrvOpen e FobxSerialNumber .
Requisitos
Requisito | Valor |
---|---|
Plataforma de Destino | Área de Trabalho |
Cabeçalho | rxcontx.h (inclua Rxprocs.h rxcontx.h) |
IRQL | <= APC_LEVEL |
Confira também
RxDereferenceAndDeleteRxContext_Real
RxResumeBlockedOperations_Serially