RX_CONTEXT-Struktur (rxcontx.h)

Die RX_CONTEXT-Struktur kapselt ein IRP für die Verwendung durch RDBSS, Netzwerkminiumleitungen und das Dateisystem. Die RX_CONTEXT-Struktur beschreibt ein IRP, während es von einem Netzwerk-Mini-Redirector verarbeitet wird, und enthält Zustandsinformationen, mit denen globale Ressourcen freigegeben werden können, sobald das IRP abgeschlossen ist.

Syntax

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;

Member

NodeTypeCode

Der eindeutige Knotentyp, der für eine RX_CONTEXT-Struktur verwendet wird. Alle wichtigen Strukturtypen (z. B. RX_CONTEXT, SRV_CALL, NET_ROOT, V_NET_ROOT, SRV_OPEN, FCB und FOBX), die von RDBSS verwendet werden, verfügen über einen eindeutigen Zwei-Byte-Knotentypcode, der in der include-Datei nodetype.h definiert ist und zum Debuggen verwendet werden kann. RDBSS legt diesen Member auf RDBSS_NTC_RX_CONTEXT fest, wenn ein RX_CONTEXT in der RxInitializeContext-Routine initialisiert wird. Wenn ein Netzwerk-Miniumleitungstreiber eine RX_CONTEXT-Struktur mit einer anderen Methode initialisiert, muss dieser Member festgelegt werden.

RDBSS definiert diesen Member als Teil eines Standardheaders für alle von RDBSS verwendeten Strukturen.

NodeByteSize

Die Größe (in Bytes) dieser Struktur. RDBSS legt diesen Member auf sizeof( RX_CONTEXT) fest, wenn ein RX_CONTEXT in der RxInitializeContext-Routine initialisiert wird. Wenn ein Netzwerk-Miniumleitungstreiber eine RX_CONTEXT-Struktur mit einer anderen Methode initialisiert, muss dieser Member festgelegt werden.

RDBSS definiert diesen Member als Teil eines Standardheaders für alle von RDBSS verwendeten Strukturen.

ReferenceCount

Die Verweisanzahl für diese Struktur, nachdem sie zugeordnet wurde. RDBSS legt diesen Member auf 1 fest, wenn ein RX_CONTEXT in der RxInitializeContext-Routine zugeordnet und initialisiert wird. Wenn ein Netzwerk-Miniumleitungstreiber eine RX_CONTEXT-Struktur mit einer anderen Methode initialisiert, muss dieser Member festgelegt werden.

RDBSS definiert diesen Member als Teil eines Standardheaders für alle von RDBSS verwendeten Strukturen.

ContextListEntry

Der Listeneintrag zum Verbinden dieses RX_CONTEXT mit der Liste der aktiven RX_CONTEXTS.

MajorFunction

Die Hauptfunktion für das von diesem RX_CONTEXT gekapselte IRP.

MinorFunction

Die Nebenfunktion für das von diesem RX_CONTEXT gekapselte IRP.

PendingReturned

Wenn dieser Wert auf TRUE festgelegt ist, gibt dies an, dass RDBSS oder ein Treiber das IRP als ausstehend markiert hat. Jede IoCompletion-Routine sollte den Wert dieses Flags überprüfen. Wenn das Flag TRUE ist und die IoCompletion-Routine nicht STATUS_MORE_PROCESSING_REQUIRED zurückgibt, sollte die Routine IoMarkIrpPending aufrufen, um die ausstehende status an Treiber darüber im Gerätestapel zu verteilen. Dieses Element ähnelt dem gleichen Feld im IRP.

RDBSS legt diesen Member immer auf TRUE fest, bevor der Netzwerk-Miniumleitungstreiber aufgerufen wird.

PostRequest

Wenn true festgelegt ist, gibt dies an, ob die zugeordnete Anforderung an einen RDBSS-Workerthread gesendet werden soll. Ein Netzwerk-Mini-Redirector kann diesen Member auf TRUE festlegen, um anzugeben, dass er diese Anforderung an den Dateisystemprozess (File System Process, FSP) senden möchte.

RealDevice

Ein Zeiger auf das Geräteobjekt für den Miniumleitungstreiber des Zielnetzwerks. RDBSS legt diesen Member auf das Geräteobjekt für den Netzwerk-Miniumleitungstreiber fest, wenn in der RxInitializeContext-Routine ein RX_CONTEXT zugeordnet ist. Dieses Element wird aus dem FileObject-DeviceObject-Member aus dem IRP-Stapel> kopiert. Das Geräteobjekt für den Netzwerk-Mini-Redirector wird auch im RxDeviceObject-Strukturelement gespeichert.

Das RealDevice-Element wird derzeit nicht von RDBSS verwendet, kann aber von Netzwerk-Miniumleitungen verwendet werden.

CurrentIrp

Ein Zeiger auf den ursprünglichen IRP. Dieser Member sollte nicht von einem Netzwerk-Miniumleitungstreiber verwendet werden.

