Freigeben über


IoCreateStreamFileObjectLite-Funktion (ntifs.h)

Die IoCreateStreamFileObjectLite Routine erstellt ein neues Streamdateiobjekt, führt jedoch nicht dazu, dass eine IRP_MJ_CLEANUP Anforderung an den Dateisystemtreiberstapel gesendet wird.

Syntax

PFILE_OBJECT IoCreateStreamFileObjectLite(
  [in, optional] PFILE_OBJECT   FileObject,
  [in, optional] PDEVICE_OBJECT DeviceObject
);

Parameter

[in, optional] FileObject

Ein Zeiger auf das Dateiobjekt, mit dem die neue Datenstromdatei verknüpft ist. Dieser Parameter ist optional und kann NULL-werden.

[in, optional] DeviceObject

Ein Zeiger auf ein Geräteobjekt für das Gerät, auf dem die Streamdatei geöffnet werden soll. Wenn der Aufrufer einen Wert ungleichNULL für FileObject-angibt, wird der Wert DeviceObject- ignoriert. Andernfalls muss der Aufrufer einen Wert ohneNULL- für DeviceObject-angeben.

Rückgabewert

IoCreateStreamFileObjectLite gibt einen Zeiger auf das neu erstellte Streamdateiobjekt zurück.

Bemerkungen

Dateisysteme rufen IoCreateStreamFileObjectLite auf, um ein neues Streamdateiobjekt zu erstellen. Ein Streamdateiobjekt ist identisch mit einem normalen Dateiobjekt, mit der Ausnahme, dass das FO_STREAM_FILE Dateiobjekt-Flag festgelegt ist.

Ein Streamdateiobjekt wird häufig verwendet, um einen internen Datenstrom für ein vom Dateisystem bereitgestelltes Volume darzustellen. Diese virtuelle Volumedatei ermöglicht es dem Dateisystem, die Struktur des Volumes auf dem Datenträger anzuzeigen, zu ändern und zwischenzuspeichern, als wäre es eine normale Datei. In diesem Fall gibt der parameter DeviceObject im Aufruf von IoCreateStreamFileObjectLite das Volumegeräteobjekt (Volume Device Object, VDO) für das Volume an.

Ein Streamdateiobjekt kann auch verwendet werden, um einen alternativen Datenstrom für den Zugriff auf Metadaten, z. B. erweiterte Attribute oder Sicherheitsdeskriptoren, für eine bereits geöffnete Datei darzustellen. In diesem Fall gibt der parameter FileObject im Aufruf von IoCreateStreamFileObjectLite ein vorhandenes Dateiobjekt für die Datei an. Das neu erstellte Streamdateiobjekt ermöglicht es dem Dateisystem, die Metadaten der Datei anzuzeigen, zu ändern und zwischenzuspeichern, als wäre es eine normale Datei.

Wenn das Streamdateiobjekt nicht mehr benötigt wird, muss der Aufrufer seine Verweisanzahl durch Aufrufen von ObDereferenceObjecterhöhen. Wenn die Referenzanzahl des Datenstromdateiobjekts null erreicht, wird eine IRP_MJ_CLOSE Anforderung an den Dateisystemtreiberstapel für das Volume gesendet.

Autoren des Dateisystemfiltertreibers sollten beachten, dass im Gegensatz zu IoCreateStreamFileObjectIoCreateStreamFileObjectLite keine IRP_MJ_CLEANUP Anforderung an den Dateisystemtreiberstapel gesendet wird. Aus diesem Grund ist es schwierig, dass Filtertreiber datenstromdateiobjekterstellung zuverlässig erkennen können, da Dateisysteme häufig Streamdateiobjekte als Nebeneffekte anderer Vorgänge als IRP_MJ_CREATE erstellen. Daher sollten Filtertreiber erwarten, dass IRP_MJ_CLOSE Anforderungen für zuvor nicht empfangene Dateiobjekte empfangen werden.

Wenn ein Poolzuordnungsfehler auftritt, löst IoCreateStreamFileObjectLite eine STATUS_INSUFFICIENT_RESOURCES Ausnahme aus.

Anforderungen

Anforderung Wert
mindestens unterstützte Client- Windows 2000
Zielplattform- Universal
Header- ntifs.h (einschließlich Ntifs.h)
Library NtosKrnl.lib
DLL- NtosKrnl.exe
IRQL- < DISPATCH_LEVEL

Siehe auch

IRP_MJ_CLEANUP

IRP_MJ_CLOSE

IRP_MJ_CREATE

IoCreateStreamFileObject-

IoCreateStreamFileObjectEx

ObDereferenceObject