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 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
RxDereferenceAndDeleteRxContext_Real
RxResumeBlockedOperations_Serially