IAppxBlockMapReader
COM公式ドキュメント
ブロックマップの読み取り専用オブジェクトモデルを表し、ファイル属性とブロックハッシュへのアクセスを提供します。
解説(Remarks)
IAppxBlockMapReader は、ブロックマップのルート要素である BlockMap 要素を表します。File 要素は BlockMap 要素の子要素です。
このオブジェクトは、IAppxFactory インターフェイスの CreateBlockMapReader メソッドまたは CreateValidatedBlockMapReader メソッド、あるいは IAppxPackageReader インターフェイスの GetBlockMap メソッドを使用して取得できます。
コード例については、Query app package and app manifest sample を参照してください。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
指定したファイル名を持つ、ブロックマップ内のファイルに対応するデータを取得します。
| filename | LPWSTR | in | ファイルの名前です。 |
| file | IAppxBlockMapFile** | out | ファイルの属性とブロックに関するデータです。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は、次の表に示すものを含む (ただしこれらに限定されない) エラーコードを返します。
| 戻り値 | 説明 |
|---|---|
|
指定したファイル名が、ブロックマップに列挙されているファイルの名前と一致しません。 |
ブロックマップに列挙されているファイルを走査するための列挙子を取得します。
| enumerator | IAppxBlockMapFilesEnumerator** | out | ブロックマップに列挙されているすべてのファイルの列挙子です。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
ブロックマップ内のブロックハッシュの作成に使用されたハッシュアルゴリズムの URI を取得します。
| hashMethod | IUri** | out | このブロックマップで使用されているハッシュアルゴリズムです。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
hashMethod の値は、BlockMap ルート要素の HashMethod 属性に対応します。
GetHashMethod は、サポートされている DigestMethod の URI を返します。
ブロックマップの XML コンテンツを表す読み取り専用ストリームを取得します。
| blockMapStream | IStream** | out | ブロックマップの XML コンテンツを表す読み取り専用ストリームです。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IAppxBlockMapReader "{5EFEC991-BCA3-42D1-9EC2-E92D609EC22A}"
#usecom global IAppxBlockMapReader IID_IAppxBlockMapReader "{}"
#comfunc global IAppxBlockMapReader_GetFile 3 wstr,sptr
#comfunc global IAppxBlockMapReader_GetFiles 4 sptr
#comfunc global IAppxBlockMapReader_GetHashMethod 5 sptr
#comfunc global IAppxBlockMapReader_GetStream 6 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。