次の方法で共有


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 要求を受け取ることを期待する必要があります。

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

要件

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

こちらもご覧ください

IRP_MJ_CLEANUP

IRP_MJ_CLOSE

IRP_MJ_CREATE

IoCreateStreamFileObject

IoCreateStreamFileObjectEx

IoCreateStreamFileObjectLite

ObDereferenceObject