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 エントリ ポイントを使用して登録され、作成操作を再試行します。このキーの値はプラグイン DLL の、Merge インストール フォルダに対する相対的な場所を指定します。

このインターフェイスをインプリメントするコンポーネントは、通常 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

このプロパティは Merge で使用できるファイルの 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 を削除します。

引数