estructura RX_CONTEXT (rxcontx.h)

La estructura RX_CONTEXT encapsula un IRP para su uso por RDBSS, mini redirecdores de red y el sistema de archivos. Describe un IRP mientras se procesa mediante un minidirector de red y contiene información de estado que permite liberar recursos globales a medida que se completa el IRP.

Sintaxis

typedef struct _RX_CONTEXT {
  NODE_TYPE_CODE         NodeTypeCode;
  NODE_BYTE_SIZE         NodeByteSize;
  __volatile ULONG       ReferenceCount;
  LIST_ENTRY             ContextListEntry;
  UCHAR                  MajorFunction;
  UCHAR                  MinorFunction;
  BOOLEAN                PendingReturned;
  BOOLEAN                PostRequest;
  PDEVICE_OBJECT         RealDevice;
  PIRP                   CurrentIrp;
  PIO_STACK_LOCATION     CurrentIrpSp;
  PMRX_FCB               pFcb;
  PMRX_FOBX              pFobx;
  PMRX_SRV_OPEN          pRelevantSrvOpen;
  PNON_PAGED_FCB         NonPagedFcb;
  PRDBSS_DEVICE_OBJECT   RxDeviceObject;
  PETHREAD               OriginalThread;
  PETHREAD               LastExecutionThread;
  __volatile PVOID       LockManagerContext;
  PVOID                  RdbssDbgExtension;
  RX_SCAVENGER_ENTRY     ScavengerEntry;
  ULONG                  SerialNumber;
  ULONG                  FobxSerialNumber;
  ULONG                  Flags;
  BOOLEAN                FcbResourceAcquired;
  BOOLEAN                FcbPagingIoResourceAcquired;
  UCHAR                  MustSucceedDescriptorNumber;
  union {
    struct {
      union {
        NTSTATUS StoredStatus;
        PVOID    StoredStatusAlignment;
      };
      ULONG_PTR InformationToReturn;
    };
    IO_STATUS_BLOCK IoStatusBlock;
  };
  union {
    ULONGLONG ForceLonglongAligmentDummyField;
    PVOID     MRxContext[MRX_CONTEXT_FIELD_COUNT];
  };
  PVOID                  WriteOnlyOpenRetryContext;
  PMRX_CALLDOWN          MRxCancelRoutine;
  PRX_DISPATCH           ResumeRoutine;
  RX_WORK_QUEUE_ITEM     WorkQueueItem;
  LIST_ENTRY             OverflowListEntry;
  KEVENT                 SyncEvent;
  LIST_ENTRY             BlockedOperations;
  PFAST_MUTEX            BlockedOpsMutex;
  LIST_ENTRY             RxContextSerializationQLinks;
  union {
    struct {
      union {
        FS_INFORMATION_CLASS   FsInformationClass;
        FILE_INFORMATION_CLASS FileInformationClass;
      };
      PVOID   Buffer;
      union {
        LONG Length;
        LONG LengthRemaining;
      };
      BOOLEAN ReplaceIfExists;
      BOOLEAN AdvanceOnly;
    } Info;
    struct {
      UNICODE_STRING       SuppliedPathName;
      NET_ROOT_TYPE        NetRootType;
      PIO_SECURITY_CONTEXT pSecurityContext;
    } PrefixClaim;
  };
  union {
    struct {
      NT_CREATE_PARAMETERS NtCreateParameters;
      ULONG                ReturnedCreateInformation;
      PWCH                 CanonicalNameBuffer;
      PRX_PREFIX_ENTRY     NetNamePrefixEntry;
      PMRX_SRV_CALL        pSrvCall;
      PMRX_NET_ROOT        pNetRoot;
      PMRX_V_NET_ROOT      pVNetRoot;
      PVOID                EaBuffer;
      ULONG                EaLength;
      ULONG                SdLength;
      ULONG                PipeType;
      ULONG                PipeReadMode;
      ULONG                PipeCompletionMode;
      USHORT               Flags;
      NET_ROOT_TYPE        Type;
      UCHAR                RdrFlags;
      BOOLEAN              FcbAcquired;
      BOOLEAN              TryForScavengingOnSharingViolation;
      BOOLEAN              ScavengingAlreadyTried;
      BOOLEAN              ThisIsATreeConnectOpen;
      BOOLEAN              TreeConnectOpenDeferred;
      UNICODE_STRING       TransportName;
      UNICODE_STRING       UserName;
      UNICODE_STRING       Password;
      UNICODE_STRING       UserDomainName;
    } Create;
    struct {
      ULONG   FileIndex;
      BOOLEAN RestartScan;
      BOOLEAN ReturnSingleEntry;
      BOOLEAN IndexSpecified;
      BOOLEAN InitialQuery;
    } QueryDirectory;
    struct {
      PMRX_V_NET_ROOT pVNetRoot;
    } NotifyChangeDirectory;
    struct {
      PUCHAR  UserEaList;
      ULONG   UserEaListLength;
      ULONG   UserEaIndex;
      BOOLEAN RestartScan;
      BOOLEAN ReturnSingleEntry;
      BOOLEAN IndexSpecified;
    } QueryEa;
    struct {
      SECURITY_INFORMATION SecurityInformation;
      ULONG                Length;
    } QuerySecurity;
    struct {
      SECURITY_INFORMATION SecurityInformation;
      PSECURITY_DESCRIPTOR SecurityDescriptor;
    } SetSecurity;
    struct {
      ULONG                       Length;
      PSID                        StartSid;
      PFILE_GET_QUOTA_INFORMATION SidList;
      ULONG                       SidListLength;
      BOOLEAN                     RestartScan;
      BOOLEAN                     ReturnSingleEntry;
      BOOLEAN                     IndexSpecified;
    } QueryQuota;
    struct {
      ULONG Length;
    } SetQuota;
    struct {
      PV_NET_ROOT VNetRoot;
      PSRV_CALL   SrvCall;
      PNET_ROOT   NetRoot;
    } DosVolumeFunction;
    struct {
      ULONG         FlagsForLowIo;
      LOWIO_CONTEXT LowIoContext;
    };
  };
  PWCH                   AlsoCanonicalNameBuffer;
  PUNICODE_STRING        LoudCompletionString;
  __volatile LONG        AcquireReleaseFcbTrackerX;
  __volatile ULONG       TrackerHistoryPointer;
  RX_FCBTRACKER_CALLINFO TrackerHistory[RDBSS_TRACKER_HISTORY_SIZE];
  ULONG                  ShadowCritOwner;
} RX_CONTEXT, *PRX_CONTEXT;

Miembros

NodeTypeCode

Tipo de nodo único usado para una estructura de RX_CONTEXT. RDBSS establece este miembro en RDBSS_NTC_RX_CONTEXT cuando se inicializa un RX_CONTEXT en RxInitializeContext. Si un controlador de minidirector de red inicializa una estructura de RX_CONTEXT mediante algún otro método, se debe establecer este miembro.

RDBSS define este miembro como parte de un encabezado estándar para todas las estructuras usadas por RDBSS.

Todos los tipos de estructura principales usados por RDBSS tienen un código de tipo de nodo de dos bytes único definido en nodetype.h que se puede usar para la depuración. Estos tipos de estructura principales incluyen lo siguiente:

NodeByteSize

Tamaño, en bytes, de esta estructura. RDBSS establece este miembro en sizeof( RX_CONTEXT) cuando se inicializa un RX_CONTEXT en la rutina de RxInitializeContext. Si un controlador minidirector de red inicializa una estructura de RX_CONTEXT mediante algún otro método, este miembro debe establecerse.

RDBSS define este miembro como parte de un encabezado estándar para todas las estructuras usadas por RDBSS.

ReferenceCount

Recuento de referencias de esta estructura después de asignarla. RDBSS establece este miembro en 1 cuando se asigna un RX_CONTEXT e inicializa en la rutina de RxInitializeContext. Si un controlador minidirector de red inicializa una estructura de RX_CONTEXT mediante algún otro método, este miembro debe establecerse.

RDBSS define este miembro como parte de un encabezado estándar para todas las estructuras usadas por RDBSS.

ContextListEntry

Entrada de lista para conectar este RX_CONTEXT a la lista de RX_CONTEXTS activas.

MajorFunction

Función principal del IRP encapsulado por este RX_CONTEXT.

MinorFunction

Función secundaria del IRP encapsulado por este RX_CONTEXT.

PendingReturned

Si se establece en TRUE, especifica que RDBSS o un controlador ha marcado el IRP pendiente. Cada rutina ioCompletion debe comprobar el valor de esta marca. Si la marca es TRUE y si la rutina IoCompletion no devolverá STATUS_MORE_PROCESSING_REQUIRED, la rutina debe llamar a IoMarkIrpPending para propagar el estado pendiente a los controladores situados encima de ella en la pila de dispositivos. Este miembro es similar al mismo campo del IRP.

RDBSS siempre establece este miembro en TRUE antes de llamar al controlador minidirector de red.

PostRequest

Si se establece en TRUE, esto indica si la solicitud asociada se va a publicar en un subproceso de trabajo de RDBSS. Un minidirector de red puede establecer este miembro en TRUE para indicar que desea publicar esta solicitud en el proceso del sistema de archivos (FSP).

RealDevice

Puntero al objeto de dispositivo para el controlador minidirector de red de destino. RDBSS establece este miembro en el objeto de dispositivo del controlador minidirector de red cuando se asigna un RX_CONTEXT en la rutina de RxInitializeContext. Este miembro se copia del miembro FileObject>deviceObject miembro de la pila IRP. El objeto de dispositivo para el minidirector de red también se almacena en el miembro de estructura RxDeviceObject.