CurrentIrpSp

Ein Zeiger auf den IRP-Stapelspeicherort.

pFcb

Ein Zeiger auf den zugeordneten Dateikontrollblock (FCB) für dieses IRP.

pFobx

Ein Zeiger auf die zugeordnete Dateiobjekterweiterung (FOBX) für dieses IRP.

pRelevantSrvOpen

Ein Zeiger auf den zugeordneten Server open(SRV_OPEN) für diese IRP.

NonPagedFcb

Ein Zeiger auf den zugeordneten nicht ausgelagerten Dateisteuerungsblock (FCB) für dieses IRP.

RxDeviceObject

Ein Zeiger auf den RDBSS_DEVICE_OBJECT für den Miniumleitungstreiber des Zielnetzwerks, der für Workerwarteschlangenalgorithmen erforderlich ist. RDBSS legt diesen Member auf den RDBSS_DEVICE_OBJECT für den Netzwerkminiumleitungsor fest, wenn ein RX_CONTEXT in der RxInitializeContext-Routine initialisiert wird. Die RxDeviceObject-Struktur enthält ein DeviceObject-Element , das das Geräteobjekt für den Netzwerk-Miniumleitungstreiber enthält, der mit dem RealDevice-Member des RX_CONTEXT identisch ist.

OriginalThread

Ein Zeiger auf den ursprünglichen Thread, in dem die Anforderung initiiert wurde.

LastExecutionThread

Ein Zeiger auf den letzten Thread, in dem eine der RX_CONTEXT zugeordnete Verarbeitung durchgeführt wurde, wenn der Thread im Dateisystemprozess bereitgestellt wurde.

LockManagerContext

Ein Zeiger auf den Sperr-Manager-Kontext. Dieser Member ist für die interne Verwendung reserviert.

RdbssDbgExtension

Ein Zeiger auf den Kontext, der RDBSS für Debuginformationen zugewiesen wird. Dieser Member ist für die interne Verwendung reserviert.

ScavengerEntry

Ein Zeiger auf die Liste der Elemente, die gelöscht werden sollen. Dieser Member ist für die interne Verwendung reserviert.

SerialNumber

Die Seriennummer für diese RX_CONTEXT-Struktur. Jeder von RDBSS initialisierten Struktur wird eine Seriennummer zugewiesen, wenn die Struktur zum ersten Mal initialisiert wird. Diese Seriennummer ist eine Zahl, die um eins erhöht wird, bevor der Wert festgelegt wird. RDBSS legt diesen Member fest, wenn ein RX_CONTEXT in der RxInitializeContext-Routine initialisiert wird. RDBSS

FobxSerialNumber

Die Seriennummer für die zugeordnete FOBX-Struktur. Jeder von RDBSS initialisierten Struktur wird eine Seriennummer zugewiesen, wenn die Struktur zum ersten Mal initialisiert wird. Dieser Member kann von Netzwerkminiumleitungen verwendet werden, um zu ermitteln, ob mehrere Aufrufe Teil desselben größeren Vorgangs sind und daher besser zwischengespeichert werden können.

Flags

Eine Bitmaske von Flags für diese RX_CONTEXT-Struktur.

FcbResourceAcquired

Wenn dieser Wert auf TRUE festgelegt ist, gibt dieses Element an, dass die FCB-Ressource für diesen Vorgang abgerufen wurde. Die FCB-Ressource ist einer der Sperrmechanismen, die einem Vorgang für einen FCB zugeordnet sind.

FcbPagingIoResourceAcquired

Wenn dieser Wert auf TRUE festgelegt ist, gibt dieses Element an, dass die FCB-Paging-E/A-Ressource für diesen Vorgang abgerufen wurde. Die FCB-Paging-E/A-Ressource ist einer der Sperrmechanismen, die einem Auslagerungs-E/A-Vorgang für einen FCB zugeordnet sind.

MustSucceedDescriptorNumber

Ein Member, der in der RxCreateRxContext-Routine anfänglich auf 0 festgelegt wird. Dieser Member wird nicht anderweitig von RDBSS verwendet, kann aber von Netzwerk-Mini-Umleitungen verwendet werden.

StoredStatus

StoredStatusAlignment

InformationToReturn

IoStatusBlock

Der E/A-status-Block, der von einem Netzwerkminiumleitungsor verwendet wird, um status Informationen zurückzugeben. Das IoStatusBlock-Element ist ein Mitglied einer unbenannten Union, die zum Zurückgeben status Informationen verwendet wird.

ForceLonglongAligmentDummyField

Ein Member einer unbenannten Union, die verwendet wird, um die richtige Ausrichtung auf dem MRxContext[MRX_CONTEXT_FIELD_COUNT] -Member zu erzwingen.

MRxContext[MRX_CONTEXT_FIELD_COUNT]

WriteOnlyOpenRetryContext

