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

FILE_GET_EA_INFORMATION

IOCTL_REDIR_QUERY_PATH

IOCTL_REDIR_QUERY_PATH_EX

IRP_MJ_CREATE

IRP_MJ_DEVICE_CONTROL

IRP_MJ_DIRECTORY_CONTROL

IRP_MJ_QUERY_EA

IRP_MJ_QUERY_QUOTA

IRP_MJ_QUERY_SECURITY

IRP_MJ_SET_QUOTA

IRP_MJ_SET_SECURITY

IoCompletion

IoMarkIrpPending

MRxCreate

MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY]

MRxQueryDirectory

MRxQueryEaInfo

MRxQueryFileInfo

MRxQueryQuotaInfo

MRxQuerySdInfo

MRxQueryVolumeInfo

MRxSetFileInfo

MRxSetFileInfoAtCleanup

MRxSetSdInfo

MRxSetVolumeInfo

RxCreateRxContext

RxInitializeContext

RxStartMinirdr