IOpcPartSet
COM公式ドキュメント
パッケージ内の Relationships パート以外のパートを表すパートオブジェクトへの IOpcPart インターフェイスポインターの、順序を持たないセットです。
解説(Remarks)
特定のパートを表すパートオブジェクトの IOpcPart インターフェイスポインターを取得するには、まず PartExists メソッドにパート名を渡して、そのパートがセット内に含まれていることを確認します。含まれている場合は、GetPart メソッドにパート名を渡して IOpcPart インターフェイスポインターを取得します。
CreatePart メソッドでは、Relationships パートを表すパートオブジェクトを作成することはできません。
パッケージオブジェクトとして表現されたパッケージがシリアル化される際には、セットに含まれる IOpcPart インターフェイスポインターを持つパートオブジェクトが表すパートのみが、パッケージとともにシリアル化されます。
パッケージのシリアル化時にセット内のパートオブジェクトによって表されていないパートは、パッケージとともにシリアル化されません。
パートオブジェクトが作成され、そのポインターがセットに追加されると、そのパートオブジェクトが表すパートはパッケージのシリアル化時にシリアル化されます。
IOpcPart インターフェイスポインターがセットから削除されると、そのポインターが表すパートはパッケージのシリアル化時にシリアル化されません。
IOpcPart は、パートのプロパティへのアクセスを提供します。これらのプロパティの詳細については、Parts Overview および IOpcPart を参照してください。
スレッドセーフティ
パッケージング関連のオブジェクトはスレッドセーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
指定したパートを表すパートオブジェクトをセットから取得します。
| name | IOpcPartUri* | in | パートのパート名を表すパート URI オブジェクトの IOpcPartUri インターフェイスへのポインターです。 |
| part | IOpcPart** | out | 指定したパート名を持つパートを表すパートオブジェクトの IOpcPart へのポインターです。 |
戻り値
このメソッドは HRESULT を返します。戻り値には次の表の値が含まれますが、これらに限定されません。
| リターンコード/値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| name パラメーターが NULL です。 | |
|
指定されたパートは存在しません。 |
|
Package Consumption Error Group の HRESULT エラーコードです。 |
|
Part URI Error Group の HRESULT エラーコードです。 |
解説(Remarks)
特定のパートを表すパートオブジェクトの IOpcPart インターフェイスポインターを取得するには、まず PartExists メソッドにパート名を渡して、そのパートがセット内に含まれていることを確認します。含まれている場合は、GetPart メソッドにパート名を渡して IOpcPart インターフェイスポインターを取得します。
パート URI オブジェクトが Relationships パートのパート名を表している場合、Relationships パートはセットに含まれないため、このメソッドは失敗します。
IOpcPart インターフェイスは、パートのプロパティへのアクセスを提供します。これらのプロパティの詳細については、Parts Overview および IOpcPart を参照してください。
スレッドセーフティ
パッケージング関連のオブジェクトはスレッドセーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
パートを表すパートオブジェクトを作成し、そのオブジェクトの IOpcPart インターフェイスへのポインターをセットに追加します。
| name | IOpcPartUri* | in | パートのパート名を表すパート URI オブジェクトの IOpcPartUri インターフェイスへのポインターです。 パートのパート名を表すパート URI オブジェクト(IOpcPartUri インターフェイスを実装します)を作成するには、IOpcFactory::CreatePartUri メソッドを呼び出します。 |
| contentType | LPWSTR | in | パートのコンテンツのメディアタイプです。 |
| compressionOptions | OPC_COMPRESSION_OPTIONS | in | パートのコンテンツを圧縮する方法を示す値です。 |
| part | IOpcPart** | out | パートを表す新しい IOpcPart へのポインターです。 このパラメーターに NULL を指定することはできません。 |
戻り値
このメソッドは HRESULT を返します。戻り値には次の表の値が含まれますが、これらに限定されません。
| リターンコード/値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| name パラメーターが NULL です。 | |
| compressionOptions パラメーターに渡された値が、有効な OPC_COMPRESSION_OPTIONS 列挙値ではありません。 | |
|
指定されたパート名を持つパートが、現在のパッケージに既に存在します。 |
|
コンテンツタイプが、RFC 2616: HTTP/1.1 (http://www.w3.org/Protocols/rfc2616/rfc2616.html) および OPC で規定される有効なメディアタイプの規則に準拠していません。 |
|
パートのコンテンツタイプが期待されるコンテンツタイプ(OPC、ECMA-376 Part 2 で規定)と異なるか、パートのコンテンツがそのパートのコンテンツタイプと一致していません。 |
|
Package Consumption Error Group の HRESULT エラーコードです。 |
|
Part URI Error Group の HRESULT エラーコードです。 |
解説(Remarks)
パートオブジェクトが作成され、そのポインターがセットに追加されると、そのパートオブジェクトが表すパートはパッケージのシリアル化時にシリアル化されます。
このメソッドでは、Relationships パートを表すパートオブジェクトを作成することはできません。
パートオブジェクトの作成前にパートのコンテンツが既に圧縮されている場合は、compressionOptions パラメーターに OPC_COMPRESSION_NONE 値を渡してください。
既に圧縮済みのパートコンテンツは、それ以上大きく圧縮されることはありません。
IOpcPart は、パートのプロパティへのアクセスを提供します。これらのプロパティの詳細については、Parts Overview および IOpcPart のトピックを参照してください。
スレッドセーフティ
パッケージング関連のオブジェクトはスレッドセーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
指定したパートオブジェクトの IOpcPart インターフェイスポインターをセットから削除します。
| name | IOpcPartUri* | in | パート名を表すパート URI オブジェクトの IOpcPartUri インターフェイスへのポインターです。 |
戻り値
このメソッドは HRESULT を返します。戻り値には次の表の値が含まれますが、これらに限定されません。
| リターンコード/値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| name パラメーターが NULL です。 | |
|
指定されたパートは存在しません。 |
|
Package Consumption Error Group の HRESULT エラーコードです。 |
|
Part URI Error Group の HRESULT エラーコードです。 |
解説(Remarks)
IOpcPart インターフェイスポインターがセットから削除されると、そのポインターが表すパートはパッケージのシリアル化時にシリアル化されません。さらに、そのパートが 1 つ以上のリレーションシップのソースである場合、パッケージオブジェクトの書き込み時にそれらのリレーションシップもパッケージとともに保存されません。
削除されたパートオブジェクトに含まれるデータは、そのパートオブジェクトを含むパッケージオブジェクトが解放されるまでアクセス可能です。同様に、削除されたパートオブジェクトが表すパートをソースとするリレーションシップも、そのパートオブジェクトを含むパッケージオブジェクトが解放されるまでアクセス可能なままです。ただし、これらのリレーションシップはパッケージの保存時に保存されません。
スレッドセーフティ
パッケージング関連のオブジェクトはスレッドセーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
指定したパートがセット内のパートオブジェクトとして表されているかどうかを示す値を取得します。
| name | IOpcPartUri* | in | パートのパート名を表す IOpcPartUri へのポインターです。 | ||||||
| partExists | BOOL* | out | 次のいずれかの値です。
|
戻り値
このメソッドは HRESULT を返します。戻り値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| partExists パラメーターが NULL です。 | |
|
Package Consumption Error Group の HRESULT エラーコードです。 |
|
Part URI Error Group の HRESULT エラーコードです。 |
解説(Remarks)
特定のパートを表すパートオブジェクトの IOpcPart インターフェイスポインターを取得するには、まず PartExists メソッドにパート名を渡して、そのパートがセット内に含まれていることを確認します。含まれている場合は、GetPart メソッドにパート名を渡して IOpcPart インターフェイスポインターを取得します。
指定されたパート名が Relationships パートの名前である場合、Relationships パートはセットに含まれないため、partExists は FALSE を受け取ります。
パートがセット内に表されている場合、そのパートは読み取り中のパッケージ、または書き込み予定のパッケージに存在します。
スレッドセーフティ
パッケージング関連のオブジェクトはスレッドセーフではありません。
詳細については、Getting Started with the Packaging API を参照してください。
セット内の IOpcPart インターフェイスポインターの列挙子を取得します。
| partEnumerator | IOpcPartEnumerator** | out | セット内の IOpcPart インターフェイスポインターの列挙子が持つ IOpcPartEnumerator インターフェイスへのポインターです。 |
戻り値
このメソッドは HRESULT を返します。戻り値には次の表の値が含まれますが、これらに限定されません。
| リターンコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| partEnumerator パラメーターが NULL です。 | |
|
Package Consumption Error Group の HRESULT エラーコードです。 |
|
Part URI Error Group の HRESULT エラーコードです。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IOpcPartSet "{42195949-3B79-4FC8-89C6-FC7FB979EE73}" #usecom global IOpcPartSet IID_IOpcPartSet "{}" #comfunc global IOpcPartSet_GetPart 3 sptr,sptr #comfunc global IOpcPartSet_CreatePart 4 sptr,wstr,int,sptr #comfunc global IOpcPartSet_DeletePart 5 sptr #comfunc global IOpcPartSet_PartExists 6 sptr,var #comfunc global IOpcPartSet_GetEnumerator 7 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IOpcPartSet "{42195949-3B79-4FC8-89C6-FC7FB979EE73}" #usecom global IOpcPartSet IID_IOpcPartSet "{}" #comfunc global IOpcPartSet_GetPart 3 sptr,sptr #comfunc global IOpcPartSet_CreatePart 4 sptr,wstr,int,sptr #comfunc global IOpcPartSet_DeletePart 5 sptr #comfunc global IOpcPartSet_PartExists 6 sptr,sptr #comfunc global IOpcPartSet_GetEnumerator 7 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。