Ein Zeiger, der verwendet werden kann, um einen Zustand für den Netzwerkminiumleitungsor zu speichern. Dieser Member wird nicht von RDBSS verwendet, kann aber von einem Netzwerk-Miniumleitungstreiber verwendet werden, um anzugeben, dass eine Datei in einem schreibgeschützten Handle zwischengespeichert wird.

MRxCancelRoutine

Ein Zeiger auf die Abbruchroutine, die von einem Netzwerk-Miniumleitungstreiber festgelegt werden kann.

ResumeRoutine

Dieser Member ist für die interne Verwendung reserviert.

WorkQueueItem

Ein Zeiger auf ein Arbeitswarteschlangenelement, das von einem Netzwerk-Miniumleitungstreiber während der Verarbeitung der RX_CONTEXT verwendet werden kann.

OverflowListEntry

Ein Zeiger auf den Listenkopf der Vorgänge, die nach Abschluss freigegeben werden sollen. Dieser Member ist für die interne Verwendung reserviert.

SyncEvent

Ein Zeiger auf ein KernelEREIGNIS, das von einem Netzwerk-Miniumleitungstreiber verwendet werden kann, um während der Verarbeitung des RX_CONTEXT zu warten.

BlockedOperations

Ein Zeiger auf den Listenkopf der blockierten Vorgänge, die nach Abschluss freigegeben werden sollen. Dieser Member ist für die interne Verwendung reserviert.

BlockedOpsMutex

Ein Zeiger auf einen Mutex, der die Serialisierung der blockierten Vorgänge steuert. Dieser Member ist für die interne Verwendung reserviert.

RxContextSerializationQLinks

Ein Zeiger auf den Listeneintrag, der zum Serialisieren von Pipevorgängen pro Dateiobjekt verwendet wird. Dieser Member ist für die interne Verwendung reserviert.

Info

Ein Strukturmember einer unbenannten Union, die für die Routinen MRxQueryDirectory, MRxQueryFileInfo, MRxQueryVolumeInfo, MRxSetFileInfo, MRxSetFileInfoAtCleanup und MRxSetVolumeInfo verwendet wird. RDBSS übergibt Informationen im Info-Strukturelement an den Netzwerk-Miniumleitungsor, und der Netzwerkminiumleitungsor gibt Informationen an RDBSS im Info-Strukturelement zurück.

Info.FsInformationClass

Ein Mitglied einer unbenannten Union, die von RDBSS verwendet wird, um den Typ von FS_INFORMATION_CLASS zu übergeben, der an den Netzwerk-Miniumleitungstreiber angefordert wird. RDBSS übergibt Informationen im FsInformationClass-Member , wenn **MrxQueryVolumeInfo ** und MrxSetVolumeInfo aufgerufen werden.

Info.FileInformationClass

Ein Mitglied einer unbenannten Union, die von RDBSS verwendet wird, um den Typ FILE_INFORMATION_CLASS Anforderung anzugeben, die an den Netzwerk-Miniumleitungstreiber gesendet wird. RDBSS übergibt Informationen im FileInformationClass-Member , wenn MrxQueryDirectory, MrxQueryFileInfo und MrxSetFileInfo aufgerufen werden.

Info.Buffer

Ein Puffer, der verwendet wird, um Daten von RDBSS an den Netzwerk-Miniumleitungstreiber zu übergeben und Antworten vom Netzwerk-Miniumleitungstreiber von RDBSS zu empfangen. Das Buffer-Element wird in den Routinen MrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanup und MrxSetVolumeInfo verwendet.

Info.Length

Ein Mitglied einer unbenannten Union, die verwendet wird, um die Länge des Buffer-Members von RDBSS an den Netzwerk-Miniumleitungstreiber zu übergeben. Das Length-Element wird in den Routinen MrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanup und MrxSetVolumeInfo verwendet.

Info.LengthRemaining

Ein Mitglied einer unbenannten Union, die verwendet wird, um die Länge der im Pufferelement zurückgegebenen Informationen vom Netzwerk-Miniumleitungstreiber an RDBSS zu übergeben. Das LengthRemaining-Element wird in den Routinen MrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanup und MrxSetVolumeInfo verwendet.

Info.ReplaceIfExists

Ein boolescher Wert, der angibt, ob eine vorhandene Datei während eines Umbenennungsvorgangs ersetzt werden soll. Das ReplaceIfExists-Element wird in der MrxSetFileInfo-Routine verwendet.

Info.AdvanceOnly

Dieses Element ist für die interne Verwendung reserviert.

PrefixClaim

Ein Strukturelement einer unbenannten Union, die für Präfixauflösungsanforderungen verwendet wird, die vom MUP (Multiple UNC Provider) gesendet werden. Ein Präfixanspruch ergibt sich aus einer IRP_MJ_DEVICE_CONTROL Anforderung von MUP an RDBSS für IOCTL_REDIR_QUERY_PATH oder IOCTL_REDIR_QUERY_PATH_EX. RDBSS übergibt Informationen in der PrefixClaim-Struktur an den Netzwerkminiumleitungsor, und der Netzwerkminiumleitung gibt Informationen an RDBSS in der PrefixClaim-Struktur zurück.

