estructura RX_CONTEXT (rxcontx.h)

La estructura RX_CONTEXT encapsula un IRP para que lo use RDBSS, miniireccionadores de red y el sistema de archivos. La estructura de RX_CONTEXT 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. 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 con 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.

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 RxInitializeContext . Si un controlador minidirector de red inicializa una estructura de RX_CONTEXT con 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.

ReferenceCount

Recuento de referencias de esta estructura después de asignarla. RDBSS establece este miembro en 1 cuando se asigna un RX_CONTEXT y se inicializa en la rutina RxInitializeContext . Si un controlador minidirector de red inicializa una estructura de RX_CONTEXT con 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.

ContextListEntry

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

MajorFunction

La función principal del IRP encapsulado por este RX_CONTEXT.

MinorFunction

La función secundaria del IRP encapsulada por este RX_CONTEXT.

PendingReturned

Si se establece en TRUE, especifica que RDBSS o un controlador ha marcado el IRP pendiente. Cada rutina de 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 él 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 para el controlador minidirector de red cuando se asigna un RX_CONTEXT en la rutina RxInitializeContext . Este miembro se copia del miembro FileObject-DeviceObject> 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 se usa actualmente en RDBSS, pero los miniireccionadores de red pueden usarse.

CurrentIrp

Puntero al IRP de origen. Este miembro no debe ser utilizado por un controlador minidirector de red.

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 (FCB) asociado para este IRP.

RxDeviceObject

Puntero al RDBSS_DEVICE_OBJECT del controlador 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 RxInitializeContext . La estructura RxDeviceObject incluye un miembro DeviceObject que contiene el objeto de dispositivo para el controlador minidirector 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 al 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 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 RxCreateRxContext . De lo contrario, RDBSS no usa este miembro, pero puede ser utilizado por los miniireccionadores de red.

StoredStatus

StoredStatusAlignment

InformationToReturn

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 usarlo para indicar que un archivo se almacena en caché en un identificador de solo escritura.

MRxCancelRoutine

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

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 utilizada para serializar las operaciones de canalización por objeto. Este miembro está reservado para uso interno.

Info

Miembro de estructura de una unión sin nombre usada para las rutinas MRxQueryDirectory, MRxQueryFileInfo, MRxQueryVolumeInfo, MRxSetFileInfo, MRxSetFileInfoAtCleanup y MRxSetVolumeInfo . RDBSS pasa información en el miembro de estructura de información al minidirector de red y el minidirector de red devuelve información a RDBSS en el miembro de estructura de información.

Info.FsInformationClass

Miembro de una unión sin nombre utilizada por RDBSS para pasar el tipo de FS_INFORMATION_CLASS que se solicita al controlador 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, MrxQueryFileInfo y MrxSetFileInfo.

Info.Buffer

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 se usa en las rutinas MrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanup y MrxSetVolumeInfo .

Info.Length

Miembro de una unión sin nombre utilizada para pasar la longitud del miembro Buffer de RDBSS al controlador minidirector de red. El miembro Length se usa en las rutinas MrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanup y MrxSetVolumeInfo .

Info.LengthRemaining

Miembro de una unión sin nombre utilizada para pasar la longitud de la información devuelta en el miembro buffer del controlador minidirector de red a RDBSS. El miembro LengthRemaining se usa en las rutinas MrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanup y 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 PrefixClaim al minidirector de red y el minidirector de red devuelve información a RDBSS en la estructura PrefixClaim .

PrefixClaim.SuppliedPathName

Cadena Unicode terminada no 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 al miembro Create.NtCreateParameters.SecurityContext del RX_CONTEXT, no en este miembro.

Create

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

Create.NtCreateParameters

Parámetros de creación pasados a la rutina NtCreatefile en modo de usuario. RDBSS establece los miembros de la estructura 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 miembro Parameters.Create.SecurityContext 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 de 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

Valor booleano que indica que 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 nombre de usuario que 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 utilizada para controlar IRP_MJ_DIRECTORY_CONTROL solicitudes. Este miembro se usa para controlar las solicitudes de directorio de consulta que dan lugar a llamadas a la rutina MrxQueryDirectory . RDBSS pasa información en el miembro de estructura QueryDirectory al minidirector de red.

QueryDirectory.FileIndex

Índice de la entrada en la que se va a empezar a examinar el directorio si el miembro IndexSpecified 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 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 solo debe devolver la primera entrada que se encuentra. Este parámetro se establece en TRUE si IrpSp-Flags> tiene el bit de SL_RETURN_SINGLE_ENTRY.

QueryDirectory.IndexSpecified

Un valor booleano cuando se establece en TRUE indica que se iniciará 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 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 miembro Flags del FOBX no tiene el bit de FOBX_FLAG_MATCH_ALL. Para una consulta de comodín (".", por ejemplo), RDBSS establecerá el miembro UnicodeQueryTemplate.Buffer del FOBX asociado en la consulta de caracteres comodín pasada.

NotifyChangeDirectory

