Partager via


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 :

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 IoCompletion ne retourne pas STATUS_MORE_PROCESSING_REQUIRED, la routine doit appeler IoMarkIrpPending pour propager l’état en attente aux pilotes au-dessus de celle-ci 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 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 comprend un membre DeviceObject qui contient l’objet d’appareil pour le pilote de mini-redirecteur réseau identique au membre RealDevice du RX_CONTEXT.

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 . Ce membre n’est pas utilisé par RDBSS, mais il peut être utilisé par des mini-redirecteurs réseau.

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 :

RDBSS transmet des informations dans le membre de structure Info au mini-redirecteur réseau et le mini-redirecteur réseau renvoie des informations à RDBSS 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 lors de l’appel MrxQueryVolumeInfo et MrxSetVolumeInfo .

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 lors de l’appel MrxQueryDirectory, MrxQueryFileInfoet MrxSetFileInfo.

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 est utilisé dans leMrxQueryDirectory , mrxQueryFileInfo, mrxQueryVolumeInfo, mrxSetFileInfo, MRxSetFileInfoAtCleanupet routines MrxSetVolumeInfo.

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 Length est utilisé dans leMrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanupet routines MrxSetVolumeInfo.

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 LengthRemaining est utilisé dans leMrxQueryDirectory , MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanupet routines MrxSetVolumeInfo.

Info.ReplaceIfExists

Valeur booléenne qui indique si un fichier existant doit être remplacé pendant une opération de renommage. Le membre ReplaceIfExists est utilisé dans la routine MrxSetFileInfo.

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 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 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 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 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 . Ce paramètre a la valeur TRUE si indicateurs>IrpSp- a le bit SL_INDEX_SPECIFIED activé.

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

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