PrefixClaim.SuppliedPathName

Eine nicht NULL beendete Unicode-Zeichenfolge, die den UNC-Pfad angibt, für den die Präfixauflösung ausgeführt werden soll.

PrefixClaim.NetRootType

Der Typ der angeforderten NET_ROOT. Dieser Member wird derzeit nicht verwendet. RDBSS leitet den Typ des NET_ROOT aus dem SuppliedPathName-Member ab.

PrefixClaim.pSecurityContext

Ein Zeiger auf den Sicherheitskontext, der von der Anforderung von MUP übergeben wurde.

Dieser Member wird derzeit nicht verwendet. Der Sicherheitskontext wird im Create.NtCreateParameters.SecurityContext-Member des RX_CONTEXT übergeben, nicht in diesem Member.

Create

Ein Strukturmember einer unbenannten Union, die für die Verarbeitung IRP_MJ_CREATE Anforderungen verwendet wird. Dieser Member wird für die Verarbeitung von dateioffenen Anforderungen verwendet, die zu Aufrufen der MRxCreate-Routine führen. Dieses Element wird auch für Präfixauflösungsanforderungen verwendet. RDBSS übergibt Informationen im Strukturelement Erstellen an den Netzwerkminiumleitungsor, und der Netzwerkminiumleitungsor gibt Informationen an RDBSS im Strukturelement Erstellen zurück.

Create.NtCreateParameters

Die Create-Parameter, die an die NtCreatefile-Routine im Benutzermodus übergeben werden. RDBSS legt die Member der NtCreateParameters-Struktur basierend auf den Parameters.Create-Membern des IRP fest.

Create.ReturnedCreateInformation

Ein Wert, der vom Netzwerkminiumleitungsor bei Abschluss des MRxCreate-Aufrufs festgelegt wird.

Create.CanonicalNameBuffer

Ein Zeiger auf die Unicode-Zeichenfolge, die den Namen der physischen Datei darstellt, die geöffnet werden soll, wenn der kanonische Name größer als der verfügbare Puffer ist.

Create.NetNamePrefixEntry

Ein Zeiger auf den NetName-Tabellenpräfixeintrag. Dieses Element ist für die interne Verwendung reserviert.

Create.pSrvCall

Ein Zeiger auf die zugeordnete SRV_CALL-Struktur.

Create.pNetRoot

Ein Zeiger auf die zugeordnete NET_ROOT-Struktur.

Create.pVNetRoot

Ein Zeiger auf die zugeordnete V_NET_ROOT-Struktur.

Create.EaBuffer

Ein Zeiger auf den Puffer für erweiterte Attribute. Dieses Member ist optional.

Create.EaLength

Die Länge des Puffers für erweiterte Attribute, EaBuffer.

Create.SdLength

Die Länge des Sicherheitsdeskriptors. RDBSS legt dies basierend auf dem Wert des Parameters.Create.SecurityContext-Members des IRP fest. Wenn der SdLength-Member nichtzero ist, wird die Sicherheitsbeschreibung im Info.Buffer-Member an den Netzwerkminiumleitungsor übergeben.

Create.PipeType

Der Typ einer Pipe. Dieses Element ist für die interne Verwendung reserviert.

Create.PipeReadMode

Der Lesemodus für eine Pipe. Dieses Element ist für die interne Verwendung reserviert.

Create.PipeCompletionMode

Der Vervollständigungsmodus für eine Pipe. Dieses Element ist für die interne Verwendung reserviert.

Create.Flags

Die Erstellungsflags

Create.Type

Der Typ der zugeordneten NET_ROOT-Struktur.

Create.RdrFlags

Create.FcbAcquired

Dieses Element ist für die interne Verwendung reserviert.

Create.TryForScavengingOnSharingViolation

Dieses Element ist für die interne Verwendung reserviert.

Create.ScavengingAlreadyTried

Dieses Element ist für die interne Verwendung reserviert.

Create.ThisIsATreeConnectOpen

Ein boolescher Wert, der angibt, ob es sich bei diesem Aufruf um eine offene Anforderung für eine Strukturverbindung handelt, die mit der option FILE_CREATE_TREE_CONNECTION im Element "IrpSp-Parameters.Create.Options>" festgelegt ist.

Create.TreeConnectOpenDeferred

Ein boolescher Wert, der angibt, dass der Netzwerk-Mini-Redirector die offene Anforderung für die Strukturverbindung zurückstellen kann.

Create.TransportName

Eine Unicode-Zeichenfolge, die den Transportnamen darstellt. Dieses Element wird über die geöffneten Parameter für die Strukturverbindung festgelegt.

Create.UserName

