Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 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
RxDereferenceAndDeleteRxContext_Real
RxResumeBlockedOperations_Serially