IFsiItem
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
ファイル項目とディレクトリ項目の両方に共通するプロパティを含む基本インターフェイスです。
メソッド 12
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
ファイルシステムイメージ内のディレクトリ項目またはファイル項目の名前を取得します。
| pVal | LPWSTR* | out | ファイルシステムイメージ内のファイル項目またはディレクトリ項目の名前を格納する文字列です。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返されることもあります。次のエラーコードは操作失敗時に一般的に返されるものですが、返される可能性のあるエラー値はこれらに限られません。
| 戻り値 | 説明 |
|---|---|
|
ポインターが無効です。
値: 0x80004003 |
解説(Remarks)
項目のフルパスを取得するには、IFsiItem::get_FullPath メソッドを呼び出します。
ファイルシステムイメージ内のファイル項目またはディレクトリ項目のフルパスを取得します。
| pVal | LPWSTR* | out | ファイルシステムイメージ内のファイル項目またはディレクトリ項目の絶対パスを格納する文字列です。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返されることもあります。次のエラーコードは操作失敗時に一般的に返されるものですが、返される可能性のあるエラー値はこれらに限られません。
| 戻り値 | 説明 |
|---|---|
|
ポインターが無効です。
値: 0x80004003 |
ディレクトリ項目またはファイル項目が作成され、ファイルシステムイメージに追加された日時を取得します。
| pVal | DOUBLE* | out | ディレクトリ項目またはファイル項目が作成され、ファイルシステムイメージに追加された日時 (UTC 時刻) です。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返されることもあります。次のエラーコードは操作失敗時に一般的に返されるものですが、返される可能性のあるエラー値はこれらに限られません。
| 戻り値 | 説明 |
|---|---|
|
ポインターが無効です。
値: 0x80004003 |
解説(Remarks)
作成日時は、ディレクトリの内容を一覧表示したときにユーザーに表示される属性に反映されます。
IMAPI は CreationTime の拡張属性をサポートしていないため、UDFS はファイルエントリの LastAccessed プロパティが示す値を CreationTime に設定します。
ディレクトリ項目またはファイル項目が作成され、ファイルシステムイメージに追加された日時を設定します。
| newVal | DOUBLE | in | ディレクトリ項目またはファイル項目が作成され、ファイルシステムイメージに追加された日時 (UTC 時刻) です。既定値は、その項目がイメージに追加された時刻です。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返されることもあります。次のエラーコードは操作失敗時に一般的に返されるものですが、返される可能性のあるエラー値はこれらに限られません。
| 戻り値 | 説明 |
|---|---|
|
FileSystemImage オブジェクトが読み取り専用モードです。
値: 0xC0AAB102 |
|
|
必要なメモリの割り当てに失敗しました。
値: 0x8007000E |
解説(Remarks)
IMAPI は CreationTime の拡張属性をサポートしていないため、UDFS はファイルエントリの LastAccessed プロパティが示す値を CreationTime に設定します。
ファイルシステムイメージ内のディレクトリ項目またはファイル項目に最後にアクセスした日時を取得します。
| pVal | DOUBLE* | out | ファイルシステムイメージ内のディレクトリ項目またはファイル項目に最後にアクセスした日時 (UTC 時刻) です。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返されることもあります。
解説(Remarks)
IMAPI は現在 CreationTime 拡張属性をサポートしていないため、UDFS (UDF) は LastAccessedTime の値を CreationTime として使用します。
CDFS (ISO 9660) では、File/Directory ディスクリプター内に記録日時のみが格納されるため、このメソッドで取得される LastAccessedTime の値は 0 に設定されます。
ファイルシステムイメージ内のディレクトリ項目またはファイル項目に最後にアクセスした日時を設定します。
| newVal | DOUBLE | in | ファイルシステムイメージ内のディレクトリ項目またはファイル項目に最後にアクセスした日時 (UTC 時刻) です。既定値は、その項目がイメージに追加された時刻です。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返されることもあります。次のエラーコードは操作失敗時に一般的に返されるものですが、返される可能性のあるエラー値はこれらに限られません。
| 戻り値 | 説明 |
|---|---|
|
FileSystemImage オブジェクトが読み取り専用モードです。
値: 0xC0AAB102 |
|
|
必要なメモリの割り当てに失敗しました。
値: 0x8007000E |
解説(Remarks)
IMAPI は現在 CreationTime 拡張属性をサポートしていないため、UDFS (UDF) は LastAccessedTime の値を CreationTime として使用します。
CDFS (ISO 9660) では、File/Directory ディスクリプター内に記録日時のみが格納されるため、LastAccessedTime の値は 0 に設定されます。
ファイルシステムイメージ内のディレクトリ項目またはファイル項目が最後に変更された日時を取得します。
| pVal | DOUBLE* | out | ファイルシステムイメージ内のディレクトリ項目またはファイル項目が最後に変更された日時 (UTC 時刻) です。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返されることもあります。
解説(Remarks)
このメソッドを実装する際は、次の点に注意する必要があります。
UDFS (UDF) は、IFsiItem::put_LastModifiedTime で指定された値を CreationTime と LastModifiedTime の両方に使用します。
CDFS (ISO 9660) は記録日時を CreationTime および LastModifiedTime として使用します。そのため、CDFS では LastModifiedTime の値が 0 に設定されます。
ファイルシステムイメージ内で項目が最後に変更された日時を設定します。
| newVal | DOUBLE | in | ファイルシステムイメージ内のディレクトリ項目またはファイル項目が最後に変更された日時 (UTC 時刻) です。既定値は、その項目がイメージに追加された時刻です。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返されることもあります。次のエラーコードは操作失敗時に一般的に返されるものですが、返される可能性のあるエラー値はこれらに限られません。
| 戻り値 | 説明 |
|---|---|
|
FileSystemImage オブジェクトが読み取り専用モードです。
値: 0xC0AAB102 |
|
|
必要なメモリの割り当てに失敗しました。
値: 0x8007000E |
解説(Remarks)
最終更新日時は、ディレクトリまたはファイルのプロパティを表示したときにユーザーに表示される属性に反映されます。
このメソッドを実装する際は、次の点に注意する必要があります。
UDFS (UDF) は、IFsiItem::put_LastModifiedTime で指定された値を CreationTime と LastModifiedTime の両方に使用します。
CDFS (ISO 9660) は記録日時を CreationTime および LastModifiedTime として使用します。そのため、CDFS では LastModifiedTime の値が 0 に設定されます。
ファイルシステムイメージ内で項目の隠し属性が設定されているかどうかを判定します。(取得)
| pVal | VARIANT_BOOL* | out | ファイルシステムイメージ内で項目に隠し属性が設定されている場合は VARIANT_TRUE、それ以外の場合は VARIANT_FALSE です。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返されることもあります。次のエラーコードは操作失敗時に一般的に返されるものですが、返される可能性のあるエラー値はこれらに限られません。
| 戻り値 | 説明 |
|---|---|
|
ポインターが無効です。
値: 0x80004003 |
ファイルシステムイメージ内で項目の隠し属性が設定されているかどうかを判定します。(設定)
| newVal | VARIANT_BOOL | in | ファイルシステムイメージ内で項目に隠し属性を設定するには VARIANT_TRUE を、それ以外の場合は VARIANT_FALSE を指定します。既定値は VARIANT_FALSE です。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返されることもあります。次のエラーコードは操作失敗時に一般的に返されるものですが、返される可能性のあるエラー値はこれらに限られません。
| 戻り値 | 説明 |
|---|---|
|
FileSystemImage オブジェクトが読み取り専用モードです。
値: 0xC0AAB102 |
|
|
必要なメモリの割り当てに失敗しました。
値: 0x8007000E |
指定したファイルシステムに準拠するように変更された項目名を取得します。
| fileSystem | FsiFileSystems | in | 名前を準拠させる対象のファイルシステムです。指定可能な値については、FsiFileSystems 列挙型を参照してください。 |
| pVal | LPWSTR* | out | 指定したファイルシステムに準拠した形式の項目名を格納する文字列です。使用されている文字や名前の長さが指定したファイルシステム種別の要件を満たさない場合、IFsiItem::get_Name プロパティの名前が変更されます。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返されることもあります。次のエラーコードは操作失敗時に一般的に返されるものですが、返される可能性のあるエラー値はこれらに限られません。
| 戻り値 | 説明 |
|---|---|
|
ポインターが無効です。
値: 0x80004003 |
|
|
パラメーター %1!ls! に指定された値が無効です。
値: 0xC0AAB101 |
指定したファイルシステムに準拠するように変更された項目のフルパスを取得します。
| fileSystem | FsiFileSystems | in | パスを準拠させる対象のファイルシステムです。指定可能な値については、FsiFileSystems 列挙型を参照してください。 |
| pVal | LPWSTR* | out | 指定したファイルシステムに準拠した形式の項目のフルパスを格納する文字列です。使用されている文字やパスの長さが指定したファイルシステム種別の要件を満たさない場合、IFsiItem::get_FullPath プロパティのパスが変更されます。 |
戻り値
成功した場合は S_OK が返されますが、実装によっては他の成功コードが返されることもあります。次のエラーコードは操作失敗時に一般的に返されるものですが、返される可能性のあるエラー値はこれらに限られません。
| 戻り値 | 説明 |
|---|---|
|
ポインターが無効です。
値: 0x80004003 |
|
|
パラメーター %1!ls! に指定された値が無効です。
値: 0xC0AAB101 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IFsiItem "{2C941FD9-975B-59BE-A960-9A2A262853A5}" #usecom global IFsiItem IID_IFsiItem "{}" #comfunc global IFsiItem_get_Name 7 var #comfunc global IFsiItem_get_FullPath 8 var #comfunc global IFsiItem_get_CreationTime 9 var #comfunc global IFsiItem_put_CreationTime 10 double #comfunc global IFsiItem_get_LastAccessedTime 11 var #comfunc global IFsiItem_put_LastAccessedTime 12 double #comfunc global IFsiItem_get_LastModifiedTime 13 var #comfunc global IFsiItem_put_LastModifiedTime 14 double #comfunc global IFsiItem_get_IsHidden 15 var #comfunc global IFsiItem_put_IsHidden 16 int #comfunc global IFsiItem_FileSystemName 17 int,var #comfunc global IFsiItem_FileSystemPath 18 int,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IFsiItem "{2C941FD9-975B-59BE-A960-9A2A262853A5}" #usecom global IFsiItem IID_IFsiItem "{}" #comfunc global IFsiItem_get_Name 7 sptr #comfunc global IFsiItem_get_FullPath 8 sptr #comfunc global IFsiItem_get_CreationTime 9 sptr #comfunc global IFsiItem_put_CreationTime 10 double #comfunc global IFsiItem_get_LastAccessedTime 11 sptr #comfunc global IFsiItem_put_LastAccessedTime 12 double #comfunc global IFsiItem_get_LastModifiedTime 13 sptr #comfunc global IFsiItem_put_LastModifiedTime 14 double #comfunc global IFsiItem_get_IsHidden 15 sptr #comfunc global IFsiItem_put_IsHidden 16 int #comfunc global IFsiItem_FileSystemName 17 int,sptr #comfunc global IFsiItem_FileSystemPath 18 int,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。