El miembro RealDevice no lo usa ACTUALMENTE RDBSS, pero los mini redireccionadores de red pueden usarse.

CurrentIrp

Puntero al IRP de origen. Un controlador minidirector de red no debe usar este miembro.

CurrentIrpSp

Puntero a la ubicación de la pila irP.

pFcb

Puntero al bloque de control de archivos asociado (FCB) para este IRP.

pFobx

Puntero a la extensión de objeto de archivo asociada (FOBX) para este IRP.

pRelevantSrvOpen

Puntero al servidor asociado open(SRV_OPEN) para este IRP.

NonPagedFcb

Puntero al bloque de control de archivos no paginado asociado (FCB) para este IRP.

RxDeviceObject

Puntero al RDBSS_DEVICE_OBJECT para el controlador de minidirector de red de destino que es necesario para los algoritmos de cola de trabajo. RDBSS establece este miembro en el RDBSS_DEVICE_OBJECT del minidirector de red cuando se inicializa un RX_CONTEXT en la rutina de RxInitializeContext. La estructura rxDeviceObject incluye un miembro DeviceObject que contiene el objeto de dispositivo para el controlador mini-redirector de red que es el mismo que el miembro realDevice del RX_CONTEXT.

OriginalThread

Puntero al subproceso original en el que se inició la solicitud.

LastExecutionThread

Puntero al último subproceso en el que se realizó algún procesamiento asociado a la RX_CONTEXT si el subproceso se publicó en el proceso del sistema de archivos.

LockManagerContext

Puntero al contexto del administrador de bloqueos. Este miembro está reservado para uso interno.

RdbssDbgExtension

Puntero al contexto proporcionado a RDBSS para la información de depuración. Este miembro está reservado para uso interno.

ScavengerEntry

Puntero a la lista de elementos que se van a guardar. Este miembro está reservado para uso interno.

SerialNumber

Número de serie de esta estructura de RX_CONTEXT. Cada estructura inicializada por RDBSS tiene asignado un número de serie cuando la estructura se inicializa por primera vez. Este número de serie es un número que se incrementa en uno antes de establecer el valor. RDBSS establece este miembro cuando se inicializa un RX_CONTEXT en la rutina de RxInitializeContext. RDBSS

FobxSerialNumber

Número de serie de la estructura FOBX asociada. Cada estructura inicializada por RDBSS tiene asignado un número de serie cuando la estructura se inicializa por primera vez. Los miniireccionadores de red pueden usar este miembro para ver si varias llamadas forman parte de la misma operación más grande y, por tanto, son más almacenables en caché.

Flags

Máscara de bits de marcas para esta estructura de RX_CONTEXT.

FcbResourceAcquired

Si se establece en TRUE, este miembro especifica que el recurso FCB se ha adquirido para esta operación. El recurso FCB es uno de los mecanismos de bloqueo asociados a una operación en un FCB.

FcbPagingIoResourceAcquired

Si se establece en TRUE, este miembro especifica que el recurso de E/S de paginación de FCB se ha adquirido para esta operación. El recurso de E/S de paginación de FCB es uno de los mecanismos de bloqueo asociados a una operación de E/S de paginación en un FCB.

MustSucceedDescriptorNumber

Un miembro establecido inicialmente en cero en la rutina de rxCreateRxContext de . De lo contrario, RDBSS no usa este miembro, pero es posible que lo usen los mini redireccionadores de red.

StoredStatus

Miembro de una unión sin nombre utilizada para devolver información de estado por parte de un controlador minidirector de red para operaciones de E/S bajas. RDBSS también establece este valor en función del estado devuelto por el MRxQueryFileInfo rutina cuando RDBSS no entiende la operación de consulta de archivos.

StoredStatusAlignment

Miembro de una unión sin nombre utilizada para forzar la alineación adecuada en el miembro StoredStatus.

InformationToReturn

Miembro de una unión sin nombre utilizada para devolver información de estado por parte de un controlador minidirector de red para algunas operaciones de E/S bajas (lectura, escritura, FSCTL, etc.) y operaciones de MrxQueryXXX.

Tipo de nodo único usado para una estructura de RX_CONTEXT. Todos los tipos de estructura principales (RX_CONTEXT, SRV_CALL, NET_ROOT, V_NET_ROOT, SRV_OPEN, FCB y FOBX, por ejemplo) usados por RDBSS tienen un código de tipo de nodo de dos bytes único definido en el archivo de inclusión nodetype.h, que se puede usar para la depuración. RDBSS establece este miembro en RDBSS_NTC_RX_CONTEXT cuando se inicializa un RX_CONTEXT en la rutina RxInitializeContext. Si un controlador minidirector de red inicializa una estructura de RX_CONTEXT mediante algún otro método, este miembro debe establecerse.