Eine Unicode-Zeichenfolge, die den für die Anforderung verantwortlichen Benutzernamen darstellt. Dieses Element wird über die geöffneten Parameter für die Strukturverbindung festgelegt.

Create.Password

Eine Unicode-Zeichenfolge, die das Kennwort für diesen Benutzernamen enthält, der für die Authentifizierung und Autorisierung verwendet wird. Dieses Element wird über die geöffneten Parameter für die Strukturverbindung festgelegt.

Create.UserDomainName

Eine Unicode-Zeichenfolge, die den Domänennamen für diesen Benutzernamen enthält.

QueryDirectory

Ein Strukturelement einer unbenannten Union, die für die Verarbeitung IRP_MJ_DIRECTORY_CONTROL Anforderungen verwendet wird. Dieser Member wird zum Verarbeiten von Abfrageverzeichnisanforderungen verwendet, die zu Aufrufen der MrxQueryDirectory-Routine führen. RDBSS übergibt Informationen im QueryDirectory-Strukturelement an den Netzwerkminiumleitungsor.

QueryDirectory.FileIndex

Der Index des Eintrags, an dem mit der Überprüfung des Verzeichnisses begonnen werden soll, wenn das IndexSpecified-Element auf TRUE festgelegt ist. Dieser Parameter ist auf das Element "IrpSp-Parameters.QueryDirectory.FileIndex>" festgelegt.

QueryDirectory.RestartScan

Ein auf TRUE festgelegter boolescher Wert gibt an, dass der Scan beim ersten Eintrag im Verzeichnis gestartet werden soll. Wenn dieser Wert auf FALSE festgelegt ist, wird die Überprüfung von einem vorherigen Aufruf fortgesetzt. Dieser Parameter muss beim erstmaligen Aufrufen auf TRUE festgelegt werden. Dieser Parameter wird auf TRUE festgelegt, wenn IrpSp-Flags> das SL_RESTART_SCAN Bit aktiviert hat.

QueryDirectory.ReturnSingleEntry

Ein auf TRUE festgelegter boolescher Wert gibt an, dass nur ein einzelner Eintrag zurückgegeben werden soll. Wenn dieser Parameter TRUE ist, sollte MrxQueryDirectory nur den ersten gefundenen Eintrag zurückgeben. Dieser Parameter ist auf TRUE festgelegt, wenn IrpSp-Flags> das SL_RETURN_SINGLE_ENTRY Bit aktiviert hat.

QueryDirectory.IndexSpecified

Ein auf TRUE festgelegter boolescher Wert gibt an, dass der Scan an dem Eintrag im Verzeichnis beginnt, dessen Index vom FileIndex-Element angegeben wird. Dieser Parameter ist auf TRUE festgelegt, wenn IrpSp-Flags> das SL_INDEX_SPECIFIED Bit aktiviert hat.

QueryDirectory.InitialQuery

Ein boolescher Wert, der auf TRUE festgelegt ist, wenn es sich bei der Abfrage nicht um einen Wild Karte Abfrage handelt (".", z. B.). Dieses Element wird auf TRUE festgelegt, wenn das UnicodeQueryTemplate.Buffer-Element des zugeordneten FOBX-Elements NULL ist und das Flags-Element des FOBX nicht das FOBX_FLAG_MATCH_ALL Bit aktiviert hat. Bei einer wilden Karte Abfrage ("." beispielsweise legt RDBSS den UnicodeQueryTemplate.Buffer-Member des zugeordneten FOBX auf den wilden Karte übergebenen Abfrage fest.

NotifyChangeDirectory

Ein Strukturmember einer unbenannten Union, die für die Verarbeitung IRP_MJ_DIRECTORY_CONTROL Anforderungen mit der Nebenfunktion IRP_MN_NOTIFY_CHANGE_DIRECTORY verwendet wird. Dieses Element wird für die Verarbeitung von Verzeichnisänderungsanforderungen verwendet, die zu Aufrufen der MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] Routine führen. RDBSS übergibt Informationen im Strukturelement NotifyChangeDirectory und der pLowIoContext-ParamsFor.NotifyChangeDirectory-Struktur> an den Netzwerkminiumleitungsor.

NotifyChangeDirectory.pVNetRoot

Ein Zeiger auf die V_NET_ROOT Struktur, die dem Verzeichnis zugeordnet ist. Dieser Parameter ist abhängig vom Knotentyp auf das Element IrpSp-FileObject-FsContext>> oder das Element IrpSp-FileObject-FsContext2>> festgelegt.

QueryEa

Ein Strukturelement einer nicht benannten Union, die für die Verarbeitung IRP_MJ_QUERY_EA Anforderungen verwendet wird. Dieser Member wird für die Verarbeitung erweiterter Attributabfrageanforderungen verwendet, die zu Aufrufen der MRxQueryEaInfo-Routine führen. RDBSS übergibt Informationen im QueryEa-Strukturelement an den Netzwerkminiumleitungsor.

