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
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de