structure RX_CONTEXT (rxcontx.h)
La structure RX_CONTEXT encapsule un IRP à utiliser par RDBSS, les mini-redirecteurs réseau et le système de fichiers. La structure RX_CONTEXT décrit un IRP pendant qu’il est traité par un mini-redirecteur réseau et contient des informations d’état qui permettent aux ressources globales d’être publiées lorsque l’IRP est terminé.
Syntaxe
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;
Membres
NodeTypeCode
Type de nœud unique utilisé pour une structure RX_CONTEXT. Tous les principaux types de structure (RX_CONTEXT, SRV_CALL, NET_ROOT, V_NET_ROOT, SRV_OPEN, FCB et FOBX, par exemple) utilisés par RDBSS ont un code de type de nœud de deux octets unique défini dans le fichier include nodetype.h qui peut être utilisé pour le débogage. RDBSS définit ce membre sur RDBSS_NTC_RX_CONTEXT lorsqu’un RX_CONTEXT est initialisé dans la routine RxInitializeContext . Si un pilote de mini-redirecteur réseau initialise une structure de RX_CONTEXT à l’aide d’une autre méthode, ce membre doit être défini.
RDBSS définit ce membre comme faisant partie d’un en-tête standard pour toutes les structures utilisées par RDBSS.
NodeByteSize
Taille, en octets, de cette structure. RDBSS définit ce membre sur sizeof( RX_CONTEXT) lorsqu’un RX_CONTEXT est initialisé dans la routine RxInitializeContext . Si un pilote de mini-redirecteur réseau initialise une structure de RX_CONTEXT à l’aide d’une autre méthode, ce membre doit être défini.
RDBSS définit ce membre comme faisant partie d’un en-tête standard pour toutes les structures utilisées par RDBSS.
ReferenceCount
Nombre de références pour cette structure après son allocation. RDBSS définit ce membre sur 1 lorsqu’un RX_CONTEXT est alloué et initialisé dans la routine RxInitializeContext . Si un pilote de mini-redirecteur réseau initialise une structure de RX_CONTEXT à l’aide d’une autre méthode, ce membre doit être défini.
RDBSS définit ce membre comme faisant partie d’un en-tête standard pour toutes les structures utilisées par RDBSS.
ContextListEntry
Entrée de liste pour connecter cette RX_CONTEXT à la liste des RX_CONTEXTS actifs.
MajorFunction
Fonction principale pour l’IRP encapsulée par ce RX_CONTEXT.
MinorFunction
Fonction mineure pour l’IRP encapsulée par ce RX_CONTEXT.
PendingReturned
Si la valeur est TRUE, cela spécifie que RDBSS ou un pilote a marqué l’IRP en attente. Chaque routine IoCompletion doit case activée la valeur de cet indicateur. Si l’indicateur est TRUE et si la routine IoCompletion ne retourne pas STATUS_MORE_PROCESSING_REQUIRED, la routine doit appeler IoMarkIrpPending pour propager le status en attente aux pilotes au-dessus d’elle dans la pile d’appareils. Ce membre est similaire au même champ dans l’IRP.
RDBSS définit toujours ce membre sur TRUE avant d’appeler le pilote de mini-redirecteur réseau.
PostRequest
Si la valeur est TRUE, cela indique si la demande associée doit être publiée sur un thread de travail RDBSS. Un mini-redirecteur réseau peut définir ce membre sur TRUE pour indiquer qu’il souhaite publier cette demande dans le processus du système de fichiers (FSP).
RealDevice
Pointeur vers l’objet d’appareil pour le pilote de mini-redirecteur réseau cible. RDBSS définit ce membre sur l’objet d’appareil pour le pilote de mini-redirecteur réseau lorsqu’un RX_CONTEXT est alloué dans la routine RxInitializeContext . Ce membre est copié à partir du membre FileObject-DeviceObject> de la pile IRP. L’objet d’appareil pour le mini-redirecteur réseau est également stocké dans le membre de structure RxDeviceObject .
Le membre RealDevice n’est actuellement pas utilisé par RDBSS, mais peut être utilisé par les mini-redirecteurs réseau.
CurrentIrp
Pointeur vers l’IRP d’origine. Ce membre ne doit pas être utilisé par un pilote de mini-redirecteur réseau.
CurrentIrpSp
Pointeur vers l’emplacement de la pile IRP.
pFcb
Pointeur vers le bloc de contrôle de fichier associé (FCB) pour cette IRP.
pFobx
Pointeur vers l’extension d’objet de fichier (FOBX) associée pour cette IRP.
pRelevantSrvOpen
Pointeur vers le serveur associé ouvert(SRV_OPEN) pour cette IRP.
NonPagedFcb
Pointeur vers le bloc de contrôle de fichiers non paginés (FCB) associé pour cette IRP.
RxDeviceObject
Pointeur vers le RDBSS_DEVICE_OBJECT pour le pilote de mini-redirecteur réseau cible requis pour les algorithmes de file d’attente worker. RDBSS définit ce membre sur le RDBSS_DEVICE_OBJECT du mini-redirecteur réseau lorsqu’un RX_CONTEXT est initialisé dans la routine RxInitializeContext . La structure RxDeviceObject inclut un membre DeviceObject qui contient l’objet d’appareil pour le pilote de mini-redirecteur réseau qui est le même que le membre RealDevice du RX_CONTEXT.
OriginalThread
Pointeur vers le thread d’origine dans lequel la demande a été lancée.
LastExecutionThread
Pointeur vers le dernier thread dans lequel un traitement associé au RX_CONTEXT a été effectué si le thread a été publié dans le processus du système de fichiers.
LockManagerContext
Pointeur vers le contexte du gestionnaire de verrous. Ce membre est réservé à un usage interne.
RdbssDbgExtension
Pointeur vers le contexte donné à RDBSS pour les informations de débogage. Ce membre est réservé à un usage interne.
ScavengerEntry
Pointeur vers la liste des éléments à délimiter. Ce membre est réservé à un usage interne.
SerialNumber
Numéro de série de cette structure RX_CONTEXT. Chaque structure initialisée par RDBSS a un numéro de série attribué lors de la première initialisation de la structure. Ce numéro de série est un nombre incrémenté d’un avant que la valeur ne soit définie. RDBSS définit ce membre lorsqu’un RX_CONTEXT est initialisé dans la routine RxInitializeContext . RDBSS
FobxSerialNumber
Numéro de série de la structure FOBX associée. Chaque structure initialisée par RDBSS a un numéro de série attribué lors de la première initialisation de la structure. Ce membre peut être utilisé par les mini-redirecteurs réseau pour voir si plusieurs appels font partie d’une même opération plus grande et sont donc plus mis en cache.
Flags
Masque de bits d’indicateurs pour cette structure RX_CONTEXT.
FcbResourceAcquired
S’il est défini sur TRUE, ce membre spécifie que la ressource FCB a été acquise pour cette opération. La ressource FCB est l’un des mécanismes de verrouillage associés à une opération sur un fcb.
FcbPagingIoResourceAcquired
S’il est défini sur TRUE, ce membre spécifie que la ressource d’E/S de pagination FCB a été acquise pour cette opération. La ressource d’E/S de pagination FCB est l’un des mécanismes de verrouillage associés à une opération d’E/S de pagination sur un fcb.
MustSucceedDescriptorNumber
Membre initialement défini sur zéro dans la routine RxCreateRxContext . Ce membre n’est pas utilisé par RDBSS, mais il peut être utilisé par les mini-redirecteurs réseau.
StoredStatus
StoredStatusAlignment
InformationToReturn
IoStatusBlock
Le bloc d’E/S status utilisé par un mini-redirecteur réseau pour retourner status informations. Le membre IoStatusBlock est membre d’une union sans nom utilisée pour retourner status informations.
ForceLonglongAligmentDummyField
Membre d’une union sans nom utilisée pour forcer l’alignement correct sur le membre MRxContext[MRX_CONTEXT_FIELD_COUNT].
MRxContext[MRX_CONTEXT_FIELD_COUNT]
WriteOnlyOpenRetryContext
Pointeur qui peut être utilisé pour stocker un état pour le mini-redirecteur réseau. Ce membre n’est pas utilisé par RDBSS, mais il peut être utilisé par un pilote de mini-redirecteur réseau pour indiquer qu’un fichier est mis en cache sur un handle en écriture seule.
MRxCancelRoutine
Pointeur vers la routine d’annulation qui peut être défini par un pilote de mini-redirecteur réseau.
ResumeRoutine
Ce membre est réservé à un usage interne.
WorkQueueItem
Pointeur vers un élément de file d’attente de travail qui peut être utilisé par un pilote de mini-redirecteur réseau lors du traitement des RX_CONTEXT.
OverflowListEntry
Pointeur vers le chef de liste des opérations qui doivent être libérées à l’achèvement. Ce membre est réservé à un usage interne.
SyncEvent
Pointeur vers un événement de noyau qui peut être utilisé par un pilote de mini-redirecteur réseau pour attendre pendant le traitement de l’RX_CONTEXT.
BlockedOperations
Pointeur vers la tête de liste des opérations bloquées qui doivent être libérées à l’achèvement. Ce membre est réservé à un usage interne.
BlockedOpsMutex
Pointeur vers un mutex qui contrôle la sérialisation des opérations bloquées. Ce membre est réservé à un usage interne.
RxContextSerializationQLinks
Pointeur vers l’entrée de liste utilisée pour sérialiser les opérations de canal par objet de fichier. Ce membre est réservé à un usage interne.
Info
Membre de structure d’une union sans nom utilisée pour les routines MRxQueryDirectory, MRxQueryFileInfo, MRxQueryVolumeInfo, MRxSetFileInfo, MRxSetFileInfoAtCleanup et MRxSetVolumeInfo . RDBSS transmet les informations du membre de la structure Info au mini-redirecteur réseau et le mini-redirecteur réseau retourne des informations à RDBSS dans le membre de la structure d’informations .
Info.FsInformationClass
Membre d’une union sans nom utilisée par RDBSS pour transmettre le type de FS_INFORMATION_CLASS demandé au pilote de mini-redirecteur réseau. RDBSS transmet des informations dans le membre FsInformationClass lors de l’appel de **MrxQueryVolumeInfo **et MrxSetVolumeInfo.
Info.FileInformationClass
Membre d’une union sans nom utilisée par RDBSS pour indiquer le type de requête FILE_INFORMATION_CLASS envoyée au pilote de mini-redirecteur réseau. RDBSS transmet des informations dans le membre FileInformationClass lors de l’appel de MrxQueryDirectory, MrxQueryFileInfo et MrxSetFileInfo.
Info.Buffer
Mémoire tampon utilisée pour passer des données de RDBSS au pilote de mini-redirecteur réseau et recevoir des réponses du pilote de mini-redirecteur réseau par RDBSS. Le membre Buffer est utilisé dans les routines MrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanup et MrxSetVolumeInfo .
Info.Length
Membre d’une union sans nom utilisée pour passer la longueur du membre Buffer de RDBSS au pilote de mini-redirecteur réseau. Le membre Length est utilisé dans les routines MrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanup et MrxSetVolumeInfo .
Info.LengthRemaining
Un membre d’une union sans nom utilisé pour transmettre la longueur des informations retournées dans le membre Buffer à partir du pilote de mini-redirecteur réseau à RDBSS. Le membre LengthRemaining est utilisé dans les routines MrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanup et MrxSetVolumeInfo .
Info.ReplaceIfExists
Valeur booléenne qui indique si un fichier existant doit être remplacé lors d’une opération de renommage. Le membre ReplaceIfExists est utilisé dans la routine MrxSetFileInfo .
Info.AdvanceOnly
Ce membre est réservé à un usage interne.
PrefixClaim
Membre de structure d’une union sans nom utilisée pour les demandes de résolution de préfixe envoyées à partir du fournisseur multiple UNC (MUP). Une revendication de préfixe résulte d’une requête IRP_MJ_DEVICE_CONTROL de MUP vers RDBSS pour IOCTL_REDIR_QUERY_PATH ou IOCTL_REDIR_QUERY_PATH_EX. RDBSS transmet les informations de la structure PrefixClaim au mini-redirecteur réseau et le mini-redirecteur réseau retourne des informations à RDBSS dans la structure PrefixClaim .
PrefixClaim.SuppliedPathName
Chaîne Unicode non NULL terminée spécifiant le chemin UNC sur lequel effectuer la résolution de préfixe.
PrefixClaim.NetRootType
Type du NET_ROOT demandé. Ce membre n’est actuellement pas utilisé. RDBSS déduit le type du NET_ROOT du membre SuppliedPathName .
PrefixClaim.pSecurityContext
Pointeur vers le contexte de sécurité transmis à partir de la requête de MUP.
Ce membre n’est actuellement pas utilisé. Le contexte de sécurité est transmis dans le membre Create.NtCreateParameters.SecurityContext du RX_CONTEXT, et non dans ce membre.
Create
Membre de structure d’une union sans nom utilisée pour gérer les demandes IRP_MJ_CREATE . Ce membre est utilisé pour gérer les demandes ouvertes de fichiers qui entraînent des appels à la routine MRxCreate . Ce membre est également utilisé pour les demandes de résolution de préfixe. RDBSS transmet les informations du membre Créer une structure au mini-redirecteur réseau et le mini-redirecteur réseau retourne des informations à RDBSS dans le membre Créer une structure.
Create.NtCreateParameters
Paramètres de création passés à la routine NtCreatefile en mode utilisateur. RDBSS définit les membres de la structure NtCreateParameters en fonction des membres Parameters.Create de l’IRP.
Create.ReturnedCreateInformation
Valeur définie par le mini-redirecteur réseau à la fin de l’appel MRxCreate .
Create.CanonicalNameBuffer
Pointeur vers la chaîne Unicode représentant le nom du fichier physique à ouvrir si le nom canonique est plus grand que la mémoire tampon disponible.
Create.NetNamePrefixEntry
Pointeur vers l’entrée de préfixe de table NetName. Ce membre est réservé à un usage interne.
Create.pSrvCall
Pointeur vers la structure SRV_CALL associée.
Create.pNetRoot
Pointeur vers la structure NET_ROOT associée.
Create.pVNetRoot
Pointeur vers la structure V_NET_ROOT associée.
Create.EaBuffer
Pointeur vers la mémoire tampon d’attributs étendus. Ce membre est facultatif.
Create.EaLength
Longueur de la mémoire tampon des attributs étendus, EaBuffer.
Create.SdLength
Longueur du descripteur de sécurité. RDBSS définit cette valeur en fonction de la valeur du membre Parameters.Create.SecurityContext de l’IRP. Si le membre SdLength n’est pas nul, le descripteur de sécurité est passé dans le membre Info.Buffer au mini-redirecteur réseau.
Create.PipeType
Type d’un canal. Ce membre est réservé à un usage interne.
Create.PipeReadMode
Mode lecture d’un canal. Ce membre est réservé à un usage interne.
Create.PipeCompletionMode
Mode d’achèvement d’un canal. Ce membre est réservé à un usage interne.
Create.Flags
Indicateurs de création
Create.Type
Type de la structure NET_ROOT associée.
Create.RdrFlags
Create.FcbAcquired
Ce membre est réservé à un usage interne.
Create.TryForScavengingOnSharingViolation
Ce membre est réservé à un usage interne.
Create.ScavengingAlreadyTried
Ce membre est réservé à un usage interne.
Create.ThisIsATreeConnectOpen
Valeur booléenne qui indique si cet appel est une demande ouverte de connexion d’arborescence avec l’option FILE_CREATE_TREE_CONNECTION définie dans le membre IrpSp-Parameters.Create.Options>.
Create.TreeConnectOpenDeferred
Valeur booléenne qui indique que le mini-redirecteur réseau peut choisir de différer la demande ouverte de connexion à l’arborescence.
Create.TransportName
Chaîne Unicode qui représente le nom de transport. Ce membre est défini à partir des paramètres ouverts de connexion à l’arborescence.
Create.UserName
Chaîne Unicode qui représente le nom d’utilisateur responsable de la demande. Ce membre est défini à partir des paramètres ouverts de connexion à l’arborescence.
Create.Password
Chaîne Unicode qui contient le mot de passe de ce UserName utilisé pour l’authentification et l’autorisation. Ce membre est défini à partir des paramètres ouverts de connexion à l’arborescence.
Create.UserDomainName
Chaîne Unicode qui contient le nom de domaine de ce UserName.
QueryDirectory
Membre de structure d’une union sans nom utilisée pour gérer les demandes IRP_MJ_DIRECTORY_CONTROL . Ce membre est utilisé pour gérer les demandes d’annuaire de requêtes qui entraînent des appels à la routine MrxQueryDirectory . RDBSS transmet les informations du membre de la structure QueryDirectory au mini-redirecteur réseau.
QueryDirectory.FileIndex
Index de l’entrée à laquelle commencer l’analyse du répertoire si le membre IndexSpecified a la valeur TRUE. Ce paramètre est défini sur le membre IrpSp-Parameters.QueryDirectory.FileIndex>.
QueryDirectory.RestartScan
Une valeur booléenne lorsqu’elle est définie sur TRUE indique que l’analyse doit démarrer à la première entrée dans le répertoire. Lorsque cette valeur est définie sur FALSE, l’analyse reprend à partir d’un appel précédent. Ce paramètre doit être défini sur TRUE lors de la première appel. Ce paramètre a la valeur TRUE si IrpSp-Flags> a le SL_RESTART_SCAN bit activé.
QueryDirectory.ReturnSingleEntry
Une valeur booléenne définie sur TRUE indique qu’une seule entrée doit être retournée. Si ce paramètre a la valeur TRUE, MrxQueryDirectory doit retourner uniquement la première entrée trouvée. Ce paramètre a la valeur TRUE si IrpSp-Flags> a le SL_RETURN_SINGLE_ENTRY bit activé.
QueryDirectory.IndexSpecified
Une valeur booléenne lorsqu’elle est définie sur TRUE indique de commencer l’analyse à l’entrée dans le répertoire dont l’index est donné par le membre FileIndex . Ce paramètre a la valeur TRUE si IrpSp-Flags> a le SL_INDEX_SPECIFIED bit activé.
QueryDirectory.InitialQuery
Valeur booléenne définie sur TRUE lorsque la requête n’est pas une requête carte générique (« . », par exemple). Ce membre a la valeur TRUE si le membre UnicodeQueryTemplate.Buffer du FOBX associé a la valeur NULL et si le membre Flags du FOBX n’a pas le FOBX_FLAG_MATCH_ALL bit activé. Pour une requête de carte générique (« . », par exemple), RDBSS définit le membre UnicodeQueryTemplate.Buffer du FOBX associé à la requête de carte générique passée.
NotifyChangeDirectory
Membre de structure d’une union sans nom utilisée pour gérer les demandes IRP_MJ_DIRECTORY_CONTROL avec une fonction mineure de IRP_MN_NOTIFY_CHANGE_DIRECTORY. Ce membre est utilisé pour gérer les demandes de modification d’annuaire qui entraînent des appels à la routine MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]. RDBSS transmet les informations du membre de la structure NotifyChangeDirectory et de la structure pLowIoContext-ParamsFor.NotifyChangeDirectory> au mini-redirecteur réseau.
NotifyChangeDirectory.pVNetRoot
Pointeur vers la structure V_NET_ROOT associée au répertoire. Ce paramètre est défini sur le membre IrpSp-FileObject-FsContext>> ou le membre IrpSp-FileObject-FsContext2>> en fonction du type de nœud.
QueryEa
Membre de structure d’une union sans nom utilisée pour gérer les demandes IRP_MJ_QUERY_EA . Ce membre est utilisé pour gérer les requêtes d’attribut étendues qui entraînent des appels à la routine MRxQueryEaInfo . RDBSS transmet les informations du membre de la structure QueryEa au mini-redirecteur réseau.
QueryEa.UserEaList
Pointeur vers une mémoire tampon d’entrée fournie par l’appelant contenant une structure FILE_GET_EA_INFORMATION spécifiant les attributs étendus à interroger. Ce paramètre est défini sur IrpSp-Parameters.QueryEa.EaList>.
QueryEa.UserEaListLength
Longueur, en octets, de la mémoire tampon pointée vers par le membre UserEaList . Ce paramètre est défini sur IrpSp-Parameters.QueryEa.EaListLength>.
QueryEa.UserEaIndex
Index de l’entrée à laquelle commencer l’analyse de la liste d’attributs étendus. Ce paramètre doit être ignoré si le membre IndexSpecified n’est pas défini sur TRUE ou si le membre QueryEaList pointe vers une liste vide. Ce paramètre est défini sur IrpSp-Parameters.QueryEa.EaIndex>.
QueryEa.RestartScan
Une valeur booléenne lorsqu’elle est définie sur TRUE indique que la requête doit démarrer à la première entrée d’attribut étendu. Lorsque cette valeur est définie sur FALSE, l’analyse reprend à partir d’un appel précédent. Ce paramètre doit être défini sur TRUE lors de la première appel. Ce paramètre est défini sur TRUE si IrpSp-Flags> a le SL_RESTART_SCAN bit activé.
QueryEa.ReturnSingleEntry
Une valeur booléenne lorsqu’elle est définie sur TRUE indique qu’une seule entrée doit être retournée. Si ce paramètre a la valeur TRUE, MrxQueryEaInfo doit retourner uniquement la première entrée trouvée. Ce paramètre a la valeur TRUE si IrpSp-Flags> a le SL_RETURN_SINGLE_ENTRY bit activé.
QueryEa.IndexSpecified
Une valeur booléenne lorsqu’elle est définie sur TRUE indique de commencer l’analyse à l’entrée dans les attributs étendus dont l’index est donné par le membre UserEaIndex . Ce paramètre a la valeur TRUE si IrpSp-Flags> a le SL_INDEX_SPECIFIED bit activé.
QuerySecurity
Membre de structure d’une union sans nom utilisée pour gérer les demandes IRP_MJ_QUERY_SECURITY . Ce membre est utilisé pour gérer les demandes de sécurité des requêtes qui entraînent des appels à la routine MRxQuerySdInfo . RDBSS transmet les informations du membre de la structure QuerySecurity au mini-redirecteur réseau.
QuerySecurity.SecurityInformation
Pointeur vers une mémoire tampon d’entrée fournie par l’appelant contenant une structure SECURITY_INFORMATION spécifiant l’opération à interroger. Ce paramètre est défini sur IrpSp-Parameters.QuerySecurity.SecurityInformation>.
QuerySecurity.Length
Longueur, en octets, de la mémoire tampon pointée par le membre SecurityInformation . Ce paramètre est défini sur IrpSp-Parameters.QuerySecurity.Length>.
SetSecurity
Membre de structure d’une union sans nom utilisée pour gérer les demandes IRP_MJ_SET_SECURITY . Ce membre est utilisé pour gérer les demandes de sécurité des requêtes qui entraînent des appels à la routine MRxSetSdInfo . RDBSS transmet les informations du membre de structure SetSecurity au mini-redirecteur réseau.
SetSecurity.SecurityInformation
Pointeur vers une mémoire tampon d’entrée fournie par l’appelant contenant une structure SECURITY_INFORMATION qui spécifie les informations de sécurité à définir dans le descripteur de sécurité. Ce paramètre est défini sur IrpSp-Parameters.SetSecurity.SecurityInformation>.
SetSecurity.SecurityDescriptor
Pointeur vers une structure SECURITY_DESCRIPTOR qui contient les valeurs des informations de sécurité à affecter à l’objet. Ce paramètre est défini sur IrpSp-Parameters.SetSecurity.SecurityDescriptor>.
QueryQuota
Membre de structure d’une union sans nom utilisée pour gérer les demandes IRP_MJ_QUERY_QUOTA . Ce membre est utilisé pour gérer les demandes de sécurité des requêtes qui entraînent des appels à la routine MRxQueryQuotaInfo . RDBSS transmet les informations du membre de la structure QueryQuota au mini-redirecteur réseau.
QueryQuota.Length
Longueur, en octets, de la mémoire tampon pointée vers le membre StartSid . Ce paramètre est défini sur IrpSp-Parameters.QueryQuota.Length>.
QueryQuota.StartSid
Pointeur facultatif vers un SID qui indique que les informations retournées doivent commencer par une entrée autre que la première. Ce paramètre est ignoré si le membre SidList est spécifié. Ce paramètre est défini sur IrpSp-Parameters.QueryQuota.StartSid>.
QueryQuota.SidList
Pointeur facultatif vers une liste de SID dont les informations de quota doivent être retournées. Chaque entrée de la liste est une structure FILE_GET_QUOTA_INFORMATION. Ce paramètre est défini sur IrpSp-Parameters.QueryQuota.SidList>.
QueryQuota.SidListLength
Longueur, en octets, de la liste des SID dans le membre SidList , le cas échéant. Ce paramètre est défini sur IrpSp-Parameters.QueryQuota.SidListLength>.
QueryQuota.RestartScan
Une valeur booléenne lorsqu’elle est définie sur TRUE indique que la requête doit démarrer à la première entrée. Lorsque cette valeur est définie sur FALSE, l’analyse reprend à partir d’un appel précédent. Ce paramètre doit être défini sur TRUE lors de la première appel. Ce paramètre a la valeur TRUE si IrpSp-Flags> a le SL_RESTART_SCAN bit activé.
QueryQuota.ReturnSingleEntry
Une valeur booléenne lorsqu’elle est définie sur TRUE indique qu’une seule entrée doit être retournée. Si ce paramètre a la valeur TRUE, MrxQueryQuotaInfo doit retourner uniquement la première entrée trouvée. Ce paramètre a la valeur TRUE si IrpSp-Flags> a le SL_RETURN_SINGLE_ENTRY bit activé.
QueryQuota.IndexSpecified
Une valeur booléenne lorsqu’elle est définie sur TRUE indique de commencer l’analyse à l’entrée de la liste dont l’index est donné par le membre StartSid . Ce paramètre a la valeur TRUE si IrpSp-Flags> a le SL_INDEX_SPECIFIED bit activé.
SetQuota
Membre de structure d’une union sans nom utilisée pour gérer les demandes IRP_MJ_SET_QUOTA . Cette structure n’est actuellement pas utilisée par RDBSS.
SetQuota.Length
Membre inutilisé de la structure SetQuota .
DosVolumeFunction
Membre de structure d’une union sans nom. Cette structure n’est actuellement pas utilisée par RDBSS.
DosVolumeFunction.VNetRoot
Membre inutilisé de la structure DosVolumeFunction .
DosVolumeFunction.SrvCall
Membre inutilisé de la structure DosVolumeFunction .
DosVolumeFunction.NetRoot
Membre inutilisé de la structure DosVolumeFunction .
FlagsForLowIo
LowIoContext
AlsoCanonicalNameBuffer
LoudCompletionString
Membre inutilisé de la structure RX_CONTEXT.
AcquireReleaseFcbTrackerX
TrackerHistoryPointer
TrackerHistory[RDBSS_TRACKER_HISTORY_SIZE]
ShadowCritOwner
StoredStatus
Membre d’une union sans nom utilisée pour retourner status informations par un pilote de mini-redirecteur réseau pour les opérations d’E/S faibles. RDBSS définit également cette valeur en fonction de la status retournée par la routine MRxQueryFileInfo lorsque l’opération de requête de fichier n’est pas comprise par RDBSS.
StoredStatusAlignment
Membre d’une union sans nom utilisée pour forcer l’alignement correct sur le membre StoredStatus .
InformationToReturn
Un membre d’une union sans nom utilisée pour retourner status informations par un pilote de mini-redirecteur réseau pour certaines opérations d’E/S faibles (lecture, écriture, FSCTL, etc.) et MrxQueryXXX.
Type de nœud unique utilisé pour une structure RX_CONTEXT. Tous les principaux types de structure (RX_CONTEXT, SRV_CALL, NET_ROOT, V_NET_ROOT, SRV_OPEN, FCB et FOBX, par exemple) utilisés par RDBSS ont un code de type de nœud de deux octets unique défini dans le fichier include nodetype.h qui peut être utilisé pour le débogage. RDBSS définit ce membre sur RDBSS_NTC_RX_CONTEXT lorsqu’un RX_CONTEXT est initialisé dans la routine RxInitializeContext . Si un pilote de mini-redirecteur réseau initialise une structure de RX_CONTEXT à l’aide d’une autre méthode, ce membre doit être défini.
RDBSS définit ce membre comme faisant partie d’un en-tête standard pour toutes les structures utilisées par RDBSS.
FlagsForLowIo
Ensemble d’options définies par RDBSS et passées aux opérations d’E/S faibles envoyées au mini-redirecteur réseau. FlagsForLowIo est un membre de la structure sans nom utilisée pour les demandes d’E/S faibles vers le mini-redirecteur réseau.
LowIoContext
Pointeur vers une structure LOWIO_CONTEXT passée au mini-redirecteur réseau. LowIoContext est un membre de la structure sans nom utilisée pour les demandes d’E/S faibles envoyées au mini-redirecteur réseau.
Remarques
La structure RX_CONTEXT est l’une des structures de données fondamentales utilisées par RDBSS et les mini-redirecteurs réseau pour gérer un paquet de demandes d’E/S (IRP). La structure de données RX_CONTEXT encapsule un IRP à utiliser par RDBSS, les mini-redirecteurs réseau et le système de fichiers. Une structure RX_CONTEXT inclut un pointeur vers un IRP unique et tout le contexte requis pour traiter l’IRP.
Une structure de RX_CONTEXT est parfois appelée contexte IRP ou RxContext dans les fichiers d’en-tête du kit de pilotes windows (WDK) ou du kit IFS et d’autres ressources utilisées pour développer des pilotes de mini-redirecteurs réseau.
Le RX_CONTEXT est une structure de données à laquelle sont attachées des informations supplémentaires fournies par les différents mini redirecteurs réseau. Le RX_CONTEXT comprend des champs permettant de surallouer la taille de chaque structure RX_CONTEXT selon un montant prédéfinis pour chaque mini redirecteur réseau, qui est ensuite réservé à l’utilisation par le mini redirecteur. Cette approche consiste à allouer une zone prédéfinie, qui est la même pour tous les mini redirecteurs réseau dans le cadre de chaque RX_CONTEXT. Il s’agit d’une zone non mise en forme sur laquelle toute structure souhaitée peut être imposée par les différents mini redirecteurs réseau. Les développeurs de pilotes de mini-redirecteur réseau doivent essayer de définir le contexte privé associé pour s’adapter à cette zone prédéfinie définie dans la structure de données RX_CONTEXT. Les pilotes de mini-redirecteur réseau qui enfreignent cette règle entraînent une pénalité de performances importante.
De nombreuses routines et routines RDBSS exportées par un mini-redirecteur réseau font référence aux structures RX_CONTEXT dans le thread de lancement ou dans un autre thread utilisé par la routine. Ainsi, les structures de RX_CONTEXT allouées sont comptabilisées pour gérer leur utilisation pour les opérations asynchrones. Lorsque le nombre de références passe à zéro, la structure de RX_CONTEXT allouée peut être finalisée et libérée lors de la dernière opération de déréférencement.
RDBSS fournit un certain nombre de routines utilisées pour manipuler un RX_CONTEXT et l’IRP associé. Ces routines sont utilisées pour allouer, initialiser et supprimer un RX_CONTEXT. Ces routines sont également utilisées pour effectuer l’IRP associée à un RX_CONTEXT et configurer une routine d’annulation pour un RX_CONTEXT.
Configuration requise
Condition requise | Valeur |
---|---|
En-tête | rxcontx.h (inclure Rx.h, Rxcontx.h) |
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour