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. Il 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 à mesure que 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. RDBSS définit ce membre sur RDBSS_NTC_RX_CONTEXT lorsqu’un RX_CONTEXT est initialisé dans RxInitializeContext. Si un pilote de mini-redirecteur réseau initialise une structure RX_CONTEXT à l’aide d’une autre méthode, ce membre doit être défini.
RDBSS définit ce membre dans le cadre d’un en-tête standard pour toutes les structures utilisées par RDBSS.
Tous les principaux types de structure utilisés par RDBSS ont un code de type de nœud à deux octets unique défini dans nodetype.h qui peut être utilisé pour le débogage. Ces principaux types de structure sont les suivants :
- RX_CONTEXT
- SRV_CALL
- NET_ROOT
- V_NET_ROOT
- SRV_OPEN
- FCB
- FOBX
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 RX_CONTEXT à l’aide d’une autre méthode, ce membre doit être défini.
RDBSS définit ce membre dans le cadre 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 RX_CONTEXT à l’aide d’une autre méthode, ce membre doit être défini.
RDBSS définit ce membre dans le cadre 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 de l’IRP encapsulée par cette RX_CONTEXT.
MinorFunction
Fonction mineure pour l’IRP encapsulée par cette 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 vérifier la valeur de cet indicateur. Si l’indicateur a la valeur TRUE et si la routine
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 requête au processus du système de fichiers (FSP).
RealDevice
Pointeur vers l’objet d’appareil pour le pilote mini-redirecteur réseau cible. RDBSS définit ce membre sur l’objet d’appareil du 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 à partir 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 des 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 cet IRP.
pFobx
Pointeur vers l’extension d’objet de fichier associée (FOBX) pour cet IRP.
pRelevantSrvOpen
Pointeur vers le serveur associé open(SRV_OPEN) pour cet IRP.
NonPagedFcb
Pointeur vers le bloc de contrôle de fichier non paginé associé (FCB) pour cet IRP.
RxDeviceObject
Pointeur vers le RDBSS_DEVICE_OBJECT du pilote 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
OriginalThread
Pointeur vers le thread d’origine dans lequel la requête 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é à une utilisation interne.
RdbssDbgExtension
Pointeur vers le contexte donné à RDBSS pour le débogage des informations. Ce membre est réservé à une utilisation interne.
ScavengerEntry
Pointeur vers la liste des éléments à délimiter. Ce membre est réservé à une utilisation 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é lorsque la structure est initialisée pour la première fois. Ce numéro de série est un nombre incrémenté par 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é lorsque la structure est initialisée pour la première fois. Ce membre peut être utilisé par des mini-redirecteurs réseau pour voir si plusieurs appels font partie de la même opération plus grande et sont donc plus mis en cache.
Flags
Masque de bits des indicateurs pour cette structure de RX_CONTEXT.
FcbResourceAcquired
Si la valeur est 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
Si la valeur est 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 une instance FCB.
MustSucceedDescriptorNumber
Un membre a initialement la valeur zéro dans la routine RxCreateRxContext
StoredStatus
Membre d’une union non nommée utilisée pour retourner des informations d’état 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 l’état retourné par la routine MRxQueryFileInfo lorsque l’opération de requête de fichier n’est pas comprise par RDBSS.
StoredStatusAlignment
Membre d’une union non nommée utilisée pour forcer l’alignement approprié sur le membre StoredStatus.
InformationToReturn
Membre d’une union non nommée utilisée pour retourner des informations d’état par un pilote de mini-redirecteur réseau pour des E/S faibles (lecture, écriture, FSCTL, etc.) et opérations de 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 à deux octets unique défini dans le nodetype.h fichier include 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 RX_CONTEXT à l’aide d’une autre méthode, ce membre doit être défini.
RDBSS définit ce membre dans le cadre d’un en-tête standard pour toutes les structures utilisées par RDBSS.
IoStatusBlock
Le bloc d’état d’E/S utilisé par un mini-redirecteur réseau pour retourner les informations d’état. Le membre IoStatusBlock est membre d’une union non nommée utilisée pour retourner des informations d’état.
ForceLonglongAligmentDummyField
Membre d’une union non nommée utilisée pour forcer l’alignement approprié 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é à une utilisation 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 du RX_CONTEXT.
OverflowListEntry
Pointeur vers le chef de liste des opérations à libérer à l’achèvement. Ce membre est réservé à une utilisation 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 du RX_CONTEXT.
BlockedOperations
Pointeur vers le chef de liste des opérations bloquées à libérer à la fin. Ce membre est réservé à une utilisation interne.
BlockedOpsMutex
Pointeur vers un mutex qui contrôle la sérialisation des opérations bloquées. Ce membre est réservé à une utilisation interne.
RxContextSerializationQLinks
Pointeur vers l’entrée de liste utilisée pour sérialiser les opérations de canal par objet par fichier. Ce membre est réservé à une utilisation interne.
Info
Membre de structure d’une union non nommée utilisée pour les routines suivantes :
- MRxQueryDirectory
- MRxQueryFileInfo
- MRxQueryVolumeInfo
- MRxSetFileInfo
- MRxSetFileInfoAtCleanup
- MRxSetVolumeInfo
RDBSS transmet des informations dans le membre de structure Info
Info.FsInformationClass
Membre d’une union non nommée utilisée par RDBSS pour passer le type de FS_INFORMATION_CLASS demandé au pilote de mini-redirecteur réseau. RDBSS transmet des informations dans le membre FsInformationClass
Info.FileInformationClass
Membre d’une union non nommée utilisée par RDBSS pour indiquer le type de demande d’FILE_INFORMATION_CLASS envoyée au pilote de mini-redirecteur réseau. RDBSS transmet des informations dans le membre FileInformationClass
Info.Buffer
Mémoire tampon utilisée pour transmettre 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 tampon
Info.Length
Membre d’une union non nommée utilisée pour passer la longueur du Buffer membre de RDBSS au pilote de mini-redirecteur réseau. Le membre
Info.LengthRemaining
Membre d’une union non nommée utilisée pour transmettre la longueur des informations retournées dans le membre de la mémoire tampon membre du pilote de mini-redirecteur réseau vers RDBSS. Le membre
Info.ReplaceIfExists
Valeur booléenne qui indique si un fichier existant doit être remplacé pendant une opération de renommage. Le membre ReplaceIfExists
Info.AdvanceOnly
Ce membre est réservé à une utilisation interne.
PrefixClaim
Membre de structure d’une union non nommée utilisée pour les demandes de résolution de préfixe envoyées à partir du fournisseur MUP (Multiple UNC Provider). 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 des informations dans 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 pas utilisé actuellement. 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 pas utilisé actuellement. Le contexte de sécurité est transmis dans le Create.NtCreateParameters.SecurityContext membre du RX_CONTEXT, et non dans ce membre.
Create
Membre de structure d’une union non nommée utilisée pour gérer les requêtes IRP_MJ_CREATE. Ce membre est utilisé pour gérer les requêtes 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 des informations dans l'Créer membre de structure au mini-redirecteur réseau et le mini-redirecteur réseau retourne des informations à RDBSS dans le Créer membre de structure.
Create.NtCreateParameters
Paramètres de création passés à la routine NtCreatefile 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 supérieur à la mémoire tampon disponible.
Create.NetNamePrefixEntry
Pointeur vers l’entrée de préfixe de la table NetName. Ce membre est réservé à une utilisation 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 des 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 Parameters.Create.SecurityContext membre de l’IRP. Si le membre SdLength n’est pas différent de zéro, 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é à une utilisation interne.
Create.PipeReadMode
Mode de lecture d’un canal. Ce membre est réservé à une utilisation interne.
Create.PipeCompletionMode
Mode d’achèvement d’un canal. Ce membre est réservé à une utilisation interne.
Create.Flags
Indicateurs de création
Create.Type
Type de la structure de NET_ROOT associée.
Create.RdrFlags
Create.FcbAcquired
Ce membre est réservé à une utilisation interne.
Create.TryForScavengingOnSharingViolation
Ce membre est réservé à une utilisation interne.
Create.ScavengingAlreadyTried
Ce membre est réservé à une utilisation 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 d’arborescence.
Create.TransportName
Chaîne Unicode qui représente le nom du transport. Ce membre est défini à partir des paramètres ouverts de connexion d’arborescence.
Create.UserName
Chaîne Unicode qui représente le nom d’utilisateur responsable de la requête. Ce membre est défini à partir des paramètres ouverts de connexion d’arborescence.
Create.Password
Chaîne Unicode qui contient le mot de passe de cette UserName utilisée pour l’authentification et l’autorisation. Ce membre est défini à partir des paramètres ouverts de connexion d’arborescence.
Create.UserDomainName
Chaîne Unicode qui contient le nom de domaine de cette UserName.
QueryDirectory
Membre de structure d’une union non nommée utilisée pour gérer les requêtes IRP_MJ_DIRECTORY_CONTROL. Ce membre est utilisé pour gérer les requêtes d’annuaire de requêtes qui entraînent des appels à la routine MrxQueryDirectory. RDBSS transmet des informations dans le QueryDirectory membre de structure 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 commencer à 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 l’appel pour la première fois. Ce paramètre a la valeur TRUE si indicateurs>IrpSp- a le bit SL_RESTART_SCAN.
QueryDirectory.ReturnSingleEntry
Une valeur booléenne définie sur TRUE indique que seule 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 >Indicateurs de> a le bit SL_RETURN_SINGLE_ENTRY.
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 indicateurs>IrpSp- a le bit SL_INDEX_SPECIFIED activé.
QueryDirectory.InitialQuery
Valeur booléenne définie sur TRUE lorsque la requête n’est pas une requête de caractères génériques (".« , par exemple). Ce membre a la valeur TRUE si l'UnicodeQueryTemplate.Buffer membre du foBX associé a la valeur NULL et que les indicateurs membre du FOBX n’ont pas le bit FOBX_FLAG_MATCH_ALL activé. Pour une requête de caractères génériques (".« par exemple), RDBSS définit la UnicodeQueryTemplate.Buffer membre du FOBX associé à la requête de caractères génériques passée.
NotifyChangeDirectory
Membre de structure d’une union non nommée utilisée pour gérer les requêtes 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 des informations dans le membre de structure NotifyChangeDirectory et le pLowIoContext->ParamsFor.NotifyChangeDirectory structure 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 non nommée utilisée pour gérer les requêtes 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 des informations dans le membre de structure QueryEa
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 par UserEaList membre. 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’a pas la valeur TRUE ou si QueryEaList membre pointe vers une liste sans erreur. 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 commencer à la première entrée d’attribut étendue. 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 l’appel pour la première fois. Ce paramètre est défini sur TRUE si IrpSp->Flags a le bit SL_RESTART_SCAN activé.
QueryEa.ReturnSingleEntry
Une valeur booléenne lorsqu’elle est définie sur TRUE indique que seule 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 >Indicateurs de> a le bit SL_RETURN_SINGLE_ENTRY.
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 indicateurs>IrpSp- a le bit SL_INDEX_SPECIFIED activé.
QuerySecurity
Membre de structure d’une union non nommée utilisée pour gérer les requêtes 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 des informations dans le membre de 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 membre SecurityInformation. Ce paramètre est défini sur IrpSp->Parameters.QuerySecurity.Length.
SetSecurity
Membre de structure d’une union non nommée utilisée pour gérer les requêtes 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 des informations dans le membre de structure SetSecurity
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 non nommée utilisée pour gérer les requêtes 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 des informations dans la QueryQuota membre de la structure au mini-redirecteur réseau.
QueryQuota.Length
Longueur, en octets, de la mémoire tampon pointée par 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 entrée. 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, si l’un d’eux est spécifié. 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 commencer à 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 l’appel pour la première fois. Ce paramètre a la valeur TRUE si indicateurs>IrpSp-a le bit SL_RESTART_SCAN activé.
QueryQuota.ReturnSingleEntry
Une valeur booléenne lorsqu’elle est définie sur TRUE indique que seule une seule entrée doit être retournée. Si ce paramètre est TRUE, MrxQueryQuotaInfo doit retourner uniquement la première entrée trouvée. Ce paramètre a la valeur TRUE si >Indicateurs de> a le bit SL_RETURN_SINGLE_ENTRY.
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
SetQuota
Membre de structure d’une union non nommée utilisée pour gérer les requêtes 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
Ensemble de RX_CONTENT_CREATE_FLAGS défini par RDBSS et transmis à des opérations d’E/S faibles envoyées au mini-redirecteur réseau. FlagsForLowIo est membre d’une structure non nommée utilisée pour les requêtes 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 membre d’une structure sans nom utilisée pour les requêtes d’E/S faibles envoyées au mini-redirecteur réseau.
AlsoCanonicalNameBuffer
Pointeur vers la chaîne Unicode représentant le nom du fichier physique à ouvrir si le nom canonique est supérieur à la mémoire tampon disponible.
LoudCompletionString
Membre inutilisé de la structure RX_CONTEXT.
AcquireReleaseFcbTrackerX
Réservé à l’utilisation du système.
TrackerHistoryPointer
Réservé à l’utilisation du système.
TrackerHistory[RDBSS_TRACKER_HISTORY_SIZE]
Réservé à l’utilisation du système.
ShadowCritOwner
Réservé à l’utilisation du système.
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 requêtes d’E/S (IRP). Il 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 seul IRP et tout le contexte requis pour traiter l’IRP.
Une structure RX_CONTEXT est parfois appelée contexte IRP ou RxContext dans les fichiers d’en-tête WDK et d’autres ressources utilisées pour développer des pilotes de mini-redirecteur réseau.
L'RX_CONTEXT est une structure de données à laquelle des informations supplémentaires fournies par les différents mini redirecteurs réseau sont attachées. L'RX_CONTEXT inclut des champs pour surallouer la taille de chaque structure de RX_CONTEXT par une quantité prédéfinie 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 violent cette règle entraînent une pénalité significative en matière de performances.
De nombreuses routines et routines RDBSS exportées par un mini-redirecteur réseau font référence à des structures RX_CONTEXT dans le thread de lancement ou dans un autre thread utilisé par la routine. Ainsi, les structures RX_CONTEXT allouées sont comptabilisées pour gérer leur utilisation pour les opérations asynchrones. Lorsque le nombre de références est égal à zéro, la structure de RX_CONTEXT allouée peut être finalisée et publiée lors de la dernière opération de déréférence.
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 terminer l’IRP associée à un RX_CONTEXT et configurer une routine d’annulation pour un RX_CONTEXT.
Exigences
Exigence | Valeur |
---|---|
d’en-tête | rxcontx.h (include Rx.h, Rxcontx.h) |
Voir aussi