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 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
RxDereferenceAndDeleteRxContext_Real
RxResumeBlockedOperations_Serially