RDBSS define este miembro como parte de un encabezado estándar para todas las estructuras usadas por RDBSS.

IoStatusBlock

El bloque de estado de E/S que usa un minidirector de red para devolver información de estado. El miembro IoStatusBlock es miembro de una unión sin nombre que se usa para devolver información de estado.

ForceLonglongAligmentDummyField

Miembro de una unión sin nombre utilizada para forzar la alineación adecuada en el miembro MRxContext[MRX_CONTEXT_FIELD_COUNT].

MRxContext[MRX_CONTEXT_FIELD_COUNT]

WriteOnlyOpenRetryContext

Puntero que se puede usar para almacenar algún estado para el minidirector de red. RdBSS no usa este miembro, pero un controlador minidirector de red puede usar para indicar que un archivo se almacena en caché en un identificador de solo escritura.

MRxCancelRoutine

Puntero a la rutina de cancelación que puede establecer un controlador minidirector de red.

ResumeRoutine

Este miembro está reservado para uso interno.

WorkQueueItem

Puntero a un elemento de cola de trabajo que puede usar un controlador minidirector de red mientras procesa el RX_CONTEXT.

OverflowListEntry

Puntero al encabezado de la lista de operaciones que se van a liberar al finalizar. Este miembro está reservado para uso interno.

SyncEvent

Puntero a un evento de kernel que un controlador minidirector de red puede usar para esperar mientras procesa el RX_CONTEXT.

BlockedOperations

Puntero al encabezado de lista de operaciones bloqueadas que se van a liberar al finalizar. Este miembro está reservado para uso interno.

BlockedOpsMutex

Puntero a una exclusión mutua que controla la serialización de las operaciones bloqueadas. Este miembro está reservado para uso interno.

RxContextSerializationQLinks

Puntero a la entrada de lista que se usa para serializar las operaciones de canalización por cada objeto de archivo. Este miembro está reservado para uso interno.

Info

Miembro de estructura de una unión sin nombre usada para las rutinas siguientes:

  • MRxQueryDirectory
  • MRxQueryFileInfo
  • MRxQueryVolumeInfo
  • MRxSetFileInfo
  • MRxSetFileInfoAtCleanup
  • MRxSetVolumeInfo

RDBSS pasa información en el miembro de estructura info al minidirector de red y el minidirector de red devuelve información a RDBSS en el miembro de estructura info .

Info.FsInformationClass

Miembro de una unión sin nombre usada por RDBSS para pasar el tipo de FS_INFORMATION_CLASS que se solicita al controlador de minidirector de red. RDBSS pasa información en el miembro FsInformationClass al llamar a MrxQueryVolumeInfo y mrxSetVolumeInfo.

Info.FileInformationClass

Miembro de una unión sin nombre utilizada por RDBSS para indicar el tipo de solicitud de FILE_INFORMATION_CLASS enviada al controlador minidirector de red. RDBSS pasa información en el miembro FileInformationClass al llamar a MrxQueryDirectory, MrxQueryFileInfoy MrxSetFileInfo.

Info.Buffer

Un búfer que se usa para pasar datos de RDBSS al controlador minidirector de red y recibir respuestas del controlador de minidirector de red mediante RDBSS. El miembro buffer de se usa en el MrxQueryDirectory, mrxQueryFileInfo, mrxQueryVolumeInfo, mrxSetFileInfo, MRxSetFileInfoAtCleanupy rutinas de MrxSetVolumeInfo.

Info.Length

Miembro de una unión sin nombre utilizada para pasar la longitud del Búfer miembro de RDBSS al controlador de minidirector de red. El miembro length de se usa en el mrxQueryDirectory, MrxQueryFileInfo , mrxQueryVolumeInfo, mrxSetFileInfo, MRxSetFileInfoAtCleanupy rutinas mrxSetVolumeInfo.

Info.LengthRemaining

Miembro de una unión sin nombre utilizada para pasar la longitud de la información devuelta en el buffer de miembro del controlador de minidirector de red a RDBSS. El miembro LengthRemaining de se usa en elMrxQueryDirectory , MrxQueryFileInfo, MrxQueryVolumeInfo, mrxSetFileInfo, MRxSetFileInfoAtCleanupy rutinas de MrxSetVolumeInfo.

Info.ReplaceIfExists

Valor booleano que indica si se debe reemplazar un archivo existente durante una operación de cambio de nombre. El miembro ReplaceIfExists se usa en la rutina mrxSetFileInfo .

Info.AdvanceOnly

Este miembro está reservado para uso interno.

PrefixClaim

Miembro de estructura de una unión sin nombre utilizada para las solicitudes de resolución de prefijo enviadas desde el proveedor UNC múltiple (MUP). Una notificación de prefijo resulta de una solicitud de IRP_MJ_DEVICE_CONTROL de MUP a RDBSS para IOCTL_REDIR_QUERY_PATH o IOCTL_REDIR_QUERY_PATH_EX. RDBSS pasa información en la estructura de PrefixClaim al minidirector de red y el minidirector de red devuelve información a RDBSS en la estructura de PrefixClaim.

PrefixClaim.SuppliedPathName

Cadena Unicode terminada sin NULL que especifica la ruta de acceso UNC en la que se va a realizar la resolución de prefijos.

PrefixClaim.NetRootType

Tipo del NET_ROOT solicitado. Este miembro no se usa actualmente. RDBSS deduce el tipo del NET_ROOT del miembro SuppliedPathName.

PrefixClaim.pSecurityContext

Puntero al contexto de seguridad pasado desde la solicitud de MUP.

Este miembro no se usa actualmente. El contexto de seguridad se pasa en el create.NtCreateParameters.SecurityContext miembro del RX_CONTEXT, no en este miembro.

Create

Miembro de estructura de una unión sin nombre utilizada para controlar las solicitudes de IRP_MJ_CREATE. Este miembro se usa para controlar las solicitudes abiertas de archivos que dan lugar a llamadas a la rutina de MRxCreate. Este miembro también se usa para las solicitudes de resolución de prefijos. RDBSS pasa información en el miembro de estructura create al minidirector de red y el minidirector de red devuelve información a RDBSS en el miembro de estructura create de .

Create.NtCreateParameters

Los parámetros create pasados al modo de usuario rutina ntCreatefile. RDBSS establece los miembros de la estructura de NtCreateParameters en función de los miembros Parameters.Create del IRP.

Create.ReturnedCreateInformation

Valor establecido por el minidirector de red al finalizar la llamada MRxCreate.

Create.CanonicalNameBuffer

Puntero a la cadena Unicode que representa el nombre del archivo físico que se va a abrir si el nombre canónico es mayor que el búfer disponible.

Create.NetNamePrefixEntry

Puntero a la entrada de prefijo de tabla NetName. Este miembro está reservado para uso interno.

Create.pSrvCall

Puntero a la estructura de SRV_CALL asociada.

Create.pNetRoot

Puntero a la estructura de NET_ROOT asociada.

Create.pVNetRoot

Puntero a la estructura de V_NET_ROOT asociada.

Create.EaBuffer

Puntero al búfer de atributos extendidos. Este miembro es opcional.

Create.EaLength

Longitud del búfer de atributos extendidos, eaBuffer.

Create.SdLength

Longitud del descriptor de seguridad. RDBSS establece esto en función del valor del Parameters.Create.SecurityContext miembro del IRP. Si el miembro SdLength es distinto de cero, el descriptor de seguridad se pasa en el miembro Info.Buffer al minidirector de red.

Create.PipeType

Tipo de una canalización. Este miembro está reservado para uso interno.

Create.PipeReadMode

Modo de lectura para una canalización. Este miembro está reservado para uso interno.

Create.PipeCompletionMode

Modo de finalización de una canalización. Este miembro está reservado para uso interno.

Create.Flags

Marcas de creación

Create.Type

Tipo de la estructura de NET_ROOT asociada.

Create.RdrFlags

Create.FcbAcquired

Este miembro está reservado para uso interno.

Create.TryForScavengingOnSharingViolation

Este miembro está reservado para uso interno.

Create.ScavengingAlreadyTried

Este miembro está reservado para uso interno.

Create.ThisIsATreeConnectOpen

Valor booleano que indica si esta llamada es una solicitud abierta de conexión de árbol con la opción FILE_CREATE_TREE_CONNECTION establecida en el miembro IrpSp->Parameters.Create.Options.

Create.TreeConnectOpenDeferred

Un valor booleano que indica el minidirector de red puede optar por aplazar la solicitud abierta de conexión de árbol.

Create.TransportName

Cadena Unicode que representa el nombre de transporte. Este miembro se establece desde los parámetros abiertos de conexión de árbol.

Create.UserName

Cadena Unicode que representa el nombre de usuario responsable de la solicitud. Este miembro se establece desde los parámetros abiertos de conexión de árbol.

Create.Password

Cadena Unicode que contiene la contraseña de este UserName se usa para la autenticación y autorización. Este miembro se establece desde los parámetros abiertos de conexión de árbol.

Create.UserDomainName

Cadena Unicode que contiene el nombre de dominio de este UserName.

QueryDirectory

Miembro de estructura de una unión sin nombre que se usa para controlar las solicitudes de IRP_MJ_DIRECTORY_CONTROL. Este miembro se usa para controlar las solicitudes de directorio de consulta que dan lugar a llamadas a la rutina de mrxQueryDirectory . RDBSS pasa información en el miembro de estructura queryDirectory de al minidirector de red.