QueryEa.UserEaList

Ein Zeiger auf einen vom Aufrufer bereitgestellten Eingabepuffer, der eine FILE_GET_EA_INFORMATION-Struktur enthält, die die zu abfragenden erweiterten Attribute angibt. Dieser Parameter ist auf IrpSp-Parameters.QueryEa.EaList> festgelegt.

QueryEa.UserEaListLength

Die Länge des Puffers in Bytes, auf den das UserEaList-Element verweist. Dieser Parameter ist auf IrpSp-Parameters.QueryEa.EaListLength> festgelegt.

QueryEa.UserEaIndex

Der Index des Eintrags, an dem mit der Überprüfung der Liste der erweiterten Attribute begonnen werden soll. Dieser Parameter sollte ignoriert werden, wenn das IndexSpecified-Element nicht auf TRUE festgelegt ist oder wenn das QueryEaList-Element auf eine nicht erlösende Liste verweist. Dieser Parameter ist auf IrpSp-Parameters.QueryEa.EaIndex> festgelegt.

QueryEa.RestartScan

Ein boolescher Wert, wenn er auf TRUE festgelegt ist, gibt an, dass die Abfrage beim ersten erweiterten Attributeintrag gestartet werden soll. Wenn dieser Wert auf FALSE festgelegt ist, wird die Überprüfung von einem vorherigen Aufruf fortgesetzt. Dieser Parameter muss beim erstmaligen Aufrufen auf TRUE festgelegt werden. Dieser Parameter ist auf TRUE festgelegt, wenn IrpSp-Flags> das SL_RESTART_SCAN Bit aktiviert hat.

QueryEa.ReturnSingleEntry

Ein auf TRUE festgelegter boolescher Wert gibt an, dass nur ein einzelner Eintrag zurückgegeben werden soll. Wenn dieser Parameter TRUE ist, sollte MrxQueryEaInfo nur den ersten gefundenen Eintrag zurückgeben. Dieser Parameter ist auf TRUE festgelegt, wenn IrpSp-Flags> das SL_RETURN_SINGLE_ENTRY Bit aktiviert hat.

QueryEa.IndexSpecified

Ein boolescher Wert, wenn er auf TRUE festgelegt ist, gibt an, dass die Überprüfung am Eintrag in den erweiterten Attributen beginnt, deren Index vom UserEaIndex-Element angegeben wird. Dieser Parameter ist auf TRUE festgelegt, wenn IrpSp-Flags> das SL_INDEX_SPECIFIED Bit aktiviert hat.

QuerySecurity

Ein Strukturelement einer nicht benannten Union, die für die Verarbeitung IRP_MJ_QUERY_SECURITY Anforderungen verwendet wird. Dieser Member wird zum Verarbeiten von Abfragesicherheitsanforderungen verwendet, die zu Aufrufen der MRxQuerySdInfo-Routine führen. RDBSS übergibt Informationen im QuerySecurity-Strukturelement an den Netzwerkminiumleitungsor.

QuerySecurity.SecurityInformation

Ein Zeiger auf einen vom Aufrufer bereitgestellten Eingabepuffer, der eine SECURITY_INFORMATION-Struktur enthält, die den zu abfragenden Vorgang angibt. Dieser Parameter ist auf IrpSp-Parameters.QuerySecurity.SecurityInformation> festgelegt.

QuerySecurity.Length

Die Länge des Puffers in Bytes, auf den das SecurityInformation-Element verweist. Dieser Parameter ist auf IrpSp-Parameters.QuerySecurity.Length> festgelegt.

SetSecurity

Ein Strukturelement einer unbenannten Union, die für die Verarbeitung IRP_MJ_SET_SECURITY Anforderungen verwendet wird. Dieser Member wird zum Verarbeiten von Abfragesicherheitsanforderungen verwendet, die zu Aufrufen der MRxSetSdInfo-Routine führen. RDBSS übergibt Informationen im SetSecurity-Strukturelement an den Netzwerkminiumleitungsor.

SetSecurity.SecurityInformation

Ein Zeiger auf einen vom Aufrufer bereitgestellten Eingabepuffer, der eine SECURITY_INFORMATION-Struktur enthält, die angibt, welche Sicherheitsinformationen im Sicherheitsdeskriptor festgelegt werden sollen. Dieser Parameter ist auf IrpSp-Parameters.SetSecurity.SecurityInformation> festgelegt.

SetSecurity.SecurityDescriptor

Ein Zeiger auf eine SECURITY_DESCRIPTOR-Struktur, die die Werte der Sicherheitsinformationen enthält, die dem Objekt zugewiesen werden sollen. Dieser Parameter ist auf IrpSp-Parameters.SetSecurity.SecurityDescriptor> festgelegt.

QueryQuota

