Freigeben über


RX_CONTEXT Struktur (rxcontx.h)

Die RX_CONTEXT Struktur kapselt ein IRP für die Verwendung durch RDBSS, Netzwerkminiumleitungen und das Dateisystem. Es beschreibt ein IRP, während es von einem Netzwerk-Miniumleitungsmodul verarbeitet wird und Zustandsinformationen enthält, mit denen globale Ressourcen freigegeben werden können, während 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;

Angehörige

NodeTypeCode

Der eindeutige Knotentyp, der für eine RX_CONTEXT Struktur verwendet wird. RDBSS legt dieses Element auf RDBSS_NTC_RX_CONTEXT fest, wenn ein RX_CONTEXT in RxInitializeContext-initialisiert wird. Wenn ein Netzwerk-Miniumleitungstreiber eine RX_CONTEXT Struktur mit einer anderen Methode initialisiert, muss dieses Element festgelegt werden.

RDBSS definiert dieses Element als Teil eines Standardheaders für alle strukturen, die von RDBSS verwendet werden.

Alle wichtigen Strukturtypen, die von RDBSS verwendet werden, weisen einen eindeutigen Zwei-Byte-Knotentypcode auf, der in nodetype.h definiert ist, der für das Debuggen verwendet werden kann. Zu den folgenden Hauptstrukturtypen gehören:

NodeByteSize

Die Größe dieser Struktur in Byte. RDBSS legt dieses Element 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 dieses Element festgelegt werden.

RDBSS definiert dieses Element als Teil eines Standardheaders für alle strukturen, die von RDBSS verwendet werden.

ReferenceCount

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

RDBSS definiert dieses Element als Teil eines Standardheaders für alle strukturen, die von RDBSS verwendet werden.

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 Hilfsfunktion für das IRP, das von diesem RX_CONTEXT gekapselt wird.

PendingReturned

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

RDBSS legt dieses Element immer auf TRUE fest, bevor der Netzwerk-Miniumleitungstreiber aufgerufen wird.

PostRequest

Wenn dieser Wert auf TRUE festgelegt ist, gibt dies an, ob die zugeordnete Anforderung an einen RDBSS-Workerthread gepostet werden soll. Ein Netzwerk-Miniumleitungsmodul kann dieses Element 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 dieses Element auf das Geräteobjekt für den Netzwerkminiumleitungstreiber fest, wenn ein RX_CONTEXT in der RxInitializeContext Routine zugewiesen wird. Dieses Element wird aus dem FileObject->DeviceObject Member aus dem IRP-Stapel kopiert. Das Geräteobjekt für den Netzwerkminiumleitungsmodul wird auch im RxDeviceObject Strukturelement gespeichert.

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

CurrentIrp

Ein Zeiger auf das ursprüngliche IRP. Dieses Element sollte nicht von einem Netzwerk-Miniumleitungstreiber verwendet werden.

CurrentIrpSp

Ein Zeiger auf die IRP-Stapelposition.

pFcb