QueryDirectory.FileIndex

Índice de la entrada en la que se va a comenzar a examinar el directorio si el miembro IndexSpecified de está establecido en TRUE. Este parámetro se establece en el miembro IrpSp->Parameters.QueryDirectory.FileIndex.

QueryDirectory.RestartScan

Un valor booleano cuando se establece en TRUE indica que el examen se debe iniciar en la primera entrada del directorio. Cuando este valor se establece en FALSE, el examen se reanuda desde una llamada anterior. Este parámetro debe establecerse en TRUE al llamar por primera vez. Este parámetro se establece en TRUE si IrpSp->Flags tiene el bit de SL_RESTART_SCAN.

QueryDirectory.ReturnSingleEntry

Un valor booleano establecido en TRUE indica que solo se debe devolver una sola entrada. Si este parámetro es TRUE, mrxQueryDirectory debe devolver solo la primera entrada que se encuentra. Este parámetro se establece en TRUE si IrpSp->Flags tiene el bit de SL_RETURN_SINGLE_ENTRY activado.

QueryDirectory.IndexSpecified

Un valor booleano cuando se establece en TRUE indica que se debe comenzar el examen en la entrada del directorio cuyo índice es proporcionado por el miembro FileIndex. Este parámetro se establece en TRUE si irpSp->Flags tiene el bit de SL_INDEX_SPECIFIED activado.

QueryDirectory.InitialQuery

Valor booleano que se establece en TRUE cuando la consulta no es una consulta con caracteres comodín (".", por ejemplo). Este miembro se establece en TRUE si el miembro UnicodeQueryTemplate.Buffer del FOBX asociado es NULL y el Flags miembro del FOBX no tiene el bit de FOBX_FLAG_MATCH_ALL. Para una consulta de comodín (".", por ejemplo), RDBSS establecerá el UnicodeQueryTemplate.Buffer miembro del FOBX asociado en la consulta de comodín pasada.

NotifyChangeDirectory

Miembro de estructura de una unión sin nombre que se usa para controlar las solicitudes de IRP_MJ_DIRECTORY_CONTROL con una función secundaria de IRP_MN_NOTIFY_CHANGE_DIRECTORY. Este miembro se usa para controlar las solicitudes de cambio de directorio que dan lugar a llamadas a la rutina MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]. RDBSS pasa información en el miembro de estructura de NotifyChangeDirector y y el pLowIoContext->ParamsFor.NotifyChangeDirectory estructura al minidirector de red.

NotifyChangeDirectory.pVNetRoot

Puntero a la estructura V_NET_ROOT asociada al directorio. Este parámetro se establece en el miembro IrpSp->FileObject->FsContext o el miembro IrpSp->FileObject->FsContext2 en función del tipo de nodo.

QueryEa

Miembro de estructura de una unión sin nombre que se usa para controlar las solicitudes de IRP_MJ_QUERY_EA. Este miembro se usa para controlar las solicitudes de consulta de atributos extendidos que dan lugar a llamadas a la rutina de MRxQueryEaInfo . RDBSS pasa información en el miembro de estructura queryEa al minidirector de red.

QueryEa.UserEaList

Puntero a un búfer de entrada proporcionado por el autor de la llamada que contiene una estructura de FILE_GET_EA_INFORMATION que especifica los atributos extendidos que se van a consultar. Este parámetro se establece en IrpSp->Parameters.QueryEa.EaList.

QueryEa.UserEaListLength

Longitud, en bytes, del búfer al que apunta miembro UserEaList. Este parámetro se establece en IrpSp->Parameters.QueryEa.EaListLength.

QueryEa.UserEaIndex

Índice de la entrada en la que se va a comenzar a examinar la lista de atributos extendidos. Este parámetro debe omitirse si el miembro IndexSpecified no está establecido en TRUE o si QueryEaList miembro apunta a una lista no vacía. Este parámetro se establece en IrpSp->Parameters.QueryEa.EaIndex.

QueryEa.RestartScan

Un valor booleano cuando se establece en TRUE indica que la consulta se inicia en la primera entrada de atributo extendida. Cuando este valor se establece en FALSE, el examen se reanuda desde una llamada anterior. Este parámetro debe establecerse en TRUE al llamar por primera vez. Este parámetro se establece en TRUE si IrpSp->Flags tiene el bit SL_RESTART_SCAN activado.

QueryEa.ReturnSingleEntry

Un valor booleano cuando se establece en TRUE indica que solo se debe devolver una sola entrada. Si este parámetro es TRUE, MrxQueryEaInfo debe devolver solo la primera entrada que se encuentra. Este parámetro se establece en TRUE si IrpSp->Flags tiene el bit de SL_RETURN_SINGLE_ENTRY activado.

QueryEa.IndexSpecified

