FsRtlInitPerStreamContext-Makro (ntifs.h)
Das FsRtlInitPerStreamContext Makro initialisiert eine Kontextstruktur des Filtertreibers.
Syntax
void FsRtlInitPerStreamContext(
_fc,
_owner,
_inst,
_cb
);
Parameter
_fc
Zeiger auf eine vom Aufrufer zugewiesene FSRTL_PER_STREAM_CONTEXT Struktur, die verwendet werden soll, um Kontextinformationen für einen Dateidatenstrom zu verwalten. Diese Struktur kann wie in einer treiberdefinierten Kontextstruktur verwendet oder eingebettet werden. Beide Strukturtypen werden häufig durch Aufrufen von ExAllocatePoolWithTagzugeordnet.
_owner
Zeiger auf eine vom Aufrufer zugewiesene Variable, die den Besitzer der Kontextstruktur pro Datenstrom eindeutig identifiziert. Das Format dieser Variablen ist filtertreiber - spezifisch. Filterautoren sollten einen Wert auswählen, der sowohl sinnvoll als auch praktisch ist, z. B. die Adresse eines Treiberobjekts oder Geräteobjekts. Aufrufer müssen einen Wert ohneNULL- für diesen Parameter angeben.
_inst
Zeiger auf einen Filtertreiber – zugeordnete Variable, die verwendet werden kann, um zwischen datenstrombezogenen Kontextstrukturen zu unterscheiden, die vomselben Filtertreiber erstellt wurden. Das Format dieser Variablen ist filtertreiber - spezifisch. Filterautoren sollten einen Wert auswählen, der sowohl aussagekräftig als auch praktisch ist, z. B. die Adresse des Streamkontextobjekts für den Dateidatenstrom. (Um diese Adresse aus einem Dateiobjekt abzurufen, verwenden Sie das FsRtlGetPerStreamContextPointer Makro.) Dieser Parameter ist optional und kann NULL-werden.
_cb
Zeigen Sie auf eine Rückrufroutine, die die Kontextstruktur pro Datenstrom freigibt. Aufrufer müssen einen Wert ohneNULL- für diesen Parameter angeben. Diese Routine und ihre Parameter werden wie folgt definiert:
typedef VOID (*PFREE_FUNCTION) ( IN PVOID Buffer ); |
- Puffer-
Zeiger auf die Kontextstruktur pro Datenstrom, die freigegeben werden soll. Die FreeCallback Routine wandelt diesen Zeiger in der Regel in den entsprechenden Strukturzeigertyp um und gibt ihn frei, indem ExFreePoolaufgerufen wird.
Rückgabewert
Nichts
Bemerkungen
Ein Dateisystemfiltertreiber verwendet die FsRtlInitPerStreamContext Makros, um eine neu zugeordnete Kontextstruktur pro Stream zu initialisieren, bevor sie einem Dateidatenstrom zugeordnet wird. Die initialisierte Kontextstruktur kann als Parameter an FsRtlInsertPerStreamContextübergeben werden.
FsRtlInitPerStreamContext speichert die Adresse der FreeCallback Routine im FreeCallback Mitglied der FSRTL_PER_STREAM_CONTEXT Struktur.
Die FreeCallback Routine wird bei IRQL <= APC_LEVEL aufgerufen. Normalerweise wird sie bei IRQL-PASSIVE_LEVEL aufgerufen.
Nachdem die Kontextstruktur einem Dateidatenstrom zugeordnet wurde, kann sie abgerufen werden, indem FsRtlLookupPerStreamContext aufgerufen oder entfernt wird, indem FsRtlRemovePerStreamContextaufgerufen wird.
Weitere Informationen finden Sie unter Tracking Per-Stream Context in einem Legacy File System Filter Driver.
Anforderungen
Anforderung | Wert |
---|---|
mindestens unterstützte Client- | Windows XP; Updaterollup für Windows 2000 Service Pack 4 (SP4) |
Zielplattform- | Desktop |
Header- | ntifs.h (einschließlich Ntifs.h) |
IRQL- | Beliebige Ebene |
Siehe auch
FsRtlGetPerStreamContextPointer-