Win32 API 日本語リファレンス
ホームUI.Shell.PropertiesSystem › IPropertySystem

IPropertySystem

COM
IIDca724e8a-c3e6-442b-88a4-6fb0db8035a3継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

プロパティの説明の取得、プロパティスキーマの登録および登録解除、プロパティの説明の列挙、そしてプロパティ値を型に厳密な方法で書式設定するためのメソッドを公開します。

解説(Remarks)

エクスポートされている API の多く(PSGetPropertyDescription など)は、単に IPropertySystem のメソッドをラップしたものです。多数のヘルパー API を連続して呼び出すコードの場合は、ヘルパー API を呼び出す代わりに、単一の IPropertySystem オブジェクトをインスタンス化してメソッドを直接呼び出す方が有効なことがあります。(パフォーマンスを向上させるため、ヘルパー API は IPropertySystem オブジェクトのキャッシュされたインスタンスを取得します。)

メソッド 9

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT GetPropertyDescription(PROPERTYKEY* propkey, GUID* riid, void** ppv)

指定した PROPERTYKEY のプロパティの説明を取得するために、IPropertyDescription を実装したサブシステムオブジェクトのインスタンスを取得します。

propkeyPROPERTYKEY*in目的のプロパティキーへの参照です。PROPERTYKEY を参照してください。
riidGUID*in目的の IID への参照です。
ppvvoid**outIPropertyDescription インターフェイスポインターのアドレスです。

戻り値

型: HRESULT

次のいずれかの値を返します。

戻り値コード 説明
S_OK
インターフェイスが取得されたことを示します。
E_INVALIDARG
ppvNULL であることを示します。
TYPE_E_ELEMENTNOTFOUND
PROPERTYKEY がスキーマサブシステムのキャッシュに存在しないことを示します。

解説(Remarks)

objbase.h で定義されている IID_PPV_ARGS マクロを使用して、riid パラメーターと ppv パラメーターをまとめることをお勧めします。このマクロは ppv の値が指すインターフェイスに基づいて正しい IID を提供するため、コーディングエラーの可能性を排除できます。

vtbl 4 HRESULT GetPropertyDescriptionByName(LPWSTR pszCanonicalName, GUID* riid, void** ppv)

指定した正規名のプロパティの説明を取得するために、IPropertyDescription を実装したサブシステムオブジェクトのインスタンスを取得します。

pszCanonicalNameLPWSTRinプロパティを識別する文字列へのポインターです。
riidGUID*in目的の IID への参照です。
ppvvoid**outIPropertyDescription インターフェイスポインターのアドレスです。

戻り値

型: PSSTDAPI

次のいずれかの値を返します。

戻り値コード 説明
S_OK
インターフェイスが取得されたことを示します。
E_INVALIDARG
pszCanonicalNameNULL であることを示します。
TYPE_E_ELEMENTNOTFOUND
正規名がスキーマサブシステムのキャッシュに存在しないことを示します。

解説(Remarks)

objbase.h で定義されている IID_PPV_ARGS マクロを使用して、riid パラメーターと ppv パラメーターをまとめることをお勧めします。このマクロは ppv の値が指すインターフェイスに基づいて正しい IID を提供するため、コーディングエラーの可能性を排除できます。

vtbl 5 HRESULT GetPropertyDescriptionListFromString(LPWSTR pszPropList, GUID* riid, void** ppv)

指定した文字列に基づいてプロパティの説明の順序付きコレクションを取得するために、IPropertyDescriptionList を実装したサブシステムオブジェクトのインスタンスを取得します。

pszPropListLPWSTRinプロパティリストを識別する文字列へのポインターです。
riidGUID*in目的の IID への参照です。
ppvvoid**outIPropertyDescriptionList インターフェイスポインターのアドレスです。

戻り値

型: HRESULT

次のいずれかの値を返します。

戻り値コード 説明
S_OK
インターフェイスが取得されたことを示します。
E_INVALIDARG
ppvNULL であることを示します。

解説(Remarks)

プロパティの説明リスト文字列("proplist")の構文は、正規プロパティ名の並びで構成され、各プロパティ名にはフラグが関連付けられます。文字列は "prop:" で始まります。構文は次のようになります: prop:[flags]propertyname[endflags];

フラグは省略可能で、以下のいずれかを指定できます。注: これらのフラグは PROPDESC_VIEW_FLAGS 列挙体に対応します。

フラグ 意味
- 逆順で並べ替えます (PDVF_REVERSESORT)。
0 プライマリリストとセカンダリリストの両方に既定で表示します (PDVF_SHOWBYDEFAULT | PDVF_SHOWINPRIMARYLIST | PDVF_SHOWINSECONDARYLIST)。
1 プライマリリストとセカンダリリストに表示します (PDVF_SHOWINPRIMARYLIST | PDVF_SHOWINSECONDARYLIST)。
2 セカンダリリストに表示します (PDVF_SHOWINSECONDARYLIST)。
^ 新しいグループを開始します (PDVF_BEGINNEWGROUP)。
/ 右揃えにします (PDVF_RIGHTALIGN)。
* 値が存在しない場合は非表示にします。
| 中央揃えにします。(PDVF_CENTERALIGN)。
~ ラベルを非表示にします。(PDVF_HIDELABEL)。
# 領域を埋めます。(PDVF_FILLAREA)。
? プロパティハンドラーでサポートされていない場合は非表示にします (PDVF_HIDEIFUNSUPPORTED)。
< リンクとして解析します (PDVF_PARSEASLINK)。
& 全体をリンクとして表示します (PDVF_SHOWASWHOLELINK)。

dbfolder およびファイルフォルダーの観点からは次のとおりです:

0 defview、列選択メニュー、および列選択ダイアログに列として表示します。
1 列選択メニューおよびダイアログに表示します。
2 列選択ダイアログに表示します。
NULL 検索結果には含めますが、UI では非表示にします。

endflags も省略可能で、次を指定できます:

終了フラグ 意味
] 列を終了します(拡張タイル表示で使用されます)。

objbase.h で定義されている IID_PPV_ARGS マクロを使用して、riid パラメーターと ppv パラメーターをまとめることをお勧めします。このマクロは ppv の値が指すインターフェイスに基づいて正しい IID を提供するため、コーディングエラーの可能性を排除できます。

プロパティスキーマの詳細については、 Property Schemas を参照してください。

vtbl 6 HRESULT EnumeratePropertyDescriptions(PROPDESC_ENUMFILTER filterOn, GUID* riid, void** ppv)

システム内のプロパティの説明の一覧全体または一部を取得するために、IPropertyDescriptionList を実装したサブシステムオブジェクトのインスタンスを取得します。

filterOnPROPDESC_ENUMFILTERin返す一覧です。PROPDESC_ENUMFILTER を参照してください。このメソッドで有効な値は 0 から 4 です。
riidGUID*in目的の IID への参照です。
ppvvoid**outIPropertyDescriptionList インターフェイスポインターのアドレスです。

戻り値

型: HRESULT

次のいずれかの値を返します。

戻り値コード 説明
S_OK
インターフェイスが取得されたことを示します。
E_INVALIDARG
ppvNULL であることを示します。

解説(Remarks)

このメソッドは BUILDING_DOWNLEVEL_LIB が定義されている環境では実装されていません。

objbase.h で定義されている IID_PPV_ARGS マクロを使用して、riid パラメーターと ppv パラメーターをまとめることをお勧めします。このマクロは ppv の値が指すインターフェイスに基づいて正しい IID を提供するため、コーディングエラーの可能性を排除できます。

vtbl 7 HRESULT FormatForDisplay(PROPERTYKEY* key, PROPVARIANT* propvar, PROPDESC_FORMAT_FLAGS pdff, LPWSTR pszText, DWORD cchText)

プロパティ値の書式設定された Unicode 文字列表現を取得します。(IPropertySystem.FormatForDisplay)

keyPROPERTYKEY*in要求するプロパティキーへの参照です。
propvarPROPVARIANT*inプロパティの型と値を格納する PROPVARIANT 構造体への参照です。
pdffPROPDESC_FORMAT_FLAGSinプロパティ文字列の書式です。指定可能な値については PROPDESC_FORMAT_FLAGS を参照してください。
pszTextLPWSTRout書式設定された値を null で終わる Unicode 文字列として受け取ります。呼び出し側アプリケーションがバッファーのメモリを割り当てる必要があります。
cchTextDWORDin終端の NULL を含む、pszText のバッファーの長さ(WCHARs 単位)です。最大サイズは 0x8000 (32K) です。

戻り値

型: HRESULT

次のいずれかの値を返します。

戻り値コード 説明
S_OK
書式設定された文字列が作成されました。
S_FALSE
書式設定された文字列は作成されませんでした。S_FALSE は、空文字列が VT_EMPTY に起因することを示します。
E_OUTOFMEMORY
メモリの割り当てに失敗しました。

解説(Remarks)

IPropertySystem::FormatForDisplay を呼び出す前に、CoInitialize または OleInitialize でコンポーネントオブジェクトモデル (COM) を初期化する必要があります。

成功すると、このメソッドは指定した PROPERTYKEY と 1 つ以上の PROPDESC_FORMAT_FLAGS に対するプロパティ値の書式設定された Unicode 文字列表現を取得します。PROPERTYKEY がスキーマサブシステムで認識されない場合、IPropertySystem::FormatForDisplay はその VARTYPE に従って値を書式設定しようとします。

このメソッドの目的は、データをユーザーへの表示に適した文字列に変換することです。値は、現在のロケール、ユーザーの言語、PROPDESC_FORMAT_FLAGS、およびプロパティキーで指定されたプロパティの説明に従って書式設定されます。プロパティの説明スキーマが値の書式設定にどのように影響するかについては、displayInfostringFormatbooleanFormatnumberFormatNMDATETIMEFORMAT、および enumeratedList を参照してください。通常、PROPDESC_FORMAT_FLAGS は、プロパティの説明で規定された書式を変更するために使用されます。

出力文字列には Unicode の方向制御文字が含まれる場合があります。これらの非スペーシング文字は Unicode 双方向アルゴリズムに影響を与え、左から右 (LTR) の言語が右から左 (RTL) のウィンドウ上に描画される場合(およびその逆の場合)に値が正しく表示されるようにします。これらの文字には次のものが含まれます: "\x200e", "\x200f", "\x202a", "\x202b", "\x202c", "\x202d", "\x202e".

次の表のプロパティは特殊な書式を使用し、PROPDESC_FORMAT_FLAGS の影響を受けません(記載されている例は、現在のロケールが英語に設定されている場合の文字列です。通常、特に記載のない限り出力はローカライズされます)。

