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 den IRP, der von dieser RX_CONTEXT-Struktur gekapselt werden soll.

[in] RxDeviceObject

Ein Zeiger auf das Geräteobjekt, für das diese RX_CONTEXT und IRP gelten.

[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 der IRP nicht zur späteren Ausführung durch den Dateisystemprozess bereitgestellt werden, sondern auf den Abschluss gewartet werden.

RX_CONTEXT_FLAG_MUST_SUCCEED

Wenn dieser Wert festgelegt wird, muss der Vorgang erfolgreich sein. Dieser Wert wird derzeit nicht von RDBSS verwendet, kann aber von Netzwerk-Miniumleitungstreibern verwendet werden.

RX_CONTEXT_FLAG_MUST_SUCCEED_NONBLOCKING

Wenn dieser Wert festgelegt ist, muss der Vorgang bei nicht blockierenden Vorgängen erfolgreich sein. Dieser Wert wird derzeit nicht von RDBSS verwendet, kann aber von Netzwerk-Miniumleitungstreibern verwendet werden.

[in, out] RxContext

Zeiger auf den zu initialisierenden RX_CONTEXT.

Rückgabewert

Keine

Bemerkungen

RxInitializeContext wird intern von der RxCreateRxContext-Routine aufgerufen. Daher wird die RxInitializeContext-Routine normalerweise nur von Netzwerk-Min-Redirector-Treibern verwendet, die RX_CONTEXT Strukturen direkt zuordnen, anstatt die RxCreateRxContext-Routine aufzurufen, um eine RX_CONTEXT-Struktur zuzuweisen und zu initialisieren.

Wenn der Irp-Parameter für den asynchronen Vorgang konfiguriert ist, hat das Flags-Element der RX_CONTEXT Struktur, auf die von RxContext verwiesen wird, auch den folgenden Wert festgelegt:

RX_CONTEXT_FLAG_ASYNC_OPERATION ist auch für die folgenden Bedingungen festgelegt:

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

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

Wenn für das Element "Irp FileObject Flags" die Option FO_WRITE_THROUGH festgelegt ist, hat das Flags-Element der RX_CONTEXT-Struktur auch den folgenden Wert festgelegt:

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

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

Anforderungen

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

Weitere Informationen

RX_CONTEXT

RxCompleteRequest

RxCompleteRequest_Real

RxCreateRxContext

RxDereference

RxDereferenceAndDeleteRxContext_Real

RxPrepareContextForReuse

RxResumeBlockedOperations_Serially

__RxSynchronizeBlockingOperations

__RxSynchronizeBlockingOperationsMaybeDroppingFcbLock