Ein Strukturmember einer unbenannten Union, die für die Verarbeitung IRP_MJ_QUERY_QUOTA Anforderungen verwendet wird. Dieser Member wird für die Verarbeitung von Abfragesicherheitsanforderungen verwendet, die zu Aufrufen der MRxQueryQuotaInfo-Routine führen. RDBSS übergibt Informationen im QueryQuota-Strukturelement an den Netzwerkminiumleitungsor.

QueryQuota.Length

Die Länge des Puffers in Bytes, auf den das StartSid-Element verweist. Dieser Parameter ist auf IrpSp-Parameters.QueryQuota.Length> festgelegt.

QueryQuota.StartSid

Ein optionaler Zeiger auf eine SID, der angibt, dass die zurückgegebenen Informationen mit einem anderen Eintrag als dem ersten Eintrag beginnen sollen. Dieser Parameter wird ignoriert, wenn das SidList-Element angegeben wird. Dieser Parameter ist auf IrpSp-Parameters.QueryQuota.StartSid> festgelegt.

QueryQuota.SidList

Ein optionaler Zeiger auf eine Liste von SIDs, deren Kontingentinformationen zurückgegeben werden sollen. Jeder Eintrag in der Liste ist eine FILE_GET_QUOTA_INFORMATION-Struktur. Dieser Parameter ist auf IrpSp-Parameters.QueryQuota.SidList> festgelegt.

QueryQuota.SidListLength

Die Länge der Liste der SIDs im SidList-Element in Bytes, sofern angegeben. Dieser Parameter ist auf IrpSp-Parameters.QueryQuota.SidListLength> festgelegt.

QueryQuota.RestartScan

Ein auf TRUE festgelegter boolescher Wert gibt an, dass die Abfrage beim ersten Eintrag gestartet werden soll. Wenn dieser Wert auf FALSE festgelegt ist, wird die Überprüfung von einem vorherigen Aufruf fortgesetzt. Dieser Parameter muss beim erstmaligen Aufrufen auf TRUE festgelegt werden. Dieser Parameter ist auf TRUE festgelegt, wenn IrpSp-Flags> das SL_RESTART_SCAN Bit aktiviert hat.

QueryQuota.ReturnSingleEntry

Ein auf TRUE festgelegter boolescher Wert gibt an, dass nur ein einzelner Eintrag zurückgegeben werden soll. Wenn dieser Parameter TRUE ist, sollte MrxQueryQuotaInfo nur den ersten gefundenen Eintrag zurückgeben. Dieser Parameter ist auf TRUE festgelegt, wenn IrpSp-Flags> das SL_RETURN_SINGLE_ENTRY Bit aktiviert hat.

QueryQuota.IndexSpecified

Ein auf TRUE festgelegter boolescher Wert gibt an, dass der Scan an dem Eintrag in der Liste beginnt, dessen Index vom StartSid-Element angegeben wird. Dieser Parameter ist auf TRUE festgelegt, wenn IrpSp-Flags> das SL_INDEX_SPECIFIED Bit aktiviert hat.

SetQuota

Ein Strukturmember einer unbenannten Union, die für die Verarbeitung IRP_MJ_SET_QUOTA Anforderungen verwendet wird. Diese Struktur wird derzeit nicht von RDBSS verwendet.

SetQuota.Length

Ein nicht verwendetes Element der SetQuota-Struktur .

DosVolumeFunction

Ein Strukturelement einer nicht benannten Union. Diese Struktur wird derzeit nicht von RDBSS verwendet.

DosVolumeFunction.VNetRoot

Ein nicht verwendetes Element der DosVolumeFunction-Struktur .

DosVolumeFunction.SrvCall

Ein nicht verwendetes Element der DosVolumeFunction-Struktur .

DosVolumeFunction.NetRoot

Ein nicht verwendetes Element der DosVolumeFunction-Struktur .

FlagsForLowIo

LowIoContext

AlsoCanonicalNameBuffer

LoudCompletionString

Ein nicht verwendetes Element der RX_CONTEXT-Struktur.

AcquireReleaseFcbTrackerX

TrackerHistoryPointer

TrackerHistory[RDBSS_TRACKER_HISTORY_SIZE]

ShadowCritOwner

StoredStatus

Ein Mitglied einer nicht benannten Union, die verwendet wird, um status Informationen von einem Netzwerk-Miniumleitungstreiber für niedrige E/A-Vorgänge zurückzugeben. RDBSS legt diesen Wert auch basierend auf dem von der MRxQueryFileInfo-Routine zurückgegebenen status fest, wenn der Dateiabfragevorgang von RDBSS nicht verstanden wird.

StoredStatusAlignment

Ein Mitglied einer nicht benannten Union, die verwendet wird, um eine ordnungsgemäße Ausrichtung des StoredStatus-Members zu erzwingen.

InformationToReturn

Ein Mitglied einer nicht benannten Union, die verwendet wird, um status Informationen von einem Netzwerk-Miniumleitungstreiber für einige niedrige E/A-Vorgänge (Lese-, Schreib-, FSCTL usw.) und MrxQueryXXX-Vorgänge zurückzugeben.