プロパティ 書式
System.FileAttributes 次のファイル属性が文字に変換され、連結されて文字列が作成されます(たとえば、0x1801 (FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_COMPRESSED | FILE_ATTRIBUTE_OFFLINE) という値は "RCO" に変換されます):
                        <ul>
  • FILE_ATTRIBUTE_READONLY (0x00000001) - 'R'
  • FILE_ATTRIBUTE_SYSTEM (0x00000004) - 'S'
  • FILE_ATTRIBUTE_ARCHIVE (0x00000020) -'A'
  • FILE_ATTRIBUTE_COMPRESSED (0x00000800) - 'C'
  • FILE_ATTRIBUTE_ENCRYPTED (0x00004000) - 'E'
  • FILE_ATTRIBUTE_OFFLINE (0x00001000) - 'O'
  • FILE_ATTRIBUTE_NOT_CONTENT_INDEXED (0x00002000) - 'I'
  • System.Photo.ISOSpeed たとえば "ISO-400"。
    System.Photo.ShutterSpeed APEX 値は、次の式を使用して露出時間に変換されます:

    Exposure_time = 2^(-APEX_value)

    たとえば "2 sec." や "1/125 sec."。

    System.Photo.ExposureTime たとえば "2 sec." や "1/125 sec."。
    System.Photo.Aperture APEX 値は、次の式を使用して F 値に変換されます:

    F_Number = 2^(APEX_Value / 2)

    たとえば "f/5.6"。

    System.Photo.FNumber たとえば "f/5.6"。
    System.Photo.SubjectDistance たとえば "15 m" や "250 mm"。
    System.Photo.FocalLength たとえば "50 mm"。
    System.Photo.FlashEnergy たとえば "500 bpcs"。
    System.Photo.ExposureBias たとえば "-2 step"、" 0 step"、または "+3 step"。
    System.Computer.DecoratedFreeSpace たとえば "105 MB free of 13.2 GB"。
    System.ItemType たとえば "Application" や "JPEG Image"。
    System.ControlPanel.Category たとえば "Appearance and Personalization"。
    System.ComputerName たとえば "LITWARE05 (this computer)" や "testbox07"。

    プロパティキーが登録済みのいずれのプロパティスキーマ内のプロパティの説明にも対応しない場合、このメソッドは次の表に示すように値の型に基づいて書式を選択します。

    値の型 書式
    VT_BOOLEAN サポートされていません。
    VT_FILETIME PROPDESC_FORMAT_FLAGS と現在のロケールで指定された日付/時刻文字列です。既定値は PDFF_SHORTTIMEPDFF_SHORTDATE です。たとえば "11/13/2006 3:22 PM"。
    数値 VARTYPE 現在のロケールでの 10 進文字列です。たとえば "42"。
    VT_LPWSTR またはその他 文字列です。"\r"、"\t"、または "\n" の並びは単一のスペースに置き換えられます。
    VT_VECTOR | 任意の型 セミコロン区切りの値です。ロケールに関係なくセミコロンが使用されます。
    vtbl 8 HRESULT FormatForDisplayAlloc(PROPERTYKEY* key, PROPVARIANT* propvar, PROPDESC_FORMAT_FLAGS pdff, LPWSTR* ppszDisplay)

    プロパティ値の文字列表現を、割り当てられたメモリバッファーに取得します。

    keyPROPERTYKEY*in目的の PROPERTYKEY への参照です。
    propvarPROPVARIANT*inプロパティの型と値を格納する PROPVARIANT 構造体への参照です。
    pdffPROPDESC_FORMAT_FLAGSinプロパティ文字列の書式です。PROPDESC_FORMAT_FLAGS を参照してください。
    ppszDisplayLPWSTR*outこのメソッドが返るときに、書式設定された値へのポインターを null で終わる Unicode 文字列として格納します。

    戻り値

    型: HRESULT

    次のいずれかの値を返します。

    戻り値コード 説明
    S_OK
    書式設定された文字列が作成されました。この文字列は、入力文字列が空である場合、または空でない値が空文字列として書式設定された場合に、空で返されることがあります。
    S_FALSE
    書式設定された文字列は作成されませんでした。空文字列が VT_EMPTY に起因することを示します。
    E_OUTOFMEMORY
    割り当てに失敗したことを示します。

    解説(Remarks)

    IPropertySystem::FormatForDisplayAlloc を呼び出す前に、CoInitialize または OleInitialize でコンポーネントオブジェクトモデル (COM) を初期化する必要があります。

    成功すると、このメソッドは指定した PROPERTYKEY と 1 つ以上の PROPDESC_FORMAT_FLAGS に対するプロパティ値の書式設定された Unicode 文字列表現を取得します。PROPERTYKEY がスキーマサブシステムで認識されない場合、IPropertySystem::FormatForDisplayAlloc はその VARTYPE に従って値を書式設定しようとします。

    このメソッドはバッファーのメモリを割り当て、そのポインターを ppszDisplay に返します。呼び出し側アプリケーションは、ppszDisplay で指定された文字列が不要になったら、CoTaskMemFree を使用して解放する必要があります。

    このメソッドの目的は、データをユーザーへの表示に適した文字列に変換することです。値は、現在のロケール、ユーザーの言語、PROPDESC_FORMAT_FLAGS、およびプロパティキーで指定されたプロパティの説明に従って書式設定されます。プロパティの説明スキーマが値の書式設定にどのように影響するかについては、displayInfostringFormatbooleanFormatnumberFormatNMDATETIMEFORMAT、および enumeratedList を参照してください。通常、PROPDESC_FORMAT_FLAGS は、プロパティの説明で規定された書式を変更するために使用されます。

    出力文字列には Unicode の方向制御文字が含まれる場合があります。これらの非スペーシング文字は Unicode 双方向アルゴリズムに影響を与え、左から右 (LTR) の言語が右から左 (RTL) のウィンドウ上に描画される場合(およびその逆の場合)に値が正しく表示されるようにします。これらの文字には次のものが含まれます: "\x200e", "\x200f", "\x202a", "\x202b", "\x202c", "\x202d", "\x202e".

    次のプロパティは特殊な書式を使用し、PROPDESC_FORMAT_FLAGS の影響を受けません(記載されている例は、現在のロケールが英語に設定されている場合の文字列です。通常、特に記載のない限り出力はローカライズされます)。

    プロパティ 書式
    System.FileAttributes 次のファイル属性が文字に変換され、連結されて文字列が作成されます(たとえば、0x1801 (FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_COMPRESSED | FILE_ATTRIBUTE_OFFLINE) という値は "RCO" に変換されます):
                            <ul>
    
  • FILE_ATTRIBUTE_READONLY (0x00000001) - 'R'
  • FILE_ATTRIBUTE_SYSTEM (0x00000004) - 'S'
  • FILE_ATTRIBUTE_ARCHIVE (0x00000020) -'A'
  • FILE_ATTRIBUTE_COMPRESSED (0x00000800) - 'C'
  • FILE_ATTRIBUTE_ENCRYPTED (0x00004000) - 'E'
  • FILE_ATTRIBUTE_OFFLINE (0x00001000) - 'O'
  • FILE_ATTRIBUTE_NOT_CONTENT_INDEXED (0x00002000) - 'I'
  • System.Photo.ISOSpeed たとえば "ISO-400"。
    System.Photo.ShutterSpeed APEX 値は、次の式を使用して露出時間に変換されます:

    Exposure_time = 2^(-APEX_value)

    たとえば "2 sec." や "1/125 sec."。

    System.Photo.ExposureTime たとえば "2 sec." や "1/125 sec."
    System.Photo.Aperture APEX 値は、次の式を使用して F 値に変換されます:

    F_Number = 2^(APEX_Value / 2)

    たとえば "f/5.6"。

    System.Photo.FNumber たとえば "f/5.6"。
    System.Photo.SubjectDistance たとえば "15 m" や "250 mm"。
    System.Photo.FocalLength たとえば "50 mm"。
    System.Photo.FlashEnergy たとえば "500 bpcs"。
    System.Photo.ExposureBias たとえば "-2 step"、" 0 step"、または "+3 step"。
    System.Computer.DecoratedFreeSpace たとえば "105 MB free of 13.2 GB"。
    System.ItemType たとえば "Application" や "JPEG Image"。
    System.ControlPanel.Category たとえば "Appearance and Personalization"。
    System.ComputerName たとえば "LITWARE05 (this computer)" や "testbox07"。

    プロパティキーが登録済みのいずれのプロパティスキーマ内のプロパティの説明にも対応しない場合、このメソッドは値の型に基づいて書式を選択します。

    値の型 書式
    VT_BOOLEAN サポートされていません。
    VT_FILETIME PROPDESC_FORMAT_FLAGS と現在のロケールで指定された日付/時刻文字列です。既定値は PDFF_SHORTTIMEPDFF_SHORTDATE です。たとえば "11/13/2006 3:22 PM"。
    数値 VARTYPE 現在のロケールでの 10 進文字列です。たとえば "42"。
    VT_LPWSTR またはその他 文字列に変換されます。"\r"、"\t"、または "\n" の並びは単一のスペースに置き換えられます。
    VT_VECTOR | 任意の型 セミコロン区切りの値です。ロケールに関係なくセミコロンが使用されます。
    vtbl 9 HRESULT RegisterPropertySchema(LPWSTR pszPath)

    プロパティの説明スキーマファイルの追加をスキーマサブシステムに通知します。(IPropertySystem.RegisterPropertySchema)

    pszPathLPWSTRinローカルマシン上の .propdesc ファイルへのファイルパスのポインターです。

    戻り値

    型: HRESULT

    次のいずれかの値を返します。

    戻り値コード 説明
    S_OK
    スキーマが登録されたことを示します。
    E_ACCESSDENIED
    呼び出し元のコンテキストに適切な特権がないことを示します。
    INPLACE_S_TRUNCATED
    スキーマ内の 1 つ以上のプロパティの説明が登録されなかったことを示します。

    解説(Remarks)

    このメソッドは、ローカルコンピューター上の .propdesc ファイルへのファイルパスを使用して、プロパティの説明スキーマ (.propdesc) ファイルの追加をスキーマサブシステムに通知します。このメソッドは、ファイルがコンピューターに最初にインストールされた後にのみ呼び出してください。通常、セットアップアプリケーションは .propdesc ファイルをインストールした後にこのメソッドを呼び出します。このファイルは、"Program Files" 配下のアプリケーションのインストールディレクトリに格納する必要があります。複数のスキーマファイルをまとめて登録するために、IPropertySystem::RegisterPropertySchema を複数回呼び出すことができます。

    プロパティの説明の読み込みを妨げる失敗が発生した場合、その原因はアプリケーションのイベントログに記録されます。呼び出し元のコンテキストに、HKLM (HKEY_LOCAL_MACHINE) への書き込みアクセスを含む適切な特権がない場合、このメソッドは E_ACCESSDENIED で失敗します。特権を制限付きユーザーアカウント (LUA) の仕組みを通じて取得するのは、呼び出し側アプリケーションの責任です。

    vtbl 10 HRESULT UnregisterPropertySchema(LPWSTR pszPath)

    ローカルマシン上の .propdesc ファイルへのファイルパスを使用して、プロパティの説明スキーマ (.propdesc) ファイルの削除をスキーマサブシステムに通知します。

    pszPathLPWSTRinローカルマシン上の .propdesc ファイルへのファイルパスのポインターです。

    戻り値

    型: HRESULT

    次のいずれかの値を返します。

    戻り値コード 説明
    S_OK
    スキーマの登録が解除されたことを示します。
    E_ACCESSDENIED
    呼び出し元のコンテキストに適切な特権がないことを示します。

    解説(Remarks)

    このメソッドは、ファイルがマシンからアンインストールされるときに呼び出します。通常、セットアップアプリケーションは .propdesc ファイルのアンインストールの前後にこのメソッドを呼び出します。このメソッドは、ファイルが既に存在しなくなった後でも呼び出すことができます。

    新しく登録解除されたスキーマファイルを検索インデックスおよびスキーマサブシステムのキャッシュから除外するには、IPropertySystem::RefreshPropertySchema を呼び出します。

    呼び出し元のコンテキストに、ローカルマシンへの書き込みアクセスを含む適切な特権がない場合、このメソッドは E_ACCESSDENIED で失敗します。特権を最小特権ユーザーアカウント (LUA) の仕組みを通じて取得するのは、呼び出し元の責任です。

    vtbl 11 HRESULT RefreshPropertySchema()

    サポートされていません。(IPropertySystem.RefreshPropertySchema)

    戻り値

    型: HRESULT

    次のいずれかの値を返します。

    戻り値コード 説明
    S_OK
    スキーマファイルが再読み込みされたことを示します。
    E_ACCESSDENIED
    呼び出し元のコンテキストに適切な特権がないことを示します。
    出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
    Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

    HSP用 COM定義

    #usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

    出力引数:
    #define global IID_IPropertySystem "{CA724E8A-C3E6-442B-88A4-6FB0DB8035A3}"
    #usecom global IPropertySystem IID_IPropertySystem "{B8967F85-58AE-4F46-9FB2-5D7904798F4B}"
    #comfunc global IPropertySystem_GetPropertyDescription                3 var,var,sptr
    #comfunc global IPropertySystem_GetPropertyDescriptionByName          4 wstr,var,sptr
    #comfunc global IPropertySystem_GetPropertyDescriptionListFromString  5 wstr,var,sptr
    #comfunc global IPropertySystem_EnumeratePropertyDescriptions         6 int,var,sptr
    #comfunc global IPropertySystem_FormatForDisplay                      7 var,var,int,var,int
    #comfunc global IPropertySystem_FormatForDisplayAlloc                 8 var,var,int,var
    #comfunc global IPropertySystem_RegisterPropertySchema                9 wstr
    #comfunc global IPropertySystem_UnregisterPropertySchema              10 wstr
    #comfunc global IPropertySystem_RefreshPropertySchema                 11
    ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
    ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
    ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
    ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。