Win32 API 日本語リファレンス
ホームStorage.Imapi › IFsiFileItem2

IFsiFileItem2

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IID199d0c19-11e1-40eb-8ec2-c8c822a07792継承元IFsiFileItem呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl24

公式ドキュメント

このインターフェイスは、ファイルに関連付けられた名前付きストリームの追加、削除、列挙に使用します。また、ファイルの 'Real-Time' 属性へのアクセスも提供します。

解説(Remarks)

名前付きストリームのサポートに必要な最小のリビジョンは UDF 2.0 ですが、名前付きストリームとリアルタイム ファイル属性の両方を使用するには、ユーザーが UDF 2.01 以上を有効にする必要があります。

このようなファイルを含む記憶メディアの受け取り側は、読み取り待ち時間を短縮し最悪時の読み取り速度を向上させる特別な MMC コマンドを使用して、それらを読み取る必要があります。

このインターフェイスは、Windows Server 2003 Service Pack 1 (SP1)、Windows XP Service Pack 2 (SP2)、および Windows Vista で Windows Feature Pack for Storage を通じてサポートされます。この更新パッケージが提供するすべての機能は、Windows 7 および Windows Server 2008 R2 では標準でサポートされます。

メソッド 6

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 24 HRESULT get_FsiNamedStreams(IFsiNamedStreams** streams)

ファイル システム イメージ内のファイルに関連付けられた名前付きストリームのコレクションを取得します。

streamsIFsiNamedStreams**outファイルに関連付けられた名前付きストリームのコレクションを表す IFsiNamedStreams オブジェクトへのポインター。

戻り値

成功した場合は S_OK が返されますが、実装によっては他の成功コードが返されることもあります。操作が失敗した場合は次のエラー コードが一般的に返されますが、返される可能性のある値はこれらに限られません。

戻り値/値 説明
E_POINTER
値: 0x80004003
ポインターが無効です。
IMAPI_E_PROPERTY_NOT_ACCESSIBLE
値: 0xC0AAB160L
プロパティ '%1!ls!' にはアクセスできません。
E_OUTOFMEMORY
値: 0x8007000E
必要なメモリの割り当てに失敗しました。

解説(Remarks)

名前付きストリーム自体を表すファイル アイテムに対してこのメソッドを呼び出した場合、名前付きストリームがさらに名前付きストリームを含むことはできないため、IMAPI_E_PROPERTY_NOT_ACCESSIBLE エラー コードが返されます。

名前付きストリームをサポートするには、ユーザーが UDF を有効にし、UDF リビジョンを 2.00 以上に設定する必要があります。

このメソッドは、Windows Server 2003 Service Pack 1 (SP1)、Windows XP Service Pack 2 (SP2)、および Windows Vista で Windows Feature Pack for Storage を通じてサポートされます。この更新パッケージが提供するすべての機能は、Windows 7 および Windows Server 2008 R2 では標準でサポートされます。

vtbl 25 HRESULT get_IsNamedStream(VARIANT_BOOL* pVal)

アイテムが名前付きストリームかどうかを判定します。

pValVARIANT_BOOL*outアイテムが名前付きストリームかどうかを示す値へのポインター。名前付きストリームである場合は VARIANT_TRUE、そうでない場合は VARIANT_FALSE になります。

戻り値

成功した場合は S_OK が返されますが、実装によっては他の成功コードが返されることもあります。操作が失敗した場合は次のエラー コードが一般的に返されますが、返される可能性のある値はこれらに限られません。

戻り値 説明
E_POINTER
ポインターが無効です。

値: 0x80004003

解説(Remarks)

名前付きストリームをサポートするには、ユーザーが UDF を有効にし、UDF リビジョンを 2.00 以上に設定する必要があります。

このメソッドは、Windows Server 2003 Service Pack 1 (SP1)、Windows XP Service Pack 2 (SP2)、および Windows Vista で Windows Feature Pack for Storage を通じてサポートされます。この更新パッケージが提供するすべての機能は、Windows 7 および Windows Server 2008 R2 では標準でサポートされます。

