Freigeben über


RxInitializeContext-Funktion (rxcontx.h)

RxInitializeContext initialisiert eine vorhandene RX_CONTEXT Datenstruktur.

Syntax

void RxInitializeContext(
  [in, optional] IN PIRP                 Irp,
  [in]           IN PRDBSS_DEVICE_OBJECT RxDeviceObject,
  [in]           IN ULONG                InitialContextFlags,
  [in, out]      IN OUT PRX_CONTEXT      RxContext
);

Parameter

[in, optional] Irp

Ein Zeiger auf das IRP, das von dieser RX_CONTEXT Struktur gekapselt werden soll.

[in] RxDeviceObject

Ein Zeiger auf das Geräteobjekt, auf das dieses RX_CONTEXT und IRP angewendet wird.

[in] InitialContextFlags

Der Satz von Anfangswerten für Flags Member der RX_CONTEXT Datenstruktur, die in der RX_CONTEXT-Struktur gespeichert werden soll. Diese Anfangswerte können eine beliebige Kombination der folgenden Enumerationen sein:

RX_CONTEXT_FLAG_WAIT

Wenn dieser Wert festgelegt ist, sollte das IRP nicht für die spätere Ausführung durch den Dateisystemprozess bereitgestellt werden, sondern auf den Abschluss gewartet werden.

RX_CONTEXT_FLAG_MUST_SUCCEED

Wenn dieser Wert festgelegt ist, muss der Vorgang erfolgreich ausgeführt werden. Dieser Wert wird derzeit nicht von RDBSS verwendet, kann jedoch von Netzwerk-Miniumleitungstreibern verwendet werden.

RX_CONTEXT_FLAG_MUST_SUCCEED_NONBLOCKING

Wenn dieser Wert festgelegt ist, muss der Vorgang für nicht blockierende Vorgänge erfolgreich sein. Dieser Wert wird derzeit nicht von RDBSS verwendet, kann jedoch von Netzwerk-Miniumleitungstreibern verwendet werden.

[in, out] RxContext

Zeiger auf die zu initialisierende RX_CONTEXT.

Rückgabewert

Nichts

Bemerkungen

RxInitializeContext- wird intern von der RxCreateRxContext Routine aufgerufen. Daher würde die RxInitializeContext- Routine normalerweise nur von Netzwerk-Min-Redirector-Treibern verwendet werden, die RX_CONTEXT Strukturen direkt zuordnen und nicht die RxCreateRxContext-Routine aufrufen, um eine RX_CONTEXT Struktur zuzuweisen und zu initialisieren.

Wenn der Irp--Parameter für asynchronen Vorgang konfiguriert ist, weist das Flags Member der RX_CONTEXT Struktur, auf die von RxContext verweist, auch den folgenden Wert festgelegt:

RX_CONTEXT_FLAG_ASYNC_OPERATION ist auch für die folgenden Bedingungen festgelegt:

  • Das MajorFunction Mitglied des Irp- ist IRP_MJ_READ, IRP_MJ_WRITE oder IRP_MJ_DEVICE_CONTROL.
  • Das MajorFunction Mitglied der Irp ist ein IRP_MJ_DIRECTORY_CONTROL und das MinorFunction Mitglied der IRP- ist ein IRP_MN_NOTIFY_CHANGE_DIRECTORY.
  • Das MajorFunction Mitglied der Irp ist ein IRP_MJ_FILE_SYSTEM_CONTROL und NetRoot- Mitglied des zugeordneten FCB ist nicht NULL- und das Type Mitglied der NET_ROOT ist NET_ROOT_PIPE.
Wenn es sich um einen rekursiven Dateisystemaufruf handelt (der TopLevelIrp-Member im lokalen Threadspeicher ist der aktuelle Irp) dann weist das Flags Member von RxContext auch den folgenden Wert festgelegt:

Wenn der parameter RxDeviceObject angibt, dass es sich um das RDBSS-Geräteobjekt der obersten Ebene handelt, hat auch das Flags Member der RX_CONTEXT-Struktur den folgenden Wert festgelegt:

Wenn das Element "Irp" FileObject Flags den FO_WRITE_THROUGH Optionssatz aufweist, weist das Flags Element der RX_CONTEXT Struktur auch den folgenden Wertsatz auf:

RxInitializeContext- legt eine Reihe anderer Elemente in der RX_CONTEXT-Struktur fest, einschließlich der folgenden:

  • Legt die richtige NodeTypeCode-, NodeByteSize, SerialNumber, RxDeviceObject-und initialisiert den ReferenceCount auf 1.
  • Initialisiert syncEvent
  • Initialisieren des zugeordneten ScavengerEntry
  • Initialisiert den Listeneintrag von BlockedOperations
  • Legt die RX_CONTEXT Elemente basierend auf dem Irp-fest. Dazu gehören CurrentIrp, OriginalThread, MajorFunction, MinorFunction, CurrentIrpSp, pFcb, NonPagedFcb, pFobx, pRelevantSrvOpenund FobxSerialNumber Member.

Anforderungen

Anforderung Wert
Zielplattform- Desktop
Header- rxcontx.h (include Rxprocs.h rxcontx.h)
IRQL- <= APC_LEVEL

Siehe auch

RX_CONTEXT

RxCompleteRequest-

RxCompleteRequest_Real

RxCreateRxContext-

RxDereference-

RxDereferenceAndDeleteRxContext_Real

RxPrepareContextForReuse

RxResumeBlockedOperations_Serially

__RxSynchronizeBlockingOperations

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock