次の方法で共有


コンテナー : 複合ファイル

この技術情報では、 OLE アプリケーションで複合ファイルを使用する場合の複合ファイルのコンポーネントと実装と長所と短所について説明します。

複合ファイルは、 OLE の整数部です。これらはデータ転送を OLE ドキュメントのストレージを容易にするために使用されます。複合ファイルがアクティブな状態で構成されるストレージ モデルの実装です。一貫したインターフェイスは、サポート シリアル化ストレージ、ストリーム、またはオブジェクト ファイルにあります。複合ファイルはクラス COleStreamFileCOleDocumentして Microsoft Foundation Class)ライブラリでサポートされます。

[!メモ]

複合ファイルを使用して情報が OLE ドキュメントまたは複合ドキュメントから送信されることを意味しません。複合ファイルは、複合ドキュメントを、 OLE ドキュメント格納する方法の 1 つが、およびそのほかのデータです。

複合ファイルのコンポーネント

複合ファイルの OLE 実装は、 3 種類のオブジェクト型を使用します: ストリーム オブジェクト、ストレージ オブジェクトと ILockBytes のオブジェクト。これらのオブジェクトは標準ファイル システムのコンポーネントに次のように似ています:

  • ストリーム オブジェクトは、ファイル、ストアのデータ入力します。

  • ストレージ オブジェクトは、ディレクトリなど、他のストレージおよびストリーム オブジェクトを含めることができます。

  • LockBytes のオブジェクトはストレージ オブジェクトと物理的なハードウェア間のインターフェイスを表します。これらは、ストレージに LockBytes のオブジェクトにアクセスする実際のバイトがグローバル メモリのハード ドライブまたは領域など、どのように記述されているかを判定します。LockBytes のオブジェクトと ILockBytes インターフェイスの詳細については、 OLE プログラマの手引きを参照してください。

複合ファイルの長所と短所

複合ファイルはストレージの以前のメソッドを利点の使用できないに示します。Windows コモン コントロールには以下が含まれます。

  • インクリメンタル ファイルのアクセス。

  • コンテナーに存在するファイル アクセス モード。

  • ファイル構造の標準化。

複合ファイルの潜在的な短所は、フロッピー ディスクのストレージに関する大きいとパフォーマンスの問題アプリケーションで使用するためです。決定するときかどうかを検討する必要があります。

ydd3k45e.collapse_all(ja-jp,VS.110).gifインクリメンタル ファイルへのアクセス

インクリメンタル ファイルへのアクセスは、複合ファイルを使用する自動利点です。複合ファイルに 「ファイル内のファイル システムと見なすことができるため」、個別のオブジェクト オブジェクトの型は、ストリームまたはストレージなど、全体のファイルを読み込む必要がないと、アクセスできます。これは大幅にアプリケーションがユーザーによって編集の新しいオブジェクトにアクセスする必要がある時間を短縮できます。インクリメンタル更新は、同じ概念に基づいて、似たような利点があります。ファイル全体では、 1 種類のオブジェクトに変更を保存するだけで格納する代わりに、 OLE はユーザーが編集するストリームやストレージ オブジェクトのみが格納されます。

ydd3k45e.collapse_all(ja-jp,VS.110).gifコンテナーに存在するファイル アクセス モード

複合ファイルのオブジェクトに対する変更がディスクに、コミット判断できる複合ファイルを使用するもう一つの利点です。ファイルが、処理されてアクセスする場合は、指示するモードは、変更がコミットされる時点かを判定します。

  • トランザクション モードは、複合ファイルに変更を保存したり、元に戻すことをユーザーが選択するまでオブジェクトに変更を加えるときに 2 フェーズ コミット操作を使用し、使用できるドキュメントの古い値と新しいコピーを保持します。

  • 直接モードは後で元に戻す機能なしで行ったようにドキュメントへの変更を組み込む。

アクセス モードに関する詳細については、 OLE プログラマの手引きを参照してください。

ydd3k45e.collapse_all(ja-jp,VS.110).gif標準化

複合ファイルの標準的な構造は、 OLE アプリケーションが実際にファイルを作成したアプリケーションの認識せずに、 OLE アプリケーションで作成した複合ファイルを通じて参照するようにします。

ydd3k45e.collapse_all(ja-jp,VS.110).gifサイズおよびパフォーマンスに関する考慮事項

このフォームを使用してデータを、ファイルはインクリメンタルに保存する複合ファイルのストレージの構造と機能の複雑さに対して非構造化または単純な 「ファイル」のストレージを使用する他のファイルより大きいことがよくあります。アプリケーションが頻繁にファイルを読み取り、保存する場合は、複合ファイルを使用してファイル サイズを noncompound ファイルよりもすばやく拡張するために発生することがあります。複合ファイルが大きくなる可能性があるため、ファイルのアクセス時刻はに格納し、フロッピー ディスクから、ファイルに対するその後のアクセス、その影響する、ロードします。

パフォーマンスに影響する別の問題はファイルのフラグメンテーションです。複合ファイルのサイズはファイルで使用される 1 番目の最後のディスクのセクターの違いによって決まります。断片化されたファイルはサイズを計算すると、データの空き領域のさまざまな領域を含む含まないができますが、カウントされます。複合ファイルの有効期間中、これらの領域はストレージ オブジェクトの挿入や削除によって作成されます。

データの複合ファイル形式を使用する

正常にドキュメント クラスを持つアプリケーションを作成した後 COleDocumentから、により、メイン ドキュメントのコンストラクター呼び出しを EnableCompoundFile動作します。アプリケーション ウィザードが OLE コンテナー アプリケーションを作成する場合、この呼び出しが挿入されます。

OLE プログラマの手引きでは、 IStreamIStorageILockBytesを参照してください。

参照

関連項目

COleStreamFile クラス

COleDocument クラス

概念

コンテナー

コンテナー : ユーザー インターフェイスの問題