vtbl 26 HRESULT AddStream(LPWSTR name, IStream* streamData)

ファイル システム イメージ内の特定のファイルに名前付きストリームを関連付けます。

nameLPWSTRin名前付きストリームの名前を表す文字列。パスを含めてはならず、ファイル システムの命名規則で有効な文字のみを含める必要があります。
streamDataIStream*in生成されるファイル システム イメージへの書き込みに使用される、名前付きストリームの IStream インターフェイス。

戻り値

成功した場合は S_OK が返されますが、実装によっては他の成功コードが返されることもあります。操作が失敗した場合は次のエラー コードが一般的に返されますが、返される可能性のある値はこれらに限られません。

戻り値/値 説明
IMAPI_S_IMAGE_FEATURE_NOT_SUPPORTED
値: 0x00AAB15FL
この機能は現在のファイル システム リビジョンではサポートされていないため、この機能なしで作成されます。
E_POINTER
値: 0x80004003
ポインターが無効です。
IMAPI_E_INVALID_PARAM
値: 0xC0AAB101
パラメーター '%1!ls!' に指定された値が無効です。
IMAPI_E_NOT_IN_FILE_SYSTEM
値: 0xC0AAB10B
ls!' はファイル システムの一部ではありません。この操作を完了するには追加する必要があります。
IMAPI_E_READONLY
値: 0xC0AAB102
参照されている IFileSystemImage オブジェクトは読み取り専用モードです。
IMAPI_E_FSI_INTERNAL_ERROR
値: 0xC0AAB100L
ファイル システムの内部エラーが発生しました。
IMAPI_E_DUP_NAME
値: 0xC0AAB112L
'%1!ls!' という名前は既に存在します。
IMAPI_E_DATA_STREAM_READ_FAILURE
値: 0xC0AAB129L
ファイル '%1!ls!' 用に指定されたストリームからデータを読み取れません。
IMAPI_E_IMAGE_SIZE_LIMIT
値: 0xC0AAB120L
'%1!ls!' を追加すると、結果のイメージのサイズが現在構成されている上限を超えます。
IMAPI_E_DATA_STREAM_INCONSISTENCY
値: 0xC0AAB128L
ファイル '%1!ls!' 用に指定されたデータ ストリームに不整合があります。%2!I64d! バイトが必要ですが、%3!I64d! でした
E_OUTOFMEMORY
値: 0x8007000EL
必要なメモリの割り当てに失敗しました。

解説(Remarks)

名前付きストリームを追加する対象のファイルは、あらかじめファイル システム イメージ内に存在している必要があります。既に名前付きストリームとして存在する name を指定してこのメソッドを呼び出した場合はエラーが返され、既存の名前付きストリームは置き換えられません。

生成されるイメージで作成対象として有効になっているファイル システムの一覧に UDF が含まれていないファイル システム オブジェクト、または UDF リビジョンが 2.00 未満のファイル システム オブジェクトに対してこのメソッドを呼び出した場合、成功コード IMAPI_S_IMAGE_FEATURE_NOT_SUPPORTED が返されます。この成功コードは、名前付きストリームは追加されたものの、ファイル システム オブジェクトで UDF リビジョン 2.00 以上が有効になっていない限り、生成されるファイル システム イメージには現れないことを示します。

現在のところ、インポートされたファイル システム イメージに対してこのメソッドを呼び出すと、イメージの読み取り専用状態にかかわらず IMAPI_E_READONLY が返されます。

このメソッドは、Windows Server 2003 Service Pack 1 (SP1)、Windows XP Service Pack 2 (SP2)、および Windows Vista で Windows Feature Pack for Storage を通じてサポートされます。この更新パッケージが提供するすべての機能は、Windows 7 および Windows Server 2008 R2 では標準でサポートされます。