Der eindeutige Knotentyp, der für eine RX_CONTEXT-Struktur verwendet wird. Alle von RDBSS verwendeten Hauptstrukturtypen (z. B. RX_CONTEXT, SRV_CALL, NET_ROOT, V_NET_ROOT, SRV_OPEN, FCB und FOBX) verfügen über einen eindeutigen Knotentypcode vom Typ mit zwei Byte, der in der Includedatei nodetype.h definiert ist und zum Debuggen verwendet werden kann. RDBSS legt diesen Member auf RDBSS_NTC_RX_CONTEXT fest, wenn ein RX_CONTEXT in der RxInitializeContext-Routine initialisiert wird. Wenn ein Netzwerkminiumleitungstreiber eine RX_CONTEXT-Struktur mit einer anderen Methode initialisiert, muss dieser Member festgelegt werden.

RDBSS definiert dieses Member als Teil eines Standardheaders für alle von RDBSS verwendeten Strukturen.

FlagsForLowIo

Eine Reihe von Optionen, die von RDBSS festgelegt und an niedrige E/A-Vorgänge übergeben werden, die an den Netzwerkminiumleitungsor gesendet werden. FlagsForLowIo ist ein Mitglied der unbenannten Struktur, die für niedrige E/A-Anforderungen an den Netzwerkminiumleitungsor verwendet wird.

LowIoContext

Ein Zeiger auf eine LOWIO_CONTEXT-Struktur, die an den Netzwerkminiumleitungsor übergeben wird. LowIoContext ist ein Mitglied der unbenannten Struktur, die für niedrige E/A-Anforderungen verwendet wird, die an den Netzwerkminiumleitungsor gesendet werden.

Hinweise

Die RX_CONTEXT-Struktur ist eine der grundlegenden Datenstrukturen, die von RDBSS- und Netzwerkminiumleitungen zum Verwalten eines E/A-Anforderungspakets (IRP) verwendet werden. Die RX_CONTEXT Datenstruktur kapselt eine IRP für die Verwendung durch RDBSS, Netzwerkminiumleitungen und das Dateisystem. Eine RX_CONTEXT-Struktur enthält einen Zeiger auf eine einzelne IRP und den gesamten Kontext, der zum Verarbeiten des IRP erforderlich ist.

Eine RX_CONTEXT-Struktur wird manchmal als IRP-Kontext oder RxContext in den WdK- oder IFS Kit-Headerdateien und anderen Ressourcen für die Entwicklung von Netzwerk-Miniumleitungstreibern bezeichnet.

Die RX_CONTEXT ist eine Datenstruktur, an die zusätzliche Informationen der verschiedenen Netzwerkminiumleitungen angefügt sind. Die RX_CONTEXT enthält Felder für die Überzuweisung der Größe jeder RX_CONTEXT Struktur durch einen vordefinierten Betrag für jeden Netzwerkminiumleitungsor, der dann für die Verwendung durch den Miniumleitungsor reserviert ist. Dieser Ansatz besteht aus der Zuordnung eines vordefinierten Bereichs, der für alle Netzwerkminiumleitungen als Teil jedes RX_CONTEXT identisch ist. Dies ist ein unformatierter Bereich, auf dem jede gewünschte Struktur von den verschiedenen Netzwerkminiumleitungen aufgezwungen werden kann. Entwickler von Netzwerk-Miniumleitungstreibern sollten versuchen, den zugeordneten privaten Kontext zu definieren, um in diesen vordefinierten Bereich zu passen, der in der RX_CONTEXT Datenstruktur definiert ist. Netzwerk-Miniumleitungstreiber, die gegen diese Regel verstoßen, verursachen eine erhebliche Leistungseinbuße.

Viele RDBSS-Routinen und -Routinen, die von einem Netzwerkminiumleitungsor exportiert werden, verweisen auf RX_CONTEXT Strukturen entweder im initiierenden Thread oder in einem anderen thread, der von der Routine verwendet wird. Daher werden zugeordnete RX_CONTEXT Strukturen referenziert, um ihre Verwendung für asynchrone Vorgänge zu verwalten. Wenn die Verweisanzahl auf 0 steigt, kann die zugeordnete RX_CONTEXT Struktur abgeschlossen und beim letzten Dereference-Vorgang freigegeben werden.

RDBSS stellt eine Reihe von Routinen bereit, die zum Bearbeiten eines RX_CONTEXT und der zugehörigen IRP verwendet werden. Diese Routinen werden verwendet, um eine RX_CONTEXT zuzuordnen, zu initialisieren und zu löschen. Diese Routinen werden auch verwendet, um die mit einem RX_CONTEXT verknüpfte IRP abzuschließen und eine Abbruchroutine für eine RX_CONTEXT einzurichten.

Anforderungen

Anforderung Wert
Header rxcontx.h (einschließlich Rx.h, Rxcontx.h)

Weitere Informationen

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