Ein Zeiger auf den zugeordneten Dateisteuerungsblock (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 dieses IRP.

NonPagedFcb

Ein Zeiger auf den zugeordneten nicht seitenseitigen Dateisteuerungsblock (FCB) für diesen IRP.

RxDeviceObject

Ein Zeiger auf die RDBSS_DEVICE_OBJECT für den Miniumleitungstreiber des Zielnetzwerks, der für Arbeitswarteschlangenalgorithmen erforderlich ist. RDBSS legt dieses Element auf den RDBSS_DEVICE_OBJECT für den Netzwerkminiumleitung fest, wenn ein RX_CONTEXT in der RxInitializeContext-Routine initialisiert wird. Die RxDeviceObject--Struktur enthält ein DeviceObject Member, das das Geräteobjekt für den Netzwerkminiumleitungstreiber enthält, der mit dem RealDevice- Mitglied 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 mit der RX_CONTEXT verknüpfte Verarbeitung durchgeführt wurde, wenn der Thread an den Dateisystemprozess gepostet wurde.

LockManagerContext

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

RdbssDbgExtension

Ein Zeiger auf den Kontext, der rdBSS zum Debuggen von Informationen gegeben wird. Dieses Mitglied ist für die interne Verwendung reserviert.

ScavengerEntry

Ein Zeiger auf die Liste der elemente, die gerüstet werden sollen. Dieses Mitglied ist für die interne Verwendung reserviert.

SerialNumber

Die Seriennummer für diese RX_CONTEXT Struktur. Jede struktur, die von RDBSS initialisiert wird, weist eine Seriennummer auf, wenn die Struktur zum ersten Mal initialisiert wird. Diese fortlaufende Zahl ist eine Zahl, die um eine zahl erhöht wird, bevor der Wert festgelegt wird. RDBSS legt dieses Element fest, wenn ein RX_CONTEXT in der RxInitializeContext Routine initialisiert wird. RDBSS

FobxSerialNumber

Die Seriennummer für die zugeordnete FOBX-Struktur. Jede struktur, die von RDBSS initialisiert wird, weist eine Seriennummer auf, wenn die Struktur zum ersten Mal initialisiert wird. Dieses Mitglied kann von Netzwerk-Miniumleitungen verwendet werden, um festzustellen, ob mehrere Aufrufe Teil desselben größeren Vorgangs sind und daher mehr 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 eine der Sperrmechanismen, die einem Vorgang auf einem 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 eine der Sperrmechanismen, die einem Auslagerungs-E/A-Vorgang auf einem FCB zugeordnet sind.

MustSucceedDescriptorNumber

Ein Element wird zunächst in der RxCreateRxContext- Routine auf Null festgelegt. Dieses Element wird nicht andernfalls von RDBSS verwendet, kann aber von Netzwerk-Miniumleitungen verwendet werden.

StoredStatus

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

StoredStatusAlignment

Ein Mitglied einer nicht benannten Union, das verwendet wird, um die richtige Ausrichtung auf das StoredStatus-element Zu erzwingen.

InformationToReturn

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

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, weisen einen eindeutigen Code für zwei Byte-Knoten auf, der im nodetype.h definiert ist, datei enthalten, die zum Debuggen verwendet werden kann. RDBSS legt dieses Element 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 dieses Element festgelegt werden.

RDBSS definiert dieses Element als Teil eines Standardheaders für alle strukturen, die von RDBSS verwendet werden.

IoStatusBlock

Der E/A-Statusblock, der von einem Netzwerk-Miniumleitungsmodul verwendet wird, um Statusinformationen zurückzugeben. Das IoStatusBlock Mitglied ist ein Mitglied einer nicht benannten Union, die zum Zurückgeben von Statusinformationen verwendet wird.

ForceLonglongAligmentDummyField

Ein Mitglied einer nicht benannten Union, die verwendet wird, um die richtige Ausrichtung auf das MRxContext[MRX_CONTEXT_FIELD_COUNT] Mitglied zu erzwingen.

MRxContext[MRX_CONTEXT_FIELD_COUNT]

WriteOnlyOpenRetryContext

Ein Zeiger, der zum Speichern eines Zustands für den Netzwerkminiumleitungsmodul verwendet werden kann. Dieses Element wird nicht von RDBSS verwendet, kann aber von einem Netzwerk-Miniumleitungstreiber verwendet werden, um anzugeben, dass eine Datei auf einem Schreibschutzhandle zwischengespeichert wird.

MRxCancelRoutine

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

ResumeRoutine

Dieses Mitglied 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. Dieses Mitglied 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 der RX_CONTEXT zu warten.

BlockedOperations

Ein Zeiger auf den Listenkopf blockierter Vorgänge, die nach Abschluss freigegeben werden sollen. Dieses Mitglied ist für die interne Verwendung reserviert.

BlockedOpsMutex

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

RxContextSerializationQLinks

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

Info

Ein Strukturmitglied einer nicht benannten Vereinigung, die für die folgenden Routinen verwendet wird:

RDBSS übergibt Informationen im Info- Strukturelement an den Netzwerkminiumleitungsmodul und der Netzwerkminiumleitungs-Miniumleitung gibt Informationen an RDBSS im Info- Strukturelement zurück.

Info.FsInformationClass

Ein Mitglied einer nicht benannten Union, die von RDBSS verwendet wird, um den Typ von FS_INFORMATION_CLASS zu übergeben, der an den Netzwerkminiumleitungstreiber angefordert wird. RDBSS übergibt Informationen im FsInformationClass Member beim Aufrufen MrxQueryVolumeInfo und MrxSetVolumeInfo.

Info.FileInformationClass

Ein Mitglied einer nicht benannten Union, die von RDBSS verwendet wird, um den Typ der FILE_INFORMATION_CLASS Anforderung anzugeben, die an den Netzwerkminiumleitungstreiber gesendet wurde. RDBSS übergibt Informationen im FileInformationClass Member beim Aufrufen MrxQueryDirectory, MrxQueryFileInfound MrxSetFileInfo.

Info.Buffer

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

Info.Length

Ein Mitglied einer nicht benannten Union, die verwendet wird, um die Länge des Buffer Member von RDBSS an den Netzwerkminiumleitungstreiber zu übergeben. Das Length Member wird im MrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo, MrxSetFileInfo, MRxSetFileInfoAtCleanup, und MrxSetVolumeInfo Routinen verwendet.

Info.LengthRemaining

Ein Mitglied einer nicht benannten Union, die verwendet wird, um die Länge der im Buffer Member vom Netzwerk-Miniumleitungstreiber an RDBSS zurückgegebenen Informationen zu übergeben. Das LengthRemaining Member wird im MrxQueryDirectory, MrxQueryFileInfo, MrxQueryVolumeInfo verwendet., MrxSetFileInfo, MRxSetFileInfoAtCleanupund MrxSetVolumeInfo Routinen.

Info.ReplaceIfExists

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

Info.AdvanceOnly

Dieses Mitglied ist für die interne Verwendung reserviert.

PrefixClaim

Ein Strukturmitglied einer nicht benannten Union, die für Präfixauflösungsanforderungen verwendet wird, die vom Multiple UNC Provider (MUP) 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 Netzwerkminiumleitungsmodul, und der Netzwerk-Miniumleitung 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 des angeforderten NET_ROOT. Dieses Element wird derzeit nicht verwendet. RDBSS leitet den Typ der NET_ROOT aus dem element SuppliedPathName ab.

PrefixClaim.pSecurityContext

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

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

Create

Ein Strukturelement einer nicht benannten Union, die zum Behandeln von IRP_MJ_CREATE Anforderungen verwendet wird. Dieser Member wird für die Verarbeitung von Dateiöffnungsanforderungen verwendet, die zu Aufrufen der MRxCreate Routine führen. Dieses Element wird auch für Präfixauflösungsanforderungen verwendet. RDBSS übergibt Informationen im Erstellen Strukturmempl an den Miniumleitungsmodul des Netzwerks, und der Netzwerkminiumleitungs-Umleitungsmodul gibt Informationen an RDBSS im Create Strukturmempler zurück.

Create.NtCreateParameters

Die an den Benutzermodus NtCreatefile Routine übergebenen Parameter erstellen. RDBSS legt die Member der NtCreateParameters Struktur basierend auf den Parameters.Create Member des IRP fest.

Create.ReturnedCreateInformation

Ein Wert, der vom Netzwerk-Miniumleitungsmodul nach 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 Mitglied 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 Element 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 Member des IRP fest. Wenn der SdLength- Mitglied nicht null ist, wird der Sicherheitsdeskriptor im Info.Buffer Mitglied an den Netzwerk-Miniumleitung übergeben.

Create.PipeType

Der Typ eines Rohrs. Dieses Mitglied ist für die interne Verwendung reserviert.

Create.PipeReadMode

Der Lesemodus für eine Pfeife. Dieses Mitglied ist für die interne Verwendung reserviert.

Create.PipeCompletionMode

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

Create.Flags

Die Flags erstellen

Create.Type

Der Typ der zugeordneten NET_ROOT Struktur.

Create.RdrFlags

Create.FcbAcquired

Dieses Mitglied ist für die interne Verwendung reserviert.

Create.TryForScavengingOnSharingViolation

Dieses Mitglied ist für die interne Verwendung reserviert.

Create.ScavengingAlreadyTried

Dieses Mitglied ist für die interne Verwendung reserviert.

Create.ThisIsATreeConnectOpen

Ein boolescher Wert, der angibt, ob es sich bei diesem Aufruf um eine offene Anforderung mit der FILE_CREATE_TREE_CONNECTION Option handelt, die im IrpSp->Parameters.Create.Options Member festgelegt ist.

Create.TreeConnectOpenDeferred

Ein boolescher Wert, der angibt, dass der Netzwerkminiumleitungsmodul die offene Anforderung für die Strukturverbindung zurückstellen kann.

Create.TransportName

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

Create.UserName

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

Create.Password

Eine Unicode-Zeichenfolge, die das Kennwort für dieses UserName enthält, für die Authentifizierung und Autorisierung verwendet. Dieses Element wird aus den geöffneten Parametern für die Strukturverbindung festgelegt.

Create.UserDomainName

Eine Unicode-Zeichenfolge, die den Domänennamen für diese UserNameenthält.

QueryDirectory

Ein Strukturelement einer nicht benannten Union, die für die Behandlung von IRP_MJ_DIRECTORY_CONTROL Anforderungen verwendet wird. Dieser Member wird für die Behandlung 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, bei dem mit dem Scannen des Verzeichnisses begonnen werden soll, wenn das IndexSpecified Member auf TRUE festgelegt ist. Dieser Parameter wird auf den IrpSp->Parameters.QueryDirectory.FileIndex Member festgelegt.

QueryDirectory.RestartScan

Ein boolescher Wert, der auf TRUE festgelegt ist, gibt an, dass der Scan beim ersten Eintrag im Verzeichnis gestartet werden soll. Wenn dieser Wert auf FALSE festgelegt ist, wird der Scan 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 boolescher Wert, der auf TRUE festgelegt ist, 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 wird auf TRUE festgelegt, wenn IrpSp->Flags das SL_RETURN_SINGLE_ENTRY Bit aktiviert hat.

QueryDirectory.IndexSpecified

Ein boolescher Wert, wenn er auf TRUE festgelegt ist, gibt an, dass der Scan am Eintrag im Verzeichnis beginnt, dessen Index vom FileIndex Member 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 die Abfrage keine Wildcardabfrage ist (".", z. B. ). Dieses Element ist auf TRUE festgelegt, wenn das UnicodeQueryTemplate.Buffer Member des zugeordneten FOBX NULL ist und das Flags Member der FOBX nicht das FOBX_FLAG_MATCH_ALL Bit aktiviert. Für eine Wildcardabfrage (".", beispielsweise), legt RDBSS das UnicodeQueryTemplate.Buffer Member der zugeordneten FOBX auf die übergebene Wildcardabfrage fest.

NotifyChangeDirectory

Ein Strukturelement einer nicht benannten Union, die für die Verarbeitung von IRP_MJ_DIRECTORY_CONTROL Anforderungen mit einer hilfsfunktion von IRP_MN_NOTIFY_CHANGE_DIRECTORY verwendet wird. Dieser Member wird für die Behandlung von Verzeichnisänderungsanforderungen verwendet, die zu Aufrufen der MRxLowIOSubmit[LOWIO_OP_NOTIFY_CHANGE_DIRECTORY] Routine führen. RDBSS übergibt Informationen im NotifyChangeDirectory Strukturmemmemm und dem pLowIoContext->ParamsFor.NotifyChangeDirectory- Struktur an den Netzwerkminiumleitungsmodul.

NotifyChangeDirectory.pVNetRoot

Ein Zeiger auf die V_NET_ROOT Struktur, die dem Verzeichnis zugeordnet ist. Dieser Parameter wird je nach Knotentyp auf das IrpSp->FileObject->FsContext Member oder das IrpSp->FileObject->FsContext2 Member festgelegt.

QueryEa

Ein Strukturelement einer nicht benannten Union, die für die Verarbeitung von IRP_MJ_QUERY_EA Anforderungen verwendet wird. Dieser Member wird für die Behandlung 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 erweiterten Attribute angibt, die abgefragt werden sollen. Dieser Parameter wird auf IrpSp->Parameters.QueryEa.EaListfestgelegt.

QueryEa.UserEaListLength

Die Länge des Puffers in Bytes, auf den UserEaList Member verweist. Dieser Parameter wird auf IrpSp->Parameters.QueryEa.EaListLengthfestgelegt.

QueryEa.UserEaIndex

Der Index des Eintrags, bei dem mit dem Scannen der Erweitert-Attributliste begonnen werden soll. Dieser Parameter sollte ignoriert werden, wenn der IndexSpecified Member nicht auf TRUE festgelegt ist oder wenn QueryEaList Member auf eine nicht leere Liste verweist. Dieser Parameter wird auf IrpSp->Parameters.QueryEa.EaIndexfestgelegt.

QueryEa.RestartScan

Ein boolescher Wert, der auf TRUE festgelegt ist, gibt an, dass die Abfrage beim ersten erweiterten Attributeintrag gestartet werden soll. Wenn dieser Wert auf FALSE festgelegt ist, wird der Scan 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 boolescher Wert, der auf TRUE festgelegt ist, 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 wird auf TRUE festgelegt, wenn IrpSp->Flags das SL_RETURN_SINGLE_ENTRY Bit aktiviert hat.

QueryEa.IndexSpecified

Ein boolescher Wert, der auf TRUE festgelegt ist, gibt an, dass der Scan am Eintrag in den erweiterten Attributen beginnt, deren Index vom UserEaIndex Member 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 zum Behandeln von IRP_MJ_QUERY_SECURITY Anforderungen verwendet wird. Dieser Member wird für die Verarbeitung 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 wird auf IrpSp->Parameters.QuerySecurity.SecurityInformationfestgelegt.

QuerySecurity.Length

Die Länge des Puffers in Byte, auf den SecurityInformation Member verweist. Dieser Parameter wird auf IrpSp->Parameters.QuerySecurity.Lengthfestgelegt.

SetSecurity

Ein Strukturelement einer nicht benannten Union, die für die Verarbeitung IRP_MJ_SET_SECURITY Anforderungen verwendet wird. Dieser Member wird für die Verarbeitung 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 wird auf IrpSp->Parameters.SetSecurity.SecurityInformationfestgelegt.

SetSecurity.SecurityDescriptor

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

QueryQuota

Ein Strukturelement einer nicht benannten Union, die für die Verarbeitung von IRP_MJ_QUERY_QUOTA Anforderungen verwendet wird. Dieser Member wird für die Behandlung 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 StartSid Member verweist. Dieser Parameter wird auf IrpSp->Parameters.QueryQuota.Lengthfestgelegt.

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 Member angegeben ist. Dieser Parameter wird auf IrpSp->Parameters.QueryQuota.StartSidfestgelegt.

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 wird auf IrpSp->Parameters.QueryQuota.SidListfestgelegt.

QueryQuota.SidListLength

Die Länge in Byte der Liste der SIDs im SidList Member, falls angegeben. Dieser Parameter wird auf IrpSp->Parameters.QueryQuota.SidListLengthfestgelegt.

QueryQuota.RestartScan

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

QueryQuota.ReturnSingleEntry

Ein boolescher Wert, der auf TRUE festgelegt ist, 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 wird auf TRUE festgelegt, wenn IrpSp->Flags das SL_RETURN_SINGLE_ENTRY Bit aktiviert hat.

QueryQuota.IndexSpecified

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

SetQuota

Ein Strukturelement einer nicht benannten Union, die zum Behandeln von 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 Strukturmitglied einer nicht benannten Vereinigung. 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

Eine Reihe von RX_CONTENT_CREATE_FLAGS von RDBSS festgelegt und an niedrige E/A-Vorgänge übergeben, die an den Netzwerkminiumleitungsmodul gesendet werden. FlagsForLowIo ist ein Mitglied einer nicht benannten Struktur, die für niedrige E/A-Anforderungen an den Miniumleitungsmodul des Netzwerks verwendet wird.

LowIoContext

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

AlsoCanonicalNameBuffer

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.

LoudCompletionString

Ein nicht verwendetes Element der RX_CONTEXT-Struktur.

AcquireReleaseFcbTrackerX

Reserviert für die Systemverwendung.

TrackerHistoryPointer

Reserviert für die Systemverwendung.

TrackerHistory[RDBSS_TRACKER_HISTORY_SIZE]

Reserviert für die Systemverwendung.

ShadowCritOwner

Reserviert für die Systemverwendung.

Bemerkungen

Die RX_CONTEXT-Struktur ist eine der grundlegenden Datenstrukturen, die von RDBSS und Netzwerk-Miniumleitungen zum Verwalten eines E/A-Anforderungspakets (IRP) verwendet werden. Es kapselt ein IRP für die Verwendung durch RDBSS, Netzwerkminiumleitungen und das Dateisystem. Eine RX_CONTEXT-Struktur enthält einen Zeiger auf ein einzelnes 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-Headerdateien und anderen Ressourcen bezeichnet, die für die Entwicklung von Netzwerk-Miniumleitungstreibern verwendet werden.

Die RX_CONTEXT ist eine Datenstruktur, an die zusätzliche Informationen der verschiedenen Netzwerkminiumleitungen angefügt werden. Die RX_CONTEXT enthält Felder zum Überschreiben der Größe jeder RX_CONTEXT Struktur durch einen vordefinierten Betrag für jeden Netzwerk-Miniumleitungsmodul, der dann für die Verwendung durch den Miniumleitungsmodul reserviert ist. Dieser Ansatz besteht darin, einen vordefinierten Bereich zu zuordnen, der für alle Netzwerkminiumleitungen im Rahmen der einzelnen RX_CONTEXT identisch ist. Dies ist ein unformatierter Bereich, auf dem jede gewünschte Struktur von den verschiedenen Netzwerk-Miniumleitungen auferlegt werden kann. Entwickler von Netzwerk-Miniumleitungstreibern sollten versuchen, den zugeordneten privaten Kontext zu definieren, um in diesen vordefinierten Bereich einzupassen, der in der RX_CONTEXT Datenstruktur definiert ist. Netzwerk-Miniumleitungstreiber, die gegen diese Regel verstoßen, führen zu erheblichen Leistungseinbußen.

Viele RDBSS-Routinen und -Routinen, die von einem Netzwerk-Miniumleitungsmodul exportiert werden, verweisen auf RX_CONTEXT Strukturen 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 Referenzanzahl auf Null gesetzt wird, kann die zugeordnete RX_CONTEXT Struktur abgeschlossen und für den letzten Ableitungsvorgang freigegeben werden.

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

Anforderungen

Anforderung Wert
Header- rxcontx.h (enthalten Rx.h, Rxcontx.h)

Siehe auch

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-