vtbl 27 HRESULT RemoveStream(LPWSTR name)

ファイルに対する名前付きストリームの関連付けを削除します。

nameLPWSTRin削除する名前付きストリームの関連付けの名前を指定する文字列。パスを含めてはならず、ファイル システムの命名規則で有効な文字のみを含める必要があります。

戻り値

成功した場合は S_OK が返されますが、実装によっては他の成功コードが返されることもあります。操作が失敗した場合は次のエラー コードが一般的に返されますが、返される可能性のある値はこれらに限られません。

戻り値/値 説明
IMAPI_S_IMAGE_FEATURE_NOT_SUPPORTED
値: 0x00AAB15FL
この機能は現在のファイル システム リビジョンではサポートされていないため、この機能なしで作成されます。
E_POINTER
値: 0x80004003
ポインターが無効です。
IMAPI_E_INVALID_PARAM
値: 0xC0AAB101
パラメーター '%1!ls!' に指定された値が無効です。
IMAPI_E_NOT_IN_FILE_SYSTEM
値: 0xC0AAB10B
ls!' はファイル システムの一部ではありません。この操作を完了するには追加する必要があります。
IMAPI_E_READONLY
値: 0xC0AAB102
参照されている IFileSystemImage オブジェクトは読み取り専用モードです。
IMAPI_E_FSI_INTERNAL_ERROR
値: 0xC0AAB100L
ファイル システムの内部エラーが発生しました。
IMAPI_E_DUP_NAME
値: 0xC0AAB112L
'%1!ls!' という名前は既に存在します。
IMAPI_E_DATA_STREAM_READ_FAILURE
値: 0xC0AAB129L
ファイル '%1!ls!' 用に指定されたストリームからデータを読み取れません。
IMAPI_E_IMAGE_SIZE_LIMIT
値: 0xC0AAB120L
'%1!ls!' を追加すると、結果のイメージのサイズが現在構成されている上限を超えます。
IMAPI_E_DATA_STREAM_INCONSISTENCY
値: 0xC0AAB128L
ファイル '%1!ls!' 用に指定されたデータ ストリームに不整合があります。%2!I64d! バイトが必要ですが、%3!I64d! でした
E_OUTOFMEMORY
値: 0x8007000EL
必要なメモリの割り当てに失敗しました。

解説(Remarks)

このメソッドは、ファイル システム イメージ内に存在するファイル アイテムに対してのみ呼び出せます。

名前付きストリームをサポートするには、ユーザーが UDF を有効にし、UDF リビジョンを 2.00 以上に設定する必要があります。

このメソッドは、Windows Server 2003 Service Pack 1 (SP1)、Windows XP Service Pack 2 (SP2)、および Windows Vista で Windows Feature Pack for Storage を通じてサポートされます。この更新パッケージが提供するすべての機能は、Windows 7 および Windows Server 2008 R2 では標準でサポートされます。

vtbl 28 HRESULT get_IsRealTime(VARIANT_BOOL* pVal)

ファイル システム イメージ内のファイル アイテムが 'Real-Time' ファイルか標準のファイルかを示すプロパティ値を取得します。

pValVARIANT_BOOL*outファイル システム イメージ内でファイルの Real-Time 属性が設定されているかどうかを示す値へのポインター。VARIANT_TRUE は属性が設定されていることを示し、それ以外の場合は VARIANT_FALSE になります。

戻り値

成功した場合は S_OK が返されますが、実装によっては他の成功コードが返されることもあります。操作が失敗した場合は次のエラー コードが一般的に返されますが、返される可能性のある値はこれらに限られません。

戻り値/値 説明
E_POINTER
値: 0x80004003
ポインターが無効です。
IMAPI_E_PROPERTY_NOT_ACCESSIBLE
値: 0xC0AAB160L
プロパティ '%1!ls!' にはアクセスできません。

解説(Remarks)

