PROPSETFLAG 定数

PROPSETFLAG 定数は、プロパティ セットの特性を定義します。 次の表に示す値は、IPropertySetStorage メソッド、StgCreatePropStg 関数、および StgOpenPropStg 関数の grfFlags パラメーターで使用されます。

定数/値 説明
PROPSETFLAG_DEFAULT
0
指定しない場合、既定では単純なプロパティ値のみがプロパティ セットに書き込まれます。 単純なプロパティ値を使用すると、 IPropertySetStorage の複合ファイルおよびスタンドアロン実装でプロパティ セットが処理されなくなります。 e 以外のプロパティ値は、この目的で使用する必要があります。
PROPSETFLAG_NONSIMPLE
1
指定した場合、非simple プロパティ値をプロパティ セットに書き込み、プロパティ セットがストレージ オブジェクトに保存されます。 単純でないプロパティ値には、VARTYPE が VT_STORAGE、VT_STREAM、VT_STORED_OBJECT、またはVT_STREAMED_OBJECTの値が含まれます。 このフラグを指定しない場合、単純でない型をプロパティ セットに書き込むことができません。 複合ファイルとスタンドアロンの実装では、プロパティ セットは 、PROPSETFLAG_NONSIMPLE が指定されている場合にのみ処理できます。
PROPSETFLAG_ANSI
2
指定した場合、明示的に Unicode ではないプロパティ セット内のすべての文字列値 、つまりVT_LPWSTR以外の文字列値は、現在のシステム ANSI コード ページと共に格納されます。 詳細については、「 GetACP」を参照してください。 この値の使用は推奨されません。 詳細については、「解説」を参照してください。
この値がない場合、新しいプロパティ セット内の文字列値は Unicode に格納されます。 この値が提供するコントロールの程度は、プロパティ関連のインターフェイスを使用するクライアントが、ANSI コード ページに存在する可能性がある OLE2 サマリー情報などの標準プロパティ セットと相互運用できるようにするために必要です。
PROPSETFLAG_UNBUFFERED
4
StgCreatePropStg 関数と StgOpenPropStg 関数でのみ使用されます。つまり、プロパティ セット インターフェイスのスタンドアロン実装では です。 これらの関数で指定した場合、プロパティ セットへの変更はバッファーに格納されません。 代わりに、変更は常にプロパティ セットに直接書き込まれます。 プロパティ セット IPropertyStorage メソッドを呼び出すと、そのメソッドが変更されます。 ただし、既定では、変更は内部プロパティ セット キャッシュにバッファーされ、 その後、IPropertyStorage::Commit メソッドが呼び出されたときにプロパティ セットに書き込まれます。
PROPSETFLAG_UNBUFFERED設定すると、プロパティ セットの内部バッファーがプロパティ セットに対して変更されるたびに自動的にフラッシュされるため、パフォーマンスが低下します。 ただし、変更を直接記述すると、調整の問題が回避されます。 たとえば、ストレージ オブジェクトがトランザクション モードで開き、プロパティ セットがバッファーに格納されている場合です。 その後、ストレージ オブジェクトで IStorage::Commit メソッドを呼び出すと、まだフラッシュされていないバッファー内にあるため、プロパティ セットの変更はトランザクションの一部として取得されません。 IStorage::Commit を呼び出す前に IPropertyStorage::Commit を呼び出して、ストレージへの変更をコミットする前にプロパティ セット バッファーをフラッシュする必要があります。 2 つの呼び出しを行う代わりに、 PROPSETFLAG_UNBUFFERED を設定して、変更が常にプロパティ セットに直接書き込まれ、プロパティ セットの内部キャッシュにバッファーされないようにすることができます。 その後、トランザクションストレージがコミットされると、変更が取得されます。
PROPSETFLAG_CASE_SENSITIVE
8
指定した場合、プロパティ名では大文字と小文字が区別されます。 大文字と小文字を区別するプロパティ名は、バージョン 1 のプロパティ セットのシリアル化形式でのみ使用できます。 詳細については、「 プロパティ セットのシリアル化」を参照してください。

解説

これらの値は、プロパティ セットの作成方法と開き方を決定するビットごとの操作を使用して設定および確認できます。 プロパティ セットは、 IPropertySetStorage::Create メソッドまたは StgCreatePropStg 関数を使用して作成されます。 これらは、IPropertySetStorage::Open メソッドまたは StgOpenPropStg 関数を使用して開かれます。

プロパティ セットは、grfFlags パラメーターに PROPSETFLAG_ANSI フラグを設定しないことで Unicode として作成することをお勧めします。 また、VT_LPSTR値の使用は避け、代わりにVT_LPWSTR値を使用することをお勧めします。 プロパティ セットのコード ページが Unicode の場合、VT_LPSTR文字列値は格納時に Unicode に変換され、取得されるとマルチバイト文字列値に変換されます。 プロパティ セットのコード ページが Unicode でない場合、プロパティ名、VT_BSTR文字列、および非シンプルプロパティ値は、格納時にマルチバイト文字列に変換され、取得されると Unicode に戻されます。これらはすべて、現在のシステム ANSI コード ページを使用します。

必要条件

要件
サポートされている最小のクライアント
Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー
Windows 2000 Server [デスクトップ アプリのみ]
ヘッダー
Propidl.h

こちらもご覧ください

FmtIdToPropStgName

IPropertySetStorage::Create

IPropertySetStorage::Open

PropStgNameToFmtId

StgCreatePropSetStg

StgCreatePropStg

StgOpenPropStg