IoCreateStreamFileObjectLite 関数 (ntifs.h)

IoCreateStreamFileObjectLite ルーチンは新しいストリーム ファイル オブジェクトを作成しますが、IRP_MJ_CLEANUP要求がファイル システム ドライバー スタックに送信されることはありません。

構文

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

パラメーター

[in, optional] FileObject

新しいストリーム ファイルが関連付けられているファイル オブジェクトへのポインター。 このパラメーターは省略可能であり、 NULL にすることができます

[in, optional] DeviceObject

ストリーム ファイルを開くデバイスのデバイス オブジェクトへのポインター。 呼び出し元が FileObjectNULL 以外の値を指定した場合、DeviceObject の値は無視されます。 それ以外の場合、呼び出し元は DeviceObjectNULL 以外の値を指定する必要があります。

戻り値

IoCreateStreamFileObjectLite は 、新しく作成されたストリーム ファイル オブジェクトへのポインターを返します。

注釈

ファイル システムは IoCreateStreamFileObjectLite を呼び出して、新しいストリーム ファイル オブジェクトを作成します。 ストリーム ファイル オブジェクトは、FO_STREAM_FILE ファイル オブジェクト フラグが設定されている点を除き、通常のファイル オブジェクトと同じです。

ストリーム ファイル オブジェクトは、ファイル システムによってマウントされたボリュームの内部ストリームを表すために一般的に使用されます。 この 仮想ボリューム ファイル を使用すると、ファイル システムは、通常のファイルであるかのように、ボリュームのディスク上の構造を表示、変更、およびキャッシュできます。 この場合、IoCreateStreamFileObjectLite の呼び出しの DeviceObject パラメーターは、ボリュームのボリューム デバイス オブジェクト (VDO) を指定します。

ストリーム ファイル オブジェクトを使用して、既に開いているファイルのメタデータ (拡張属性やセキュリティ記述子など) にアクセスするための代替データ ストリームを表すこともできます。 この場合、IoCreateStreamFileObjectLite の呼び出しの FileObject パラメーターは、ファイルの既存のファイル オブジェクトを指定します。 新しく作成されたストリーム ファイル オブジェクトを使用すると、ファイル システムは通常のファイルのようにファイルのメタデータを表示、変更、およびキャッシュできます。

ストリーム ファイル オブジェクトが不要になった場合、呼び出し元は ObDereferenceObject を呼び出して参照カウントをデクリメントする必要があります。 ストリーム ファイル オブジェクトの参照カウントが 0 に達すると、ボリュームのファイル システム ドライバー スタックにIRP_MJ_CLOSE要求が送信されます。

ファイル システム フィルター ドライバーライターは、 IoCreateStreamFileObject とは異なり、 IoCreateStreamFileObjectLite によってファイル システム ドライバー スタックにIRP_MJ_CLEANUP要求が送信されないことに注意する必要があります。 このため、ファイル システムは、IRP_MJ_CREATE以外の操作の副作用としてストリーム ファイル オブジェクトを作成することが多いため、フィルター ドライバーがストリーム ファイル オブジェクトの作成を確実に検出することは困難です。 したがって、フィルター ドライバーは、以前に見えないファイル オブジェクトに対するIRP_MJ_CLOSE要求を受け取ることを想定する必要があります。

プール割り当てエラーが発生した場合、 IoCreateStreamFileObjectLite はSTATUS_INSUFFICIENT_RESOURCES例外を発生させます。

要件

要件
サポートされている最小のクライアント Windows 2000
対象プラットフォーム ユニバーサル
Header ntifs.h (Ntifs.h を含む)
Library NtosKrnl.lib
[DLL] NtosKrnl.exe
IRQL < DISPATCH_LEVEL

こちらもご覧ください

IRP_MJ_CLEANUP

IRP_MJ_CLOSE

IRP_MJ_CREATE

IoCreateStreamFileObject

IoCreateStreamFileObjectEx

ObDereferenceObject