名前付きストリームを表すファイル アイテムに対してこのメソッドを呼び出した場合、名前付きストリームは Real-Time 属性を持たないため、 エラー コード IMAPI_E_PROPERTY_NOT_ACCESSIBLE が返されます。

Real-Time ファイルをサポートするには、ユーザーが UDF を有効にし、UDF リビジョンを 2.01 以上に設定する必要があります。

このメソッドは、Windows Server 2003 Service Pack 1 (SP1)、Windows XP Service Pack 2 (SP2)、および Windows Vista で Windows Feature Pack for Storage を通じてサポートされます。この更新パッケージが提供するすべての機能は、Windows 7 および Windows Server 2008 R2 では標準でサポートされます。

vtbl 29 HRESULT put_IsRealTime(VARIANT_BOOL newVal)

ファイル システム内のファイルの 'Real-Time' 属性を設定します。この属性は、書き込みまたは読み取りの際にコンテンツが最小データ転送速度を必要とするかどうか (たとえば音声データや映像データなど) を指定します。

newValVARIANT_BOOLinファイル システム イメージ内のファイルの Real-Time 属性を設定するには VARIANT_TRUE を、それ以外の場合は VARIANT_FALSE を指定します。既定値は VARIANT_FALSE です。

戻り値

成功した場合は S_OK が返されますが、実装によっては他の成功コードが返されることもあります。操作が失敗した場合は次のエラー コードが一般的に返されますが、返される可能性のある値はこれらに限られません。

戻り値/値 説明
IMAPI_S_IMAGE_FEATURE_NOT_SUPPORTED
値: 0x00AAB15FL
この機能は現在のファイル システム リビジョンではサポートされていません。そのため、ファイルは Real-Time としてマークされますが、ファイル システム オブジェクトで UDF リビジョン 2.01 以上が有効になっていない限り、生成されるファイル システム イメージにはそのようには現れません。
IMAPI_E_PROPERTY_NOT_ACCESSIBLE
値: 0xC0AAB160L
プロパティ '%1!ls!' にはアクセスできません。
IMAPI_E_INVALID_PARAM
値: 0xC0AAB101
パラメーター '%1!ls!' に指定された値が無効です。
注意 現在のところ、CreateResultImage 操作が成功した結果として 'Read Only' となったファイルに対して、このメソッドで Real-Time 属性の値を設定すると S_OK が返されます。

解説(Remarks)

IFsiDirectoryItem::AddTree メソッドおよび IFsiDirectoryItem2::AddTreeWithNamedStreams メソッドは、ファイル システム イメージへのファイル追加時に Real-Time 属性を設定しません。ファイルを Real-Time ファイルとしてマークするには、ファイル システム イメージに追加した後で列挙し、個別に Real-Time 属性を設定する必要があります。

名前付きストリームを表すファイル アイテムに対してこのメソッドを呼び出した場合、名前付きストリームは Real-Time 属性を持たないため、 エラー コード IMAPI_E_PROPERTY_NOT_ACCESSIBLE が返されます。

このメソッドは、Windows Server 2003 Service Pack 1 (SP1)、Windows XP Service Pack 2 (SP2)、および Windows Vista で Windows Feature Pack for Storage を通じてサポートされます。この更新パッケージが提供するすべての機能は、Windows 7 および Windows Server 2008 R2 では標準でサポートされます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IFsiFileItem2 "{199D0C19-11E1-40EB-8EC2-C8C822A07792}"
#usecom global IFsiFileItem2 IID_IFsiFileItem2 "{}"
#comfunc global IFsiFileItem2_get_FsiNamedStreams  24 sptr
#comfunc global IFsiFileItem2_get_IsNamedStream    25 var
#comfunc global IFsiFileItem2_AddStream            26 wstr,sptr
#comfunc global IFsiFileItem2_RemoveStream         27 wstr
#comfunc global IFsiFileItem2_get_IsRealTime       28 var
#comfunc global IFsiFileItem2_put_IsRealTime       29 int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。