IoCreateStreamFileObjectEx2 関数 (ntifs.h)
IoCreateStreamFileObjectEx2 ルーチンは、ターゲット デバイス オブジェクトの作成オプションを持つ新しいストリーム ファイル オブジェクトを作成します。
構文
NTSTATUS IoCreateStreamFileObjectEx2(
[in] PIO_CREATE_STREAM_FILE_OPTIONS CreateOptions,
[in, optional] PFILE_OBJECT FileObject,
[in, optional] PDEVICE_OBJECT DeviceObject,
[out] PFILE_OBJECT *StreamFileObject,
[out, optional] PHANDLE FileHandle
);
パラメーター
[in] CreateOptions
新しいストリーム ファイル オブジェクトの作成オプションを含む IO_CREATE_STREAM_FILE_OPTIONS 構造体をポインターします。
[in, optional] FileObject
新しいストリーム ファイルが関連付けられているファイル オブジェクトへのポインター。 このパラメーターは省略可能であり、NULL にすることができます。
[in, optional] DeviceObject
ストリーム ファイルを開くデバイスのデバイス オブジェクトへのポインター。 呼び出し元 FileObjectに NULL 以外の値を指定した場合、DeviceObject 値は無視されます。 それ以外の場合、呼び出し元は、DeviceObjectに NULL 以外の値を指定する必要があります。
[out] StreamFileObject
ストリーム ファイル オブジェクトを受け取るデバイス オブジェクト ポインターへのポインター。
[out, optional] FileHandle
出力時のストリームのファイル ハンドルへのポインター。 このパラメーターは省略可能であり、NULL にすることができます。
戻り値
IoCreateStreamFileObjectEx2 は、新しく作成されたストリーム ファイル オブジェクトへのポインターを返します。
備考
ファイル システム IoCreateStreamFileObjectEx2 を呼び出して、新しいストリーム ファイル オブジェクトを作成します。 ストリーム ファイル オブジェクト は、FO_STREAM_FILE ファイル オブジェクト フラグが設定されている点を除き、通常のファイル オブジェクトと同じです。
ストリーム ファイル オブジェクトは、ファイル システムによってマウントされたボリュームの内部ストリームを表すために一般的に使用されます。 この 仮想ボリューム ファイル を使用すると、ファイル システムは、通常のファイルであるかのように、ボリュームのディスク上の構造を表示、変更、およびキャッシュできます。 この場合、ioCreateStreamFileObjectEx2 の呼び出しの DeviceObject パラメーターは、ボリュームのボリューム デバイス オブジェクト (VDO) を指定。
ストリーム ファイル オブジェクトは、拡張属性やセキュリティ記述子など、ファイルのメタデータにアクセスするための代替データ ストリームを表すためにも使用できます。 この場合、IoCreateStreamFileObjectEx2 の呼び出しのFileObject パラメーターは、ファイルの既存のファイル オブジェクトを指定します。 新しく作成されたストリーム ファイル オブジェクトを使用すると、ファイル システムは通常のファイルであるかのようにファイルのメタデータを表示、変更、およびキャッシュできます。
ストリーム ファイル オブジェクトが不要になったら、呼び出し元は ObDereferenceObject呼び出して参照カウントをデクリメントする必要があります。 ストリーム ファイル オブジェクトの参照カウントが 0 に達すると、ボリュームのファイル システム ドライバー スタックに IRP_MJ_CLOSE 要求が送信されます。
ファイル システム フィルター ドライバーライターは、IoCreateStreamFileObjectEx2 すると、ボリュームのファイル システム ドライバー スタックに IRP_MJ_CLEANUP 要求が送信されることに注意してください。 ファイル システムは、多くの場合、IRP_MJ_CREATE以外の操作の副作用としてストリーム ファイル オブジェクトを作成するため、ストリーム ファイル オブジェクトの作成を確実に検出するフィルター ドライバーが困難です。 したがって、フィルター ドライバーは、以前に見えないファイル オブジェクトに対する IIRP_MJ_CLEANUP 要求と IRP_MJ_CLOSE 要求を受け取る必要があります。
プールの割り当てエラーが発生した場合、IoCreateStreamFileObjectEx2 STATUS_INSUFFICIENT_RESOURCES 例外が発生します。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 8 |
ターゲット プラットフォーム の | 万国 |
ヘッダー | ntifs.h (Ntifs.h を含む) |
ライブラリ | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | 受け身 |
関連項目
IoCreateStreamFileObjectの
IoCreateStreamFileObjectExの
IoCreateStreamFileObjectLiteの
ObDereferenceObjectの