English | 日本語
ホーム > Merge > Merge for Windows > ドキュメントの目次 > IFileSystem インターフェイス

IFileSystem インターフェイス

Merge は仮想ファイル システムをサポートしているため、ユーザーのハード ディスクまたはコンピューター上にないファイルやフォルダーにもアクセスすることができます。仮想ファイル システムの例には FTP、HTTP および SCM 統合などがあります。

新しい(または現在サポートされていない)ファイル システムのサポートは、定義済みインターフェイスのセットを実装するわずかな COM コンポーネントのセットを記述することによって Merge に追加することができます。主要なインターフェイスは IFileSystem インターフェイスで、仮想ファイル システムへのエントリ ポイントを提供します。

新しいファイル システムの Merge への登録

ファイル システム プラグインは、Merge インストール フォルダーにある vfsplugins.ini ファイルにセクションを追加することによって、Merge に登録されます。vfsplugins.ini ファイルは、プラグインが利用可能な URL スキームをリストし、そのスキームのファイル システムへのアクセスを実装する COM コンポーネントの名前を Merge に提供します。vfsplugins.ini のサンプル ファイルを以下に示します。

[.]
progid=Merge.Win32VFS
description=Win32
autoregister=fsplugin.dll

[ftp]
progid=Merge.FtpVFS
description=FTP
autoregister=fsplugin.dll

vfsplugins.ini ファイルはセクションで構成されます。セクション数に制限はありません。各セクションは、ファイル システム プラグイン コンポーネントで処理される URL スキームから始めます。. スキームに登録されるコンポーネントは、ほかのセクションで明示的に処理されないあらゆる URL の処理に使用されます。

最初のセクション([.] で始まる)は Win32 ファイル システム プラグインを登録します。これは Win32 ファイル パス(c:¥temp¥file.txt¥¥server¥path¥file.txt¥path¥file.txt など)やほかの登録済みプラグインで処理されない URL を処理します。2 番目のセクション([ftp] で始まる)は ftp スキーム(ftp://ftp.microsoft.com/ など)を使用する URL を処理するプラグインを登録します。

セクション内の各行は等号で区切られたキーと値で構成されます。次の表では使用できるキーと、このキーが提供する値を示します。

キー
progid IFileSystem インターフェイスを実装する COM コンポーネントのプログラム ID。プログラム ID にはバージョンに依存する値(Merge.Win32VFS.1)またはバージョンに依存しない値(Merge.Win32VFS)を使用できます。
description プラグインによって提供されるファイル システム サポートの説明。
autoregister プログラム ID で指定したコンポーネントを Merge が作成できない場合、autoregister キーで指定した DLL がそのDllRegisterServer エントリ ポイントを使用して登録され、作成操作を再試行します。このキーの値は、Merge インストール フォルダーに対するプラグイン DLL の場所を指定します。

このインターフェイスを実装するコンポーネントは、通常 IFileSystemInit も同様に実装します。

スレッド モデル

仮想ファイル システム コンポーネント サーバーは、インプロセス サーバーとしてまたはローカル サーバーとして実装することができます。パフォーマンスの観点から、サーバーはインプロセスとして、Apartment、Both または Free スレッド モデルを使用することをお勧めします。Merge では複数のスレッドでプラグイン コンポーネントのインスタンスを作成する可能性があるので、それぞれのコンポーネントは使用するスレッド モデルに適用される標準スレッド セーフティ ガイドラインに従う必要があります。

エラー処理

Merge ではメソッドやプロパティがエラーになった場合に、標準の OLE ISupportErrorInfo メカニズムを使用してエラー情報を取得します。このメカニズムから提供されるエラー メッセージは通常逐語的に正確にユーザーに表示されるので、最大限有用なものとなります。

プロパティ

Capability

IDL [propget] HRESULT Capability([in] Capability nCapability, [in] IUrlCollection* pHintUrls, [out, retval] CapabilityLevel* pValue)
.NET CapabilityLevel get_Capability(Capability nCapability, IUrlCollection pHintUrls)
VB6 Capability(nCapability As Capability, pHintUrls As IUrlCollection) As CapabilityLevel

ファイル システムによっては、ほかのファイル システムよりも操作の実行が困難であったり速度が遅くなったりすることがあります。Merge ではこのプロパティを使ってプラグインでサポートする特定の機能の範囲、およびその効率を調べます。

このプロパティは 取得のみです。

引数

TemporaryFileName

IDL [propget] HRESULT TemporaryFileName([in] BSTR strUrl, [out, retval] BSTR* pValue)
.NET String get_TemporaryFileName(String strUrl)
VB6 TemporaryFileName(strUrl As String) As String

このプロパティはファイルの URL を返します。このファイルは、strUrl で指定されたファイルの一時コピーを格納するために使用されます。一時ファイルは strUrl で指定したファイルの近くの場所に置くようにしてください。Merge はファイルを上書きするときに記憶領域が不十分で保存に失敗すると、一時的なバックアップ コピーを作成します。保存が失敗した場合には、一時的なバックアップが置かれている場所がユーザーに通知されるので対処することができます。

このプロパティは 取得のみです。

引数

メソッド

AppendPathToURL

IDL HRESULT AppendPathToURL([in] BSTR strUrl, [in] BSTR strPath, [out, retval] BSTR* pValue)
.NET String AppendPathToURL(String strUrl, String strPath)
VB6 AppendPathToURL(strUrl As String, strPath As String) As String

このメソッドは strPathstrURL に付け足すことによって、ファイル システム内の有効な URL を表します。

引数

BindFile

IDL HRESULT BindFile([in] BSTR strUrl, [in] VARIANT_BOOL bMustExist, [out, retval] IFile** pValue)
.NET IFile BindFile(String strUrl, Boolean bMustExist)
VB6 BindFile(strUrl As String, bMustExist As Boolean) As IFile

このメソッドは、プラグインのファイル システム内にあるファイルを表すオブジェクトの IFile インターフェイスを返します。

引数

BindFolder

IDL HRESULT BindFolder([in] BSTR strUrl, [in] VARIANT_BOOL bMustExist, [out, retval] IFolder** pValue)
.NET IFolder BindFolder(String strUrl, Boolean bMustExist)
VB6 BindFolder(strUrl As String, bMustExist As Boolean) As IFolder

このメソッドは、プラグインのファイル システム内にあるフォルダーを表すオブジェクトの IFolder インターフェイスを返します。

引数

CopyFile

IDL HRESULT CopyFile([in] BSTR strFromUrl, [in] BSTR strToUrl, [in] IContinueOperation* pContinue)
.NET void CopyFile(String strFromUrl, String strToUrl, IContinueOperation pContinue)
VB6 CopyFile(strFromUrl As String, strToUrl As String, pContinue As IContinueOperation)

このメソッドはプラグインのファイル システム内のファイルをコピーするときに使用します。ソース URL とターゲット URL によって確実にプラグインのファイル システム内のファイルを参照します。非常に時間がかかるコピー操作の場合、pContinue 引数を使用してその操作を中止するかどうかをチェックします。このメソッドは、エラーによって置換できないようにしていない限り、既存のターゲット ファイルを置き換えます。

引数

Delete

IDL HRESULT Delete([in] IUrlCollection* pItems, [in] VARIANT_BOOL bNeverPrompt, [in] VARIANT_BOOL bRecursive)
.NET void Delete(IUrlCollection pItems, Boolean bNeverPrompt, Boolean bRecursive)
VB6 Delete(pItems As IUrlCollection, bNeverPrompt As Boolean, bRecursive As Boolean)

コレクション内の指定の URL を削除します。

引数