IPropertyStorage-NTFS ファイル システムの実装
NTFS バージョン 5.0 では、ファイルが複合ファイルでない場合に、NTFS ボリューム上のファイルに対して IPropertyStorage インターフェイスの実装が提供されます。
IPropertySetStorage の NTFS ファイル システム実装へのポインターを取得するには
- IPropertySetStorage::Create を呼び出し、IPropertySetStorage の NTFS 実装を使用します。
- IPropertySetStorage の NTFS 実装を使用して IPropertySetStorage::Open を呼び出します。
使用するタイミング
IPropertyStorage を使用して、1 つのプロパティ セット内のプロパティを管理します。 そのメソッドは、プロパティの読み取り、書き込み、削除、およびプロパティ識別子に関連付けることができる省略可能な文字列名をサポートします。 もう 1 つのメソッドを使用すると、プロパティ ストレージに関連付けられた時間を設定できます。もう 1 つは、ユーザー インターフェイス (UI) コードなどの他のコードをプロパティ セットに関連付けるために使用される CLSID の割り当てを許可します。 Enum メソッドを呼び出すと、IEnumSTATPROPSTG の NTFS 実装へのポインターが提供されます。これにより、セット内のプロパティを列挙できます。
解説
NTFS 実装では、複合ファイルの実装と基本的に同じ機能が提供されます。 詳細については、「 IPropertyStorage-Compound File Implementation」を参照してください。
NTFS は堅牢なファイル システムであるため、NTFS プロパティ セットが正しくない状態のままになることはありません。 NTFS IPropertyStorage の内容が基になる NTFS ファイルにフラッシュされると、異常なプロセス終了などの操作中にエラーが発生した場合でも、状態のすべてまたはまったくがアトミック操作としてファイルに書き込まれます。 複合ファイルの実装で同様の動作を実現するには、親 IPropertySetStorage インターフェイスをトランザクション モードで開く必要があります。
このレベルの堅牢性は、NTFS 5.0 ボリュームで設定された NTFS プロパティにアクセスする場合にのみ可能です。 以前のバージョンの NTFS (たとえば、Windows NTまたは Windows 2000 で実行されているコンピューターで、Windows NT 4.0 上で実行されているファイル サーバー コンピューター上のプロパティ セットにアクセスするコンピューター) で NTFS プロパティ セットにアクセスできますが、予期しない障害が発生した場合に正しい状態になることは保証されません。
IPropertySetStorage の NTFS 実装ではトランザクションはサポートされていませんが、IPropertyStorage の NTFS 実装ではサポートされています。 つまり、STGM_TRANSACTEDは grfMode パラメーターで IPropertySetStorage の Create メソッドと Open メソッドに指定できます。 複合ファイルの実装と同様に、トランザクション モードは、(grfFlags パラメーターでPROPSETFLAG_NONSIMPLEを指定する) 非シンプル プロパティ ストレージに対してのみ可能です。
関連トピック