Miembro de estructura de una unión sin nombre utilizada para controlar IRP_MJ_DIRECTORY_CONTROL solicitudes 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 NotifyChangeDirectory y la estructura pLowIoContext-ParamsFor.NotifyChangeDirectory> 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 en el miembro IrpSp-FileObject-FsContext2>> en función del tipo de nodo.

QueryEa

Miembro de estructura de una unión sin nombre utilizada para controlar IRP_MJ_QUERY_EA solicitudes. Este miembro se usa para controlar las solicitudes de consulta de atributos extendidos que dan lugar a llamadas a la rutina 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 el miembro UserEaList . Este parámetro se establece en IrpSp-Parameters.QueryEa.EaListLength>.

QueryEa.UserEaIndex

Índice de la entrada en la que se va a empezar a examinar la lista de atributos extendidos. Este parámetro debe omitirse si el miembro IndexSpecified no está establecido en TRUE o si el miembro QueryEaList 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 iniciará 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 de SL_RESTART_SCAN.

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 solo debe devolver la primera entrada que se encuentra. Este parámetro se establece en TRUE si IrpSp-Flags> tiene el bit de SL_RETURN_SINGLE_ENTRY.

QueryEa.IndexSpecified

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

QuerySecurity

Miembro de estructura de una unión sin nombre utilizada para controlar IRP_MJ_QUERY_SECURITY solicitudes. Este miembro se usa para controlar las solicitudes de seguridad de consulta que dan lugar a llamadas a la rutina 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 el miembro SecurityInformation . Este parámetro se establece en IrpSp-Parameters.QuerySecurity.Length>.

SetSecurity

Miembro de estructura de una unión sin nombre utilizada 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 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án al objeto. Este parámetro se establece en IrpSp-Parameters.SetSecurity.SecurityDescriptor>.

QueryQuota

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

QueryQuota.Length

Longitud, en bytes, del búfer al que apunta el 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 una. 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 va a 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-Flags> tiene 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 solo debe devolver la primera entrada que se encuentra. Este parámetro se establece en TRUE si IrpSp-Flags> tiene el bit de SL_RETURN_SINGLE_ENTRY.

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 es proporcionado por el miembro StartSid . Este parámetro se establece en TRUE si IrpSp-Flags> tiene el bit de SL_INDEX_SPECIFIED.

SetQuota

Miembro de estructura de una unión sin nombre que se usa para controlar IRP_MJ_SET_QUOTA solicitudes. Esta estructura no la usa ACTUALMENTE RDBSS.

SetQuota.Length

Miembro sin usar de la estructura SetQuota .

DosVolumeFunction

Miembro de estructura de una unión sin nombre. Esta estructura no la usa ACTUALMENTE RDBSS.

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

LowIoContext

AlsoCanonicalNameBuffer

LoudCompletionString

Miembro sin usar de la estructura RX_CONTEXT.

AcquireReleaseFcbTrackerX

TrackerHistoryPointer

TrackerHistory[RDBSS_TRACKER_HISTORY_SIZE]

ShadowCritOwner

StoredStatus

Miembro de una unión sin nombre que se usa para devolver la información de estado mediante un controlador minidirector de red para operaciones de E/S bajas. RDBSS también establece este valor en función del estado devuelto por la rutina MRxQueryFileInfo 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 un controlador minidirector de red para algunas operaciones de E/S bajas (lectura, escritura, FSCTL, etc.) y 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 con 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.

FlagsForLowIo

Conjunto de opciones establecidas por RDBSS y pasadas a operaciones de E/S bajas enviadas al minidirector de red. FlagsForLowIo es un miembro de la estructura sin nombre que se usa para las solicitudes de E/S bajas al minidirector de red.

LowIoContext

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

Comentarios

La estructura RX_CONTEXT es una de las estructuras de datos fundamentales usadas por RDBSS y miniireccionadores de red para administrar un paquete de solicitud de E/S (IRP). El RX_CONTEXT estructura de datos encapsula un IRP para su uso por RDBSS, miniireccionadores de red y el sistema de archivos. Una estructura de 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 el Kit de controladores de ventanas (WDK) o archivos de encabezado del Kit ifS y otros recursos usados para desarrollar controladores minidirector de red.

El RX_CONTEXT es una estructura de datos a la que se adjunta información adicional proporcionada por los distintos miniireccionadores 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 especificada previamente, que es la misma para todos los miniireccionadores de red como parte de cada RX_CONTEXT. Se trata de un área sin formato sobre la que los distintos redireccionadores de red pequeños pueden imponer cualquier estructura deseada. Los desarrolladores de controladores de minidirector de red deben intentar definir el contexto privado asociado para que se ajuste a esta área predefinida 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 RDBSS exportadas por un minidirector de red hacen referencia a RX_CONTEXT estructuras en el subproceso iniciador o en algún otro subproceso utilizado por la rutina. Por lo tanto, se hace referencia a las estructuras de RX_CONTEXT asignadas 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 desreferenciación.

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
Header 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