Un valor booleano cuando se establece en TRUE indica que se debe comenzar el examen en la entrada de los atributos extendidos cuyo índice recibe el miembro UserEaIndex. Este parámetro se establece en TRUE si irpSp->Flags tiene el bit de SL_INDEX_SPECIFIED activado.

QuerySecurity

Miembro de estructura de una unión sin nombre utilizada para controlar solicitudes IRP_MJ_QUERY_SECURITY. Este miembro se usa para controlar las solicitudes de seguridad de consulta que dan lugar a llamadas a la rutina de MRxQuerySdInfo. RDBSS pasa información en el miembro de estructura querySecurity al minidirector de red.

QuerySecurity.SecurityInformation

Puntero a un búfer de entrada proporcionado por el autor de la llamada que contiene una estructura de SECURITY_INFORMATION que especifica la operación que se va a consultar. Este parámetro se establece en IrpSp->Parameters.QuerySecurity.SecurityInformation.

QuerySecurity.Length

Longitud, en bytes, del búfer al que apunta miembro securityInformation. Este parámetro se establece en IrpSp->Parameters.QuerySecurity.Length.

SetSecurity

Miembro de estructura de una unión sin nombre que se usa para controlar IRP_MJ_SET_SECURITY solicitudes. Este miembro se usa para controlar las solicitudes de seguridad de consulta que dan lugar a llamadas a la rutina de MRxSetSdInfo. RDBSS pasa información en el miembro de estructura setSecurity al minidirector de red.

SetSecurity.SecurityInformation

Puntero a un búfer de entrada proporcionado por el autor de la llamada que contiene una estructura de SECURITY_INFORMATION que especifica qué información de seguridad se va a establecer en el descriptor de seguridad. Este parámetro se establece en IrpSp->Parameters.SetSecurity.SecurityInformation.

SetSecurity.SecurityDescriptor

Puntero a una estructura SECURITY_DESCRIPTOR que contiene los valores de la información de seguridad que se asignará al objeto. Este parámetro se establece en IrpSp->Parameters.SetSecurity.SecurityDescriptor.

QueryQuota

Miembro de estructura de una unión sin nombre utilizada para controlar solicitudes de IRP_MJ_QUERY_QUOTA. Este miembro se usa para controlar las solicitudes de seguridad de consulta que dan lugar a llamadas a la rutina de MRxQueryQuotaInfo . RDBSS pasa información en el queryQuota miembro de estructura al minidirector de red.

QueryQuota.Length

Longitud, en bytes, del búfer al que apunta miembro startSid. Este parámetro se establece en IrpSp->Parameters.QueryQuota.Length.

QueryQuota.StartSid

Puntero opcional a un SID que indica que la información devuelta es comenzar con una entrada distinta de la primera entrada. Este parámetro se omite si se especifica el miembro SidList. Este parámetro se establece en IrpSp->Parameters.QueryQuota.StartSid.

QueryQuota.SidList

Puntero opcional a una lista de SID cuya información de cuota se va a devolver. Cada entrada de la lista es una estructura FILE_GET_QUOTA_INFORMATION. Este parámetro se establece en IrpSp->Parameters.QueryQuota.SidList.

QueryQuota.SidListLength

Longitud, en bytes, de la lista de SID en el miembro sidList, si se especifica uno. Este parámetro se establece en IrpSp->Parameters.QueryQuota.SidListLength.

QueryQuota.RestartScan

Un valor booleano cuando se establece en TRUE indica que la consulta se iniciará en la primera entrada. Cuando este valor se establece en FALSE, el examen se reanuda desde una llamada anterior. Este parámetro debe establecerse en TRUE al llamar por primera vez. Este parámetro se establece en TRUE si IrpSp->Flagstiene el bit de SL_RESTART_SCAN.

QueryQuota.ReturnSingleEntry

Un valor booleano cuando se establece en TRUE indica que solo se debe devolver una sola entrada. Si este parámetro es TRUE, MrxQueryQuotaInfo debe devolver solo la primera entrada que se encuentra. Este parámetro se establece en TRUE si IrpSp->Flags tiene el bit de SL_RETURN_SINGLE_ENTRY activado.

QueryQuota.IndexSpecified

Un valor booleano cuando se establece en TRUE indica que se debe comenzar el examen en la entrada de la lista cuyo índice recibe el miembro startSid de . Este parámetro se establece en TRUE si irpSp->Flags tiene el bit de SL_INDEX_SPECIFIED activado.

SetQuota

Miembro de estructura de una unión sin nombre utilizada para controlar las solicitudes de IRP_MJ_SET_QUOTA. RdBSS no usa actualmente esta estructura.

SetQuota.Length

Miembro sin usar de la estructura SetQuota.

DosVolumeFunction

Miembro de estructura de una unión sin nombre. RdBSS no usa actualmente esta estructura.

DosVolumeFunction.VNetRoot

Miembro sin usar de la estructura DosVolumeFunction.

DosVolumeFunction.SrvCall

Miembro sin usar de la estructura DosVolumeFunction.

DosVolumeFunction.NetRoot

Miembro sin usar de la estructura DosVolumeFunction.

FlagsForLowIo

Un conjunto de RX_CONTENT_CREATE_FLAGS establecido por RDBSS y pasado a operaciones de E/S bajas enviadas al minidirector de red. FlagsForLowIo es miembro de una estructura sin nombre utilizada para solicitudes de E/S bajas al minidirector de red.

LowIoContext

Puntero a una estructura LOWIO_CONTEXT pasada al minidirector de red. lowIoContext es un miembro de la estructura sin nombre usada para las solicitudes de E/S bajas enviadas al minidirector de red.

AlsoCanonicalNameBuffer

Puntero a la cadena Unicode que representa el nombre del archivo físico que se va a abrir si el nombre canónico es mayor que el búfer disponible.

LoudCompletionString

Miembro sin usar de la estructura RX_CONTEXT.

AcquireReleaseFcbTrackerX

Reservado para uso del sistema.

TrackerHistoryPointer

Reservado para uso del sistema.

TrackerHistory[RDBSS_TRACKER_HISTORY_SIZE]

Reservado para uso del sistema.

ShadowCritOwner

Reservado para uso del sistema.

Observaciones

La estructura RX_CONTEXT es una de las estructuras de datos fundamentales usadas por RDBSS y mini-redireccionadores para administrar un paquete de solicitud de E/S (IRP). Encapsula un IRP para su uso por RDBSS, mini redirectores de red y el sistema de archivos. Una estructura RX_CONTEXT incluye un puntero a un único IRP y todo el contexto necesario para procesar el IRP.

A veces, una estructura de RX_CONTEXT se conoce como contexto irP o RxContext en los archivos de encabezado de WDK y otros recursos usados para desarrollar controladores de minidirector de red.

El RX_CONTEXT es una estructura de datos a la que se adjunta información adicional proporcionada por los distintos mini redireccionadores de red. El RX_CONTEXT incluye campos para asignar el tamaño de cada estructura de RX_CONTEXT por una cantidad especificada previamente para cada minidirector de red, que se reserva para su uso por el minidirector. Este enfoque consiste en asignar un área previamente especificada, que es la misma para todos los mini redireccionadores de red como parte de cada RX_CONTEXT. Se trata de un área sin formato sobre la que cualquier estructura deseada puede imponerse por los distintos redireccionadores de red mini. Los desarrolladores de controladores de minidirector de red deben intentar definir el contexto privado asociado para que se ajuste a esta área especificada previamente definida en la estructura de datos RX_CONTEXT. Los controladores de minidirector de red que infringen esta regla incurrirán en una penalización significativa del rendimiento.

Muchas rutinas y rutinas de RDBSS exportadas por un minidirector de red hacen referencia a RX_CONTEXT estructuras en el subproceso iniciador o en algún otro subproceso usado por la rutina. Por lo tanto, las estructuras de RX_CONTEXT asignadas se cuentan para administrar su uso para las operaciones asincrónicas. Cuando el recuento de referencias va a cero, la estructura de RX_CONTEXT asignada se puede finalizar y liberar en la última operación de desreferencia.

RDBSS proporciona una serie de rutinas que se usan para manipular una RX_CONTEXT y el IRP asociado. Estas rutinas se usan para asignar, inicializar y eliminar una RX_CONTEXT. Estas rutinas también se usan para completar el IRP asociado a un RX_CONTEXT y configurar una rutina de cancelación para un RX_CONTEXT.

Requisitos

Requisito Valor
encabezado de rxcontx.h (include Rx.h, Rxcontx.h)

Consulte también

FILE_GET_EA_INFORMATION

IOCTL_REDIR_QUERY_PATH

IOCTL_REDIR_QUERY_PATH_EX

IRP_MJ_CREATE

IRP_MJ_DEVICE_CONTROL

IRP_MJ_DIRECTORY_CONTROL

IRP_MJ_QUERY_EA

IRP_MJ_QUERY_QUOTA

IRP_MJ_QUERY_SECURITY

IRP_MJ_SET_QUOTA

IRP_MJ_SET_SECURITY

IoCompletion

ioMarkIrpPending

MRxCreate

MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]

MRxQueryDirectory

MRxQueryEaInfo

MRxQueryFileInfo

MRxQueryQuotaInfo

MRxQuerySdInfo

MRxQueryVolumeInfo

MRxSetFileInfo

MRxSetFileInfoAtCleanup

MRxSetSdInfo

MRxSetVolumeInfo

RxCreateRxContext

rxInitializeContext

RxStartMinirdr