プロパティ ハンドラーについて
プロパティは、プロパティ識別子 (PID) と呼ばれる ID で表されます。 各プロパティには、グローバル一意識別子 (GUID) が必要です。 この識別子は GUID で構成され、プロパティ セットと呼ばれるプロパティのコレクションと、セット内のプロパティを識別するための文字列または 32 ビット整数を表します。 整数形式の ID が使用されている場合、値0x00000000、0xFFFFFFFF、および0xFFFFFFFEは無効と見なされます。 ベンダーは、独自の GUID で定義されたプロパティ セットにプロパティを配置することで、プロパティが一意に定義されることを保証できます。
重要
スキーマの最初のリリースでは、プロパティを慎重かつ戦略的に定義することが重要です。 カスタム プロパティ (列の幅やプロパティの種類など) に対する変更は、スキーマの登録後にデータベースに反映されません。 スキーマがシステムに 1 回登録された後にこれらの変更を認識する唯一の方法は、インデックスを再構築してから新しいスキーマを登録するか、スキーマを登録してから、以降のリリースごとに新しいプロパティ (正規名と PKEY で構成) を作成することです。たとえば、 PKEY_GroupName_PropertyNameV2
、 PKEY_GroupName_PropertyNameV3
など)。 複数の余分な列がシステムのパフォーマンスに影響を与える可能性があるため、この方法で新しいプロパティを作成することはお勧めしません。
このトピックは次のように構成されています。
Metadata
Windows Vista 以降では、メタデータに基づく新しいプロパティ システムが、ファイル、電子メール、連絡先などのアイテムを整理する上で中心的な役割を担います。 この新しいプロパティ システムでは、メタデータに基づいて項目を検索でき、ユーザーはそのメタデータの読み取りまたは書き込みを行うことができます。 このシステムのメタデータは、名前と値のペアとして実装プロパティの拡張可能なセットによって表されます。
Windows Vista 以降では、広範なプロパティ セットが、写真、音楽、ドキュメント、メッセージ、連絡先、ファイルなどのアイテムの詳細をカバーします。 独立系ソフトウェア ベンダー (ISV) は、ニーズを満たす既存のプロパティがない場合に、独自のプロパティをプラットフォームに導入できます。
メタデータを開く
Windows Vista 以降のプロパティ システムは、開いているメタデータ システムです。 ファイル形式には、割り当てられたプロパティが格納され、関連性や意味に関係なく、クエリ時にその値が公開されます。 これにより、サード パーティの開発者は、関連付けられているプロパティ ハンドラーを変更しなくても、ファイルに追加のプロパティを添付できます。 オープン メタデータは強力な概念です。 XML ベースのファイル形式で開いているメタデータをサポートする方法の詳細については、「 Initializing プロパティ ハンドラー」の「開いているメタデータのサポート」を参照してください。
Note
プロパティ ハンドラーは常に特定のファイルの種類に関連付けられます。したがって、ファイル形式にカスタム プロパティ ハンドラーを必要とするプロパティが含まれている場合は、常にファイル形式ごとに一意のファイル名拡張子を登録する必要があります。
プロパティ ハンドラーについて
Windows Vista 以降では、Windows には、アクセスするファイルとデータ項目にメタデータを格納および取得するための拡張可能なプロパティ システムがあります。 Windows エクスプローラーと Windows Search システムは、他のアプリケーションと共にプロパティ ハンドラーを使用して、このメタデータの読み取りと変更を行います。 特定のファイルの種類を所有する開発者の場合は、プロパティ ハンドラーを登録して、ファイル内のメタデータへのアクセス権をプロパティ システムに付与する必要があります。 場合によっては、ファイル形式とそのプロパティを読み取って理解できる既存のプロパティ ハンドラーを使用できる場合があります。それ以外の場合は、ファイルの種類の新しいプロパティ ハンドラーを開発する必要があります。
プロパティ ハンドラーを記述する最初の手順は、ファイルの種類でサポートされるプロパティを検討することです。 プロパティ値は、主に転送性を有効にするために、ファイル ストリームに格納されます。 プロパティの値がこのシステムにあるように、ファイル自体に格納されている場合、ユーザーはファイルを別のコンピューター、USB フラッシュ ドライブ、または別のファイル システムにコピーしたり、ファイルを電子メールの添付ファイルとして送信したりすると、プロパティはファイルと共に移動し、同期または失われることはありません。 したがって、ファイル形式で追加情報の格納がサポートされている場合は、プロパティをファイル自体に格納することをお勧めします。
次の手順では、ファイルで提供する必要があるプロパティを決定します。 最初は、限られたプロパティ セットで十分であると考える場合があります。 オーディオ ファイルは、オーディオ関連のプロパティのみをサポートし、そこで終了できます。 ただし、そのオーディオ ファイルは、法律事務所によってアーカイブされた法廷のセッションの記録である可能性があります。 その場合、法律事務所は、ケース番号など、他の非オーディオ プロパティをこのファイルに関連付けたいと考えています。 オーディオ ファイル形式のプロバイダーは、形式が使用されるすべてのシナリオを特定できない可能性があります。 したがって、プロパティ システムでサポートされている任意のプロパティの一括保存を有効にすることを検討する必要があります。
レガシ テクノロジ
Microsoft Windows NT ファイル システム (NTFS) セカンダリ ストリーム テクノロジは、ファイル システム レイヤーに設定された代替ストリームを介して、ファイルに対する追加情報の永続化をサポートするために開発されました。 特にオープン メタデータのサポートでは、これらのセカンダリ ストリームがプロパティを格納するためのメイン メソッドとして使用されない理由を疑問に思うかもしれません。 主な理由は、この追加情報の輸送性です。 残念ながら、これらの代替ストリームは、クライアント側キャッシュ サポート (CSC)、添付ファイルとしてのファイルの送信、NTFS 以外のストアへのファイルのコピーなど、多くのシナリオで削除されます。
セカンダリ ストリームは、プロパティがファイルと共に移動することが保証される堅牢なソリューションを提供しないため、Windows Vista プロパティ システムには、プロパティ ストレージ用のセカンダリ NTFS ストリームを悪用する組み込みメカニズムが用意されていません。 ISV は、プロパティのストレージにセカンダリ ストリームを使用するプロパティ ハンドラーを構築しないことを強くお勧めします。 もちろん、NTFS セカンダリ ストリームが適切なシナリオがあります。特に、処理しているファイルが常に NTFS ボリュームに格納され、エンド ユーザーの操作の結果として移動しないことをアプリケーションが保証できる場合です。
関連トピック