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:
- RX_CONTEXT
- SRV_CALL
- NET_ROOT
- V_NET_ROOT
- SRV_OPEN
- FCB
- FOBX
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
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
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
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
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
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
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
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
Info.LengthRemaining
Miembro de una unión sin nombre utilizada para pasar la longitud de la información devuelta en el buffer de
Info.ReplaceIfExists
Valor booleano que indica si se debe reemplazar un archivo existente durante una operación de cambio de nombre. El miembro
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
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
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
QueryDirectory.FileIndex
Índice de la entrada en la que se va a comenzar a examinar el directorio si el miembro IndexSpecified de
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
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
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
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
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
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.SrvCall
Miembro sin usar de la estructura
DosVolumeFunction.NetRoot
Miembro sin usar de la estructura
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
MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]