Compartir a través de


Función RxInitializeContext (rxcontx.h)

RxInitializeContext inicializa una estructura de datos RX_CONTEXT existente.

Sintaxis

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

Puntero al IRP que va a encapsular esta estructura RX_CONTEXT.

[in] RxDeviceObject

Puntero al objeto de dispositivo al que se aplica este RX_CONTEXT e IRP.

[in] InitialContextFlags

Conjunto de valores iniciales para el miembro Flags de la estructura de datos RX_CONTEXT que se almacenará en la estructura RX_CONTEXT. Estos valores iniciales pueden ser cualquier combinación de las enumeraciones siguientes:

RX_CONTEXT_FLAG_WAIT

Cuando se establece este valor, el proceso del sistema de archivos no debe publicar el IRP para su ejecución posterior, pero debe esperar a que se complete.

RX_CONTEXT_FLAG_MUST_SUCCEED

Cuando se establece este valor, la operación debe realizarse correctamente. RdBSS no usa actualmente este valor, pero los controladores de minidirector de red pueden usarlo.

RX_CONTEXT_FLAG_MUST_SUCCEED_NONBLOCKING

Cuando se establece este valor, la operación debe realizarse correctamente para las operaciones sin bloqueo. RdBSS no usa actualmente este valor, pero los controladores de minidirector de red pueden usarlo.

[in, out] RxContext

Puntero al RX_CONTEXT que se va a inicializar.

Valor devuelto

None

Observaciones

RxInitializeContext lo llama internamente la rutina RxCreateRxContext . Por lo tanto, la rutina RxInitializeContext normalmente solo la usarían los controladores de red min-redirector que asignan RX_CONTEXT estructuras directamente en lugar de llamar a la rutina RxCreateRxContext para asignar e inicializar una estructura de RX_CONTEXT.

Si el parámetro Irp está configurado para la operación asincrónica, el miembro Flags de la estructura de RX_CONTEXT a la que apunta RxContext también tiene el siguiente valor establecido:

RX_CONTEXT_FLAG_ASYNC_OPERATION también se establece para las condiciones siguientes:

  • El miembro MajorFunction del Irp es IRP_MJ_READ, IRP_MJ_WRITE o IRP_MJ_DEVICE_CONTROL.
  • El miembro MajorFunction del Irp es un IRP_MJ_DIRECTORY_CONTROL y el miembro MinorFunction del IRP es un IRP_MN_NOTIFY_CHANGE_DIRECTORY.
  • El miembro MajorFunction de Irp es un miembro IRP_MJ_FILE_SYSTEM_CONTROL y NetRoot del FCB asociado no es NULL y el miembro Type del NET_ROOT es NET_ROOT_PIPE.
Si se trata de una llamada de sistema de archivos recursiva (el miembro TopLevelIrp en el almacenamiento local del subproceso es irp actual), el miembro Flags de RxContext también tiene el siguiente valor establecido:

Si el parámetro RxDeviceObject indica que se trata del objeto de dispositivo RDBSS de nivel superior, el miembro Flags de la estructura RX_CONTEXT también tiene el siguiente valor establecido:

Si el miembro Irp FileObject Flags tiene establecida la opción FO_WRITE_THROUGH, el miembro Flags de la estructura RX_CONTEXT también tiene el siguiente valor establecido:

RxInitializeContext establece una serie de otros miembros en la estructura RX_CONTEXT, incluidos los siguientes:

  • Establece el elemento NodeTypeCode, NodeByteSize, SerialNumber, RxDeviceObject y inicializa ReferenceCount en 1.
  • Inicializa syncEvent.
  • Inicializar el ScavengerEntry asociado
  • Inicializa la entrada de lista de BlockedOperations.
  • Establece los miembros RX_CONTEXT basados en irp. Estos incluyen los miembros CurrentIrp, OriginalThread, MajorFunction, MinorFunction, CurrentIrpSp, pFcb, NonPagedFcb, pFobx, pRelevantSrvOpen y FobxSerialNumber .

Requisitos

Requisito Value
Plataforma de destino Escritorio
Encabezado rxcontx.h (incluya Rxprocs.h rxcontx.h)
IRQL <= APC_LEVEL

Consulte también

RX_CONTEXT

RxCompleteRequest

RxCompleteRequest_Real

RxCreateRxContext

RxDereference

RxDereferenceAndDeleteRxContext_Real

RxPrepareContextForReuse

RxResumeBlockedOperations_Serially

__RxSynchronizeBlockingOperations

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock